iron

iron

jueves, 24 de febrero de 2011

programa menu



Encapsulamiento

Encapsulamiento de Clases

Definición previa: un paquete es una colección de clases que se encuentran en el mismo directorio. Las clases permiten implementar tipos de datos abstractos. El problema que se presenta es que desde cualquier clase se puede accesar los campos de un objeto perteneciente a otra clase. Esto es una violación al principio de abstracción que dice que un tipo de datos abstracto sólo puede ser manipulado a través de las operaciones que se definen para éste.

 

POLIMORFISMO.

Polimorfismo

El polimorfismo es un concepto de la programación orientada a objetos que 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 jerarquía de clases, como si todas fueran objetos de la superclase. Esto nos simplifica la programación.

Recuerde el ejemplo del ecosistema, en donde todos los objetos de las distintas especies heredaban de una superclase llamada Animal, que brindaba la información general de cualquier animal, independiente de su especie. Sin embargo, cada especie hace un uso particular de cada uno de los métodos u operaciones de la clase Animal. El método comer() no se ejecutará de la misma manera en un León() o en un Pavo(). Lo mismo ocurre para métodos moverse() en objetos de tipo Tiburón() o Gallina(), aunque todas las especies realicen estos métodos. A la sobrescritura o implementación específica de métodos es la clave del polimorfismo.

QUE SON LAS PALABRAS PRIVATE, PROTECTED Y PUBLIC. QUE INDICAN.

Las palabras private, protected y public son atributos de un campo o un método y su significado es el siguiente:
  • private: El campo o método sólo es visible dentro de la clase donde se define.
  • protected: El campo o método es visible en la clase en donde se define y en cualquiera de sus subclases.
  • public: El campo o método es visible en cualquier clase.
  • Ninguna de las anteriores: El campo o método es visible en cualquiera de las clases pertenecientes al paquete en donde se define.
Ejemplo:
class B
{
  public void MetB()
  {
    A a= new A();
    a.pubc= 1;   // Ok
    a.priva= 2;  // error, privado
    a.protb= 3;  // error, B no es
                 // subclase de A

    a.MetPub();  // Ok
    a.MetPriv(); // error, privado
  }
}

TIPOS DE CLASES. EXPLIQUE CADA UNA.


Tipos de Clases


Hasta ahora sólo se ha utilizado la palabra clave public para calificar el nombre de las clases que hemos visto, pero hay tres modificadores más. Los tipos de clases que podemos definir son:
abstract
Una clase abstract tiene al menos un método abstracto. Una clase abstracta no se instancia, sino que se utiliza como clase base para la herencia.

final
Una clase final se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase final. Por ejemplo, la clase Math es una clase final.

public
Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas.

synchronizable
Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se puedan modificar las mismas variables sin que haya problemas de que se sobreescriban.

SUBCLASE.

class B extends A
{
  ...
  B(int ix, int iy)
  {
    super(ix, iy);
    z= 0;
  }
  B(int ix, int iy, int iz)
  {
    super(ix, iy); z= iz; } B(B b) { z= b.z; // x=y=? super(b.x, b.y); // error, super debe ser
  }                  // la primera instrucción
}

DEFINICION DE SUBCLASE.

Una subclase de Java es una clase que hereda un método o métodos de una superclase de Java.

herencia

La herencia en java


Java permite el empleo de la herencia , característica muy potente que permite definir una clase tomando como base a otra clase ya existente. Esto es una de las bases de la reutilización de código, en lugar de copiar y pegar.


En java, como ya vimos la herencia se especifica agregando la claúsula extends después del nombre de la clase. En la claúsula extends indicaremos el nombre de la clase base de la cuál queremos heredar.

Al heredar de una clase base, heredaremos tanto los atributos como los métodos, mientras que los constructores son utilizados, pero no heredados.


Practicas:

Construyamos la clase Taxista.java con el siguiente código:

public class Taxista extends Persona {
private int nLicencia;
public void setNLicencia(int num)
{
nLicencia = num;
}
public int getLicencia()
{
return nLicencia;
}
}

La jerarquía de clases permite apreciar fácilmente qué clases son subclases de otras.

DESTRUCTOR EN JAVA?.

La destrucción del objeto
 a.) La destrucción de los objetos

Cuando un objeto no va a ser utilizado, el espacio de memoria de dinámica que utiliza ha de ser explícitamente.

El recolector de basura será el encargado de liberar una zona de memoria dinámica que había sido reservada mediante el operador new, cuando el objeto ya no va a ser utilizado más durante el programa (por ejemplo, sale del ámbito de utilización, o no es referenciado nuevamente).
El sistema de recogida de basura se ejecuta periódicamente, buscando objetos que ya no estén referenciados.

c.) La destrucción personalizada: finalize

A veces una clase mantiene un recurso que no es de Java como un descriptor de archivo o un tipo de letra del sistema de ventanas. En este caso sería acertado el utilizar la finalización explícita, para asegurar que dicho recurso se libera. Esto se hace mediante la destrucción personalizada, un sistema similar a los destructores de C++.

CONSTRUCTOR.

Un constructor por defecto es un constructor sin parámetros que no hace nada. Sin embargo será invocado cada vez que se construya un objeto sin especificar ningún argumento, en cuyo caso el objeto será iniciado con los valores predeterminados por el sistema (los atributos numéricos a ceros, los alfanuméricos a nulos, y las referencias a objetos a null).

 Ejemplo

Un constructor por defecto, para la clase SSuma quedaría así:
public SSuma() {}

Como se observa el constructor no posee ningún parámetro, ya que como no ha sido definido propiamente por el programador, Java lo hace por default.
Si se define un constructor con parámetros, (definido explícitamente) el constructor por default se reemplaza por éste.

Ahora podemos crear un constructor explícito para una clase simple, utilizando el nombre Arychan para la clase. Arychan es una clase que se refiere a una persona de cierta edad, que posee un nombre y ciertos atributos, puede ser divertida, y hermosa, estos atributos serán del tipo cadena de caracteres (String) por lo que se agregará un atributo más llamado salario y será de tipo numérico.
Primero se declara la clase con sus atributos:
class Arychan
 {
   //ATRIBUTOS
   private String nombre;
   private String descripción;
   private String formaDeSer;
   private double salario;
 
   //METODOS
   public Arychan() {} //CONSTRUCTOR SIN PARÁMETROS
   public Arychan(String nom, String des, String forma, double sal)
   {
       asignarNombre(nom); // nombre = nom;
       asignarDescripcion(des); // descripción = des;
       describir(forma);  //formaDeSer = forma;
       ingreso(sal); //salario = sal;
   }
   //...
 }

DEFINICION DE METODO.

La sintaxis global es:
Tipo_Valor_devuelto  nombre_método ( lista_argumentos ) {
        bloque_de_codigo;
}
y la lista de argumentos se expresa declarando el tipo y nombre de los mismos (como en las declaraciones de variables). Si hay más de uno se separan por comas.

Por ejemplo:

int sumaEnteros ( int a, int b ) {
        int c = a + b;
        return c;
}
  • El método se llama sumaEnteros.
  • Recibe dos parámetros también enteros. Sus nombres son a y b.
  • Devuelve un entero. 
En el ejemplo la claúsula return se usa para finalizar el método devolviendo el valor de la variable c.

METODO.

que es un metodo:

Un método es:
  • Un bloque de código que tiene un nombre,
  • recibe unos parámetros o argumentos (opcionalmente),
  • contiene sentencias o instrucciones para realizar algo (opcionalmente) y
  • devuelve un valor de algún Tipo conocido (opcionalmente).

CLASE. COMO SE CREA.

clase:
es la agrupacion de variables y datos, y de fundiones que operan sobre estos mismo datos;

como se crea
"public classname"
en el siguiente fragmento se ve la creacion de una clase:

public MiClase {
         int i;
         public MiClase() {
             i = 10;
             }
         public void Suma_a_i( int j ) {
             i = i + j;
             }
         }

OBJETO, COMO SE CREA.

Un objeto puede verse como una pieza de software que cumple con ciertas características:

Cuando se utiliza programación orientada a objetos, se definen clases (que definen objetos genéricos) y la forma en que los objetos interactúan entre ellos, a través de mensajes. Al crear un objeto de una clase dada, se dice que se crea una instancia de la clase, o un objeto propiamente dicho. Por ejemplo, una clase podría ser "autos", y un auto dado es una instancia de la clase.

Frecuentemente, se verá la creación de un objeto Java con un sentencia como esta.
Date hoy = new Date();