Professional Documents
Culture Documents
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.
Encapsulacin. Manera de ocultar los detalles de la representacin interna de un objeto presentando solo la interfase para el usuario.
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.
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.
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.
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.
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.
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.
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.
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.
(*) 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.
Diagrama de tiempos. Un diagrama de tiempo es una grfica de tiempo contra los objetos involucrados en la interaccin.
Ejemplo.
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.
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.
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
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:
(**) 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:
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. *