Sei sulla pagina 1di 44

Anlisis y diseo

Orientado a Objetos

Concepto de objeto

Un objeto es una entidad que posee:


estado
comportamiento
e
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:

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

Peticin
Respuesta

Servidor

Cliente 1

Cliente 2

Cliente n

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.

Ejemplo
Tengo 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.

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

Potrebbero piacerti anche