análisis y diseño orientado a objetos

Upload: jgc

Post on 07-Jan-2016

16 views

Category:

Documents


0 download

DESCRIPTION

Método de análisis y diseño orientado a objetos.

TRANSCRIPT

  • Anlisis y diseo Orientado a Objetos

  • Concepto de objeto

    Un objeto es una entidad que posee: estado

    comportamientoe

    identidad

  • Estado

    Est determinado por un conjunto de propiedades estticas o atributos del objeto

    que pueden adquirir, dinmicamente, un valor.

    Ejemplo:Un automvil posee un tanque de gasolina, un velocmetro, un odmetro. En todo momento su estado est determinado por la cantidad de combustible en el tanque, su velocidad y la distancia recorrida.

  • Comportamiento

    El comportamiento de un objeto es el conjunto de acciones y reacciones exhibidas por el

    objeto, en trminos de cambios de estado o datos obtenidos.

    Ejemplo:Un automvil incrementa su velocidad si se presiona el acelerador, la disminuye si se pisa el freno, su distancia recorrida crece ms rpido si se acelera y la cantidad de combustible decrece.

  • Identidad

    Es la propiedad de un objeto que permite distinguirlo de cualquier otro.

    Ejemplo:Cada automvil posee una placa nica.

  • Sntesis coloquial

    Un objeto es una cosa que tiene: Ciertos atributos caractersticos.

    Cuyos valores, en todo momento, constituyen el estado del objeto.

    Un catlogo de posibles acciones u operaciones. Que potencialmente cambian su estado o

    proporcionan informacin al exterior y que constituyen el comportamiento del objeto.

    Un identificador nico con el que se puede hacer referencia al objeto.

  • O sea... Un objeto es un ente abstracto, pertenece al

    dominio del programa. Es un modelo abstracto de un objeto en el

    dominio del problema que pretende captar lo esencial de aquel en el mbito del programa.

    Slo existe en tiempo de ejecucin (cuando el programa que lo crea y manipula est en ejecucin).

    Es una entidad dinmica. Su estado cambia. Recibe peticiones de servicios del exterior:

    mensajes.

  • Nomenclatura

    Atributos, variables de estado: datos contenidos en un objeto y cuyo valor determina el estado de ste.

    Mtodos, funciones miembro (en C++): funciones u operaciones que es capaz de realizar un objeto.

    Mensaje: llamado a la ejecucin de un mtodo.

  • Clase

    Es la manera de identificar (definir) a un tipo particular de objetos que poseen: La misma estructura (mismos atributos). El mismo comportamiento. Misma semntica.

  • En la programacin

    En un lenguaje de programacin orientado a objetos, la definicin de una clase contiene: La definicin de los atributos que constituyen las

    variables de estado de los objetos de ese tipo. El cdigo de los mtodos del objeto. Los que

    determinan algortmicamente, su comportamiento.

  • Terminologa Un objeto es una instancia (ejemplar sera mejor) de

    una clase. Las propiedades de un objeto, las caractersticas, los

    atributos, las variables de estado, son trminos equivalentes para designar a los datos que definen el estado de un objeto.

    Los mtodos, operaciones, funciones miembro (en C++) son trminos equivalentes para designar los mensajes a los que puede responder un objeto y que constituyen su comportamiento.

    A la operacin usada para crear un objeto se le llama constructor.

    A la usada para destruirlo destructor.

  • Modelo cliente-servidor

    Servidor

    Cliente 1 Cliente 2 Cliente n

    PeticinRespuesta

  • Encapsulacin

    Separar Lo que el objeto necesita para definir su

    estado. Su estructura. De los servicios que proporciona y de cmo

    se solicitan. Su interfaz. Ocultarle a los potenciales usuarios del

    mdulo, todo aquello que no necesitan saber.

    La implementacin, en particular.

  • Cohesin

    Las cosas contenidas dentro de un objeto estn fuertemente relacionadas entre s para que ste sea capaz de proveer los servicios que debe proveer. Lo nico que define el estado del objeto ES

    el valor de sus atributos. No debera depender de algo ms.

    Los mtodos que define son un conjunto homogneo de servicios relacionados.

  • Ejemplo

    Los valores que definen una recta son los tres coeficientes de Ax + By + C = 0. En un objeto de tipo recta se almacenan los tres valores.

    Se provee de medios para intersectar rectas.

    MALO: all tambin pusimos un mtodo para calcular la forma polar de un vector.

    MALO: no pusimos un mtodo que usaremos para calcular a pendiente y la ordenada al origen.

  • Acoplamiento

    Es la medida en la que un mdulo (clase de objetos) depende de otros. Idealmente ningn mdulo depende de

    otros. Pero eso es una estupidez. Los programas

    funcionan porque hay colaboracin. As que hay que depender de la mejor

    manera posible. Depender de los servicios. No de la manera como son implementados.

  • EjemploTengo una clase que lee de una conexin de red los datos que llegan desde otro sitio.Otra clase toma los datos, que realmente son datos meteorolgicos y los procesa. Bueno: La clase que procesa los datos los

    solicita a la clase que los lee. Mejor: La clase que lee los datos informa a

    sus clientes la llegada de nuevos datos. MALO: La clase que procesa los datos lee

    directamente del buffer de la clase que recibe los datos.

  • Qu logramos?

    Lo que siempre queremos... Holgazanear Cuanto mejor hagamos la encapsulacin. Cuanto mayor sea nuestra cohesin... Y menor nuestro acoplamiento... Ser ms fcil reutilizar cdigo que ya

    hicimos en otras aplicaciones que lo requieran.

    Code Reusability.

  • El problema con el Packard

    Haba que traer la pieza del motor de EEUU y ADAPTARLA.

    Hoy en da las piezas son todas iguales, todas quedan perfecto.

    Se pueden reutilizar en otros modelos de automvil con el mismo motor.

    Mdulos intercambiables.

  • De hecho...

    Podemos pensar en hacer un mdulo que haga lo mismo que otro.

    Pero de diferente manera. Ofreciendo la misma interfaz. As que son intercambiables. Los QU son iguales, los CMO son

    diferentes.

  • Anlisis y diseo Orientado a Objetos

    1. Identificacin de los diferentes tipos (clases) de objetos tiles.

    2. Identificar la semntica de cada clase de objeto.

    3. Identificar las relaciones entre las diferentes clases de objetos.

    4. Especificar la interfaz de cada una.5. Implementarlas.

  • Anlisis y diseo Orientado a objetos

    Se parte del enunciado (el texto) de especificacin del problema.

    Se procede a identificar los diferentes tipos de objetos involucrados en el problema a resolver.

    E identificar las acciones que llevan a cabo en el sistema.

  • Identificar los objetos

    Truco (primera aproximacin) Considerar los sustantivos del enunciado del

    problema. Luego analizar a ver s contribuyen en algo.

    Cosas tangibles: auto, persona, factura, libro, vector.

    Funciones o papeles: director, jefe, madre, empleado.

    Eventos: aterrizaje, interrupcin, peticin. Interacciones: interseccin, causa, junta.

  • Discriminacin

    El sentido comn es la nica herramienta real para decidir qu es buen candidato a objeto. Su existencia debe contribuir en algo a la solucin del problema.

  • La pregunta clave en esta etapa

    Qu tipo de cosas necesito tener para resolver el problema?

  • Identificacin de la semntica

    Es el paso de abstraccin por excelencia. En el contexto que tengo, qu significa ser

    un objeto de tipo X? Qu define a un elemento de tipo?, qu

    determina su estado? (atributos, estado) Qu debe poder hacer un objeto de tipo

    X?, qu efectos tiene y qu servicios ofrece? (mtodos, comportamiento)

  • Qu hay que decidir?

    Los atributos del objeto que sean necesarios y suficientes para la abstraccin que necesitamos. Cuales son los estados posibles que nos interesa

    modelar?, de qu dependen?, qu variables de estado cambian cuando se cambia de estado?

    Los mensajes que debe poder recibir el objeto y qu debe hacer en consecuencia. Qu responsabilidades tiene el objeto?, qu

    servicios debe proveer?

  • Ley de Demter

    El comportamiento (los mtodos) de una clase, no deben depender de la estructura (las variables de estado, los atributos) de ninguna otra clase.

    Slo puede depender de la interfaz (los servicios, los mtodos) de otra(s).

    Pero cada mtodo de una clase debe enviar mensajes al mnimo nmero posible de objetos de otras clases.

  • Identificar las relaciones entre las clases de objetos

    Cmo se relacionan los objetos de tipo X con los de tipo Y?

    Los de tipo X usan los servicios de los de tipo Y.

    En cada objeto de tipo Y est contenido uno de tipo X.

    Cada objeto de tipo Y es, de hecho, uno de tipo X, pero especializado.

    Ni se ven, ni se escuchan.

  • Tipos de relacin

    Las relaciones entre clases objetos: Todo objeto de clase B es un objeto de

    clase A. Herencia. Todo objeto de clase A contiene un objeto

    de clase B. Un objeto de clase B es parte de un objeto de clase A. Agregacin. A y B pueden ser instanciadas independientemente.

    Objetos de tipo B no pueden existir por s mismos. Composicin.

    Todo objeto de tipo B siempre existe dentro de uno de tipo A, no puede existir de otra manera. Contencin fsica.

  • La ms dbil relacin

    Asociacin. Es un tipo de correspondencia. Por ejemplo: asociada con una venta hay un cierto tipo de objeto que se vendi, un vendedor y un comprador.

  • Especificar la interfaz de las clases

    Sabemos: Los mtodos (servicios, responsabilidades) de cada objeto. Qu se necesita saber para poder ejecutar

    cada uno de ellos? Basta con los atributos del objeto? Qu necesito saber del exterior? Quien requiere de mis servicios cmo

    puede adquirir los datos que necesito? Pedir lo mnimo necesario. No entregar cosas que violen la

    encapsulacin.

  • Cualidades del software

    Internas. Visibles slo para el programador. Externas. Visibles para el usuario del

    software ya terminado.

  • Internas

    Correccin. La cualidad de ser correcto, de hacer bien lo que se supone que debera hacer. Satisfacer los requisitos funcionales.

    Verificabilidad. Es posible medir y comprobar cuantitativamente las propiedades del sistema.

    Sostenible. Es razonablemente fcil darle mantenimiento, actualizarlo, corregir errores.

  • Internas

    Reusable. Es posible reutilizar al menos partes de su cdigo.

    Facilidad de transportar a otras plataformas.

  • Externas

    Confiabilidad. Propiedad de operar como debe. Normalmente es una medida estadstica.

    Robustez. Ser capaz de comportarse bien en condiciones subptimas.

    Desempeo. Cantidad de recursos que consume el programa.

  • Externas

    Amigabilidad. Grado en el que el programa es fcil de usar.

    Interoperatividad. Grado en el que el programa es capaz de colaborar, intercambiar datos o coexistir con otros.

  • Ejemplo

    Hacer un programa capaz de registrar las calificaciones parciales de los alumnos inscritos en un curso y calcular su promedio final.

    Es suficiente?

  • Refinamiento

    Entrada. Dado el conjunto de alumnos inscrito en un curso y sus calificaciones parciales.

    Salida. Calcular, para cada alumno, la calificacin final obtenida como el promedio de sus calificaciones parciales.

    Proceso. Hacer un programa que...

  • Ms refinamiento Hacer un programa capaz de:

    Dar de alta, dar de baja o modificar a los alumnos inscritos en un curso de la Facultad de Ciencias.

    Registrar y cambiar las calificaciones parciales de cada uno de ellos.

    Calcular la calificacin final de cada alumno con base en el promedio de sus calificaciones parciales.

    Escribir la lista de alumnos y sus calificaciones como un archivo de Excel.

  • Hacer un programa capaz de: Dar de alta, dar de baja o modificar a los

    alumnos inscritos en un curso de la Facultad de Ciencias.

    Registrar y cambiar las calificaciones parciales de cada uno de ellos.

    Calcular la calificacin final de cada alumno con base en el promedio de sus calificaciones parciales.

    Escribir la lista de alumnos y sus calificaciones como un archivo de Excel.

  • Los candidatos...

    Alumno

    Curso

    Facultad de Ciencias

    Calificacin

    Promedio

    Lista (de Alumno)

  • Los candidatos...

    Alumno

    Curso

    Facultad de Ciencias

    Calificacin

    Promedio

    Lista (de Alumno)

  • Semntica

    Qu significa ser un Alumno? Qu significa ser un Curso? Servicios, responsabilidades. Atributos Relaciones Interfaces