You are on page 1of 31

Introduccin a la Programacin Orientada a Objetos (POO).

Diseo Orientado a Objetos.


Metodologa enfocada a la solucin de problemas complejos. Complejidad del software. Problemas difciles de precisar. Definicin de requerimientos vago y cambio a la par que se desarrolla el sistema. Proceso de desarrollo difcil. Verificacin del software poco viable. Para manejar la complejidad se utiliza alguna forma de organizacin jerrquica. Dependencias. Jerrquica estructural (parte de) Jerrquica especializacin (tipo de) Ejemplos. Dependencia estructurar: Existen dependencias muy fuertes.

Jerarqua de especializacin: Heredan las caractersticas.

Descomposicin algortmica.
Algortmico: Mtodo utilizado en el diseo estructurado "Top-down". Se basa en la identificacin de las operaciones en la descripcin del problema y su expresin en trminos de operaciones ms sencillas. Ejemplo.

Orientado a objetos.
Mtodo que permite resolver un problema alrededor de abstracciones representadas por objetos. Los objetos se comportan como agentes.

Topologa de programas estructurados.

Topologa de programas orientados a objetos (hay encapsulamiento).

Modelo orientado a objetos.


Conceptos bsicos. Abstraccin. Caracterizacin de un objeto de acuerdo a las propiedades que nos interesen en un instante de tiempo. Las caractersticas escogidas son relativas a la perspectiva del observador.

Encapsulacin. Manera de ocultar los detalles de la representacin interna de un objeto presentando solo la interfase para el usuario.

Modularidad. Un mdulo es una agrupacin de abstracciones lgicamente relacionadas.

Introduccin a la Programacin Orientada a Objetos (OOP).


La idea central es: Organizar los programas de modo que reflejen la forma de organizacin de los objetos en el mundo real. La programacin orientada a objetos es, desde su raz, una forma de concebir un programa de computadora.

Un objeto es un elemento independiente de un programa de computadora, que representa un grupo asociado de caractersticas y est diseado para realizar tareas especficas. A los objetos tambin se les conoce como instancias. Cada objeto tiene un papel especfico en un programa, y todos los objetos puedes funcionar con otros objetos en maneras definidas. Una clase es una plantilla que se utiliza para crear mltiples objetos con caractersticas similares. Las clases engloban todas las caractersticas de un conjunto particular de objetos. Cuando se escribe un programa en un lenguaje orientado a objetos, no se definen objetos individuales, sino que se definen clases de objetos. Los conceptos de herencia, interfaces y paquetes, conforman los mecanismos para organizar clases y su comportamiento. La biblioteca de clases de Java se apoya en estos conceptos. La herencia. Es un mecanismo que hace posible que una clase herede todo el comportamiento y los atributos de otra clase. A travs de la herencia, una clase tiene inmediatamente toda la funcionalidad de una clase existente. Debido a esto, las nuevas clases de pueden crear indicando nicamente en que se diferencian de la clase existente. Con la herencia, todas la clases se acomodan en una jerarqua estricta, las que uno mismo cre y aquellas que provienen de la biblioteca de clases de Java y otras bibliotecas. A una clase que hereda de otra clase se le llama subclase, y a la clase que proporciona la herencia se le llama superclase. Una clase puede tener nicamente una superclase, pero cada clase tiene una cantidad ilimitada de subclases. Las subclases reciben por herencia todos los atributos y comportamiento de sus superclases. Modularidad: Un modulo es una agrupacin de abstracciones lgicamente relacionadas. La interfaz de un mdulo es la descripcin de los servicio que ofrece a otros mdulos. Es una idea bsica en la POO. Jerarqua:

Permite organizar y ordenar las abstracciones. Hay dos tipos: por estructura y por especializacin. Idea: Pensar en una forma de organizar nuestros objetos. Tipo: Caracterizacin precisa de propiedades sobre la estructura y el comportamiento de una coleccin de unidades. Esta asociado ntimamente con la clases. Va a indicarnos cual es el ambiente que va a englobar al modulo. Persistencia: Propiedad de un objeto de poder quedar vigente en el tiempo y el espacio (independiente de 00). indicara que tiempo el objeto permanecer vigente. (ligado a lo anterior) Concurrencia: Que simultneamente se pueden llevar mltiples procesos.

Clases y objetos.
Objeto = Instancia. Un objeto tiene un estado, un comportamiento y una identidad. Estado El estado de un objeto se compone de las propiedades estticas de un objeto con valores dinmicos asociados a ellas en un momento dado. Estado variables de instancia. (se traduce al manejo de las variables de instancia)

Comportamiento

Forma en que acta y reacciona el objeto, expresado en trminos de cambios de estado y envo de mensajes a otros objetos. Comportamiento Mtodo (es lo que nos indica como se comporta la clase o qu puede hacer la clase) Identidad. Propiedad que distingue a un objeto de los dems.

Cuando hablamos de OOP hablamos de crear un objeto que tenga las tres caractersticas (Estado, Comportamiento, identidad). Hablando de la parte de programacin, las variables de instancia + los mtodos definen al objeto.

Relaciones entre objetos.


Relacin de uso. Expresan la manera en que unos objetos usan a otros. Formas de uso:

Actor.- (nunca es operado por los dems) Objeto que puede operar sobre otros. Servidor.- (nunca opera sobre los dems) Objeto que puede ser operado por otros. Agente. Objeto que puede operar sobre los dems y tambin puede ser operado por otros.

Relacin de Contencin. Se crea la relacin si un objeto esta compuesto por otros objetos. Cuidado !!! --> Crean dependencias.

Recordemos: Hay que crear objetos independientes buscando en un futuro re-utilizar.

Clases.

Conjunto de objetos que tienen una estructura comn y un comportamiento comn. Por tanto es una abstraccin del concepto objeto. Un objeto es una instancia de una clase. Interfaz de una clase. proporciona la vista externa o interfaz con el usuario. Se divide en: Pblica: visible para todas las clases. Protegida: visible slo para subclases. Privada: NO visible para ninguna otra clase.

Relaciones entre clases.

La interfaz esta compuesta por las variables de instancia.

Para garantizar el encapsulamiento y la privacidad se usaran variables privadas. Las relaciones entre las clases forman la estructura del diseo de un sistema. Formas bsicas:

Relacin de Herencia. Una clase comparte la estructura y/o comportamiento definidos en una o ms clases. Herencia Sencilla.

Nota: aqu el "elefante" es una subclase, y "animal" es una superclase.

Herencia Multiple.

Superclase: Clase de la cual otra clase hereda. Subclase: Clase que hereda de una o ms clases. subclase especializacin de la superclase. NO todos los lenguajes de programacin orientada a objetos usan la herencia mltiple.

Clase abstracta. Su comportamiento no esta totalmente definido. Sirven para captar las propiedades generales que posteriormente son particularizadas en las subclases. Clase Base. Clase que no tiene superclases.

Relacin de uso.
Hay 2 formas principales de relacin de uso entre clases: - La interfaz de una clase usa otra clase. - La implantacin de una clase usa otra clase.

Las relaciones que se tendrn dentro de las clases, se tendr en un agente, en su comportamiento.

Relacin de instanciacin. Relacin entre clases donde el comportamiento de una clase puede ser parametrizada por otra clase. Ejemplo. Colecciones de objetos homogneas (listas, colas, pilas, rboles, etc. [operaciones genricas para todos]). La parametrizacin de una clase con otra es un mecanismo muy flexible que permita crear clases reutilizables.

Relacin de metaclases. A una clase se le puede ver como a un objeto por lo tanto a la clase de los objetos de clases se les llama Metaclase. Metaclase.

Es una clase cuyos objetos son clases.

Idea central de la instanciacin y la parametrizacin: poder llegar a tener clases reutilizables.

Relacin entre clases y objetos.


Las clases son estticas, i.e. forman parte del texto del programa y no cambian durante su ejecucin. Los objetos por el contrario son totalmente dinmicos, se crean, cambian su estado y se destruyen.

Clasificacin. Forma de ordenar el conocimiento. No existen reglas simples que permitan la mejor seleccin de clases y objetos para generar una clasificacin. Identificar clases y objetos requiere de la aplicacin de nuestras capacidades de descubrir e inventar. Clasificar es agrupar cosas que tienen estructura comn o comportamiento similar. La clasificacin es un proceso difcil, por lo que conviene hacerlo de manera incremental iterativa. Al iniciar el diseo, se define una estructura inicial para las clases. En base a la experiencia adquirida se crean nuevas subclases a partir de las existentes o bien es muy comn que se requiera dividir una clase en otras ms pequeas (pero ms generales), inclusive es posible requerir de la unin de varias clases.

Proceso de diseo orientado a objetos


Anlisis orientado a objetos.
Durante el anlisis OO las clases y objetos se derivan usualmente de los siguientes conceptos: Cosas tangibles (autos, sensores, ?) Papeles que representan (madre, profesor, ?) Eventos que ocurren (aterrizaje, peticin,? ) Interaccin (prstamos, encuentro, ?) Organizaciones (UAM, ONU, ?) Conceptos (negociacin, comunicacin, ?) Convencin para signar nombres a los objetos y clases: Objeto. Sustantivo (el sensor, un slido, ?) Clase. Nombre comn (sensores, slidos, ?) Operaciones que modifican. Verbos activos (dibujar, mover, ?) Operaciones de seleccin. Preguntas (esta abierto? ?) Mecanismos de interaccin. Determinan de qu manera interactan las instancias de las clases. La definicin de los mecanismos es una decisin estratgica en el diseo de un sistema. Nota: Es importante no perder de vista el diagrama de jerarquas. Mtodo de diseo. Para especificar el diseo de un sistema complejo es necesario especificar la estructura esttica (clases, objetos, mdulos, procesos), y la dinmica del sistema (transicin de estados, tiempo). Especificacin Esttica. Lgica Diagrama de clases. Diagrama de objetos.

Fsica Diagrama de mdulos. Diagrama de procesos. Especificacin Dinmica. Diagrama de transicin de estados. (ntimamente relacionado con instancias) Diagrama de tiempo. Diagrama de Clases. Se usa para mostrar la existencia de clases y las relaciones entre ellas.

Simbologa.

Por ejemplo.

Esta clase (la de la izquierda), lo que hace es usar en su interfaz elementos de la otra clase (la de la derecha), y la misma clase "x" usar mtodos de la clase de abajo.

A continuacin tenemos ms elementos.

Esta relacin entre clases conviene usarla en las primeras fases del diseo, cuando todava no estamos seguros del tipo de relacin.

Categoras de Clases. Cuando un sistema incluye muchsimas clases, es importante agrupar las clases en categoras y hacer diagramas de las mismas.

Cuando una categora de clase es visible para las dems, se recomienda anotar la palabra "global" en la esquina izquierda del recuadro. Ejemplo.

Aqu implica que todo lo que esta dentro de la clase "polica" es pblico, i.e. podramos crear un nuevo objeto de nombre "Polica Federal de Caminos", que heredara las propiedades bsicas de "polica", pero se le agregaran nuevas caractersticas a la nueva categora. Esquemas de Clases. Para complementar la informacin de los diagramas de clases, es importante incluir la documentacin o esquema de clases. De manera general podemos incluir: Nombre: identificador de la clase. Descripcin: texto. Jerarqua: Superclases: lista de nombres de clases. Metaclase: nombre de clase. Parmetros: lista de parmetros. Interfaz: (pblico, protegido, privado). *Usa: Lista de nombres de clases. *Campos: lista de declaraciones.

*Operaciones: lista de declaraciones.

(*) implantacin. Mquina de Estados finitos. Diagrama de transicin. Concurrencia. Secuencial / paralelo

Esquema de Operaciones. En fases avanzadas del diseo se requiere de una definicin ms precisa de las operaciones que forman parte de la clase. Nombre: Identificador Descripcin: Texto Categora: Nombre Parmetros formales: Lista Resultado: lista Acciones: lista Excepciones: lista de declaraciones Concurrencia: secuencial / paralelo. Hint: Es muy importante ir trabajando y documentando nuestro programa. No dejar a ultima hora.

Diagramas de transicin de estados. Se usan para mostrar el estado de una instancia de una clase dada, los eventos que causan una transicin de un estado a otro y las acciones que resultan del cambio de estado.

Ejemplo. Proceso de inscripcin a la maestra. Diagrama de objetos. Las clases son estticas, mientras que los objetos son dinmicos. Los diagramas de objetos reflejan las interacciones dinmicas entre objetos relacionados con el envo de mensajes.

Esquemas de objetos y mensajes. Documentacin para el diseo de objetos.

Diagrama de tiempos. Un diagrama de tiempo es una grfica de tiempo contra los objetos involucrados en la interaccin.

Ejemplo.

Proceso de diseo orientado a objetos ( OOP)


Es interactivo e incremental. Se compone por las siguientes actividades. 1. Identificar clases y objetos. 2. Identificar la semntica de clases y objetos. 3. Identificar interrelaciones de clases y objetos. 4. Implementar clases y objetos.

Identificar clases y objetos. Se descubren las abstracciones de clases y objetos. Se les asignan nombres significativos. Se dibujan los diagramas de clases y objetos. Identificar la semntica de las clases y objetos. Se establece el significado de las clases y objetos. Se trabaja sobre el refinamiento de las interfaces de las clases y sobre las acciones que

pueden hacer sus objetos. Identificar interrelaciones de clases y objetos. Establecer exactamente como interactan las cosas dentro del sistema. Se establecen las relaciones de uso, herencia y otras. Se refinan los diagramas de los pasos anteriores. Implementar clases y objetos. Buscar una representacin de clases y objetos. Alojar las clases y objetos en mdulos, y los programas y procesos. Implementar las clases y objetos en un lenguaje OO.

Diseo tradicional vs. Diseo OO.


El mtodo tradicional consiste en las siguientes etapas:

Tambin conocido como Mtodos de cascada.

Puntos dbiles del diseo tradicional.

No enfoca apropiadamente el diseo de familias de programas. Asume una progresin relativa uniforme de pasos de elaboracin. No acomoda el tipo de desarrollo evolutivo. No enfoca los posibles modos futuros de desarrollo de software. Conclusin: Al terminar un sistema es casi imposible reutilizar el cdigo en otra aplicacin.

Mtodo orientado a objetos.


Anlisis. Une a los usuarios y a los diseadores. Permite proporcionar una descripcin completa del problema, legible y revisable por las partes interesadas y verificable contra la realidad.

Nota: Si tenemos correctamente definidas nuestras jerarquas de clase, hacer modificaciones no es tan costoso como en el caso de programacin tradicional. Slo tenemos que entrar en la parte de Evolucin para hacer modificaciones.

Diseo. Inicia an antes de concluir con la etapa de anlisis. Se recomienda analizar un poco y disear. Esta etapa debe concluir una vez que se establecieron claves y mecanismos importantes. Evolucin. Incorpora los aspectos tradicionales de programacin, verificacin e integracin. El proceso de desarrollo consiste en una produccin incremental de series de prototipos que evolucionan a la implantacin final. Posibles cambios que pueden presentarse en esta etapa: Agregar una clase. Modificar la implantacin de una clase. Modificar la representacin de una clase. Reorganizar la estructura de clases. Cambiar la interfaz de una clase. Modificacin. Un programa que se usa en un ambiente real necesariamente debe cambiar. Los cambios difieren un poco de los requeridos en evolucin, pues contemplan la introduccin de nuevas funcionalidades no previstas en el problema original.

Administracin de un proyecto.
En lo referente a la asignacin de recursos, comparada con el diseo tradicional tenemos: Gastos similares en la etapa de anlisis. Gastos mayores en la etapa de diseo. Gastos mucho menores en programacin y verificacin. Gastos considerablemente menores en integracin. Recursos humanos equivalentes o menores.

Un producto de mayor calidad. Beneficios. Utiliza el poder expresivo de los lenguajes OO. Favorece la reutilizacin del software. Los sistemas resultan flexibles al cambio. Reduce los riesgos de desarrollo. Es atractivo para la cognicin humana. Riesgos. Desempeo relativamente menor respecto a un sistema tradicional. Costos iniciales de adopcin de DOO. Casos de uso. Permiten especificar grficamente las relaciones entre los actores y los procesos del sistema. Ejemplo. (ver diagrama en hoja de papel) Actores. Son las entidades que realizan o estn involucrados en el proceso. Procesos. Acciones que se deben realizar para provocar un cambio de estado. Ejemplo. Determinar cuales de los actores en el sistema de inscripcin. Alumno Sistemas escolares Coordinacin Caja Computo Determinar que procesos se realizan en el sistema. Solicitar formatos Llenar formatos

Inscripcin Validacin Efectuar pago Autorizacin Sistemas Escolares Autorizacin Coordinacin.

Nota: en un principio definimos 7 procesos, pero en base al diagrama podemos identificar qu procesos y actores tengo. Nos ha quedado finalmente, en la descripcin de los procesos, algo que originalmente no estaba contemplado. Para el siguiente ejemplo, la notacin que se sigue es:

Ejemplo de un diagrama de clases.

(**) Restriccin: Si pedido. cliente. calificacin. crdito es "pobre", entonces pedido: prepagado debe ser verdadero. Se vale que algunas clases no incluyan mtodos o variables de instancia.

UML Booch

Clase Clase

Asociacin Uso

Generalizacin Hereda

Agregacin Contiene

Otro ejemplo:

Ahora vamos a aplicarlo al ejemplo que hemos venido desarrollando.

Autoevaluacin
1. Da 3 ejemplos de jerarqua de especializacin y 3 de dependencias estructuras. 2. Buscar toda la metodologa de diagramacin para la programacin orientada a objetos. 3. Realizar una pequea investigacin comparativa de los diferentes lenguajes de programacin (orientada a objetos) que existen, y su evolucin: Historia Evolucin Ventajas y desventajas. Conclusiones. 4. Cmo clasificaramos el entorno de tu casa para que funcione correctamente? Pista: Clase base: la casa. Luego la recamara, la sala, el bao, la cocina, etc? Luego, tomando la recamara: qu hay en ella?.- cama, cmoda/closet, mesa, silla, etc. 5. Realizar el estudio para el caso de solicitud y regreso de un libro a la biblioteca. Considerar todo lo que puede pasar (multas, robo, etc.) Elaborar diagrama, estados, diagrama de tiempos. Etc. 6. Realizar el estudio para el proceso de inscripcin a la maestra. Considerar todo lo que puede pasar (multas, robo, etc.) Elaborar diagrama, estados, diagrama de tiempos. Etc.

7. Investiga el modelado con tarjetas CRC 8. Repite 5 y 6 con tarjetas CRC 9. Cul de los mtodos es mejor ?

Indice
1. Captulo 1 * 1 Introduccin a la Programacin Orientada a Objetos (OOP). *
1.2 Diseo Orientado a Objetos. * 1.3 Descomposicin algortmica. * 1.4 Orientado a objetos. * 1.5 Modelo orientado a objetos. * 1.6 Introduccin a la Programacin Orientada a Objetos (OOP). * 1.7 Clases y objetos. * 1.8 Relaciones entre objetos. * 1.9 Clases. * 1.10 Relacin de uso. * 1.11 Relacin entre clases y objetos. *

1.10 Proceso de diseo orientado a objetos *


1.11 Anlisis orientado a objetos. * 1.12 Proceso de diseo orientado a objetos ( OOP) * 1.13 Diseo tradicional vs. Diseo OO. * 1.14 Puntos dbiles del diseo tradicional. * 1.15 Mtodo orientado a objetos. * 1.16 Administracin de un proyecto. * 1.17 Autoevaluacin * 1.18 Indice *

You might also like