Está en la página 1de 57

Unidad 2: Programacin Orientada a Objetos

David Rodrguez drodriguez@tecsup.edu.pe Copyright 2011 por TECSUP

Introduccin
En la presente unidad, se detalla los fundamentos de la programacin orientada a objetos usando el lenguaje de programacin Java, revisando todas las tcnicas asociadas a este paradigma de programacin.

Objetivos
Comprender los conceptos bsicos de la Programacin Orientada a Objetos (POO). Utilizar las caractersticas avanzadas de la programacin orientacin a objetos de Java.

ndice
Programacin Orientada a Objetos (POO) Tcnicas involucradas en la POO Otros conceptos relacionados a la POO Anlisis Orientado a Objetos (AOO)

Programacin Estructurada
Estilo disciplinado de programacin. Tcnica que lleve a programas altamente modificables. Sencillez, claridad y elegancia.

Programacin Estructurada
La Programacin Estructurada se emplea desde el principio de los 70 y es uno de los mtodos ms utilizados en el campo de la programacin. Un programa estructurado se construye partiendo el programa en piezas mas pequeas y manejables conocidas como subrutinas, subprogramas, funciones o procedimientos.

Programacin Estructurada

POO
Cambiar la forma de pensar. Todo gira entorno a objetos. Los objetos son entidades que tienen:
CARACTERSTICAS, y COMPORTAMIENTOS.

Consiste en modelar los Objetos del mundo real como Objetos de software. En POO, un programa se compone slo de objetos.

POO
Terminologa bsica Clase: Plantilla para crear objetos. Objeto: Instancia creada a partir de la Clase. Analoga: Plano Casa Clase Objeto Mensaje: Cuando los objetos se comunican entre s.

POO
Terminologa bsica Caractersticas: Almacena las caractersticas o el estado del objeto. En la POO, las caractersticas son almacenadas en Variables. Comportamientos: Es lo que hace el objeto. Debe modificar alguna caracterstica. En la POO, los comportamientos se almacenan en Mtodos.

POO
Qu es un objeto? Constituye el concepto principal en la tecnologa orientada a objetos. Alrededor tenemos objetos del mundo real. Por ejemplo: computadora, proyector, aire acondicionado, alumnos, entre otros. Los objetos del mundo real tienen dos elementos: CARACTERSTICAS y COMPORTAMIENTOS.

POO
Qu es un objeto?
Por ejemplo, un perro:
Caractersticas: nombre, color, raza, hambre Comportamientos: ladrar, dormir, morder cosas

Otro ejemplo, una bicicleta:


Caractersticas: marca, modelo, nro. aro, velocidad actual Comportamientos: frenar, acelerar, pedalear, cambiar llantas

POO
Qu es un objeto?
Los objetos de software son modelados a partir de objetos del mundo real, por lo tanto tambin tienen caractersticas y comportamientos. Un objeto de software mantiene sus caractersticas en variables y sus comportamientos en mtodos. Resumen: Un objeto de software es un conjunto de atributos y mtodos.

POO
Qu es un objeto? Los objetos del mundo real pueden ser modelados en objetos de software. Por ejemplo, si estamos desarrollando un software para una veterinaria, podemos crear un objeto de software Perro. Podemos usar objetos de software para modelar conceptos abstractos. Por ejemplo, un objeto Felino o Mamfero.

POO
Objeto de Software

POO
Una Bicicleta como Objeto de Software

POO
Resumen sobre los Objetos de Software
Objeto e instancia se refieren a lo mismo. A partir de ahora, a los objetos de software se les llamar simplemente objetos. A las variables de los objetos se les conoce como variables de instancia o variables miembro. A los mtodos de los objetos se les conoce como mtodos de la instancia o mtodos miembro.

POO
Mensajes entre Objetos Un objeto solo no tiene mucha utilidad. Un programa escrito en base a la POO se puede entender como: Conjunto de objetos enviando mensajes y respondiendo a otros mensajes.

POO
Mensajes entre Objetos Para mandar un mensaje, se necesita lo siguiente:
El objeto a quien vamos a enviar el mensaje. El nombre del mtodo que vamos a ejecutar. Los parmetros que requiera ese mtodo.

POO
Mensajes entre Objetos

POO
Objetivos de la POO
Fomentar la reutilizacin y extensin del cdigo. Implementar sencilla. sistemas complejos de manera

Reduccin de la brecha entre el mundo de los problemas y el mundo de los modelos. Programacin por eventos. Programacin en ambientes de interfaz grfica.

POO
Ventajas de la POO
Facilidad de mantenimiento. Rapidez de desarrollo. Ms fcil de entender porque se utilizan abstracciones ms cercanas a la realidad. Reusabilidad. Extensibilidad. Portabilidad.

POO
Resumen de Objetos
La programacin orientada a objetos fue concebida por quienes conceban el mundo como poblado de objetos que interactan entre si. El atractivo de la orientacin a objetos es que proporciona conceptos y herramientas con las cuales se modela y representa el mundo real tan fielmente como sea posible.

POO
Clases
Las Clases son las plantillas de los objetos. A partir de las Clases se crean los objetos (conocidos tambin como instancias). Desde otra perspectiva: Las Clases agrupan a un conjunto de objetos del mismo tipo. Definicin: Una Clase es una plantilla que define variables y mtodos comunes para todos los objetos de cierto tipo.

POO
Clases Retomando el ejemplo del objeto Bicicleta, podemos decir que existe una Clase Bicicleta y, a partir de ella, se pueden crear varios objetos Bicicleta con diferentes caractersticas.

POO
Clases
IAR C N TA S N I

INST

ANC IA

POO
Clases VS Objetos Las Clases permiten crear los Objetos. Los Objetos son los existen en un programa, ocupan una posicin en memoria y son lo que habitan en un software orientado a objetos. Las Clases no pueden ser usadas si es que no son instanciadas (instanciar significa crear los Objetos).

POO
Resumen
La Programacion Orientada a Objetos es un metodo de implementacion en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son todas miembros de una jerarquia de clases unidas mediante relaciones Grady Booch

Tcnicas involucradas en la POO


1. 2. 3. 4. 5. Abstraccin Encapsulamiento Principio de informacin oculta Herencia Polimorfismo

1. Abstraccin
Es la representacin de las caractersticas esenciales de un objeto, as como de su comportamiento. Definir una abstraccin significa describir una entidad del mundo real, no importando lo compleja que pueda ser, representando sus caractersticas y comportamiento.

2. Encapsulamiento
Mecanismo que permite unir, en una nica abstraccin, todas las propiedades (caractersticas) y funcionalidades (comportamiento) de una entidad. Booch: es el proceso de almacenar en un mismo compartimiento los elementos de una abstraccin que constituyen su estructura y su comportamiento.

2. Encapsulamiento
Ventaja:
Facilita el aumento de la complejidad, por el uso de cajas negras de las cuales se conoce el comportamiento pero no los detalles internos.

Desventaja:
Sobrecarga por las llamadas a los mtodos, an para acceder a atributos.

3. Principio de Informacin Oculta


Consiste en la capacidad de proveer la posibilidad de ocultar los detalles de la representacin interna de un objeto y exponer solo aquellos detalles necesarios para el resto del sistema. Los otros objetos dependern de un comportamiento especfico y no de la implementacin interna de un objeto.

3. Principio de Informacin Oculta

4. Herencia
Es una relacin entre Clases en donde una Clase (conocida como Hija) comparte las caractersticas y comportamiento de otra Clase (conocida como Padre).

4. Herencia

4. Herencia
Beneficios de la herencia Reusabilidad del Software.
Mayor productividad en el desarrollo. Mayor confiabilidad del cdigo.

Comparticin de Cdigo. Consistencia de implementacin. Polimorfismo. Ocultamiento de informacin.

4. Herencia
Costos de la herencia Mayor tamao del programa. Tiempo de procesamiento adicional al paso de mensajes. Complejidad de los programas.

5. Polimorfismo
Es la propiedad de los Objetos de comportarse de forma especfica ante un mensaje. Los Objetos polimrficos permiten el procesamiento de objetos cuyo tipo no se conoce en tiempo de compilacin.

5. Polimorfismo
Un sistema tpico construido con Objetos puede llegar a estar constituido por una gran cantidad de ellos. Si cada uno posee un lenguaje distinto para comunicarse, deberamos administrar un diccionario demasiado extenso. Hay que reducir el lenguaje. Objetos parecidos tienen que responder a los mismos mensajes. Es la cualidad que poseen los objetos de distintas especies de implementar un mismo mensaje, cada uno a su conveniencia.

Otros conceptos relacionados a la POO


1. 2. 3. 4. Constructor de la Clase Clases Abstractas Interfases Paquetes

1. Constructor de la Clase
Es un mtodo de la Clase que efecta tareas de inicializacin. Al instanciar un objeto, se invoca implcitamente su constructor. En el constructor se debe iniciar el estado de la Clase (es decir, sus variables). Todas las Clases tienen constructor.

2. Clases Abstractas
Una Clase Abstracta no puede crear Objetos. Se encuentra en un alto nivel de abstraccin en la jerarqua de las clases. Garantizan jerarquas de herencia adecuadas.

3. Interfases
Una interfase define mtodos sin implementar. Sirve para definir ciertos comportamientos que se desea que implementen las clases. Permite modelar la herencia mltiple.

4. Paquetes
Los paquetes son agrupaciones de Clases, Interfases y paquetes. Se puede agrupar las Clases e Interfases por:
Funcionalidad similar: ventas, reportes, administracin, etc. Tipo de Clase: servlets, beans, applets, etc.

ABSTRACT Y FINAL

Clases Abstractas
Usualmente utilizadas para crear mtodos sin tener que implementarlos por completo.
Similar a interfases.

Usando el modificador abstract se puede crear un mtodo sin implementacin. Las clases abstractas obligan a sus subclases a implementar los mtodos no implementados en la clase abstracta.

Clases Abstractas
public abstract class Figura { private int x,y; public Figura(int nx,int ny){ x=nx; y=ny; } public int getX(){ return x; } public int getY(){ return y; } public abstract double getArea(); /* cada figura debera tener un mtodo getArea() para obtener el area de la figura */ }

Clases Abstractas
Cualquier clase con un mtodo abstracto es, esencialmente, una abstraccin.
No se pueden crear objetos de una clase abstract. Si se pueden crear objetos de clases derivadas, siempre que la clase derivada haya implementado los mtodos que falten.

Clases Abstractas
public class Rectangulo extends Figura { private int w,h; public Rectangulo(int x, int y, int w, int h) { super(x,y); this.w=w; this.h=h; } //implementando el mtodo abstracto public double getArea() { return w*h; } }

Clases Abstractas
Una referencia abstracta puede ser usada para referenciar cualquier clase derivada de una clase abstracta. Ejemplo:
Figura[] figuras = { new Rectangulo(0,0,3,4), new Triangulo(0,0,5,7) } double a_rect = figuras[0].getArea(); double a_tri = figuras[1].getArea();

Clases Finales
Evita que se sobreescriba un mtodo en alguna subclase o clase extendida o derivada. Ejemplo:
class Persona { public final String obtenerDatos() { ... } } class Visor extends Persona { public String obtenerDatos() { ... } // ilegal }

Clases Finales
Evita que existan clases extiendas o subclases. Proteje el acceso a todos los miembros de la clase
public final class Sin_acceso { ... } class Rebelde extends Sin_acceso { } // ilegal

Recolector de basura
La mayora de los lenguaje permiten almacenar datos durante la ejecucin del programa. En Java, los objetos que se instancian son almacenados la memoria. La memoria del sistema est organizada en 3 segmentos:
Text segment (code segment) Stack segment Heap segment

Recolector de basura
Las variables que se crean dentro de los mtodos son alojadas en el Stack Segment, por ello, ni bien el mtodo termina de ejecutarse (return), todas las variables se desasignan. En cambio, los objetos son alojados en el Heap Segment. Algunos lenguajes de programacin requieren que el programador elimine los objetos del Heap Segment cuando ya no lo usen. En Java, el recolector de basura se encarga de limpiar los objetos que ya no son usados; tcnicamente, aquellos que no tienen referencia de otros objetos.

Recolector de basura
No hay forma de forzar al Recolector de basura para que se ejecute. Los mtodos System.gc() y Runtime.gc() no fuerzan al Recolector de basura a que se ejecutan. Estos mtodos slo sugieren al JVM a que recoja los objetos no usados. Una buena prctica es establecer los Objetos que ya no vamos a usar como null: public Object pop() { Object returnValue = storage[index]; storage[index--] = null; return returnValue; }

Conclusiones
En la presente unidad, se detall la creacin de matrices y la forma como acceder a sus elementos. Adems, se revis la programacin orientada a objetos y las tcnicas asociadas a ella. Finalmente, se revis el funcionamiento del recolector de basura de Java.

También podría gustarte