viernes, 5 de julio de 2013

clases y objetos

Organigramas 

1.- Objetos: 


2.-Clases




3.- Atributos y Métodos: 



4.- Herencia: 


EJERCICIOS EN JAVA 

EJERCICIO 1: 

Creamos un proyecto "contadores" 
nombre del paquete "paqueteprincipal" 
Clase BotonContador



En BotonContador ingresamos el siguiente codigo: 



package paqueteprincipal;
import javax.swing.JButton;


public class BotonContador extends JButton  {
    //propiedades
int pulsaciones;
//constructor
public BotonContador() {
pulsaciones=0;
}
//asigna una cantidad de pulsaciones
public void setPulsaciones(int p) {
pulsaciones=p;
}
//devuelve las pulsaciones del botón
public int getPulsaciones() {
return pulsaciones;
}
//incrementa en uno las pulsaciones
public void incrementa() {
pulsaciones++;
}
//decrementa en uno las pulsaciones
public void decrementa() {
pulsaciones--;
}
//pone las pulsaciones a cero
public void reiniciar() {
pulsaciones=0;
}
//aumenta las pulsaciones en una cantidad c
public void aumenta(int c) {
pulsaciones=pulsaciones+c;
}
//disminuye las pulsaciones en una cantidad c
public void disminuye(int c) {
pulsaciones=pulsaciones-c;
}
}

En el JFrame creado " ventanaprincipal" hacemos el formulario de la siguiente manera:


Con los nombres que se muestran en la parte izquierda de la imagen 


 ingresar el siguiente código : 


package paqueteprincipal;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

/**
 *
 */
public class ventanaprincipal extends javax.swing.JFrame {
      
     BotonContador btnBotonA;
     BotonContador btnBotonB;
     BotonContador btnBotonC;
     /**
     */
    public ventanaprincipal() {
        initComponents();
        
        CreacionVentana();
    }
 public void CreacionVentana(){
     
     this.setTitle("Ejercicio de Herencia");
     this.setSize(370,200);
     //contruimos y situamos los botnoes contadores.
     btnBotonA = new BotonContador();
     btnBotonA.setText("Boton A"); 
     btnBotonA.setBounds(10,10,100,30);
     this.getContentPane().add(btnBotonA);
     
     btnBotonB = new BotonContador();
     btnBotonB.setText("Boton B"); 
     btnBotonB.setBounds(130,10,100,30);
     this.getContentPane().add(btnBotonB);
     
     btnBotonC = new BotonContador();
     btnBotonC.setText("Boton C"); 
     btnBotonC.setBounds(250,10,100,30);
     this.getContentPane().add(btnBotonC);
     
  btnBotonA.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent evt){
     PulsacionBotonA(evt);
     }
  });
  
  btnBotonB.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent evt){
     PulsacionBotonB(evt);
     }
  });
  
   btnBotonC.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent evt){
     PulsacionBotonC(evt);
     }
  });
 }

 public void PulsacionBotonA(ActionEvent evt){
     btnBotonA.incrementa();    
 }
 public void PulsacionBotonB(ActionEvent evt){
      btnBotonB.incrementa();
 }
  public void PulsacionBotonC(ActionEvent evt){
      btnBotonC.incrementa();
 }
  

 /**
     */
    @SuppressWarnings("unchecked")
                                    

    private void btnVerPulsacionesActionPerformed(java.awt.event.ActionEvent evt) {                                                  
     
        String info;
        info = "El Boton A se a pulsado" + btnBotonA.getPulsaciones()+"\n";
        info = info + "El Boton B se a pulsado" + btnBotonB.getPulsaciones()+"\n";
        info = info  +"El Boton C se a pulsado" + btnBotonC.getPulsaciones()+"\n";
        JOptionPane.showMessageDialog(null,info);
        // TODO add your handling code here:
    }                                                 

    private void btnReiniciarActionPerformed(java.awt.event.ActionEvent evt) {                                             
       
         btnBotonA.reiniciar();
         btnBotonB.reiniciar();
         btnBotonC.reiniciar();
         
        
        // TODO add your handling code here:
    }                                            

    private void btnIniciarActionPerformed(java.awt.event.ActionEvent evt) {                                           

          String info;
        info = "El Boton A se a pulsado" + jTextField1.getText()+"\n";
        info = info + "El Boton B se a pulsado" + jTextField1.getText()+"\n";
        info = info + "El Boton C se a pulsado" + jTextField1.getText()+"\n";
        JOptionPane.showMessageDialog(null,info);
        // TODO add your handling code here:
    }                                          

    /**
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
       
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ventanaprincipal().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton btnIniciar;
    private javax.swing.JButton btnReiniciar;
    private javax.swing.JButton btnVerPulsaciones;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration                   

}


Al ejecutar el programa nos mostrara lo siguiente: 



Donde ingresaremos en el cuadro de texto una cantidad de pulsaciones la cual se mostrara en un mensaje de cada botón respectivamente


ejemplo
ingresamos 3 y en el mensaje nos sale que hemos pulsado los botones A, B, C 3 veces





EJERCICIO 2: 

Creamos un proyecto fecha 
paquete de nombre " paqueteprincipal"
donde creare dos JFrame como vemos resaltado en la imagen "dialogoFecha" y "ventanaprincipal"



En el JFrame  hacemos el siguiente formulario 






Con los nombres que se muestran en la parte izquierda del a imagen 


Donde ingresamos el siguiente código:

package paqueteprincipal;

public class dialogoFecha extends javax.swing.JDialog {

    int Dia;
     int Mes;
      int Año;
      int botonpulsado;
      public dialogoFecha(java.awt.Frame parent, boolean modal) {
        
        
        super(parent, modal);
        initComponents();
    } 
      
      public String getFecha(){
          String cadena;
          
          cadena= Dia+"/"+Mes+"/"+Año;
          return cadena;
          }
      
       public String getFechaCompleta(){
          
          String cadena;
          cadena= Dia+"de";
          
          if (Mes==1){
              cadena=cadena+"Enero";
          }else if (Mes==2){
              cadena=cadena+"Febrero";
              }else if (Mes==3){
              cadena=cadena+"Marzo";
              }else if (Mes==4){
              cadena=cadena+"Abril";
              }else if (Mes==5){
              cadena=cadena+"Mayo";
              }else if (Mes==6){
              cadena=cadena+"Junio";
              }else if (Mes==7){
              cadena=cadena+"Julio";
              }else if (Mes==8){
              cadena=cadena+"Agosto";
              }else if (Mes==9){
              cadena=cadena+"Septiembre";
              }else if (Mes==10){
              cadena=cadena+"Octubre";
              }else if (Mes==11){
              cadena=cadena+"Noviembre";
              }else if (Mes==12){
              cadena=cadena+"Diciembre";
          
              }
          cadena=cadena +"de" +  Año;
          return cadena;
       
       
        
      }
       public  int getbotonpulsado(){
            return botonpulsado;
        }

    /**
     */
    @SuppressWarnings("unchecked")                      

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {                                            
        
        botonpulsado=1;
        this.dispose();
        // TODO add your handling code here:
    }                                           

    private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) {                                           
         
       Dia = Integer.parseInt(txtDia.getText());
       Mes = Integer.parseInt(txtMes.getText());
       Año = Integer.parseInt(txtAño.getText());
          botonpulsado=0;
          this.dispose();
        
        // TODO add your handling code here:
    }                                          

    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        /* Create and display the dialog */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                dialogoFecha dialog = new dialogoFecha(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    @Override
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton btnAceptar;
    private javax.swing.JButton btnCancelar;
    private javax.swing.JTextField txtAño;
    private javax.swing.JTextField txtDia;
    private javax.swing.JTextField txtMes;
    // End of variables declaration                   
}

Realizamos el formulario para "ventanaprincipal"


con los nombres que se muestran en la parte izquierda de la imagen

 ingresar el siguiente código en el otro JFrame:





package paqueteprincipal;

public class ventanprincipal extends javax.swing.JFrame {

    dialogoFecha nacimiento;

    public ventanprincipal() {
        initComponents();
        nacimiento=new dialogoFecha(null,true);
        
    }

    /**
     */
    @SuppressWarnings("unchecked")
                     

    private void btnFechadeNaciemientoActionPerformed(java.awt.event.ActionEvent evt) {                                                      

        nacimiento.setVisible(true);
        
        if(nacimiento.getbotonpulsado()==0){
            etiFechadeNaciemiento.setText(nacimiento.getFecha());
            itefechaN.setText(nacimiento.getFechaCompleta());
        }else{
            etiFechadeNaciemiento.setText("");
            itefechaN.setText("");
        }
        // TODO add your handling code here:
    }                                                     

    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ventanprincipal().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton btnFechadeNaciemiento;
    private javax.swing.JLabel etiFechadeNaciemiento;
    private javax.swing.JLabel itefechaN;
    // End of variables declaration                   

}




 Al ejecutar el programa nos mostrara lo siguiente: 
Click en el boton Introducir fecha de Nacimiento


Ingresamos la fecha que deseamos

 la cual se mostrara en formato largo de la siguiente forma





EJERCICIO 3: 


Creamos un proyecto Multicine 
paquete de nombre " paqueteprincipal"
donde creare una clase SalaCine y un  JFrame "ventanaprincipal" como vemos resaltado en la imagen 





En el JFrame  hacemos el siguiente formulario 



Donde ingresamos el siguiente código:

package paqueteprincipal;


public class SalaCine {
    
        //propiedades
        int Aforo;
        int Ocupadas;
        String Pelicula;
        double Entrada;

   
    public SalaCine(){
        Aforo = 100;
        Ocupadas = 0;
        Pelicula = "";
        Entrada = 5.0;     
}
    
//Métodos set

    //Método setAforo
    public void setAforo(int afo) {
            Aforo = afo;
    }

    //Método setOcupadas
    public void setOcupadas(int ocu) {
            Ocupadas = ocu;
    }

    //Método setPelicula
    public void setPelicula(String peli) {
            Pelicula = peli;
    }

    //Método setEntrada
    public void setEntrada(double entra) {
            Entrada = entra;
    }

    //Método setLibres
    public void setLibres(int lib) {
            int ocu;
            ocu = Aforo - lib;
            Ocupadas = ocu;
    }

    
    //Métodos get

    //Método getAforo
    public int getAforo() {
        return Aforo;
    }

    //Método getOcupadas
    public int getOcupadas() {
        return Ocupadas;
    }

    //Método getPelicula
    public String getPelicula() {
        return Pelicula;
    }

    //Método getEntrada
    public double getEntrada() {
        return Entrada;
    }

    //Método getLibres
    public int getLibres() {
   int lib ;
   lib = Aforo - Ocupadas ;
   return lib;
    }

    //Método getPorcentaje
    public double getPorcentaje() {
        double por;
        por = (double) Ocupadas / (double) Aforo * 100.0;
        return por;
    }

    //Método getIngresos
    public double getIngresos() {
        double ingre;
        ingre = Ocupadas * Entrada;
        return ingre;
    }
    
    //Métodos de orden

    //Método Vaciar
    public void Vaciar() {
            Ocupadas = 0;
            Pelicula = "";
    }

    //Método entraUno
    public void entraUno() {
            Ocupadas++;
    }
    
}


Realizamos el formulario para "ventanaprincipal"




con los nombres que se muestran en la parte izquierda de la imagen

 ingresar el siguiente código en el  JFrame:





package paqueteprincipal;

import javax.swing.JOptionPane;


public class ventanaprincipal extends javax.swing.JFrame {

    SalaCine central;
    SalaCine vo;
  
    public ventanaprincipal() {
        initComponents();
        
        central =new SalaCine();
        vo=new SalaCine();
        
        central.setAforo(500);
        central.setEntrada(8.0);
        
        vo.setAforo(80);
        vo.setEntrada(6.0);
        
        
    }

   
    @SuppressWarnings("unchecked")
   
    private void btnCentralCambiarActionPerformed(java.awt.event.ActionEvent evt) {                                                  

        String titulo;  
        titulo= JOptionPane.showInputDialog(null, "Introduce el titulo de la pelicula :" );
        central.setPelicula(titulo);
        etiCentralPelicula.setText(titulo);
        // TODO add your handling code here:
    }                                                 

    private void btnCentralNuevaActionPerformed(java.awt.event.ActionEvent evt) {                                                
      
         central.entraUno();
     
    }                                               

    private void btnCentralOcupacionActionPerformed(java.awt.event.ActionEvent evt) {                                                    

        String info;
        info="Sala Central \n ";
        info = info + "Pelicula:" + central.getPelicula()+" \n";
        info = info + "Aforo:" + central.getAforo()+" \n";
        info = info + "Ocupadas:" + central.getOcupadas()+" \n";
        info = info + "Libres:" + central.getLibres()+" \n";
        info = info + "Porcentaje ocupacion:" + central.getPorcentaje()+" \n";
              
        JOptionPane.showMessageDialog(null,info);
              
        // TODO add your handling code here:
    }                                                   

    private void btnOriginalNuevaActionPerformed(java.awt.event.ActionEvent evt) {                                                 

        
             vo.entraUno();
        // TODO add your handling code here:
    }                                                

    private void btnCentralVaciarActionPerformed(java.awt.event.ActionEvent evt) {                                                 

       central.Vaciar();
       etiCentralPelicula.setText("");
        // TODO add your handling code here:
    }                                                

    private void btnCentralIngresosActionPerformed(java.awt.event.ActionEvent evt) {                                                   

        String info;
        info=" Ingresos de la sala:" + central.getIngresos()+"euros";
        JOptionPane.showMessageDialog(null,info);
        
        
        // TODO add your handling code here:
    }                                                  

    private void btnOriginalOcupacionActionPerformed(java.awt.event.ActionEvent evt) {                                                     

        
        String info;
        info="Sala Central \n ";
        info = info + "Pelicula:" + vo.getPelicula()+" \n";
        info = info + "Aforo:" + vo.getAforo()+" \n";
        info = info + "Ocupadas:" + vo.getOcupadas()+" \n";
        info = info + "Libres:" + vo.getLibres()+" \n";
        info = info + "Porcentaje ocupacion:" + vo.getPorcentaje()+" \n";
              
        JOptionPane.showMessageDialog(null,info);
        // TODO add your handling code here:
    }                                                    

    private void btnOriginalVaciarActionPerformed(java.awt.event.ActionEvent evt) {                                                  

        
       vo.Vaciar();
        etiOriginalPelicula.setText("");
        // TODO add your handling code here:
    }                                                 

    private void btnOriginalIngresosActionPerformed(java.awt.event.ActionEvent evt) {                                                    

         String info;
        
        info=" Ingresos de la sala:" + vo.getIngresos()+ "euros";
        JOptionPane.showMessageDialog(null,info);
        // TODO add your handling code here:
    }                                                   

    private void btnOrignalCambiarActionPerformed(java.awt.event.ActionEvent evt) {                                                  
String titulo;
        
        titulo= JOptionPane.showInputDialog(null, "Introduce el titulo de la pelicula :" );
        vo.setPelicula(titulo);
        etiOriginalPelicula.setText(titulo);
        
        // TODO add your handling code here:
    }                                                 

    private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {                                          

        
        int total;
        total = (int) (central.getIngresos() + vo.getIngresos());
        JOptionPane.showMessageDialog(null,total);
      
        
        // TODO add your handling code here:
    }                                         

  
    public static void main(String args[]) {
     
        java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
          new ventanaprincipal().setVisible(true);
            }
        });
    }





 Al ejecutar el programa nos mostrara lo siguiente: 

Click en el boton ocupacion




Ingresos


Y el botón ingreso total mostrara la suma del ingreso de los dos paneles

ELEMENTOS DE LA PROGRAMACION ORIENTADA A OBJETOS EN NETBEANS

Introducción a la programación orientada a objetos
Es una nueva forma de entender  la creación de programas .esta filosofía de programación se basa en el concepto de objetos.


Objeto
 Se define como un elemento que tiene unas propiedades y métodos.
Posee unas características:
Þ      Ancho
Þ      Alto
Þ      Color, etc...
A las características de un objeto se les llama propiedades. Un objeto es un elemento “inteligente”. A un objeto se le puede dar órdenes y el obedecerá. A estas órdenes  se les llama métodos. Con los métodos podemos cambiar las características del objeto, pedirle información, o hacer que el objeto reaccione de alguna forma.
Ejemplo:
 Podemos cambiar el color de fondo del cuadro de texto txtCuadro usando el método llamado setBackground.
txtCuadro.setBackground(Color.RED);
Otros métodos que permiten cambiar las propiedades del objeto txtCuadro son:
·           setVisible         - permite poner visible  / invisible el cuadro de texto.
·           setEnabled      - permite activar / desactivar el cuadro de texto
·           setEditable      - permite hacer que se pueda escriba o no en el cuadro de texto
·           setText            - permite introducir un texto en el cuadro de texto
·           setBounds       - permite cambiar el tamaño y posición del objeto
·           setToolTipText       -permite asociar un texto de ayuda al cuadro de texto

Un objeto nos da información sobre él. Para pedirle  información a un objeto usaremos métodos del tipo get.
Ejemplo:
Para pedirle al cuadro de texto el texto que contiene, usaremos el métodogetText.
String cadena = txtCuadro.getText();
Otros métodos que le piden información al cuadro de texto son:
·           getWidth -  te dice la anchura que tiene el cuadro de texto
·           getHeight  -  te dice el alto que tiene el cuadro de texto
·           getselectedText -  te devuelve el texto que esta seleccionado dentro del cuadro de texto
·           getToolTipText  -  te dice el texto de ayuda que tiene asociado al cuadro de texto
También se le puede dar al objeto simplemente órdenes para que haga algo.
Ejemplo:
Podemos ordenar al cuadro de texto txtCuadro que seleccione todo el texto que contiene en su interior a través del método selectAll.
txtCuadro.selectAll();
Otros métodos que ordenan al cuadro de texto son:
·           repaint    - le ordena al cuadro de texto que se vuelva a pintar
·           copy - le ordena al cuadro de texto que copie el texto que tenga seleccionado
·           cut - le ordena al cuadro de texto que corte el texto que tenga seleccionado
·           paste -  le ordena al cuadro que pegue el texto que se hubiera copiado

Herencia 
Consiste en crear una nueva clase a partir de otra. La nueva clase es una mejora de la anterior. Es decir una especialización de la primera clase.
La herencia consiste en tomar una clase inicial y apartir  de ella crear otra clase  que posea las mismas propiedades y métodos que la clase inicial, además de unas nuevas propiedades y método que la clase inicial no poseía. La nueva clase  creada, puede incluso redefinir métodos  de la clase inicial. La clase inicial se denomina Clase Base, la clase creada a partir dela clase base se denomina Clase Derivada. La herencia es unan técnica muy útil  que nos permite reutilizar los códigos, es decir  que nos permite usar de nuevo lo que ya  teníamos programado añadiendo simplemente algunos cambios adecuar el código al proyecto actual.
como podemos observar el el ejemplo  muestra la funcionalidad de la programación Orientada a Objetos.
Ø  Herencia Simple: Es en el caso en el cual una clase solo tiene un ancestro directo. Gráficamente significa que de la clase descendiente solo sale una línea que representa la herencia hacia su clase ancestro
Ø  Herencia múltiple: Clases que poseen más de un ancestro directo. Gráficamente más de una línea de herencia sale de un descendiente hacia sus respectivos ancestros.

Polimorfismo
Nos permite programar en forma general, en lugar de hacerlo en forma específica. En general nos sirve para programar objetos con características comunes y que todos estos compartan  la misma superclase en una dicha jerarquía de clase, como si todas fueran objetos de la superclase

Programación SDI y programación MDI
Toda programación tiene su interfaz  gráfica de usuario (gui) la cual permite a este manejar el programa de forma sencilla. La interfaz  gráfica de usuario consta de la ventana principal, cuadros de dialogo, botones, cuadros de texto. Según el tipo de interfaz:
Þ      Aplicación SDI
Þ      Aplicación MDI

Aplicación SDI (Single Document Interfaca) 
Interfaz de documento único. Quiere decir que las aplicaciones SDI solo pueden mostrar el contenido de un documento a la vez. Ejemplo, es el bloc de notas  de Windows. Si en  el bloc de notas  quieres escribir  un nuevo documento, tienes que  cerrar antes el documento con el que estas trabajando, ya que este programa no admite el manipular  varios escritorios a la vez.

Aplicación MDI (Multiple Document Interfaca)
Interfaz de múltiples documentos, quiere decir que las aplicaciones  MDI pueden mostrar varios documentos a la vez. Ejemplo práctico es el programa de retoque Photoshop. En él, el usuario puede abrir varias fotos y  trabajar con todas ellas. Las aplicaciones MDI normalmente constan de una ventana principal, la cual puede  contener otras ventanas  interiores.

JTable 
Permite crear objetos  con forma de tabla. Estos objetos son ideales para mostrar el contenido de las tablas  de una base de datos, aunque pueden ser usados de forma independiente también  para mostrar cualquier tipo de datos. Los objetos JTable contienen un modelo de datos de tipo DefaultTableModel.Cada vez que se quiera trabajar  con una tabla será necesario construir un modelo y asignárselo a la tabla.

Barras de herramientas 

Es básicamente un contenedor de botones  y otros elementos propios de la ventana. Atraves de estos botones se pueden activar de forma rápida las opciones del programa, las cuales suelen estar también incluidas dentro de la barra de menús.