Professional Documents
Culture Documents
la programacin
Lo que caracteriza a la POO es que intenta llevar al mundo del cdigo lo mismo que encontramos en El Mundo Real. Cuando miramos a nuestro alrededor qu vemos? pues, cosas, objetos, pero podemos reconocer estos objetos porque cada objeto pertenece a una clase, eso nos permite distinguir, por ejemplo, un perro de un auto (porque son de clases diferentes) y tambin un TV de otro (porque, aunque sean iguales, cada uno es un objeto distinto). ste es el modelo que la POO intenta seguir para estructurar un sistema.
Java
Qu es Java? Java es una tecnologa completa nacida en mayo de 1996 que consta de un lenguaje de programacin orientado a objetos desarrollado en los laboratorios de Sun Microsystems a principios de los 90, un sistema de despliegue, un conjunto de herramientas de soporte y herramientas de creacin y compilacin. A diferencia de los lenguajes de programacin convencionales, que generalmente estn diseados para ser compilados a cdigo nativo, Java es compilado a cdigo intermedio interpretado por una mquina virtual Java denominado bytecode (usando normalmente un compilador JIT) lo que le permite ser compilado una sola vez y ejecutado en cualquier mquina, con cualquier sistema operativo, mientras exista una mquina virtual compatible. El lenguaje en s mismo toma mucha de su sintaxis y semntica de C y Smalltalk, pero tiene un modelo de objetos mucho ms simple y elimina herramientas de bajo nivel como punteros. . Luego, para poder ejecutar nuestra aplicacin Java solo necesitamos de la existencia de dicha mquina virtual. La arquitectura puede ser vista en el siguiente grfico:
Sintaxis bsica de declaracin de una clase en java: <modificadores> class <nombre_clase> { [<Atributos>] [<Constructor>] [<Mtodos>] } 2. Objeto: instancia de una clase. Creacin nica a partir del plano o clase, con atributos independientes. Ej:
Perro miPerro = new Perro();
3. Miembros de clase: se entiende por miembros de clase a los atributos y mtodos que conforman la clase. Ej:
public class Perro { //Atributos String nombre; int patas = 4; //Metodos public void ladrar(){ System.out.println(guau!); } }
Atributo: Representa el estado. Sintaxis bsica de declaracin de un atributo en java: [<modificadores>] <tipo> <name> [ = valor_inicial] ; Mtodo: Representa el comportamiento. Sintaxis bsica de declaracin de mtodos en java: [<modificadores>] <tirpo_de_retorno> <name> ([<parametros>]) { [<cdigo>] }
Sintaxis bsica de declaracin de un constructor en java: [<modificadores>] class <name> ([<parametros>]) { [<cdigo de inicializacion>] } 5. Encapsulamiento El encapsulamiento consiste en unir en la Clase las caractersticas y comportamientos, esto es, las variables y mtodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstraccin y el ocultamiento que veremos a continuacin. La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde slo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque nos interesar ser conocer qu hace la Clase pero no ser necesario saber cmo lo hace. 6. Ocultamiento Es la capacidad de ocultar los detalles internos del comportamiento de una Clase y exponer slo los detalles que sean necesarios para el resto del sistema. El ocultamiento permite 2 cosas: restringir y controlar el uso de la Clase. Restringir porque habr cierto comportamiento privado de la Clase que no podr ser accedido por otras Clases. Y controlar porque daremos ciertos mecanismos para modificar el estado de nuestra Clase y es en estos mecanismos dnde se validarn que algunas condiciones se cumplan. En Java el ocultamiento se logra usando las palabras reservadas: public, private y protected delante de las variables y mtodos.
7. Abstraccin: descartar los detalles. La abstraccin se puede dar a varios niveles: En atributos: descartar los tipos de datos y modificadores. En mtodos: descartar los tipos de datos, parmetros, funcionalidad,modificadores y tipos de retorno. En clases: descartar los miembros de la clase. En paquetes: descartar las clases que conforman al paquete para su visualizacin global.
8. Herencia: proceso por el cual una clase hija obtiene los miembros de otra clase padre Ej:
public class Mamifero{ String nombre; } public class Perro extends Mamifero{ //el atributo nombre es heredado de la clase Mamifero int patas = 4; public void ladrar(){ System.out.println(guau!); } public Perro(String n){ nombre = n; } }
9. Polimorfismo: posibilidad de los objetos en comportarse como definidos por mltiples clases. Por ejemplo, un objeto pastor alemn se puede comportar como un Perro o como un Mamfero Ej:
Perro miPerro = new Perro(); Mamifero miMamifero = miPerro(); //todo perro es un Mamifero //lo siguiente no compila porque todo Perro es un Mamifero, //pero no todo Mamifero es un Perro. Perro miPerro2 = new Mamifero();
10. Sobrecarga: una clase con definiciones de mltiples mtodos o constructores con nombres iguales y con conjuntos de parmetros diferentes. Ejemplo, println(). Ej:
public class Perro extends Mamifero{ //... //Sobrecarga de metodos
11. Sobreescritura: hacer ms especfico un mtodo de una clase padre en una clase hija. Las condiciones para que el mtodo sea sobreescrito son:
Debe
tener el mismo nombre del mtodo original Debe tener el mismo conjunto y rden de parmetros Debe retornar el mismo tipo de datos Debe arrojar las mismas excepciones o excepciones hijas de la original El mdificador de acceso no puede ser ms restrictivo que el original Ej:
public class Mamifero{ //... public void setNombre(String n){ nombre = n; } } public class Perro extends Mamifero{ //... public void setNombre(String n){ System.out.print (Se ha modificado el nombre del perro + nombre); nombre = n; System.out.println( al nuevo nombre + nombre); } //... }
13. Agregacin: particularidad de la asociacin donde tanto el elemento contenedor como alguno de los elementos contenidos deben existir y estar enlazados. Ejemplo: la cocina (como espacio fsico) y los artefactos de cocina (horno, micro-ondas, etc.). Si no existe el espacio fsico, se pierde el concepto de cocina. Si no existe ningn artefacto de cocina en el espacio fsico, simplemente tendramos cuatro paredes y se pierde con esto tambin el concepto de cocina
14.Composicin: particularidad de la agregacin donde tanto el elemento contenedor como todos los elementos contenidos deben existir y estar enlazados. Ejemplo: un tubo de madera es simplemente un tubo de madera. Una mina de grafito es simplemente una mina de grafito. Juntos forman un lpiz. La ausencia de alguno de estos elementos hace que deje de existir el lpiz.
15. Recoleccin de basura: tcnica utilizada por la tecnologa Java donde un hilo de ejecucin denominado Recolector de Basura (GC) se encarga de liberar la memoria que no est siendo utilizada. Esto permite que el programador se enfoque en lo que realmente debe programar, en lugar de preocuparse por el ciclo de vida, tarea que realiza la JVM. 16. Manejo de memoria: en Java existen dos regiones de memoria; el stack y el heap. Stack: es el encargado de almacenar las variables que pertenezcan a alguno de los ocho tipos bsicos de datos. Heap: es la regin de memoria encargada de almacenar los objetos. De esta forma si escribimos el siguiente cdigo:
int i = 1; Perro miPerro = new Perro();
Observe que las variables que apuntan a los objetos en la memoria realmente almacenan la direccin de memoria del objeto, un entero en formato hexadecimal. Por lo tanto estas variables tambin se encuentran en el stack, donde pertenecen los ocho tipos bsicos de datos. La siguiente sentencia es ilegal:
Perro miPerro = 17;
Ya que el compilador se entera que los tipos son incompatibles, Perro e int.
This y Super Sentencia this: la palabra reservada this es usada para referirse al mismo objeto y poder acceder exactamente a los miembros que lo conforman.
Ing. Erick Andrade- 2011
Ej:
public class Mamifero{ String nombre; public void setNombre(String nombre){ this.nombre = nombre; } }
Sentencia super: la palabra reservada super es usada para referirse a la clase padre y sus miembros, desde una clase ms especializada en el rbol de herencia. Ej:
public class Mamifero{ String nombre; public void setNombre(String nombre){ this.nombre = nombre; } } public class Perro extends Mamifero{ //... public void setNombre(String n){ System.out.print(Se ha modificado el nombre del perro + nombre); nombre = n; System.out.println( al nuevo nombre + nombre); } //... public void llamarAlPadre(){ //Llamar al metodo setNombre como lo hace el padre super.setNombre(String nombre); } }
Modificadores de acceso En Java existen cuatro modificadores de acceso con los siguientes permisos a miembros, constructores y clases.
Manejo de paquetes Sentencia package: la palabra reservada package le informa a la clase y a la mquina virtual la carpeta a la cual pertenece dicha clase. Ej:
Ing. Erick Andrade- 2011
//declarar el paquete al que pertenece la clase package com.uni.domain; public class Mamifero{ String nombre; public void setNombre(String nombre){ this.nombre = nombre; } }
Sentencia import: la palabra reservada import permite hacer uso de clases que se encuentran en un paquete distinto al declarado en la clase. Ej:
package com.uni.domain; //buscar las declaraciones de las clases que hagan falta import com.uni.domain.Mamifero; import java.awt.*; public class Escritor{ public static void main (String[] args){ Mamifero miMamifero = new Mamifero(); Frame f = new Frame(); f.setVisible(true); } }
Miembros de clase Sentencia static: la palabra reservada static nos indica que un miembro (mtodo o atributo) pertenece a la clase, en lugar de pertenecer a un objeto en particular. En consecuencia un miembro esttico puede ser accedido sin la necesidad de instanciar la clase para su uso. Un buen ejemplo de este uso es la clase java.lang.Math, donde todos sus miembros son estticos. La idea de Math es proporcionar el valor del nmero PI, mtodos como el clculo del seno, coseno y tangente (entre otros) sin necesidad de crear un objeto para ello. De no ser as, entonces deberamos instanciar un objeto a partir de la clase Math cada vez que deseamos hacer una operacin matemtica medianamente compleja. Ej:
public class Calculador{ public static void main (String[] args){ double radio = 4; double longitud = 2*Math.PI*radio; double area = Math.PI*Math.pow(radio,2); System.out.println(La longitud de la circunferencia es de + longitud + y el area es de + area); } }
Por otro lado se debe tomar en cuenta que si un miembro pertenece a la clase (en otras palabras, que es esttico), el valor de los atributos ser almacenado en la clase y no en un objeto especfico. Por ello cuando vemos el siguiente cdigo:
public class Perro{ public static String nombre; }
Esto se debe a que estamos almacenando el valor en la misma casilla, en la clase, en lugar de almacenarla en un objeto en particular.
Constantes Sentencia final: la palabra reservada final define distintas acciones dependiendo de dnde se coloque este modificador: En la clase: final indica que la clase no puede ser heredada Ej:
public final class Perro{ //... }
En
Ej:
public final void depositar(double cantidad, long cuenta);
En
un atributo: indica que el atributo es constante y una vez reciba el primer valor a tiempo de ejecucin, el mismo no podr ser alterado Ej: