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
Top Related