Conviértete en un emprendedor,profesional del conocimiento en la programación

viernes, 6 de enero de 2012

PROGRAMACIÓN ORIENTADA A OBJETOS

Compartir con:


PROGRAMACIÓN ORIENTADA A OBJETOS


 DIAGRAMA DE UNIDADES DE APRENDIZAJE





ENCAPSULAMIENTO

Programación orientada a objetos, diseño de clases y creación de objetos.

Programación orientada a objetos

La programación orientada a objetos es un nuevo enfoque de programación ya aceptado universalmente por la comunidad de programadores. Esta aceptación se sustenta en los múltiples beneficios que trae y los resume en sus siguientes características principales:

Abstracción, a través de la cual definimos y establecemos el contenido de una clase.

Encapsulamiento, a través de la cual establecemos los niveles de acceso a los componentes de una clase, siendo el acceso privado obligatorio para todos los atributos de la clase.

Herencia, a través de la cual se puede extender o agregar y/o modificar o reutilizar la funcionalidad de una clase existente, llamada padre, en otra clase llamada hija para evitar la redundancia en el código ya desarrollado. Esta característica resume la frase “aprovecha lo que ya está hecho”.

Polimorfismo, a través de la cual se puede programar lo genérico de algún proceso sin saber el detalle de cómo se va a llevar a cabo. Por ejemplo, podemos programar la secuencia genérica de un proceso de cálculo sin saber aún la forma del cálculo que se hará. Esta característica se orienta a la construcción de plantillas de uso general para que, a través de la herencia esas plantillas se puedan particularizar.

Diseño de clases
Una clase, en la práctica es un nuevo tipo de dato particularizado que se compone de: nombre, atributos, constructores y métodos. Los atributos representan los datos y/o características de la clase, los constructores permiten crear objetos de la clase y los métodos representan la funcionalidad de la clase que será utilizada por los objetos.



                                   Nombre
                                                                                                                                                                 
   Atributos

Constructores

Métodos
  
Generalmente los atributos son de acceso privado y los métodos son de acceso público.
Los constructores tienen el mismo nombre de la clase. Cuando una clase no tiene un constructor explícito, se debe considerar uno implícito, por defecto vacío.
 Sintaxis general:

public class Nombre{
// Atributos privados
// Constructores públicos
// Métodos de acceso y modificación públicos y/o privados
}

Creación de objetos
Un objeto, en la práctica es una variable cuyo tipo de dato es una clase. Cuando el objeto es creado, obtiene una copia de los atributos de la clase para uso exclusivo de dicho objeto. Por ésta razón, todos los objetos de una clase tendrán los mismos atributos pero cada uno con valores diferentes.
 Sintaxis general:
 Clase objeto; // declaración del objeto
Objeto = new Clase (); // creación del objeto, invoca al constructor

Asignación de objetos
 Cuando un objeto es asignado a otro, éste guarda la dirección de memoria del objeto existente. Luego, el acceso a los datos puede hacerse por cualquiera de los objetos.
Sintaxis general: Clase a, b; // declaración de 2 objetos
 a = new Clase (); // crea un objeto con sus propios datos/atributos
b = a; // asignación del objeto a en el objeto b.
 Luego, tanto a como b pueden utilizar la misma funcionalidad de la clase y referirse a los mismos datos creados para el objeto a.

  
Ejemplo 1
Diseñe una clase de nombre Producto con los siguientes atributos privados: código (cadena), descripción (cadena), precio (real) y con los métodos públicos get/set. Considere un constructor implícito.


public class Producto {

// atributos privados
prívate String codigo, descripcion;
 prívate double precio;

// constructor
   public Producto(String codigo, String descripcion, double precio){
           this.codigo=codigo;
           this.descripcion=descripcion;
           this.precio=precio;

// métodos get
public String getCodigo(){return codigo;}
public String getDescripcion(){return descripcion;}
public double getPrecio(){ return precio;}

// métodos set
 public void setCodigo(String c){ codigo =c; }
public void setDescripcion(String d){ descripcion=d; }
 public void setPrecio(double p){ precio=p; }


  }


  




Cada vez que hace clic en el botón Nuevo debe crear un objeto de la clase Producto y mostrar la información de sus atributos. Cada vez que hace clic en el botón Borrar debe borrar la información del área de texto, de las cajas de texto y enfocar el ingreso en la caja de texto del código.

PanelPrincipal con distribución BorderLayout.

En el norte colocamos otro panel (jPanel1) con distribución BoxLayout donde colocamos las etiquetas y las cajas de texto.

En el sur colocamos otro panel (jPanel2) con distribución FlowLayout donde colocamos los botones.

En el centro colocamos un área de texto con su propiedad editable desmarcada.

Doble clic en el botón Nuevo para programar su acción:

private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) {
     
 // crea un objeto nuevo de la clase Producto
          Producto nuevo = new Producto();

// lee los valores de la GUI y los coloca como atributos del nuevo objeto                       

     nuevo.setCodigo(leeCodigo());
     nuevo.setDescripcion(leeDescripcion());
     nuevo.setPrecio(leePrecio());

  // muestra la información del nuevo objeto
     lista(nuevo);  }
// métodos que leen los datos de la GUI
private String leeCodigo(){return txtCodigo.getText();}
private String leeDescripcion(){return txtDescripcion.getText();}
private double leePrecio(){return Double.parseDouble(txtPrecio.getText());}

// método que muestra la información de un objeto de la clase Producto

private void lista(Producto p){
imprime("Codigo\t:"+p.getCodigo());                        
imprime("Descripcion\t:"+p.getDescripcion());
imprime("Precio\t:"+p.getPrecio()); }

//método que muestra una cadena en el objeto de salida de la GUI
private void imprime(String s){
txtSalida.append(s+"\n");   }

Observe y analice la llamada al constructor desarrollado. Regresamos al diseño y hacemos doble clic en el 
botón Borrar para programar su acción:
             
private void btnBorrarActionPerformed(java.awt.event.ActionEvent evt) {
                        txtSalida.setText("");
                       txtCodigo.setText("");
                       txtDescripcion.setText("");
                       txtPrecio.setText("");
                       txtCodigo.requestFocus(); }

Desarrolle la clase de aplicación de nombre Principal en un JFrame. Coloque distribución BorderLayout, vaya a la ficha Source y escriba lo que está en negrita:
                      public class Principal extends javax.swing.JFrame {
                      public Principal() {
                      initComponents();
                      add(new PanelPrincipal());
                      setSize(600,200); }

Ejecute su aplicación.








0 comentarios:

Publicar un comentario