Vous êtes sur la page 1sur 13

DESARROLLO DE SOFTWARE ORIENTADO A OBJETOS CON UML

UML tiene sus orgenes en la orientacin a objetos. Por esta razn se puede definir como un
lenguaje de modelado orientado a objetos para desarrollo de sistemas de software moderno.
Un modelo UML indica qu es lo que supuestamente har el sistema, mas no cmo lo har.
El diseo de sistemas se modela por una importante razn: Gestionar la complejidad. Un modelo
es una abstraccin de cosas reales.
Programacin estructurada (Procedimental).
Divide un programa en funciones (subrutinas, procedimientos, etc.) y agrupamiento de funciones
en una entidad ms grande denominada mdulo.
La ecuacin fundamental de programacin estructurada, debido a Niklaus Wirth y Edsger Dijkstra
es:
Programacin Orientada a Objetos.
El mundo real trata de objetos (real o abstracta), que tienen incorporado atributos (datos) y
comportamiento (funciones o mtodos). El comportamiento es la accin que realizan los objetos
del mundo real en respuesta a un estmulo. El paradigma orientado a objetos naci en 1969, con el
docto noruego Kristian Nygaard.
Comportamiento (funciones o mtodos), constituyen el nico mtodo para acceder a los datos y
se devuelve un valor.
Las etapas para modelar un sistema empleando OO, son:
1. Identificacin de los Objetos.
2. Agrupamiento en clases (tipos de objetos).
3. Identificacin de los datos y operaciones de cada una de las clases.
4. Identificacin de las relaciones existentes entre las diferentes clases del modelo.
El objeto es el centro de la POO. Un objeto es real (fsico o duro) y abstracto (conceptual o
blando).
Un Tipo Abstracto de Dato (TAD) se conoce en POO con el trmino de clase. Una clase es la
implementacin de un TAD y describe atributo (datos) y operaciones (comportamiento).
Modelado e identificacin de objetos.
La correspondencia entre objetos de programacin y objetos del mundo real es el resultado
prctico de combinar atributos y operaciones. Un objeto tiene un estado, un comportamiento y
una identidad.
El estado de un objeto viene determinado por los valores que tomas sus atributos o datos. El
estado de un objeto tiene un carcter dinmico que evoluciona con el tiempo, con independencia
de que ciertos elementos del objeto pueden permanecer constantes.
Comportamiento, Conjunto de operaciones que se pueden realizar sobre un objeto. Las
operaciones pueden ser de observacin del estado interno del objeto, o bien de modificacin de
dicho estado. Estas operaciones se realizan tras la recepcin de un mensaje o estimulo externo
enviado por otro objeto.
Identidad, Permite diferenciar los objetos de modo no ambiguo independiente de su estado. Es
posible distinguir dos objetos cuyos atributos sean iguales. Cada objeto ocupa su propia posicin
en la memoria de la computadora. Hace al objeto nico, diferente al resto.
Propiedades fundamentales de la OO.
Los conceptos fundamentales de la OO, que a su vez se constituyen en reglas de diseo en un
lenguaje de programacin, son: abstraccin, encapsulacin y ocultacin de datos, herencia
(generalizacin), reutilizacin o reusabilidad, polimorfismo. Otras propiedades importantes son:
envi de mensajes y diferentes tipos de relaciones tales como dependencia, asociacin,
agregacin (composicin), jerarqua de clases (generalizacin / especializacin), herencia (clase
derivada).
Abstraccin, es una forma de reducir la complejidad intrnseca que poseen los sistemas del mundo
real. En computacin, la abstraccin (modelo simplificado) es el proceso crucial de representar la
informacin en trminos de su interfaz con el usuario Qu hace el sistema?. Ejemplo, en un
televisor, el mando de control a distancia es una interfaz: encender, apagar, cambiar de canal,
ajustar volumen, cambiar de brillo, etc. Es decir es posible distinguir claramente del Qu? Y del
Cmo?
Encapsulamiento y ocultacin de datos, Los objetos que poseen las mismas caractersticas y
comportamiento se agrupan en clases, que no son ms que unidades de programacin que
encapsulan datos y operaciones. La encapsulacin oculta lo que hace un objeto de lo que hacen
otros objetos del mundo exterior, por lo que se denomina tambin ocultacin de datos.
Los botones (interfaz) del televisor y lavadora constituyen la comunicacin con el mundo exterior.

En esencia, la interfaz de una clase representa un contrato de presentacin de servicios entre
ella y los dems componentes del sistema. De este modo, los clientes de un componente slo
necesitan conocer los servicios que ste ofrece y no como est implementado internamente.
Existe una separacin de la interfaz de la implementacin. La interfaz pblica establece qu se
puede hacer con el objeto; de hecho, la clase acta como una caja negra. Si bien la interfaz
pblica es estable, la implementacin se puede modificar.
Herencia, el concepto de clase conduce al concepto de herencia. La clase principal de la que se
derivan las restantes se denomina clase base o clase padre o superclase y las subclases tambin se
denominan subclase o clase hija.
Esta jerarqua desde el punto de vista del modelo se denomina relacin de generalizacin o es-un
(is-a). En POO, la relacin de generalizacin se denomina herencia. Cada clase derivada hereda las
caractersticas de la clase base y adems aade sus propias caractersticas (atributos y
operaciones).

Reutilizacin o reusabilidad, este concepto significa que una vez que se ha creado, escrito y
depurado una clase, se puede poner a disposicin de otros programadores para ser utilizado,
ampliado o mejorado.
La facilidad de reutilizar el software existente es una de las grandes beneficios de la POO, como se
suele decir en la jerga de programacin: dejar de inventar la rueda cada da.
Polimorfismo, Es la propiedad que permite a una operacin (funcin) tener el mismo nombre en
clases diferentes y actuar de un modo distinto en cada una de ellas. Ejemplo: abrir una puerta,
abrir una ventana, abrir un libro, abrir una cuenta corriente, etc. En cada caso se realiza una
operacin diferente.

El polimorfismo (una cosa con distintas formas) permite una nica funcin calcularSuperficie, cuya
implementacin es diferente de la clase Tringulo, Rectngulo o Circunferencia.

Diseo de clases y objetos.
Concepcin de Objeto. Un objeto es una instancia de una clase.
Booch define objeto como: algo que tiene un estado, un comportamiento y una identidad.
Martin/Odell define objeto como: cualquier cosa, real o abstracta, en el que se almacena datos y
los mtodos (operaciones) que manipulan dichos datos.
Un objeto es una entidad atmica formada por la unin del estado y del comportamiento.
Proporciona una relacin de encapsulamiento que asegura una fuerte cohesin interna y un dbil
acoplamiento con el exterior. Un objeto revela su rol verdadero y su responsabilidad cuando al
enviar mensajes se convierte en parte de un escenario de comunicaciones.
Objeto de software define una representacin abstracta de las entidades del mundo real con el fin
de controlarlo o simularlo. Al igual que los objetos del mundo real que nacen, viven y mueren; los
objetos del mundo del software tienen una representacin similar, conocida como su ciclo de vida.
Un objeto de un programa de computadora es algo que no se puede tocar. Cuando un programa
se ejecuta, la mayora existe en memoria principal. Los objetos se crean por un programa para su
uso mientras el programa se esta ejecutando.
Un mensaje es una instruccin que se enva a un objeto y cuando recibe ejecuta sus acciones. Un
mensaje incluye un identificador que contiene la accin que ha de ejecutar el objeto junto con los
datos que necesita el objeto para realizar su trabajo. Los mensajes, por consiguiente, forman una
ventana del objeto al mundo exterior.
Un usuario de un objeto se comunica con el objeto mediante su interfaz, un conjunto de
operaciones definidas por la clase del objeto de modo que todas son visibles al programa. Una
interfaz se puede considerar como una vista simplificada de un objeto.

Concepcin de una Clase. Es un tipo definido por el usuario. Son los bloques de construccin
fundamental de la POO.
Booch denomina a una clase como un conjunto de objetos que comparten una estructura y
comportamiento comunes.
Una clase describe el dominio de definicin de un conjunto de objetos. Cada objeto pertenece a
una clase. Las caractersticas generales estn contenidas dentro de la clase y las caractersticas
especficas estn contenidas en el objeto. Los objetos software se construyen a partir de la clase
va un proceso conocido como instanciacin. De este modo un objeto es una instancia (ejemplar o
caso) de una clase.
Los mtodos y las variables definidas en una clase se denominan miembro de la clase. Los
mtodos son los que determinan cmo se pueden utilizar los datos de la clase.
Las variables definidas en el interior de una clase se llaman variables de instancia debido a que
cada instancia de la clase (es decir cada objeto de la clase) contiene su propia copia de estas
variables. Por consiguiente, los datos de un objeto son nicos e independientes de otro objeto.
Representacin grfica de una Clase.

Un diagrama de clases esta compuesto por los siguientes elementos:
Clase: atributos, mtodos y visibilidad.
Relaciones: Dependencia, Asociacin, Agregacin (Composicin), Jerarquizacin
(Generalizacin / Especificacin), Herencia (Clase Derivada).
Clase, es la unidad bsica que encapsula toda la informacin de un Objeto (un objeto es
una instancia de una clase). A travs de ella podemos modelar el entorno en estudio (una
Casa, un Auto, una Cuenta Corriente, etc.). En UML, una clase es representada por un
rectngulo que posee tres divisiones:

En donde:
o Superior: Contiene el nombre de la Clase
o Intermedio: Contiene los atributos (o variables de instancia) que
caracterizan a la Clase (pueden ser private, protected o public).
o Inferior: Contiene los mtodos u operaciones, los cuales son la forma como
interacta el objeto con su entorno (dependiendo de la visibilidad: private,
protected o public).
Ejemplo: Una Cuenta Corriente.
Posee atributos o caractersticas:
o Balance
Puede realizar las operaciones de:
o Depositar
o Girar
o Balance
El diseo asociado es:

Atributos y Mtodos:
o Atributos: Los atributos o caractersticas de una Clase pueden ser de tres
tipos, los que definen el grado de comunicacin y visibilidad
(complementan o refinan el concepto de encapsulamiento) de ellos con el
entorno, estos son:
public (+, ): Indica que el atributo ser visible tanto dentro
como fuera de la clase, es decir, es accesible desde todos lados.
private (-, ): Indica que el atributo slo ser accesible desde
dentro de la clase (slo sus mtodos lo pueden accesar).
protected (#, ): Indica que el atributo no ser accesible desde
fuera de la clase, pero si podr ser accesado por mtodos de la clase
adems de las subclases que se deriven (ver herencia).
o Mtodos: Los mtodos u operaciones de una clase son la forma en como
sta interacta con su entorno, stos pueden tener las caractersticas:
public (+, ): Indica que el mtodo ser visible tanto dentro como
fuera de la clase, es decir, es accesible desde todos lados.
private (-, ): Indica que el mtodo slo ser accesible desde
dentro de la clase (slo otros mtodos de la clase lo pueden
accesar).
protected (#, ): Indica que el mtodo no ser accesible desde
fuera de la clase, pero si podr ser accesado por mtodos de la clase
adems de mtodos de las subclases que se deriven (ver herencia).
Relaciones entre Clases.
Una relacin es una conexin semntica (significado e interpretacin de smbolos) entre clases.
Permite que una clase conozca los atributos, operaciones y relaciones de otras clases. Las clases
no actan aisladas entre s, al contrario, estn relacionadas unas con otras, dependiendo de la
fortaleza de la relacin.
La fortaleza de una relacin de clases se baza en el modo de dependencia de las clases implicadas.
Dos clases que son fuertemente dependientes una de otras se dice que estn acopladas
fuertemente y en caso contrario, que estn acopladas dbilmente.

1. Dependencia.
Es la relacin ms dbil entre dos clases; significa que una clase utiliza (usa un) la
informacin y los servicios de otra clase o dicho de otro modo, lo que una clase necesita
conocer de otra clase para utilizar objetos de esa clase. Normalmente es una relacin
transitoria y significa que una clase dependiente interacta de manera breve con la clase
destino, pero normalmente no tiene con ella una relacin de un tiempo definido.



Dependencia de una clase de otra, es decir, Quin depende de quien?. Clase Independiente
(puede existir sin la presencia de la clase independiente). Clase Dependiente (su
visualizacin depende de la clase independiente). Este tipo de relacin no es muy usado en
el diseo de BD.


2. Asociacin.
Es una conexin conceptual o semntica entre clases. Tiene un nombre (verbo, tambin
puede ser frases nominales). Cuando una asociacin conecta dos clases, cada clase enva
mensajes a la otra en un diagrama de colaboracin. Una asociacin es una abstraccin de
los enlaces que existen entre instancias de objetos.

Una asociacin es ms fuerte que la dependencia y normalmente indica que una clase
recuerda o retiene una relacin con otra clase durante un periodo determinado de
tiempo. La asociacin significa que una clase contiene referencia a un objeto u objetos de
la otra clase en forma de atributo. La asociacin se representa mediante una line que
conecta las dos clases.
Multiplicidad (Cardinalidad), representa la cantidad de objetos de una clase que se
relacionan con un objeto de la clase asociada. Estas pueden ser:
o uno a muchos: 1..* (1..n)
o 0 a muchos: 0..* (0..n)
o nmero fijo: m (m denota el nmero).
o Numero fijo: 5 .. 11 Cinco a once.

Asociacin reflexiva (recursiva), es cuando una clase tiene una asociacin consigo mismo.
Esto se presenta cuando una clase tiene objetos que pueden jugar diferentes roles.

Clase asociacin, Una clase asociacin es una asociacin, con mtodos y atributos, que es
tambin una asociacin normal.
La clase asociacin no se conecta a ninguno de los extremos de la asociacin, sino que se
conecta a la asociacin real, a travs de una lnea punteada. La clase asociacin se utiliza
para aadir informacin extra en un enlace. Este tipo de clase se utiliza cuando se
necesita mantener informacin sobre la propia relacin.

3. Agregacin.
Una agregacin es un tipo especial de asociacin que expresa un acoplamiento ms fuerte
entre clases. Una de las clases juega un papel importante dentro de la relacin con las
otras clases.
La agregacin implica normalmente propiedad o pertenencia. La agregacin se lee
normalmente como relacin posee un o todo-parte, en la cual una clase (el todo)
representa un gran elemento que consta de elementos ms pequeos (las partes). La
agregacin se representa con un rombo a continuacin de la clase propietaria y una
lnea recta que apunta a la clase poseda. Esta relacin se conoce como tiene-un ya
que el todo tiene sus partes; un objeto es parte de otro objeto.

Composicin, es un tipo especial de agregacin que impone algunas restricciones: si el
objeto completo se copia o se borra (elimina), sus partes se copian o se eliminan con l. La
composicin es una relacin fuerte entre clases y se utiliza para representar una relacin
todo-parte (whole part) y se lee es parte de. Cada componente dentro de una
composicin puede pertenecer tan slo a un componente. El smbolo de una composicin
es el mismo que el de una agregacin, excepto que el rombo est relleno.

4. Jerarqua de clases: Generalizacin y Especializacin.
La jerarqua de clase (o clasificacin) hace lo posible por gestionar la complejidad
ordenando objetos dentro de arboles de clases con niveles crecientes de abstraccin. Las
jerarquas de clase ms conocidas son: generalizacin y especializacin.
Generalizacin / Especializacin.
I. La generalizacin es una relacin de herencia entre dos elementos de un modelo
tal como clase. Permite a una clase heredar atributos y operaciones de otra clase.
En realidad es la factorizacin de elementos comunes (atributos, operaciones y
restricciones) dentro de un conjunto de clases en una clase ms general
denominado superclase. Las clases estn ordenadas dentro de una jerarqua, una
superclase es una abstraccin de sus subclases.
II. La flecha que representa la generalizacin entre dos clases apunta hacia la clase
ms general.
III. La especializacin permite la captura de las caractersticas especficas de un
conjunto de objetos que no han sido distinguidos por las clases ya identificadas.
Las nuevas caractersticas se representan por una nueva clase, que es una
subclase de una de las clases existentes. La especializacin es una tcnica muy
eficiente para extender un conjunto de clases de un modo coherente.
IV. La generalizacin (abajo hacia arriba) y la especializacin (arriba hacia abajo) son
dos puntos de vista opuesto del concepto de jerarqua de clasificacin; expresan la
direccin en que se extiende la jerarqua de clases.
V. Una generalizacin no lleva ningn nombre especifica; siempre significa es un
tipo de. es un. es uno de, etc. La generalizacin slo pertenece a clases, no se
puede instanciar va enlaces y por consiguiente no admite el concepto de
multiplicidad.
VI. La generalizacin es una relacin no reflexiva: una clase no se puede de si misma.
VII. La generalizacin es una relacin asimtrica: si la clase B se deriva de la case A,
entonces la clase A no se puede derivar de la clase B.
VIII. La generalizacin es una relacin transitiva: si la clase C se deriva de la clase B
que a su vez se deriva de la clase A, entonces la clase C se deriva de la clase A.
IX. Una superclase representa una generalizacin de las sub clases. Una subclase de
la clase dada representa una especializacin de la clase ascendente.


5. Herencia: clases derivadas.
La herencia o relacin es-un es la relacin que existe entre dos clases, en la que una clase
denominada derivada se crea a partir de otra ya existente, denominada clase base.

Herencia simple, es cuando tiene un solo padre. Una clase puede no tener padre, en cuyo
caso se denomina clase base o clase raz, y tambin puede no tener ninguna hija, en cuyo
caso se denomina clase terminal o clase hija o clase hoja.

Herencia mltiple, es cuando tiene ms de un padre.
Aunque la herencia mltiple est admitida en UML y en C++ (no en Java y C#), en general
su uso no se considera una buena prctica en la mayora de los casos. Esta caracterstica se
debe al hecho de que la herencia mltiple presenta un problema complicado cuando las
dos clases padre tienen solapamiento de atributos y comportamiento.

En OO la relacin se conoce como herencia y el UML como generalizacin.
6. Clases abstractas.
Una clase abstracta es una clase que no tiene objeto, o con mayor precisin, es una clase
que no puede tener objetos instancia de la clase base. Una clase abstracta describe
atributos y comportamientos comunes a otras clases, y deja algunos aspectos del
funcionamiento de la clase a las subclases concretas. Una clase abstracta se representa su
nombre en letras cursivas.

7. Interfaz Realice.
Una interfaz es un conjunto de operaciones que realiza una clase. Esta ltima se relaciona
con una interfaz mediante la realizacin, misma que se indica por una lnea discontinua
con un punto de flecha en forma de triangulo sin rellenar que apunta a la interfaz.

Otra forma (omitida) de representar una clase y una interfaz es con un pequeo crculo que se
conecta mediante una lnea a la clase.

Vous aimerez peut-être aussi