jueves, 24 de febrero de 2011

swtch

switch 3

switch 2


switch

Encapsulamiento

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.

Visibilidad de Campos y Métodos

En java al definir una clase se puede controlar la visibilidad que tendrán sus campos y métodos al exterior de la clase. Este control se efectúa de la siguiente forma:
class A
{
private int privx;
protected int protb;
public int pubc;
int paqd;
private void MetPriv() { ... }
protected void MetProt() { ... }
public void MetPub(A a)
{
Un campo siempre es visible //
// en la clase en donde se define
... protb ... a.protb ...
... privx ... a.privx ... ... pubc ... a.pubc ... // Un método siempre es visible
; } void MetPaq() { ... } }
// en la clase en donde se define MetPriv(); a.MetPriv(
)

Polimorfismo

Polimorfismo

El concepto de Polimorfismo es uno de los fundamentos para cualquier lenguaje orientado a Objetos, las mismas raíces de la palabra pueden ser una fuerte pista de su significado: Poli = Multiplemorfismo= Formas , esto implica que un mismo Objeto puede tomar diversas formas.

private-public-protected

public
public void CualquieraPuedeAcceder(){}
Cualquier clase desde cualquier lugar puede acceder a las variables y métodos de instacia públicos.
protected
protected void SoloSubClases(){}
Sólo las subclases de la clase y nadie más puede acceder a las variables y métodos de instancia protegidos.
private
private String NumeroDelCarnetDeIdentidad;
Las variables y métodos de instancia privados sólo pueden ser accedidos desde dentro de la clase. No son accesibles desde las subclases.

tipos de clase


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.

definicion de Subclases

Una subclase se define mediante:
class B extends A
{
  // variables que B agrega a A
  int z;
  // Métodos que B agrega a A
  // Observe que B también posee x
  void Incz() { z= z+x; }
}
Se dice que la clase B hereda todas las variables y métodos de A. También se dice que B se deriva de A o que A es la clase base para B.La jerarquía de clases permite apreciar fácilmente qué clases son subclases de otras.

Observe que todos los objetos pertenecen a la clase Object.

Herencia

La Herencia es el mecanismo por el que se crean nuevos objetos definidos en términos de objetos ya existentes. Por ejemplo, si se tiene la clase Ave, se puede crear la subclase Pato, que es una especialización de Ave.
    class Pato extends Ave {
        int numero_de_patas;
        }
La palabra clave extends se usa para generar una subclase (especialización) de un objeto. Una Pato es una subclase de Ave. Cualquier cosa que contenga la definición de Ave será copiada a la clase Pato, además, en Pato se pueden definir sus propios métodos y variables de instancia. Se dice que Pato deriva o hereda de Ave.
Además, se pueden sustituir los métodos proporcionados por la clase base. Utilizando nuestro anterior ejemplo de MiClase, aquí hay un ejemplo de una clase derivada sustituyendo a la función Suma_a_i():
    import MiClase;
    public class MiNuevaClase extends MiClase {
        public void Suma_a_i( int j ) {
            i = i + ( j/2 );
            }
        }
Ahora cuando se crea una instancia de MiNuevaClase, el valor de i también se inicializa a 10, pero la llamada al método Suma_a_i() produce un resultado diferente:
    MiNuevaClase mnc;
    mnc = new MiNuevaClase();
    mnc.Suma_a_i( 10 );

En Java no se puede hacer herencia múltiple. Por ejemplo, de la clase aparato con motor y de la clase animal no se puede derivar nada, sería como obtener el objeto toro mecánico a partir de unamáquina motorizada (aparato con motor) y un toro (aminal). En realidad, lo que se pretende es copiar los métodos, es decir, pasar la funcionalidad del toro de verdad al toro mecánico, con lo cual no sería necesaria la herencia múltiple sino simplemente la compartición de funcionalidad que se encuentra implementada en Java a través de interfaces

Destructor en java

Destructor
  • Un destructor es un método que se invoca automáticamente cuando el objeto se destruye. Java no posee destructores, porque tiene recolección de basuras. C++ posee destructores.

Constructor

  • Definicion: El constructor de una clase es un método estándar para inicializar los objetos de esa claseSe invoca automáticamente cuando new crea un objeto de esa clase.
  • Los constructores se declaran en el momento de definir la clase.
    class A {
      int x, y;
      A() { x=0; y=0; } // el constructor
      ...
    }
    
    A a= new  A();
    a.Print(); // 0 0
    
  • El constructor puede tener parámetros. En este caso, se deben colocar los argumentos respectivos al crear el objeto:
    class A {
      int x, y;
      A(int ix, int iy)
      { x=ix; y=iy; } // el constructor
      ...
    }
    
    A a= new A(1,2);
    a.Print(); // 1 2
    
    a= new A(); // error, hay que colocar
                // los argumentos
    a.A(1,2);   // error, no se puede
                // invocar el constructor
    
  • Se pueden colocar varios constructores. Durante la creación de un objeto, se invoca aquel que calza con los argumentos dados:
    class A {
      int x, y;
      A() { x=0; y= 0; }
      A(int ix, int iy)
      { x=ix; y=iy; }
      A(A from)
      { x= from.x; y= from.y; }
      ...
    }
    
    A a1= new A();
    a1.Print();    // 0 0
    A a2= new A(1,2);
    a2.Print();    // 1 2
    A a3= new A(a2);
    a3.Print();    // 1 2

definicion de metodo

Métodos 

Los métodos son funciones que pueden ser llamadas dentro de la clase o por otras clases. El constructor es un tipo específico de método que siempre tiene el mismo nombre que la clase.
Cuando se declara una clase en Java, se pueden declarar uno o más constructores opcionales que realizan la inicialización cuando se instancia (se crea una ocurrencia) un objeto de dicha clase.
Utilizando el código de ejemplo anterior, cuando se crea una nueva instancia de MiClase, se crean (instancian) todos los métodos y variables, y se llama al constructor de la clase:
MiClase mc;
mc = new MiClase();
La palabra clave new se usa para crear una instancia de la clase. Antes de ser instanciada con new no consume memoria, simplemente es una declaración de tipo. Después de ser instanciado un nuevo objetomc, el valor de i en el objeto mc será igual a 10. Se puede referenciar la variable (de instancia) i con el nombre del objeto:
    mc.i++; // incrementa la instancia de i de mc

Al tener mc todas las variables y métodos de MiClase, se puede usar la primera sintaxis para llamar al método Suma_a_i() utilizando el nuevo nombre de clase mc:

    mc.Suma_a_i( 10 );

y ahora la variable mc.i vale 21.

Método


Método (informática)

En la programación orientada a objetos, un método es una subrutina asociada exclusivamente a una clase
 (llamados métodos de clase o métodos estáticos) o a un objeto (llamadosmétodos de instancia).
 Análogamente a los procedimientos en los lenguajes imperativos, un método consiste generalmente de 
una serie de sentencias para llevar a cabo una acción, un juego de parámetros de entrada que regularán 
dicha acción y, posiblemente, un valor de salida (o valor de retorno) de algún tipo.
Algunos lenguajes de programación asumen que un método debe de mantener el invariante del objeto al 
que está asociado asumiendo también que éste es válido cuando el método es invocado. En lenguajes 
compilados dinámicamente, los métodos pueden ser objetos de primera clase, y en este caso se puede
 compilar un método sin asociarse a ninguna clase en particular, y luego asociar el vínculo o contrato 
entre el objeto y el método en tiempo de ejecución. En cambio en lenguajes no compilados
 dinámicamente o tipados estáticamente, se acude a precondiciones para regular los parámetros del
 método y postcondiciones para regular su salida (en caso de tenerla). Si alguna de las precondiciones
 o postcondiciones es falsa el método genera una excepción. Si el estado del objeto no satisface la
 invariante de su clase al comenzar o finalizar un método, se considera que el programa tiene un error 
de programación.

Objetos

  • Un objeto en Java cumple las funciones que realiza un record en Pascal o una estructura en C. En Java las variables sólo pueden contener referencias a objetos, es decir punteros a objetos.
  • Todos los objetos se crean con new:
    A a1= new A();
    
    A es el tipo del objeto creado. También se dice que A es la clase del objeto o que el objeto es una instancia de la clase A. La variable a1 también es de tipo A, o análogamente a1 es de la clase A, porque a1 debe contener siempre referencias a objetos que pertenecen a la clase A.
  • Un objeto posee variables de instancia o campos que se pueden consultar o asignar. Los campos que posee un objeto se definen al momento de declarar la clase a la cual pertenece:
    class A { int x, y; }
    A a= new A();
    a.x= 1;
    a.y= 2;
    System.out.println(a.x+" "+a.y); // 1 2
    
  • Un objeto también puede poseer métodos. Un método es un procedimiento cuya invocación siempre va asociada a un objeto. Los métodos se definen en la declaración de la clase:
    class A {
      int x, y; // variables de instancia
      // Métodos
      void Set(int vx, int vy) { x= vx; y= vy; }
      void Incx() { x++; }
      void Print() { System.out.println(x+" "+y); }
    }
    A a= new A();
    a.Set(10, 20);
    a.Print();      // 10 20
    a.Incx();
    a.Print(); // 11 20
    Incx(); // error, falta indicar el objeto
    A a2= new A();
    a2.Set(5, 6);
    a2.Print();     // 5 6
    a.Print();      // 11 20

Clases

CLASES
Las clases son lo más simple de Java. Todo en Java forma parte de una clase, es una clase o describe como funciona una clase. El conocimiento de las clases es fundamental para poder entender los programas Java.
Todas las acciones de los programas Java se colocan dentro del bloque de una clase o un objeto. Todos los métodos se definen dentro del bloque de la clase, Java no soporta funciones o variables globales. Esto puede despistar a los programadores de C++, que pueden definir métodos fuera del bloque de la clase, pero esta posibilidad es más un intento de no separarse mucho y ser compatible con C, que un buen diseño orientado a objetos. Así pues, el esqueleto de cualquier aplicación Java se basa en la definición de una clase.
Todos los datos básicos, como los enteros, se deben declarar en las clases antes de hacer uso de ellos. En C la unidad fundamental son los ficheros con código fuente, en Java son las clases. De hecho son pocas las sentencias que se pueden colocar fuera del bloque de una clase. La palabra clave import (equivalente al #include) puede colocarse al principio de un fichero, fuera del bloque de la clase. Sin embargo, el compilador reemplazará esa sentencia con el contenido del fichero que se indique, que consistirá, como es de suponer, en más clases.