Sie sind auf Seite 1von 6

1

Capitulo 3 Anlisis y diseo Orientado a Objetos con aplicaciones-


Clases y Objetos

Cuando se usan mtodos orientados a objetos para analizar o disear un sistema
de software complejo, los bloques bsicos de construccin son las clases y los
objetos.

3.1 La naturaleza de los objetos
Qu es y que no es un objeto?
Desde la perspectiva de la cognicin humana, un objeto es cualquiera de las
siguientes cosas:
Una cosa tangible y/o visible
Algo que puede comprenderse intelectualmente
Algo hacia lo que se dirige un pensamiento o accin.
Un objeto modela alguna parte de la realidad y es, por tanto, algo que existe en
el tiempo y el espacio.
Los objetos del mundo real no son el nico tipo de objeto de inters en el
desarrollo de software. Otros tipos de objetos son invenciones del proceso de
diseo cuyas colaboraciones con otros objetos semejantes sirven como
mecanismos para desempear algn comportamiento de nivel superior.
Definicin de objeto de Smith y Tockey
Un objeto representa un elemento, unidad o entidad individual e identificable,
ya sea real o abstracta, con un papel bien definido en el dominio del problema
Definicin de Grady
Un objeto tiene estado, comportamiento e identidad; la estructura y
comportamiento de objetos similares esta definida en su clase comn; los
trminos instancia y objeto son intercambiables
Las tres propiedades de los objetos:
Identidad
Comportamiento
Estado

Estado: El estado de un objeto abarca todas las propiedades (normalmente
estticas) del mismo ms los valores actuales (normalmente dinmicos) de cada
una de esas propiedades.
El numero de serie de una maquina expendedora es una propiedad esttica y el
valor es esttico, en contraste, la cantidad de monedas es una propiedad esttica
y el valor es dinmico.
Una propiedad es una caracterstica inherente o distintiva, un rasgo o cualidad
que contribuye a hacer que un objeto sea ese objeto y no otro.
Las propiedades suelen ser estticas, por que atributos como estos son
inmutables y fundamentales para la naturaleza del objeto.
Todas las propiedades tienen algn valor. Este valor puede ser una mera
cantidad o puede denotar a otro objeto.
Los objetos existen en el tiempo, son modificables, tienen estado, son
instanciados, y pueden crearse, destruirse y compartirse.
Es una buena prctica de ingeniera encapsular el estado de un objeto en ves de
exponerlo.

Ej:
2
+getNombreEmpleado()
+getNumeroSeguridadSocial()
+getDepartamentoEmpleado()
-nombre
-numeroSeguridadSocial
-departamento
-salario
Personal
Class Personal
{
public:
char *getNombreEmpleado() const;
int getNumeroSeguridadSocial() const;
char *getDepartamentoEmpleado() const;
protected:
char nombre[100];
int numeroSeguridadSocial;
char departamento[10]
flota salario;
};

Comportamiento: El comportamiento es como acta y reacciona un objeto, en
trminos de sus cambios de estado y paso de mensajes.
El comportamiento de un objeto representa su actividad visible y comprobable
exteriormente.
Una operacin es una accin que un objeto efecta sobre otro con el fin de
provocar una reaccin.
Un mensaje es una operacin que un objeto realiza sobre otro.
El estado de un objeto afecta a su comportamiento.
El comportamiento de un objeto es funcin de su estado as como de la
operacin que se realiza sobre l, teniendo algunas operaciones el efecto lateral
de modificar el estado del objeto.
El estado de un objeto representa los resultados acumulados de su
comportamiento.

Operaciones: Una operacin denota un servicio que una clase ofrece a sus
clientes. Un cliente realiza tpicamente 5 operaciones sobre un objeto
Modificador una operacin que altera el estado de un objeto (set)
Selector una operacin que accede al estado de un objeto (get)
Iterador permite acceder a todas las partes de un objeto en algn
orden establecido.
Constructor crea un objeto y puede inicializar su estado
Destructor libera el estado de un objeto y destruye el propio objeto.
C++ permite al desarrollador escribir funciones no miembro las cuales no son
miembro de ninguna clase-, a veces llamados subprogramas libres.

Papeles (roles) y responsabilidades: un papel es una mascara que se pone un
objeto. Las responsabilidades de un objeto son todos los servicios que
proporciona para todos los contratos que soporta. El estado y comportamiento de
un objeto definen los papeles que puede representar un objeto en el mundo.

Identidad: La identidad es aquella propiedad de un objeto que lo distingue de
todos los dems objetos.

Espacio de vida de un objeto: El tiempo de vida de un objeto se extiende desde
el momento en que se crea por primera vez (y consume espacio por primera vez)
Hasta que ese espacio se recupera. En el momento de la construccin de un
objeto se invoca un constructor del mismo el cual es un mtodo especial de una
clase en donde se inicializan variables u objetos agregados que posea. Un objeto
puede poseer ms de un constructor, lo nico que debe respetarse es que la firma
3
de cada uno de ellos sea distinta. La firma de un mtodo esta compuesta por el
nombre de este, el tipo y la cantidad de parmetros.
Los objetos creados en el heap mediante el operador new deben ser destruidos
explcitamente con el operador delete. SI NO SE HACE BIEN SE
PRODUCIRN PERDIDAS DE MEMORIA.
Los destructores son mtodos especiales en las clases utilizados para devolver el
espacio utilizado asignado al objeto y sus partes, y llevar a cabo cualquier otra
limpieza posterior a la existencia del objeto (como cerrar un archivo o liberar
recursos).

3.1 Relaciones entre objetos
Tipos de relaciones
Hay dos tipos de jerarquas de objetos de inters especial en anlisis y diseo
orientado a objetos:
Enlaces (antigedad)
Agregacin (padre/hijo)
Enlaces
Semntica: Un enlace denota la asociacin especifica por la cual un
objeto (cliente) utiliza los servicios de otro (el servidor o suministrador),
o a travs del cual un objeto puede comunicarse con otro.
Solo a travs de enlaces un objeto puede enviar mensajes a otro.
Como participante de un enlace un objeto puede cumplir uno de estos
tres papeles:
1. Actor: un objeto que puede operar sobre otros objetos pero nunca
se opera sobre l de parte de otros objetos; en algunos contextos,
los trminos objeto activo y actor son equivalentes.
2. Servidor: un objeto que nunca opera sobre otros objetos; solo
otros objetos operan sobre l.
3. Agente: un objeto que puede operar sobre otros objetos y adems
otros objetos pueden operar sobre l.
Visibilidad
Considrese dos objetos, A y B, con un enlace entre ambos. Con el fin de que A
enve un mensaje a B, B debe ser para A de algn modo.
Formas en que un objeto puede tener visibilidad para otro:
El objeto servidor es global para el cliente
El objeto servidor es un parmetro de alguna operacin de un cliente
El objeto servidor es parte del objeto cliente.
El objeto servidor es un objeto declarado localmente en alguna
operacin del cliente.
Agregacin
Mientras que los enlaces denotan relaciones de igual a igual o cliente/servidor, la
agregacin denota una jerarqua de todo parte, con la capacidad de ir desde
el todo tambin llamado agregado hasta sus partes (tambin conocidas como
atributos). La agregacin encapsula partes y secretos del todo. Los enlaces
permiten acoplamientos mas dbiles entre los objetos.

3.3 La naturaleza de una clase.
Qu es y que no es una clase
Mientras que un objeto es una entidad concreta que existe en el tiempo y en el
espacio, una clase representa slo una abstraccin, la esencia de un objeto.
4
Una clase es una representacin de un conjunto de objetos que comparten una
estructura y comportamiento comn.
Un objeto no es ms que una instancia de una clase

Interfaz e implementacin.
Una clase funciona como una especie de contrato que vincula a una abstraccin
y a todos sus clientes. La interfaz representa la visin externa de una clase,
mientras que la implementacin es representada en la visin interna.
Se puede dividir el interfaz de una clase en tres partes:
Public
Protected
Private

Relaciones entre clases
Tipos bsicos de relaciones:
Es un (generalizacin/especializacin)
Parte de (agregacin, composicin)
Asociacin
Tipos de relaciones:
Asociacin
Herencia
Agregacin
Uso
Instanciacin
Metaclase
Cardinalidad
Indica la cantidad de instancias de una clase que se pueden asociar con otra.
Uno a uno
Uno a muchos
Muchos a mucho
Herencia
Herencia Simple
Es una relacin entre clases en la que una clase comparte la estructura y/o
el comportamiento definidos en una (herencia simple) o ms clases
(herencia mltiple). La clase de las que otras heredan se denomina
superclase. La herencia define una jerarqua de tipos entre clases.
Una subclase que aumenta el comportamiento de su superclase se dice
que utiliza herencia por extensin.
Una subclase que restringe el comportamiento de sus superclases se dice
que usa herencia por restriccin.
Las clases que no es posible instanciarlas (crear objetos de esta) se
denominan clases abstractas.
La clase mas generalizada de una estructura de clases se denomina clase
base.
Una clase cualquiera tiene dos tipos de clientes:
Instancias
Subclases
5
A los clientes instancia solo se expone los comportamientos visibles
exteriormente, pero a los clientes subclase se exponen las funciones de
asistencia y las representaciones.

Polimorfismo simple
Dependiendo del tipo de objeto que ejecute un determinado mtodo este
se comportara de una manera u otra. Es necesario que las clases estn
relacionadas por una superclase comn para que el polimorfismo pueda
darse. El polimorfismo y la ligadura tarda van de la mano, al utilizar
polimorfismo muchas veces vamos a realizar mtodos generales que
puedan manipular clases de un mismo tipo (con una superclase en
comn) y si es de esta manera, es una buena prctica la utilizacin de
tipos generales para as poder aplicar el mtodo a distintos tipos
especficos.

Herencia mltiple
Este tipo de herencia la soportan directamente lenguajes como C++
CLOS. Mediante este tipo de herencia una clase hija debe heredar o
derivarse de mas de una clase padre.

Una clase parametrizada (conocida tambin como clase genrica) sirve
como modelo para otras clases. Una clase de este tipo debe ser
instanciada (ya que sus parmetros deben ser rellenados) antes de que
puedan crearse los objetos.

Metaclase
Es la clase de una clase.

3.5 La interaccin entre clases y objetos
Relaciones entre clases y objetos
Todo objeto es una instancia de una clase es decir una foto de una clase
con un determinado estado, en un determinado espacio de memoria y con
un caracterstico comportamiento definido en la clase.
La clase normalmente es esttica mientras que los objetos son dinmicos

El papel de clases y objetos en anlisis y diseo
Durante el anlisis y las primeras etapas del diseo, el desarrollador tiene
dos tareas principales:
Identificar las clases y objetos que forman el vocabulario del dominio
del problema
Idear las estructuras por las que conjuntos de objetos trabajan juntos
para lograr los comportamientos que satisfacen los requerimientos del
problema.
En conjunto, se llama a esas clases las abstracciones claves del problema,
y se denomina a esas estructuras cooperativas los mecanismos de la
implantacin.

5.6 De la construccin de clases y objetos de calidad
Metricas para saber si una clase u objeto esta bien diseado:
6
Acoplamiento (debe ser bajo para lograr una mayor independencia y
por lo tanto una ms sencilla reutilizacin)
Cohesin (debe ser alta las llamadas internas suelen ser superiores a
las externas)
Suficiencia (quiere decirse que la clase captura suficientes
caractersticas de la abstraccin como para permitir una interaccin
significativa y eficiente)
Complecin (Estado completo/plenitud)
Ser primitivo.

Siempre que un objeto pasa un mensaje a otro deben estar sincronizados de
alguna manera.
El paso de mensajes debe as adopta una de las formas siguientes:
Sincrono: una operacin comienza solo cuando el emisor ha iniciado
la accin y el receptor esta preparado para aceptar el mensaje. El
emisor y el receptor esperar indefinidamente hasta que ambas partes
estn preparadas para continuar.
Abandono inmediato: igual que el sincrono excepto que el emisor
abandonar la operacin si el receptor no esta preparado
inmediatamente.
De intervalo: igual que el sincrono excepto que el emisor esperar un
tiempo (intervalo) que el receptor este listo.
Asncrono: un emisor puede iniciar una accin independientemente
de si el receptor esta esperando o no el mensaje.

Das könnte Ihnen auch gefallen