You are on page 1of 12

Lenguajes de programacin III

Clase 2. Introduccin a la programacin orientada a objetos.


Previo a la programacin orientada a objetos, se conoca estructurada. Programacin estructurada. Es un estilo de programacin con el cual se elaboran programas cuya estructura es la ms clara posible, mediante el uso de tres estructuras bsicas de control lgico, a saber: o SECUENCIA. o SELECCIN. o ITERACIN. Beneficios: Los programas son ms fciles de entender, ya que pueden ser ledos de forma secuencial Reduccin de los costes de mantenimiento de los programas Programas ms sencillos y ms rpidos (ya que es ms fcil su optimizacin) Inconvenientes: El principal inconveniente de este mtodo de programacin es que se obtiene un nico bloque de programa, que cuando se hace demasiado grande puede resultar problemtico su manejo; esto se resuelve empleando la programacin modular, definiendo mdulos interdependientes programados y compilados por separado. Debido al gran inconveniente que posee la programacin estructurada a la hora de desarrollar sistemas gigantes, empiezan a surgir nuevas formas de programar y entre estas tenemos a la Programacin Orientada a Objetos (POO). Qu es la programacin orientada a objetos? La P.O.O. es lo que se conoce como un paradigma o modelo de programacin. Esto significa que no es un lenguaje especfico, o una tecnologa, sino una forma de programar, una manera de plantearse la programacin. Es un paradigma de programacin que usa objetos y sus interacciones para disear aplicaciones y programas de computadora. No es la nica (o necesariamente mejor o peor que otras), pero se ha constituido en una de las formas de programar ms populares e incluso muchos de los lenguajes que usamos hoy da lo soportan o estn diseados bajo ese modelo (PHP, ActionScript, Java, C++, entre otros).
Ing. Erick Andrade- 2011

la programacin

Lenguajes de programacin III

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:

Aplicacin Java Libreras Java Virtual Machine Sistema Operativo Hardware

Ing. Erick Andrade- 2011

Lenguajes de programacin III

Definiciones: 1. Clase: descripcin de un grupo de entidades con caractersticas similares. Ej:


public class Perro{}

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>] }

Ing. Erick Andrade- 2011

Lenguajes de programacin III

4. Constructor: estructura dentro de la definicin de clase que permite inicializarla Ej:


public class Perro{ String nombre; int patas = 4; public void ladrar(){ System.out.println(guau!); } public Perro(String n){ nombre = n; } }

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.

Ing. Erick Andrade- 2011

Lenguajes de programacin III

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

Ing. Erick Andrade- 2011

Lenguajes de programacin III


public void comer(String comida){ System.out.println(Estoy comiendo + comida); } public void comer(String comida, String bebida){ comer(comida); System.out.println( y estoy bebiendo + bebida); } //Sobrecarga de constructores public Perro(String n){ nombre = n; } public Perro(){ nombre = Bobby; } }

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); } //... }

12. Asociacin: relacin entre dos clases o ms

Ing. Erick Andrade- 2011

Lenguajes de programacin III

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

En memoria es visto como:


Ing. Erick Andrade- 2011

Lenguajes de programacin III

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.

Tipos bsicos de datos

Java posee ocho tipos bsicos de datos

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

Lenguajes de programacin III

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

Lenguajes de programacin III

//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; } }

La distribucin de los archivos en disco se ve de esta forma:

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

Ing. Erick Andrade- 2011

Lenguajes de programacin III

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

e instanciamos tres objetos del tipo Perro y modificamos sus nombres:


Perro p1 = new Perro(); Perro p2 = new Perro(); Perro p3 = new Perro(); p1.nombre = Bob; p2.nombre = Chip; p3.nombre = Speedy;

al imprimir dichos valores en el terminal obtenemos siempre el ltimo valor agregado:


System.out.println(p1.nombre); System.out.println(p2.nombre); System.out.println(p3.nombre); //La respuesta a esta ejecucin es: // Speedy // Speedy // Speedy

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.

Ing. Erick Andrade- 2011

Lenguajes de programacin III

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

un mtodo: final indica que el mtodo no puede ser sobreescrito

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:

public final int numeroDeCedula;

Los constructores no pueden ser final.

Ing. Erick Andrade- 2011

You might also like