jueves, 24 de febrero de 2011

ENCAPSULAMIENTO

Es el  ocultamiento del estado, es decir, de los datos miembro, de un objeto de manera que sólo se puede cambiar mediante las operaciones definidas para ese objeto.

Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados a un objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones.
De esta forma el usuario de la clase puede obviar la implementación de los métodos y propiedades para concentrarse sólo en cómo usarlos. Por otro lado se evita que el usuario pueda cambiar su estado de maneras imprevistas e incontroladas.

POLIMORFISMO

Es la  capacidad para que varias clases derivadas de una antecesora utilicen un mismo método de forma diferente.

Por ejemplo, podemos crear dos clases distintas: Pez y Ave que heredan de la  superclase Animal. La  clase Animal tiene el método abstracto mover que se implementa de forma distinta en cada una de las subclases (peces y aves se mueven de forma distinta).

Como se mencionó anteriormente, el concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos. Así nacen los conceptos de funciones polimórficas y tipos polimórficos. Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimórficos, por su parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no está especificado.

PALABRAS CLAVES

PRIVATE: Este termino indica que la clase tiene un acceso restringido, sobre todos los ususarios excepto el creador o programador, y usuarios seleccionados.

PROTECTED: Este termino indica que la clase mencionada esta protegida bajo seguridad,  por el autor. 

 PUBLIC: Este termino indica que la clase mencionada es accesible para cualquier ususario.

TIPOS DE CLASES

LA CLASE Math
La clase Math representa la librería matemática de Java. Las funciones que contiene son las de todos los lenguajes, parece que se han metido en una clase solamente a propósito de agrupación, por eso se encapsulan en Math, y lo mismo sucede con las demás clases que corresponden a objetos que tienen un tipo equivalente (Character, Float, etc.). El constructor de la clase es privado, por los que no se pueden crear instancias de la clase. Sin embargo, Math es public para que se pueda llamar desde cualquier sitio y static para que no haya que inicializarla.

LA CLASE Character
Al trabajar con caracteres se necesitan muchas funciones de comprobación y traslación. Estas funciones están empleadas en la clase Character. De esta clase sí que se pueden crear instancias, al contrario que sucede con la clase Math.

LA CLASE Float
Cada tipo numérico tiene su propia clase de objetos. Así el tipo float tiene el objeto Float. De la misma forma que con la clase Character, se han codificado muchas funciones útiles dentro de los métodos de la clase Float.

LA CLASE Double
Cada tipo numérico tiene su propia clase de objetos. Así el tipo double tiene el objeto Double. De la misma forma que con la clase Character, se han codificado muchas funciones útiles dentro de los métodos de la clase Double.

LA CLASE Integer
Cada tipo numérico tiene su propia clase de objetos. Así el tipo int tiene el objeto Integer. De la misma forma que con la clase Character, se han codificado muchas funciones útiles dentro de los métodos de la clase Integer.

LA CLASE Long
Cada tipo numérico tiene su propia clase de objetos. Así el tipo long tiene el objeto Long. De la misma forma que con la clase Character, se han codificado muchas funciones útiles dentro de los métodos de la clase Long.

LA CLASE Boolean
Los valores boolean también tienen su tipo asociado Boolean, aunque en este caso hay menos métodos implementados que para el resto de las clases numéricas

LA CLASE String
Java posee gran capacidad para el manejo de cadenas dentro de sus clases String y StringBuffer. Un objeto String representa una cadena alfanumérica de un valor constante que no puede ser cambiada después de haber sido creada. Un objeto StringBuffer representa una cadena cuyo tamaño puede variar.
Los Strings son objetos constantes y por lo tanto muy baratos para el sistema. La mayoría de las funciones relacionadas con cadenas esperan valores String como argumentos y devuelven valores String.
Hay que tener en cuenta que las funciones estáticas no consumen memoria del objeto, con lo cual es más conveniente usar Character que char. No obstante, char se usa, por ejemplo, para leer ficheros que están escritos desde otro lenguaje.

LA CLASE StringBuffer

Java posee gran capacidad para el manejo de cadenas dentro de sus clases String y StringBuffer. Un objeto String representa una cadena alfanumérica de un valor constante que no puede ser cambiada después de haber sido creada. Un objeto StringBuffer representa una cadena cuyo tamaño puede variar.

La clase StringBuffer dispone de muchos métodos para modificar el contenido de los objetos StringBuffer. Si el contenido de una cadena va a ser modificado en un programa, habrá que sacrificar el uso de objetos String en beneficio de StringBuffer, que aunque consumen más recursos del sistema, permiten ese tipo de manipulaciones.

SUBCLASE

Se puede decir que una subclase se deriva de una expresion que determinamos al comenzar el algoritmo, luego se deriva igual la expresion con caracteristicas diferentes por ejemplo entre mayusculas y minusculas; a continuacion damos un ejemplo claro de este:
 
EJEMPLO:
 
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; }
}


Java sólo permite asignar una expresión a una variable de tipo A si el tipo de la expresión es A o una subclase de A:
B b= new A(); // error, el objeto no pertence a
              // la clase B
A a= new B(); // Ok
...
B b= a;       // error, la clase estática de a
              // no es una subclase de B.

SUB CLASES

Consideraciones importantes al usar subclases:
Una variable de la clase A, también puede contener referencias a objetos de la clase B, porque estos objetos pertenecen a la clase B y a la clase A. Este concepto se denomina proyección.

A a;
a= new B(); // Proyección

Se dice que A es el tipo estático de la variable a y B es el tipo dinámico de a. El tipo estático siempre se determina en tiempo de compilación mientras que el tipo dinámico en general sólo se puede conocer en tiempo de ejecución y puede cambiar.


Dada una variable a, Java sólo permite invocar los métodos y accesar las variables conocidas para el tipo estático de a.

a.Incx(); // Ok
a.x;      // Ok
a.Incz(); // error, Incz no está definido para A

Del mismo modo, Java sólo permite asignar una expresión a una variable de tipo A si el tipo de la expresión es A o una subclase de A:

B b= new A(); // error, el objeto no pertence a
              // la clase B
A a= new B(); // Ok
...
B b= a;       // error, la clase estática de a
              // no es una subclase de B.


Un objeto se puede convertir a una referencia de la clase B mediante un cast:

A a=new B();
B b=(B)a;
b.Incz();        // Ok
( (B)a ).Incz(); // Ok

No todo objeto se puede convertir a la clase B.

A a= new A();
...
B b=(B)a;      // Ok, en compilación, pero
               // error en tiempo de ejecución

Java chequea durante la ejecución todas las conversiones explícitas (casts). Si el objeto no pertence a la clase a la cual se pretende convertir, entonces se produce una excepción.

HERENCIA

Los métodos y variables que posee un objeto definen la clase a la cual pertenece. Por ejemplo, todos los objetos de la clase A poseen los métodos Set, Incx y Print y las variables x e y. En cambio los objetos de la clase Eslabon poseen el método Encadenar y las variables next y a.

Una variable de tipo Eslabon no puede contener una referencia a un objeto de la clase A.
Eslabon e= new A(); // error de tipos

Puede existir una clase B de objetos que poseen todos los métodos y todas las variables de A, pero además poseen otros métodos y/o variables que no poseen los objetos de A. En ese caso se dice que B es una subclase de A.
Los objetos de la clase B también pertenecen a la clase A.
El principio es que todo el código que se haya escrito para objetos de la clase A también funcionará con objetos de la clase B.
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.

DESTRUCTOR

No porque 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

 El constructor de una clase es un método estándar para inicializar los objetos de esa clase

Se 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

METODO

El metodo es la aplicacion la cual nos permite crear un algortimo con unas caracteristicas especificas, esto radica en los tipos de metodos, los cuales contiene diferentes estructuras como la visualizacion.

Por ejemplo:

Creamos el método main el cual nos ejecutara la aplicación, pero a la vez tiene restricciones en este caso no permite que el usuario ingrese datos.


METODO (SINTAXIS)

 public static void main(String[] args) {

 public class prueba {
int a,c,b;

public static void main () {
a=1;
b=5;
prueba opera = new prueba ()
opera.suma();
system.out.println(opera.suma(5,7));
}

public int suma (int a,int b) {
return a+b;
}

CREACION DE UN OBJETO

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);

COMO CREA UNA CLASE

NOTA: Para crear la clase antes se debe haber creado un proyecto


en esta imagen podemos observar que la primera ventana que aparece es en la cual elegimos el tipo de clase a crear


en esta ventana introducimos el nombre de la clase y la ubicacion para guardar los avances



jueves, 17 de febrero de 2011

MENU

Este es el menu que recopila los ejemplos de los ejercicios:
  1. secuencial
  2. condicional
  3. for
  4. while
  5. do-while
  6. vector
  7. matriz
  8. switch