Bloque III - Tema 5 Diseño y POO
Bloque III - Tema 5 Diseño y POO
Bloque III - Tema 5 Diseño y POO
Estado de un objeto
ESTADO DE UN
El estado de un objeto abarca todas las propiedades del objeto, y OBJETO
los valores actuales de cada una de esas propiedades. Las
propiedades de los objetos suelen ser estticas, mientras los valores
que toman estas propiedades cambian con el tiempo.
1
El estado de un objeto est influido por la historia del objeto.
El estado de un objeto representa el efecto acumulado de su
comportamiento.
Identidad de un objeto
IDENTIDAD DE UN Identidad es la propiedad de un objeto que lo lleva a distinguirse de
OBJETO otros.
Comportamiento de un objeto
Comportamiento es como un objeto acta y reacciona, en trminos
COMPORTAMIENTO de sus cambios de estado y de los mensajes que intercambia.
DE UN OBJETO Son las operaciones que una clase realiza (llamadas tambin
mensajes) las que dan cuenta de cmo se comporta la clase. Por
operacin se denota el servicio que una clase ofrece a sus clientes.
Un objeto puede realizar cinco tipos de operaciones sobre otro,
OPERACIONES DE con el propsito de provocar una reaccin:
UN OBJETO:
Modificador, selector, Modificador: altera el estado de un objeto.
iterador, constructor y Selector: accede al estado de un objeto, sin alterarlo.
destructor Iterador: permite a todas las partes de un objeto ser accedidas
en un orden.
Constructor: crea un objeto y/o inicializa su estado.
Destructor: libera el estado de un objeto y/o destruye el objeto.
C++ soporta, adems de las operaciones, subprogramas libres. En
la terminologa de C++ las operaciones que un cliente puede realizar
sobre un objeto se declaran como funciones miembro.
2
alto nivel de abstraccin, un nivel que se puede seguir hasta
requisitos especficos de datos, funcionales y de comportamiento.
3
El problema describe cundo aplicar el patrn. Explica el
problema y su contexto. Podra describir problemas especficos de
diseo del tipo de cmo representar algoritmos como objetos. Podra
describir estructuras de clases u objetos que son sntomas de un
diseo inflexible.
La solucin describe los elementos que construyen el diseo,
sus relaciones, responsabilidades y colaboraciones. El patrn
proporciona una descripcin abstracta de un problema de diseo y
cmo una disposicin general de elementos lo resuelve.
Las consecuencias son los resultados e inconvenientes de
aplicar el patrn. Aunque las consecuencias se ignoran cuando
describimos las decisiones de diseo, son crticas para evaluar las
alternativas de diseo y para entender los costes y beneficios de
aplicar el patrn.
A) Patrones de creacin
Los patrones de creacin conciernen el proceso de creacin de
objetos. Los patrones de creacin proporcionan ayuda a la hora de
crear objetos, principalmente cuando esta creacin requiere tomar
decisiones. Esta toma de decisiones puede ser dinmica. Estos
patrones ayudan a estructurar y encapsular estas decisiones. En
algunas ocasiones existe ms de un patrn que se puede aplicar a
la misma situacin. En otras ocasiones se pueden combinar
mltiples patrones convenientemente. Un patrn de creacin
asociado a clases usa la herencia para variar la clase que se
instancia, mientras que un patrn de creacin asociado a objetos
delegar la instanciacin a otro objeto.
Hay dos formas de clasificar los patrones de creacin basndose en
las clases de objetos que se crean. Una es clasificar las clases que
crean los objetos (Factory Method), otra forma est relacionada con
la composicin de objetos; definir un objeto que es responsable de
conocer las clases de los objetos producto, en esta caracterstica se
apoyan los patrones Abstract Factory, Builder o Prototype.
Factory method proporciona una interfaz para crear un
objeto, pero deja a las subclases decidir cul clase instanciar.
Permite a una clase delegar la instanciacin a las subclases.
Abstract Factory proporciona una interfaz para crear
familias de objetos relacionados o dependientes sin especificar su
clase concreta.
Builder separa la construccin de un objeto complejo de
su representacin para que el mismo proceso de construccin pueda
crear diferentes representaciones.
Prototype especifica el tipo de objetos a crear usando una
instancia prototipo, y crea nuevos objetos copiando este prototipo.
Singleton asegura que una clase slo tiene una instancia,
y proporciona un punto de acceso global a sta.
4
B) Patrones cliente. Permite trabajar juntas a clases que de otra forma no podran
estructurales hacerlo por incompatibilidad de interfaces.
Bridge desacopla una abstraccin de su implementacin
Tratan de la para que los dos puedan variar independientemente.
composicin de clases Composite compone objetos en estructuras de rbol para
y objetos. Los representar jerarquas parte-todo. Permite a los usuarios tratar
patrones estructurales objetos individuales y composiciones de manera uniforme.
estn relacionados Decorator agrega responsabilidades adicionales a un
con cmo las clases y objeto dinmicamente. Pro-porcionan una alternativa flexible a las
los objetos se subclases para extender funcionalidad.
combinan para dar Facade proporciona una interfaz unificada a un conjunto de
lugar a estructuras interfaces en un subsistema. Define una interfaz de alto nivel que
ms complejas. hace el subsistema ms fcil de usar.
Puede hacerse aqu la Flyweight comparte para proporcionar un gran nmero de
misma distincin que objetos pequeos efi-cientemente.
hacamos en los Proxy proporciona un sustituto para otro objeto, para
patrones de creacin y controlar el acceso a l.
hablar de patrones C) Patrones de comportamiento
estructurales Los de comportamiento caracterizan las maneras en las que las
asociados a clases clases u objetos inte- ractan y se distribuyen las responsabilidades.
(Adapter) y asociados Estos patrones de diseo estn relacionados con algoritmos y
a objetos (Bridge, asignacin de responsabilidades a los objetos. Los patrones de
Composite, Decorator, comportamiento describen no slamente patrones de objetos o
Facade, Flyweight, clases sino tambin patrones de comunicacin entre ellos.
Proxy), los primeros Nuevamente se pueden clasificar en funcin de que trabajen con
utilizarn la herencia, clases (Template Method, Interpreter) u objetos (Chain of
los segundos la Responsability, Command, Iterator, Mediator, Memento, Observer,
composicin. State, Strategy, Visitor).
Los patrones La variacin de la encapsulacin es la base de muchos patrones de
estructurales comportamiento. Cuando un aspecto de un programa cambia
asociados con objetos frecuentemente, estos patrones definen un objeto que encapsula
describen formas de dicho aspecto. Los patrones definen una clase abstracta que
componer los objetos describe la encapsulacin del objeto.
para conseguir nueva
funcionalidad. La Observer define una dependencia uno a varios entre
flexibilidad de la objetos de manera que cuando un objeto cambia su estado, todos
composicin de los objetos dependientes son notificados y actualizados
objetos viene de la automticamente.
posibilidad de cambiar Mediator define un objeto que encapsula cmo un
la composicin en conjunto de objetos interactan. Promueve bajo acoplamiento
tiempo de ejecucin, evitando que los
lo que es imposible objetos se refieran entre ellos explcitamente, y permite variar su
con la composicin interaccin independientemente.
esttica de clases. Chain of Responsibility evita el acoplamiento del emisor
Adapter de una peticin a su receptor dando a ms de un objeto una
convierte la interfaz de oportunidad para manejar la peticin. Encadena los objetos
una clase en otra receptores y pasa la peticin a lo largo de la cadena hasta que un
interfaz que espera el objeto la maneja.
5
Template comportamiento cuando cambia su estado interno. El objeto
Method define un aparenta cambiar su clase.
esqueleto de un Command encapsula una peticin como objeto, por lo
algoritmo en una tanto permite valorar o analizar los usuarios con diferentes
operacin, peticiones, colas o peticiones de conexin, y permite operaciones
aplazando algunos que se pueden deshacer.
pasos a las subclases. Iterator proporciona un medio para acceder a los
Permite a las elementos de un objeto agregado secuencialmente sin exponer su
subclases redefinir representacin subyacente.
ciertos pasos de un El mbito especifica cuando los patrones se aplican principalmente
algoritmo sin cambiar a las clases o a los objetos. Los patrones de clase tratan con
la estructura del relaciones entre las clases y sus subclases. Estas relaciones se
algoritmo. establecen a travs de la herencia, as que son estticas, fijas en
Interpreter, tiempo de compilacin. Los patrones de objetos tratan con las
dado un lenguaje, relaciones de objetos, que pueden cambiar en tiempo de ejecucin
define una y son ms dinmicos. Casi todos los patrones utilizan la herencia en
representacin para algn punto.
su gramtica y un
intrprete que usa la Los patrones de clase de creacin delegan alguna parte de la
representacin para creacin a subclases, mientras que los de objeto delegan en otro
interpretar las objeto. Los estructurales de clases usan la herencia para componer
sentencias en el las clases, mientras que los de objeto describen maneras de reunir
lenguaje. objetos. Los patrones de clase de comportamiento usan herencia
Strategy para describir algoritmos y flujo de control, mientras que los de
define una familia de objeto describen cmo un grupo de objetos cooperan para realizar
algoritmos, una tarea que no podra llevar a cabo un objeto slo.
encapsulados Los mtodos de diseo orientados a objetos favorecen varios
individualmente, y los enfoques.
hace intercambiables. Se puede escribir el problema y extraer nombres y verbos como
Permite a un algoritmo clases y ope
cambiar raciones. Se puede modelar desde el punto de vista de las
independientemente colaboraciones y responsabilidades en el sistema. Se puede
de los usuarios que lo modelar el mundo real y trasladar los objetos encontrados en el
usen. anlisis al diseo. Los patrones de diseo ayudan a identificar las
Visitor abstracciones menos obvias y los objetos que pueden capturarlas.
representa una D) Interfaces
operacin que va a Cada operacin declarada por un objeto especifica el nombre de una
ejecutarse sobre operacin, los objetos que toma como parmetros y lo que devuelve.
elementos de una A esto se le llama signatura. Al conjunto de todas las signaturas
estructura de objetos. definidas por las operaciones de un objeto se le llama la interfaz
Permite definir una del objeto. La interfaz de un objeto caracteriza el conjunto completo
nueva operacin sin de peticiones que se le pueden mandar a un objeto. Cualquier
cambiar las clases de peticin que coincida con una signatura de la interfaz de un objeto
los elementos con los puede ser mandada a ese objeto.
que opera. Un tipo es el nombre que se suele usar para denotar una interfaz
State determinada. Un objeto puede tener varios tipos, y objetos muy
permite a un objeto diferentes pueden ser del mismo tipo. Dos objetos del mismo tipo
alterar su slo necesitan compartir parte de sus interfaces. Las interfaces
6
pueden contener escribir programas que esperen un objeto con una interfaz particular,
otras interfaces como sabiendo que cualquier objeto que tenga la interfaz correcta
subconjuntos. Se dice aceptar la peticin. Es ms, la ligadura dinmica permite sustituir
que un tipo es un objetos que tienen interfaces idnticas entre s en tiempo de
subtipo de otro si su ejecucin (polimorfismo). El polimorfismo simplifica las definiciones
interfaz contiene la de los usuarios, desacopla los objetos entre s, y permite que varen
interfaz de su sus relaciones en tiempo de ejecucin.
supertipo (herencia).
Los interfaces son Los patrones de diseo ayudan a definir interfaces identificando sus
fundamentales en los elementos principales y los tipo de datos que pueden ser enviados
sistemas orientados a a travs de una interfaz. Un patrn de diseo puede indicar tambin
objetos. Los objetos qu es lo que no se debe poner en una interfaz. El patrn memento
slo son conocidos a describe cmo encapsular y salvar el estado interno de un objeto
travs de sus para que este pueda ser restaurado posteriormente. El patrn
interfaces. No hay estipula que los objetos memento deben definir dos interfaces: una
manera de saber nada restringida para los usuarios, y otra privilegiada para que nicamente
acerca de un objeto o el objeto original pueda guardar y recuperar su estado.
de pedirle que haga Los patrones de diseo tambin especifican las relaciones entre
algo sin pasar a travs interfaces. En particular, muchas veces necesitan que algunas
de su interfaz. La clases tengan interfaces similares, o aaden restricciones a las
interfaz de un objeto interfaces de algunas clases.
no dice nada acerca Existen dos beneficios al manipular los objetos en trminos de su
de su implementacin, interfaz definida por una clase abstracta:
pues diferentes Los usuarios ignoran en tipo especfico de objeto que
objetos pueden estn usando, mientras que respondan a la interfaz que el cliente
implemen- tar las espera.
peticiones de manera Los usuarios ignoran las clases que implementan los
diferente. objetos. nicamente deben conocer la clase abstracta que definen
Cuando una peticin el interfaz.
se enva a un objeto, la Esto reduce significativamente las dependencias de implementacin
operacin que se entre los subsistemas. Los patrones de creacin abstraen el
realiza depende tanto proceso de creacin, de manera que ofrecen diferentes maneras de
de la peticin como del asociar una interfaz con su implementacin de manera
objeto que la recibe. transparente a la instanciacin. Los patrones de creacin aseguran
La asociacin en que el sistema se escribe en trminos de interfaces, no
tiempo de ejecucin implementaciones.
de una peticin a un 1.1.7. Herencia y composicin
objeto y la operacin Las dos maneras de reutilizar la funcionalidad en los sistemas
se llama ligadura Orientados a Objetos son la herencia de clases (caja blanca) y la
dinmica. composicin de objetos (caja negra). Cada una tiene sus ventajas e
La ligadura dinmica inconvenientes.
significa que hacer Ventajas: La herencia de clases se define estticamente
una peticin no se en tiempo de compilacin, y se usa directamente, ya que est
asocia a una proporcionada por el lenguaje de programacin. La herencia
implementacin permite modificar de manera ms sencilla la implemen- tacin que
particular hasta tiempo se est reutilizando. Si se sobrescriben algunos, pero no todos los
de ejecucin. Por lo mtodos, podra ocurrir que los no sobrescritos llamen a los
tanto, se pueden sobrescritos.
7
Inconvenientes: No se La composicin de objetos tiene otro efecto sobre el diseo de
puede cambiar la sistemas.
implementacin Cada clase se mantiene encapsulada y enfocada en una tarea. Las
heredada de las clases y jerarquas de clases permanecern pequeas en lugar de
clases base en tiempo crecer hasta convertirse en
de ejecucin, ya que monstruos inmanejables. Por otra parte un diseo basado en la
se define en tiempo de composicin de objetos tendr ms objetos (y menos clases).
compilacin. La Idealmente, se debera poder conseguir toda la funcionalidad que se
herencia rompe el necesite ensamblando componentes existentes mediante
encapsulamiento. Las composicin de objetos. Pero este caso no se suele dar, porque el
superclases definen conjunto de componentes nunca es suficientemente rico. La
parte de la reutilizacin mediante la herencia hace ms fcil componer nuevos
representacin fsica componentes con los antiguos. De esta manera la herencia y la
de las subclases. Las composicin trabajan juntos.
dependencias de 1.1.8. Delegacin
implementacin Sirve para simular la herencia mediante la composicin. La principal
pueden causar ventaja de la delegacin es que hace fcil componer
problemas cuando se comportamientos en tiempo de ejecucin y cambiar la manera en la
intenta reutilizar una que estn compuestos. La desventaja es que es ms difcil de
subclase... se podra entender, e ine- ficiencias de tiempo de ejecucin. Varios patrones
solucionar usan delegacin: state, strategy y visitor. La delegacin es un
heredando de ejemplo extremo de composicin de objetos. Nos muestra que
interfaces. siempre se puede reemplazar herencia por composicin de objetos
La composicin de como mecanismo de reutilizacin de cdigo.
objetos se define 1.1.9. Diseo
dinmicamente en La llave para maximizar la reutilizacin est en anticiparse a los
tiempo de ejecucin nuevos requisitos y cambios a los requisitos existentes, y disear el
mediante objetos sistema para que pueda evolucionar como corresponde.
que toman referencias Los cambios pueden provocar redefinicin de las clases,
a otros objetos. La reimplementacin, modificacin del cliente, y nuevos tests. El
composicin requiere rediseo afecta a muchas partes del sistema software.
que los objetos Los patrones de diseo nos ayudan a evitarlo asegurando que el
respeten sus sistema puede cambiar en ciertos aspectos determinados. Cada
interfaces, lo que patrn de diseo permite que algn aspecto de la estructura del
requiere interfaces sistema vare independientemente de otros aspectos, por lo tanto
diseados hace el sistema ms robusto para un tipo determinado de cambio.
cuidadosamente. A Se listan a continuacin las causas de rediseo ms comunes junto
cambio, no se rompe con los patrones de diseo que las abordan:
el encapsulamiento, y 1. Crear un objeto especificando una clase explcitamente.
cualquier objeto puede Especificar el nombre de una clase cuando se crea un objeto, nos
ser reemplazado por compromete a una implementacin particular en lugar de a una
otro en tiempo de interfaz. Este compromiso puede complicar cambios futuros. Para
ejecucin siempre que evitarlo, los objetos se deben crear indirectamente.
tenga el mismo tipo. Patrones de diseo: Factora abstracta, factory method, prototipo.
Existen menos 2. Dependencias de operaciones especficas. Cuando se
dependencias de especifica una operacin particular, nos comprometemos a una
implementacin. manera de satisfacer una peticin.
8
Ocultar esta informacin de los usuarios evita cambios en cascada.
Evitando peticiones Patrones de diseo: factora abstracta, puente, memento, proxy.
especificadas en 5. Dependencias algortmicas. Los algoritmos se extienden,
tiempo de optimizan y se reemplazan habitualmente durante el desarrollo y la
compilacin, se hace reutilizacin. Los objetos que dependen de un algoritmo tendrn que
ms fcil de cambiar la cambiar cuando el algoritmo cambie. Por lo tanto los algoritmos que
manera en la que se tengan pinta de cambiar deben ser aislados.
satisface una peticin. Patrones de diseo: buider, iterator, estrategia, template method,
Patrones de diseo: visitor.
Cadena de 6. Acoplamiento fuerte. Las clases que estn muy acopladas
responsabilidad, son difciles de reutilizar individualmente, ya que dependen unas de
comando. otras. El acoplamiento fuerte lleva a sistemas monolticos, donde
3. no se puede cambiar o eliminar una clase sin entender y cambiar
Dependencia de la muchas otras clases. El sistema se convierte en una masa densa
plataforma hardware y que es difcil de aprender, portar y mantener. El acoplamiento dbil
software. Las APls de incrementa la probabilidad de que una clase pueda ser reutilizada
los sistemas ope- por s misma y que el sistema pueda ser aprendido, portado,
rativos son diferentes modificado y extendido ms fcilmente.
para las distintas Patrones de diseo: factora abstracta, puente, cadena de
plataformas. El responsabilidad, comando, fachada, mediador, observador.
software que
depende de una 7. Extender la funcionalidad mediante la herencia. Adaptar
plataforma particular un objeto mediante la herencia muchas veces no es fcil. Cada
ser ms difcil de nueva clase tiene una implementacin fija por encima (inicializacin,
portar a otras terminacin...). Definir una subclase adems requiere un
plataformas. Podra entendimiento en profundidad de la clase base. Por ejemplo,
incluso ser difcil de sobrescribir una operacin puede requerir sobrescribir otra. Una
mantener actualizada operacin sobrescrita podra ser necesitada para llamar a una
en su plataforma operacin heredada. Y la herencia puede llevar a una explosin de
nativa. Por lo tanto, es clases, porque podran necesitarse muchas subclases nuevas para
importante disear el una simple extensin. La composicin de objetos en general y la
software para limitar delegacin en particular proporciona una alternativa flexible a la
las dependencias de herencia para combinar comportamientos. La nueva funcionalidad
la plataforma. puede aadirse a una aplicacin componiendo objetos existentes
Patrones de diseo: de nuevas maneras en lugar de definir nuevas subclases de clases
factora abstracta, existentes. Por otra parte, demasiado uso de la composicin puede
puente. hacer los diseos ms difciles de entender. Muchos patrones de
4. diseo producen diseos en los que se pueden introducir nuevas
Dependencia de las funcionalidades simplemente definiendo una subclase y
representaciones o componiendo las instancias con otras existentes.
implementaciones de Patrones de diseo: puente, cadena de responsabilidad, composite,
objetos. Los usua-rios decorador, observador, estrategia.
que saben como se 8. Incapacidad para alterar las clases convenientemente. A
representa, almacena veces hay que modificar una clase que no puede ser modificada
o implementa podran convenientemente. Quizs se necesita el cdigo fuente y no se
necesitar ser tiene. O puede que cualquier cambio necesite modificar un montn
cambiados cuando de clases existentes. Los patrones nos ayudan a modificar las clases
cambien los objetos. en estas circunstancias.
9
Patrones de diseo: el mantenimiento exiga menor esfuerzo.
adaptador, decorador, Lo anterior trajo consigo otro beneficio como es la reutilizacin del
visitor. cdigo, hecho que por s mismo repercute en una baja en el costo
2. Elementos y del software y en el tiempo requerido para el desarrollo de
componentes sistemas.
software: objetos, El primer lenguaje que implement estas ideas fue el lenguaje
clases, herencia, SIMULA-67. Luego, en la dcada de los 70, XEROX en sus
mtodos, sobrecarga laboratorios de Palo Alto desarrolla SMALL-TALK.
2.1. Evolucin de En los aos 80 tomando ideas de Simula y de Small-Talk, en los
los objetos laboratorios Bell de ATT, Stroustrup crea el lenguaje C++ como
Las ideas bsicas sucesor del Lenguaje C, y a ste se debe la gran extensin de los
sobre los objetos, conceptos de objetos. En el rea de la inteligencia artificial, se
nacen a principios de desarrolla Clos, una variante de Lisp orientada a objetos.
los aos setenta en la En sistemas operativos, el Next-Step de Sun es un Sistema
universidad de Operativo Orientado a objetos. Microsoft trabaja en Cairo, IBM y
Noruega donde un Apple trabajan en Pink, como sistemas operativos que incluyen
equipo dirigido por el conceptos de objetos.
Dr. Nygaard, se En las bases de datos, tenemos al SNAP (Strategic Networed
dedicaba a Applications Plataform), conocido en espaol como Sistemas
desarrollar sistemas distribuidos en lnea orientados a objetos. Poco ms tarde (1993-
informticos para 4) Sun crea JAVA, el cual arrasa hasta la actualidad en aplicaciones
realizar simulaciones cliente y en programas ejecutables para Internet (applets).
de sistemas fsicos.
Debido a que eran
programas muy Los conceptos de objetos entran en profundidad poco a poco en
complejos y el todos los mbitos de la computacin, y de la misma manera que ha
mantenimiento era sido inevitable aprender programacin estructurada o bases de
muy necesario (para datos relacionales, ahora se hace necesario aprender programacin
que el software se orientada a objetos. Los conceptos de anlisis, diseo y
adaptara a nuevas programacin con objetos son fciles de dominar una vez que se
necesidades), se tiene una base de programacin en un lenguaje. Para poder
dieron cuenta de las construirnos nuestras propias libreras de clases o para llegar a ser
limitaciones de la un programador de objetos de alto rendimiento, se requiere un
ingeniera de software poco mas de prctica. En el mercado existen bibliotecas de clases,
tradicional, para y tambin varios lenguajes traen bibliotecas de clases que le
solucionar este permiten al programador realizar ciertas tareas sin tener que
problema idearon una programarlas.
forma de disear el No obstante, no debemos confundir Programacin Orientada a
programa Objetos donde el programador puede usar clases precreadas o
paralelamente al crearlas el mismo con Programacin Basada en Objetos donde las
objeto fsico, donde clases ya estn precreadas y el programador solo puede usarlas o
cada componente del modificarlas. Ejemplos de lenguajes de Programacin Basada en
objeto fsico se Objetos son: Clipper que tiene objetos ya creados como el Tbrowse
corresponda con un que permite el manejo de tablas y Visual Basic al igual que Delphi
componente de tienen objetos como botones o cuadros de dilogo con los que
software, con lo que permite desarrollar interfaces de usuario con un mnimo de
se simplificaba el programacin.
programa y, por tanto,
10
Nota. Hemos de otros utensilios de programacin que resultaba difcil relacionar con
destacar que Visual el problema actual. Adems, la programacin tradicional se
Basic .NET es tambin concentra en los procedimientos paso a paso, llamados algoritmos,
un lenguaje de ltima para realizar las tareas deseadas. Por esta razn, a la
generacin Orientado programacin tradicional tambin se le conoce como programacin
a Objetos. orientada a procedimientos.
2.2. La Todos los lenguajes de programacin estn formados por dos
programacin elementos: cdigo y datos. Cuando los programas empezaron a
orientada a objetos hacerse complicados y su cdigo es enorme y casi inmanejable, se
(POO-OOP) pens crear una nueva forma de pensar de la cual surgi la
La idea principal de programacin orientada a objetos. En ella un programa se organiza
POO es construir entorno a sus datos (objetos) y a un conjunto de interfaces bien
programas que utilizan definidas para esos datos.
objetos de software.
Un objeto puede La POO es un modelo de programacin que utiliza objetos ligados
considerarse como mediante mensajes para la resolucin de problemas. La idea inicial
una entidad siempre ha sido organizar los programas a imagen y semejanza de
independiente de la organizacin de los objetos en el mundo real.
cmputo con sus Las tcnicas orientadas a objetos se basan en organizar el software
propios datos y como una coleccin de objetos discretos que incorporan tanto
programacin. En estructuras de datos como comportamiento. Esto contrasta con la
computadoras programacin convencional, en la que las estructuras de datos y el
modernas, las comportamiento estaban escasamente relacionadas.
ventanas, los mens y Las caractersticas principales del enfoque orientado a objetos sern
las carpetas de estudiadas con detenimiento en este tema y son:
archivos, por ejemplo, Abstraccin.
suelen representarse Encapsulacin.
con objetos de Herencia.
software. Pero los Polimorfismo.
objetos pueden Clase.
aplicarse a muchos Objeto.
tipos de programas Se Mtodo.
incluiran datos que Mensajes.
describen los Identidad.
atributos fsicos, y Reutilizacin.
programacin Jerarqua.
(mtodos), que Concurrencia.
gobierna la manera en Modularidad.
que funciona A partir de estos elementos fundamentales, trataremos de dar un
internamente y en enfoque tanto estructurado como tambin un enfoque orientado a
que interacta con objetos.
otras partes Un objeto en el mundo real tiene una apariencia, peso, volumen y se
relacionadas. puede definir por la funcin que realiza. Tiene por tanto un conjunto
En contraste, la de caractersticas (atributos) que describen su naturaleza y
programacin funcionalidad. Un objeto es cualquier cosa, real o abstracta, en la
tradicional trabajaba cual almacenamos datos y los mtodos que controlan dichos datos,
con bytes, variables, pongamos la vista enfrente y estaremos rodeados de objetos.
matrices, ndices y
11
La teora de los diseo estructurados conducen a descomposiciones algortmicas,
objetos puede ser donde la atencin se centra en el flujo del sistema.
aplicada a cualquier Descomposicin orientada a objetos: Trata de identificar
sistema, por que la semnticamente el dominio del problema. El entorno del problema
organizacin de se estudia como un conjunto de agentes autnomos (objetos) que
stos (objetos) es lo colaboran para realizar un comportamiento complejo.
que define al sistema, Algortmica. Orientada a objetos.
ya que ste posee Diagramas tipo rbol. Varias posibilidades.
atributos y Desmenuza el problema. Identifica semnticamente el problema.
caractersticas Se programa en detalle. Se programa a lo grande.
individuales que lo Lenguajes imperativos. Lenguajes declarativos.
hacen organizacional,
desde su En cuanto a las caractersticas de las descomposiciones algortmica
denominacin en s, y orientada a objetos hemos de diferenciar tres trminos usados en
su clase, su la orientacin a objetos:
poliformismo, el Anlisis Orientado a Objetos: es un mtodo de anlisis que
proceso de examina los requeri-mientos desde la perspectiva de clases y
encapsulacin, la objetos encontrada en el vocabulario original del problema.
herencia que sucede a Diseo Orientado a Objetos: es un mtodo de diseo que
otro objeto, los abarca el proceso de descomposicin orientado a objetos y una
mensajes que de notacin para describir modelos lgicos y fsicos, dinmicos y
algn modo llevan a estticos, del sistema bajo diseo.
cabo que se realice Programacin Orientada a Objetos: es el mtodo de
una operacin, el implementacin en el cual los programas se organizan como
mtodo como se colecciones cooperantes de objetos, cada uno de los cuales
hace, su identidad, representa un ejemplo de alguna clase, y cuyas clases son todas
que lo difiere de los miembros de una jerarqua de clases unidas por relaciones.
dems, su
reutilizacin, el orden El concepto renovador de la tecnologa de POO es la anexin de
jerarquizado, su procedimientos de programas a elementos de datos. Esta idea
abstraccin, cambia la separacin tradicional entre datos y programas. A esta
modularidad y, por nueva unin se le llama encapsulamiento y el resultado es un objeto
ultimo, su de software. En JAVA, por ejemplo, todos los procedimientos estn
concurrencia. encapsulados y se les llama mtodos. Por ejemplo, un objeto de
La solucin para tratar ventana en un sistema de interfaz grfica del usuario contiene las
con la complejidad dimensiones fsicas de la ventana, la ubicacin en la pantalla, los
tpica de los colores de primer plano y de fondo, los estilos de borde y otros datos
programas es Divide relevantes. Encapsulados junto con estos datos, se encuentran los
y vencers: mtodos
para mover y modificar el tamao de la propia ventana, para cambiar
Descomposicin sus colores, para desplegar texto, para reducirlo a un icono, etc.
Algortmica (top-down Otras partes del programa de interfaz del usuario slo llaman a un
o estructural): Rompe objeto de ventana para realizar estas tareas envindole mensajes
el sistema en partes, bien definidos. El trabajo de un objeto de ventana consiste en
cada una realizar las acciones apropiadas y mantener actualizados sus datos
representando un internos. Para programas fuera del objeto no importa mucho la
pequeo paso del manera exacta en que se realizan estas tareas ni las estructuras de
proceso. Mtodos de los datos internos. La interfaz pblica formada por los diferentes
12
tipos de mensajes que mtodos internos (privados) de un objeto estn fuera de los lmites
enva un objeto, del pblico. El desacoplamiento de los mecanismos privados de los
definen por completo objetos de las rutinas externas a ellos, reducen en gran medida la
la manera de usarlo. complejidad de un programa.
sta es la interfaz de En POO se define una clase para cada tipo diferente de objeto. Se
programacin de utilizan una definicin de clase y valores iniciales apropiados para
aplicaciones (API, crear una instancia (objeto) de la clase. A esta operacin se le
Application conoce como instanciacin de objetos.
Programming La tecnologa de POO necesita formas fciles para construir objetos
Interface) del objeto. sobre otros, para eso existen dos mtodos principales, composicin
El ocultamiento de y herencia. El primero permite que objetos existentes se utilicen
detalles internos hace como componentes para construir otros. Por ejemplo, un objeto de
que un objeto sea calculadora puede estar compuesto por otro de unidad aritmtica y
abstracto. uno ms de interfaz de usuario. La herencia es una funcin
La separacin entre la importante de POO que le permite ampliar y modificar clases
interfaz pblica y el existentes sin cambiar su cdigo.
funcionamiento Una subclase hereda cdigo de su superclase y, tambin, agrega
interno no es difcil de sus propios datos y mtodos. La herencia permite la extraccin de
comprender. Por elementos comunes entre objetos similares o relacionados. Tambin
ejemplo, cuando permite que se utilicen clases de bibliotecas de software para
montamos en un muchos propsitos diferentes o no previsibles. Heredar de una clase
coche, pensamos en se conoce como herencia simple y heredar de varias clases se
un medio de conoce como herencia mltiple.
transporte que nos Adems, POO permite el polimorfismo, que es la capacidad de un
lleve de un lugar a programa para trabajar con diferentes objetos. Se permite la
otro. No pensamos en creacin de objetos compatibles que son trans- feribles. La
un masijo de hierros, modificacin y el mejoramiento de un programa polimrfico puede
plstico, etc. ser tan slo cuestin de enlazar objetos actualizados.
Adems, si montamos
en el coche del vecino Una clase es como el plano de los objetos. Describe las estructuras
sabremos conducirlo de datos del objeto y sus operaciones asociadas. Una vez que se ha
igualmente pues su definido una clase, es posible declarar los objetos que le pertenecen
forma de utilizacin es y utilizarlos en un pro
la misa. Su grama. Por lo general una clase contiene miembros que pueden ser
funcionamiento campos y mtodos. Los primeros son variables que almacenan
interno lo dejamos datos y objetos. Los segundos son funciones que codifican
para cuando falla y operaciones. Es as que ellos reciben argumentos, realizan clculos
tenemos que pagarle predefinidos y devuelven resultados.
al taller. Cuando se Un mensaje enviado a un objeto invoca un mtodo de ese objeto, le
ejecuta un programa, pasa argumentos y obtiene el valor que devuelve. Los objetos
los objetos se crean, interactan al enviar y recibir mensajes.
los mensajes se Una clase proporciona el nombre bajo el que se renen los
envan y los objetos se miembros para formar una unidad de clculo que puede operar con
destruyen. stas son independencia de otras partes del programa. Con objetos, puede
las nicas construirse un programa grande con muchas unidades pequeas,
operaciones independientes y que interactan entre s. La orientacin a objetos
permisibles sobre puede reducir significativamente la complejidad del programa,
ellos. Los datos o los aumentar su flexibilidad y mejorar las posibilidades de volver a
13
usarlo. Un programa nivel, nos vamos adentrando en l y viendo los subsistemas, en un
puede definir sus tercer nivel nos adentramos en cada uno de los subsistemas, etc.
propias clases, utilizar Ejemplo. Un camin:
las precreadas Si nos abstraemos lo vemos exteriormente como un objeto de
(generalmente grandes dimensiones y con gran capacidad de carga que puede
guardadas en transportar de un lugar a otro.
bibliotecas de clases) El camin lo podemos dividir en cabina, remolque, usos, coste, etc.
y emplear las que han (subsistemas).
sido creadas por otros Dentro de la cabina vemos que es un habitculo donde el conductor
programadores. Las se acomoda y controla el camin.
clases pueden estar A su vez dentro del subsistema cabina tenemos: los asientos, la
organizadas en radio, controles, etc. Cada uno de ellos con una funcin delimitada.
paquetes con un Dentro de cada uno de ellos, ...
nombre. Cada
paquete puede Esta abstraccin jerrquica de sistemas en subsistemas se puede
contener uno o ms aplicar a los programas que el programador crea y de los datos
archivos de cdigo tradicionales obtenemos su abstraccin en objetos. Cada uno de
fuente. estos objetos tiene un comportamiento y funcionalidad propio, que
Veamos a se pueden tratar como entidades inde
continuacin cada uno pendientes y que responden a mensajes (secuencia de pasos de un
de los concepto clave proceso) que les dicen lo que tienen que hacer y en qu orden.
de la programacin Una abstraccin denota las caractersticas esenciales de un objeto
orientada a objetos en que lo distinguen de todos los dems tipos de objetos, y proporciona
profundidad. as fronteras conceptuales definidas con nitidez, desde la
2.3. La perspectiva del observador. Todo objeto es nico. Sin embargo, la
abstraccin abstraccin elimina algunas distinciones para que podamos ver los
La abstraccin es una aspectos comunes entre los objetos.
de las bases de la La abstraccin es una de las vas fundamentales por la que los
POO. Desde siempre humanos podamos combatir la complejidad. Una abstraccin se
el programador ha centra en la visin externa de un objeto y, por lo tanto, sirve para
intentado abstraerse separar el comportamiento esencial de un objeto de su implantacin.
y no ver el programa Sin la abstraccin slo sabramos que cada objeto es diferente de
como un conjunto los dems, con ella se omiten de manera selectiva varias
complejo de cdigo. caractersticas distintivas de uno o ms objetos, lo que permite
Se pretender ignorar concentrarnos en las caractersticas que comparten. Para hacerlo
los detalles y obtener ms entendible, diremos que la abstraccin: es el acto o resultado
una visin en su de eliminar diferencias entre los objetos, de modo que podamos ver
conjunto. Una forma los aspectos ms comunes.
de obtener una buena La abstraccin denota las caractersticas esenciales que distinguen
abstraccin es a un objeto de otros tipos de objetos, definiendo precisas fronteras
utilizando conceptuales, relativas al observador. Las caractersticas de la
clasificaciones abstraccin son:
jerrquicas. En las Surge del reconocimiento de similitudes entre ciertos
clasificaciones objetos, situaciones o procesos en el mundo real.
jerrquicas primero Decide concentrarse en estas similitudes e ignorar las
vemos el sistema diferencias.
desde su exterior.
Luego, en un segundo
14
Enfatiza Ejemplo. Ests en tu coche. Si pisas el freno lo que debe de hacer
detalles con el coche es frenar y no debe de activarse el parabrisas, ni acelerar,
significado para el ni aumentar el volumen de la radio, etc. Eso sucede gracias a que
usuario, suprimiendo el sistema de frenado est perfectamente definido y funciona como
aquellos detalles que, un sistema independiente y con una
por el momento, son funcin muy definida. Puede comunicarse con otros sistemas como
irrelevantes o distraen las luces para que se activen las luces de frenado, pero esta
de lo esencial. comunicacin est perfectamente definida y aunque no funcionen
Deben las luces el coche ha de frenar igualmente, igualmente, si el coche
seguir el principio de no frena el fallo es del sistema de frenado y no de otro sistema.
mnimo compromiso, Con el encapsulado lo nico que debemos conocer del sistema es
que significa que la como acceder a l, sin preocuparnos de los detalles internos
inter- face de un objeto (abstraccin) y estamos seguros de que no se van a producir efectos
provee su secundarios imprevistos.
comportamiento Por tanto, el encapsulado consiste en ocultar los detalles de
esencial, y nada ms instrumentacin de un objeto, a la vez que se provee de una
que eso. Pero tambin interfaz pblica por medio de sus operaciones permitidas. En los
el principio de mnimo modelos orientados a objetos, lo que realmente nos importa es el
asombro: capturar el comportamiento de los objetos y no cmo est instrumentado ese
comportamiento sin comportamiento. As, si la instrumentacin de un objeto cambia pero
ofrecer sorpresas o su interfaz se mantiene igual, los objetos que interactan con l no
efectos laterales. se vern afectados por esos cambios. Adems, el encapsulamiento
2.4. El oculta la complejidad de la instrumentacin. El encapsulamiento es
encapsulado el proceso de compartimentar los elementos de una abstraccin que
Se trata de un constituyen su estructura y su compartimiento.
mecanismo que Dicho de otro modo, cada objeto es una estructura compleja en cuyo
permite juntar el interior hay datos y cdigo, todos ellos relacionados entre s, como
cdigo y los datos y si estuvieran encerrados conjuntamente en una cpsula. Es, a esta
que mantiene a ambos propiedad, a lo que se denomina encapsulamiento. Se puede definir
alejados de posibles como el proceso de almacenar en un mismo compartimiento los
usos indebidos. Para elementos de una abstraccin que constituyen su estructura y su
ello el acceso al comportamiento; sirve para separar la interfaz con-tractual de una
cdigo y a los datos se abstraccin y su implantacin. El hecho de cada objeto sea una
realiza de forma cpsula facilita enormemente que un objeto determinado pueda ser
controlada a travs de transportado a otro punto de la organizacin, o incluso a otra
una interfaz bien organizacin totalmente diferente que precise de l. Si el objeto ha
definida. El sido bien construido, sus mtodos seguirn funcionando en el nuevo
encapsulado permite entorno sin problemas. Esta cualidad hace que la POO sea muy
que se realice la apta para la reutilizacin de programas.
migracin de las El encapsulamiento es importante porque separa el comportamiento
implementaciones tras del objeto de su implantacin. Esto permite la modificacin de la
el paso del tiempo, sin implantacin del objeto sin que se tengan que modificar las
necesidad de aplicaciones que lo utilizan. La encapsulacin sirve para separar la
reescribir de nuevo interface de una abstraccin y su implementacin.
todo el cdigo Es un concepto complementario al de abstraccin.
(reutilizacin o La encapsulacin esconde la implementacin del objeto
reusibilidad). que no contribuye a sus caractersticas esenciales.
15
La objetos, los usuarios, o incluso los programadores conozcan cmo
encapsulacin da est distribuida la informacin o qu informacin hay disponible.
lugar a que las clases Esta propiedad de los objetos se denomina ocultacin de la
se dividan en dos informacin. Esto no quiere decir, sin embargo, que sea imposible
partes: conocer lo necesario respecto a un objeto y a lo que contiene. Si
1. Interface: as fuera no se podra hacer gran cosa con l. Lo que sucede es que
captura la visin las peticiones de informacin a un objeto deben realizarse a travs
externa de una clase, de mensajes dirigidos a l, con la orden de realizar la operacin
abarcando la pertinente. La respuesta a estas rdenes ser la informacin
abstraccin del requerida, siempre que el objeto considere que quien enva el
comportamiento mensaje est autorizado para obtenerla.
comn a los ejemplos El hecho de que cada objeto sea una cpsula facilita enormemente
de esa clase. que un objeto determinado pueda ser transportado a otro punto de
la organizacin, o incluso a otra organizacin totalmente diferente
2. que precise de l. Si el objeto ha sido bien construido, sus mtodos
Implementacin: seguirn funcionando en el nuevo entorno sin problemas. Esta
comprende la cualidad hace que la POO sea muy apta para la reutilizacin de
representacin de la programas.
abstraccin, as como Otra forma de ver su definicin: Una de las caractersticas centrales
los mecanismos que de POO es la particin del programa completo en pequeas
conducen al entidades autnomas, llamadas objetos, con interacciones bien
comportamiento definidas. Esta caracterstica reduce significativamente la
deseado. complejidad global y ayuda a la calidad del programa de diferentes
Se conoce maneras. Un objeto organiza datos y operaciones relacionadas en
tambin como una caja negra, que oculta las estructuras de datos, las
ocultamiento o representaciones y el cdigo interno de la vista exterior. Una
privacidad de la estructura de datos es concreta cuando se conocen sus elementos
informacin. exactos. Los mtodos de programacin tradicional dependen mucho
Como hemos visto, de datos concretos. Una estructura de datos es abstracta, si slo
cada objeto es una conocemos su comportamiento y no sus detalles de implantacin.
estructura compleja en Por tanto, la abstraccin de datos pone el nfasis en el ocultamiento
cuyo interior hay datos de los detalles internos de los datos y slo presenta su
y programas, todos comportamiento externo. Por ejemplo, sin conocer los detalles de la
ellos relacionados construccin de un automvil, podemos manejarlo con slo conocer
entre s, como si comportamientos como: al girar el volante en el sentido de las
estuvieran encerrados manecillas del reloj se gira a la derecha. Esto deja la implantacin
conjuntamente en de la conduccin a la caja negra, que puede utilizar una de las varias
una cpsula. Esta alternativas de direccin: normal, hidrulica, de engranes, etc.
propiedad Adems, un objeto tambin contiene mecanismos o cdigos que son
(encapsulamiento), es necesarios para operar las estructuras de datos que estn adjuntos
una de las a los cdigos para formar una unidad inseparable. A esta tcnica se
caractersticas le llama encapsulacin.
fundamentales en la En POO el comportamiento externo de un objeto es un contrato de
OOP. interfaz entre el objeto y sus clientes (los programas que utilizan el
No obstante, los objeto). Este convenio contiene datos/operaciones que quedan
objetos son disponibles para los clientes externos a partir de un objeto y que
inaccesibles, e documenta su significado preciso.
impiden que otros
16
cuales aaden otros. Los mamferos al ser animales, heredan todos
2.5. La herencia los atributos de los animales (algunas de las cuales heredaban de
La herencia es el los seres vivos) a los cuales aaden otros. Los humanos, como
proceso mediante el animales, etc.
cual un objeto Ejemplo 2. imagnate que tienes un molde para hacer bicicletas sin
adquiere las marchas. Has hecho miles de bicicletas y todo va bien. De repente
propiedades de otro. deseas hacer bicicletas con marchas. Qu te parece mas
Gracias a la herencia apropiado: crear un nuevo molde (es decir, crear de nuevo con todo
se consigue llevar a lo que ello conlleva), o coger el molde anterior y acoplarle las
cabo la idea vista marchas? sta es la idea de la herencia, a partir de un sistema
anteriormente de creado se crea uno nuevo acoplndole nuevos atributos.
clasificacin La herencia es el medio por el cual los objetos de una clase pueden
jerrquica. Si una acceder a variables y funciones miembro contenidas en una clase
clase dada encapsula previamente definida, sin tener que volver a realizar esas
algunos atributos definiciones. Existen dos tipos de herencia:
entonces cualquier A) Herencia simple
clase hija de la La herencia simple es aquella en la que una clase puede heredar la
anterior (subclase) estructura de datos y operaciones de una superclase. Es una
heredar los atributos relacin entre clases en la que una clase comparte la estructura o
de la anterior ms los el comportamiento definido en una.
que se le quieran B) Herencia mltiple
definir. La herencia mltiple se da cuando una clase puede heredar la
La herencia nos da estructura de datos y operaciones de ms de una superclase. Es la
reusabilidad de relacin entre clases en la que una clase comparte la estructura
cdigo. El concepto de dems de una clase base.
herencia se refiere a la La herencia mltiple presenta una gran dificultad y es el hecho que
comparicin de puede heredar dos operaciones con el mismo nombre. Esto hace
atributos y que las colisiones pueden introducir ambigedad en el
operaciones basadas comportamiento de la subclase que hereda en forma mltiple.
en una relacin Nota. El lenguaje C++ permite la herencia mltiple, pero JAVA no lo
jerrquica entre varias permite.
clases. Una clase
pude definirse de
forma general y luego Es una de las propiedades ms destacadas de la POO, se puede
redefinirse en definir como un mecanismo que define nuevos objetos con base en
sucesivas subclases. los existentes. Lenguajes de programacin como C++ y JAVA la
Cada clase hereda soportan con extensin de clase, definiendo una nueva clase con
todas las propiedades base en otra ya existente sin modificarla. A la primera se le llama
de sus superclases y subclase o clase extendida, recibe a los miembros de una
aade sus superclase y agrega otros de su propiedad. Aunque tambin es
propiedades posible que la herede dado el surgimiento de jerarquas.
particulares. JAVA soporta herencia sencilla a travs de extensin de clase. En
Ejemplo 1. Los seres este tipo de herencia una clase se extiende a partir de una sola
vivos tienen una serie superclase. Por ejemplo, una subclase puede extenderse de la
de propiedades. Los superclase. Algunos lenguajes POO, como C++, soportan herencia
animales al ser seres mltiple porque una subclase puede tener varias superclases. Al
vivos heredan esas anular la herencia mltiple, JAVA evita las dificultades y
propiedades a las complicaciones relacionadas con este tipo de herencia.
17
Si una clase se comunes de clases diferentes: evita que se dupliquen cdigos; y
designa final no puede estructuras idnticas o similares de clases diferentes. Se extraen las
extenderse. El uso partes comunes para formar otra clase y permita que las dems las
experto de la herencia hereden.
a travs de Organizacin de objetos en jerarquas: forma grupos de
subclases contribuye objetos que tienen una relacin. Las agrupaciones le dan una mejor
en gran medida a un organizacin a un programa y permite que los objetos de la misma
programa bien jerarqua se utilicen como tipos compatibles, en oposicin a los que
diseado. carecen totalmente de relacin.
Varias son las 2.6. El poliformismo
ventajas de la El polimorfismo que en griego significa muchas formas es una
herencia, entre las caracterstica que le permite a una interfaz ser utilizada por una
cuales citamos: clase general de acciones. La frase una interfaz, muchas formas
Fcil resume la idea de polimorfismo. El polimorfismo permite que se cree
modificacin de un cdigo limpio, sensible, legible y resistente.
cdigo: evita la
modificacin del Ejemplo. Para abrir un archivo en Windows se pincha dos veces en
cdigo existente y su icono. Para ver el contenido de una carpeta tambin se pincha
utiliza la herencia para dos veces sobre su icono. Es decir; en ambos casos hemos
agregar nuevas pinchado dos veces para ejecutar la accin correspondiente. La
caractersticas o interfaz ha sido la misma aunque con dos formas diferentes.
cambiar Este concepto reduce la complejidad permitiendo que la misma
caractersticas interfaz se utilice para especificar una clase general de accin. Es el
existentes. compilador o el intrprete el que debe seleccionar la accin
especfica a ejecutar.
Reutilizacin de El polimorfismo se define como la posibilidad de asumir varias
cdigo existente: formas. Permite que una misma operacin pueda llevarse a cabo de
usando la herencia varias formas, en clases diferentes. Desde este punto de vista,
como base de cdigo representa un concepto de teora de tipos en el que un solo nombre
que funciona y est puede denotar objetos de muchas clases diferentes que se
probado podemos relacionan por alguna supercla- se comn. Cualquier objeto
crear nuevas clases denotado por este nombre es, por lo tanto, capaz de responder a
fcilmente. algn conjunto comn de operaciones. Una operacin es una accin
Adaptacin o transformacin que realiza o padece un objeto. La
de programas para implementacin especfica de una operacin determinada a una
trabajar en situaciones clase determinada se denomina mtodo. Aunque los mtodos sean
similares pero distintos, llevan a cabo el mismo propsito operativo, y as
diferentes: evita que estaramos hablando tambin, de polimorfismo.
se vuelvan a escribir Segn lo dicho, una operacin es una abstraccin de un
programas muy comportamiento similar (pero no idntico) en diferentes clases de
similares porque la objetos. La semntica de la operacin debe ser la misma para todas
aplicacin, el sistema las clases. Sin embargo, cada mtodo concreto seguir unos pasos
de computadora, el especficos.
formato de datos o el Existe el polimorfismo cuando interactan las caractersticas de la
modo de operacin es herencia y el enlace dinmico. sta es quizs la caracterstica ms
un poco diferente. importante de los lenguajes orientados a objetos despus de su
Extraccin capacidad para soportar la abstraccin y es lo que distingue la
de elementos programacin orientada a objetos de otra programacin ms
18
tradicional con tipos tradicionales de diseo orientado al proceso. Permiten la
abstractos de datos. El reutilizacin de cdigo y un menor coste de programacin.
polimorfismo es 2.7. Clase
tambin un concepto
central en el diseo La clase es en ncleo de la POO. Se trata de una construccin lgica
orientado a objetos. sobre la que se construye la orientacin a objetos. En la clase se
Una de las ventajas define la forma y la naturaleza de un objeto. Una clase define un
del polimorfismo es nuevo tipo de dato que se utiliza para crear objetos de ese tipo.
que se puede hacer Dicho de otra forma: una clase es el molde a partir del cual se
una solicitud de una fabrican objetos.
operacin sin Una clase est formada por miembros de datos que a su vez son
conocer el mtodo que variables de instan-cia (datos) y mtodos. Una clase es, por tanto,
debe ser llamado. No una agrupacin de datos (variables o campos) y de funciones
es otra cosa que la (mtodos) que operan sobre esos datos. A estos datos y funciones
posibilidad de pertenecientes a una clase se les denomina variables y mtodos o
construir varios funciones miembro. La programacin orientada a objetos se basa en
mtodos con el mismo la programacin de clases. Un programa se construye a partir de un
nombre, pero con conjunto de clases.
relacin a la clase a la Una vez definida e implementada una clase, es posible declarar
que pertenece cada elementos de esta clase. Los elementos declarados de una clase se
uno, con denominan objetos de la clase. De una
comportamientos clase se pueden declarar o crear numerosos objetos. La clase es lo
diferentes. Esto genrico: es el patrn o modelo para crear objetos.
conlleva la habilidad El cuerpo de la clase, encerrado entre { }, es la lista de atributos
de enviar un mismo (variables) y mtodos (funciones) que constituyen la clase. No es
mensaje a objetos de obligatorio, pero en general se listan primero los atributos y luego los
clases diferentes. mtodos.
Estos objetos La definicin de una clase se realiza en la siguiente forma:
recibiran el mismo [ ] class nombredelaclase [datos] {
mensaje global pero [Iista_de_atributos]
responderan a l de [Iista_de_mtodos]
formas diferentes. }
El polimorfismo, El esqueleto de cualquier aplicacin JAVA se basa en la definicin
encapsulado y de una clase. Todos los datos bsicos, como los enteros, se deben
herencia son quizs declarar en las clases antes de hacer uso de ellos.
los tres principios En la prctica son pocas las sentencias que se pueden colocar fuera
clave de la del bloque de una clase. La palabra clave import (equivalente al
programacin #include) puede colocarse al principio de un fichero, fuera del bloque
orientada a objetos. de la clase. Sin embargo, el compilador reemplazar esa sentencia
Cuando se aplican con el contenido del fichero que se indique, que consistir, como es
conjunta y de suponer, en ms clases.
adecuadamente Los tipos de clases que podemos definir son:
producen un entorno Abstract. Una clase abstract tiene al menos un mtodo
de programacin que abstracto. Una clase abstracta no se instancia (no se puede crear
admite el desarrollo de ningn objeto de ella), sino que se utiliza como clase base para la
programas robustos y herencia.
ms fciles de ampliar
que los modelos
19
Final. Una 1. Todas las variables y funciones de JAVA deben
clase final se declara pertenecer a una clase. No hay variables y funciones globales.
como la clase que 2. Si una clase deriva de otra (extends), hereda todas sus
termina una cadena variables y mtodos.
de herencia. No se 3. JAVA tiene una jerarqua de clases estndar de la que
puede heredar de una pueden derivar las clases que crean los usuarios.
clase final. Por 4. Una clase slo puede heredar de una nica clase (en
ejemplo, la clase Math JAVA no hay herencia mltiple). Si al definir una clase no se
es una clase final. especifica de qu clase deriva, por defecto la clase deriva de Object.
Public. Las La clase Object es la base de toda la jerarqua de clases de JAVA.
clases public son En C++ s se permite la herencia mltiple.
accesibles desde 5. En un fichero se pueden definir varias clases, pero en un
otras clases, bien sea fichero no puede haber ms que una clase public. Este fichero se
directamente o por debe llamar como la clase public que contiene con extensin *.java.
herencia. Son Con algunas excepciones, lo habitual es escribir una sola clase por
accesibles dentro del fichero.
mismo 6. Si una clase contenida en un fichero no es public, no es
paquete en el que se necesario que el fichero se llame como la clase.
han declarado. Para 7. Los mtodos de una clase pueden referirse de modo
acceder desde otros global al objeto de esa clase al que se aplican por medio de la
paquetes, primero referencia this.
tienen que ser 8. Las clases se pueden agrupar en packages,
importadas. introduciendo una lnea al comienzo del fichero (package
Synchronizable. packageName;).Esta agrupacin en packages est relacionada
Este modificador con la jerarqua de directorios y ficheros en las que se guardan las
especifica que todos clases.
los mtodos definidos El trmino clase se refiere a la implantacin en software de un tipo
en la clase son de objeto. Especifica una estructura de datos y los mtodos
sincronizados, es operativos permisibles que se aplican a cada uno de los objetos. Una
decir, que no se puede clase puede tener sus propios mtodos y estructura de datos, as
acceder al mismo como tambin heredarlos de su superclase. La superclase es la
tiempo a ellos desde clase de la cual hereda otra clase, llamada esta ltima subclase
distintos threads; el inmediata.
sistema se encarga de
colocar los flags Una clase es una abstraccin de un conjunto posiblemente infinito
necesarios para de objetos individuales. Cada uno de estos objetos se dice que es
evitarlo. Este una instancia o ejemplar de dicha clase. Cada instancia de una clase
mecanismo hace que posee sus propios valores para sus atributos, pero comparte el
desde threads nombre de estos atributos y las opera
diferentes se puedan ciones con el resto de instancias de su clase. La eleccin de clases
modificar las mismas es arbitraria, y depende del dominio del problema.
variables sin que haya Nota. La industria utiliza el trmino clase para hacer referencia a las
problemas de que se implantaciones de los tipos de objetos.
sobrescriban. Se construyen clases a partir de otras clases, las cuales a su vez se
Citaremos ahora integran mediante clases. As, como los bienes manufacturados se
algunas de las normas fabrican a partir de una serie de materiales de partes y subpartes ya
de las clases en JAVA: existentes, tambin el software se crea mediante una serie de
materiales de clases ya existentes y probadas.
20
Una clase es un 1. Asociacin. Indica relaciones de mandato bidireccionales
conjunto de objetos (punteros ocultos en C++). Conlleva dependencia semntica y no
que comparten una establece una direccin de dependencia. Tienen cardinalidad.
estructura y 2. Herencia. Por esta relacin una clase (subclase) comparte
comportamiento la estructura o com-portamiento definidos en una (herencia simple)
comunes. o ms (herencia mltiple) clases, llamadas superclases:
Clase Representa una relacin del tipo es un entre clases.
representa una
abstraccin, la Una subclase aumenta o restringe el comportamiento o
esencia que estructura de la superclase (o ambas cosas).
comparten los objetos. Una clase de la que no existen ejemplos se denomina {\it
Un objeto es abstracta}.
un ejemplo de una C++ declara como virtuales todas aquellas
clase. funciones que quiere modificar
Un objeto no en sus subclases.
es una clase, y una 3. Agregacin. Representa una relacin del tipo tener un
clase no es un objeto entre clases. Cuando la clase contenida no existe
(aunque puede serlo, independientemente de la clase que la contiene se denomina
p.e. en Smalltalk). agregacin por valor y adems implica contenido fsico, mientras
Las clases que si existe independientemente y se accede a ella indirectamente,
actan como es agregacin por referencia.
intermediarias entre 4. Uso. Es un refinamiento de la asociacin donde se
una abstraccin y los especifica cul es el cliente y cul el servidor de ciertos servicios,
clientes que pretenden permitiendo a los clientes acceder slo a las interfaces pblicas de
utilizar la abstraccin. los servidores, ofreciendo mayor encapsulacin de la informacin.
De esta forma, la clase 5. Ejemplificacin. Se usa en lenguajes que soportan
muestra: genericidad (declaracin de clases parametrizadas y argumentos
1. Visin tipo template). Representa las relaciones entre las clases
externa de parametrizadas, que admiten parmetros formales, y las clases
comportamiento obtenidas cuando se concretan estos parmetros formales,
(interface), que ejemplificados o ini- cializados con un ejemplo.
enfatiza la abstraccin 6. Metaclases. Son clases cuyos ejemplos son a su vez
escondiendo su clases. No se admiten en C++.
estructura y secretos 2.7.2. Relaciones entre clases y objetos
de comportamiento. Todo objeto es el ejemplo de una clase, y toda clase tiene
2. Visin 0 0 ms objetos.
interna Mientras las clases son estticas, con semntica,
(implementacin), que relaciones y existencia fijas previamente a la ejecucin de un
abarca el cdigo que programa, los objetos se crean y destruyen rpidamente durante la
se ofrece en la actividad de una aplicacin.
interface de la clase. El diseo de clases y objetos es un proceso incremental e iterativo.
2.7.1. Relaciones Debe asegurar la optimizacin en los parmetros:
entre clases 1. Acoplamiento: Grado de acoplamiento entre mdulos.
Representan tipos de 2. Cohesin: Mide el grado de conectividad entre elementos
comparticin entre de un mdulo, y entre objetos de una clase.
clases, o relaciones 3. Suficiencia: Indica que las clases capturan suficientes
semnticas. caractersticas de la abstraccin para conseguir un
comportamiento e interaccin eficiente y con sentido.
21
4. Completitud: variables de ese tipo y crear objetos de ese tipo.
Indica que la interface Una vez que se ha declarado una clase pueden crearse sus objetos.
de la clase captura La definicin de una clase es el plano de construccin de los objetos,
todo el significado y stos se conocen como instancias de la clase. El nombre de sta
caracterstico de una se vuelve un nombre de tipo y puede utilizarse para declarar
abstraccin, escrito en variables. Una variable de tipo de clase es una variable de referencia
el mnimo espacio. que puede contener la direccin de memoria (o referencia) de un
objeto de la clase o null para una referencia no vlida.
5. Primitividad: La inicializacin del objeto creado de una clase se hace por medio
Las operaciones del constructor (un mtodo especial de una clase). El operador new
deben implementarse de JAVA asigna espacio dinmicamente (al momento de la
si dan acceso a una ejecucin) y se utiliza para crear objetos. En lenguajes como JAVA,
representacin todos los objetos se crean al momento de la ejecucin con el
fundamental de la operador new.
abstraccin. Cules Veamos un ejemplo:
son operaciones Tenemos una clase llamada cochazo y queremos crear un objeto
primitivas y cules no llamado mi coche de esa clase:
(se pueden realizar a cochazo mi_coche = new cochazo();
partir de otras) es un o
asunto subjetivo y cochazo mi_coche; mi_coche = new cochazo();
afecta a la eficiencia El objeto es un concepto, una abstraccin o una cosa con unos
en la implementacin. lmites definidos y que es relevante para el tema en cuestin,
2.8. Objeto podemos decir adems que estos poseen identidad y son
La construccin clase distinguibles, aunque dos objetos tengan los mismos valores para
(class) de JAVA todos, sus atributos son diferentes.
soporta abstraccin y En la vida real se llama objeto a cualquier cosa real o abstracta, en
encapsulacin de la cual podemos almacenar datos y los mtodos para controlar
datos. Una clase dichos datos.
describe la
construccin de un Un objeto es una cosa tangible, algo a que se puede
objeto y sirve como aprehender intelectualmente o algo hacia lo que se puede dirigir una
plano para construirlo; accin o pensamiento.
especifica su Un objeto representa un tem individual e identificable, o
funcionamiento una entidad real o abstracta, con un papel definido en el dominio del
interno y su interfaz problema.
pblica. Cada clase Un objeto tiene:
tiene un nombre y Estado.
especifica a los Comportamiento.
miembros que Identidad.
pertenecen a ella; La estructura y el comportamiento de objetos similares se definen
stos pueden ser en sus clases comunes. El trmino objeto e instancia de una clase
campos (datos) y son idnticas.
mtodos (funciones). Estado de un objeto. El estado de un objeto abarca todas las
Una vez que se define propiedades del objeto, y los valores actuales de cada una de esas
una clase, su nombre propiedades. Las propiedades de los objetos suelen ser estticas,
se vuelve un nuevo mientras los valores que toman estas propiedades cambian con el
tipo de dato y se usa tiempo.
para declarar
22
El hecho de de los mensajes que intercambia.
que los objetos tengan El comportamiento de un objeto representa su actividad
estado implica que externamente visible y testa- ble. Son las operaciones que una clase
ocupan un realiza (llamadas tambin mensajes) las que dan cuenta de cmo se
espacio, ya comporta la clase. Por operacin se denota el servicio que una clase
en ofrece a sus clientes. Un objeto puede realizar cinco tipos de
el mundo fsico, ya en operaciones sobre otro, con el propsito de provocar una reaccin:
la memoria del 1. Modificador: altera el estado de un objeto.
ordenador. 2. Selector: accede al estado de un objeto, sin alterarlo.
El estado de 3. Iterador: permite a todas las partes de un objeto ser
un objeto est influido accedidas en un orden.
por la historia del 4. Constructor: crea un objeto o inicializa su estado.
objeto.
No deben 5. Destructor: libera el estado de un objeto o destruye el
confundirse los objeto.
objetos, que existen C++ soporta, adems de las operaciones, subprogramas libres. En
en el tiempo, son la terminologa de C++ las operaciones que un cliente puede
mutables, realizar sobre un objeto se declaran como funciones miembro.
tie 2.8.1. Relaciones entre objetos
nen estado, pueden Las relaciones entre objetos abarcan las operaciones, resultados y
ser creados, suposiciones que unos hacen sobre los otros.
destruidos y 1. Links: son conexiones fsicas o conceptuales entre
compartidos..., con los objetos. Denota la asociacin especfica por la que un objeto
valores (los asignados (cliente) usa o solicita el servicio de otro objeto (servidor). El paso
a una variable, por de mensajes entre objetos los sincroniza.
ejemplo) que son 2. Agregaciones: denota relaciones todo/parte, con
cantidades con las capacidad para gobernar desde el todo las partes. Es equivalente a
propiedades de ser la relacin tener un. El todo puede contener a la parte.
atemporales, Agregacin es conveniente en las ocasiones en que el
inmutables. encapsulamiento de las partes es prioritario. Si se requiere que las
El estado de relaciones entre objetos estn vagamente acopladas, se utilizan
un objeto representa links.
el efecto acumulado 2.9. Propiedades y mtodos
de su El mtodo es la especificacin de un proceso de una operacin, es
comportamiento. un proceso disciplinado para generar un conjunto de modelo que
Identidad de un objeto. describen varios aspectos de un sistema de software en desarrollo,
Identidad es la utilizando alguna notacin bien definida.
propiedad de un Los mtodos especifican la forma en que se controlan los datos de
objeto que lo lleva a un objeto. Los
distinguirse de otros. mtodos en un tipo de objeto slo hacen referencia a las estructuras
Comportamiento de de datos de ese tipo de objeto. No deben tener acceso directo a las
un objeto. estructuras de datos de otros de objeto. Para utilizar la estructura de
Comportamiento es datos de otro objeto, debe enviar un mensaje a este. El tipo de
como un objeto acta objeto empaca junto los tipos de datos y los mtodos.
y reacciona, en 2.9.1. Propiedades
trminos de sus Todo objeto puede tener cierto nmero de propiedades, cada una
cambios de estado y de las cuales tendr, a su vez, uno o varios valores. En POO, las
propiedades corresponden a las clsicas variables de la
23
programacin porque el objeto las posee por el mero hecho de ser miembro de una
estructurada. Son, por clase.
lo tanto, datos 2.9.2. Mtodos
encapsulados dentro Podemos definir al mtodo como un programa procedimental o
del objeto, junto con procedural escrito en cualquier lenguaje, que est asociado a un
los mtodos objeto determinado y cuya ejecucin slo puede desencadenarse a
(programas) y las travs de un mensaje recibido por ste o por sus descendientes.
relaciones (punteros a Son sinnimos de mtodo todos aquellos trminos que se han
otros objetos). Las aplicado tradicionalmente a los programas, como procedimiento,
propiedades de un funcin, rutina, etc. Sin embargo, es conveniente utilizar el trmino
objeto pueden tener mtodo para que se distingan claramente las propiedades
un valor nico o especiales que adquiere un programa en el entorno POO, que
pueden contener un afectan fundamentalmente a la forma de invocarlo (nicamente a
conjunto de valores travs de un mensaje) y a su campo de accin, limitado a un objeto
ms o menos y a sus descendientes (no tiene por qu a todos).
estructurados Dado que los mtodos son partes de los programas pueden tener
(matrices, vectores, argumentos o parmetros. Puesto que los mtodos pueden
listas, etc.). Adems, heredarse de unos objetos a otros, un objeto puede disponer de un
los valores pueden ser mtodo de dos maneras diferentes (al igual que suceda con las
de cualquier tipo propiedades):
(numrico, alfabtico, Mtodos propios. Estn incluidos dentro de la cpsula del
etc.) si el sistema de objeto.
programacin lo Mtodos heredados. Estn definidos en un objeto en un
permite. objeto antepasado del actual. A veces estos mtodos se llaman
Pero existe una mtodos miembro porque el objeto los posee por el mero hecho de
diferencia con las ser miembro de una clase.
variables, y es que La sobrecarga de mtodos consiste en poner varios
las propiedades se mtodos con el mismo nombre en la misma clase, pero siempre
pueden heredar de que su lista de argumentos sea distinta. El compilador sabra a cul
unos objetos a otros. de todas las sobrecargas nos referimos por los argumentos que se
En consecuencia, un le pasen en la llamada. Lo que diferencia las listas de argumentos
objeto puede tener de las diferentes sobrecargas no es el nombre de las variables, sino
una propiedad de el tipo de cada una de ellas.
maneras diferentes: Los mtodos sobrecargados dan a los programadores la flexibilidad
Propiedades de llamar a un mtodo similar para diferentes tipos de datos.
propias. Estn Un mtodo es un procedimiento de clculo definido en una clase.
formadas dentro de la Cada mtodo contiene instrucciones que especifican una
cpsula del objeto. secuencia de acciones de clculo que habrn de realizarse, y
variables que se utilizan para almacenar y producir los valores
necesarios. Algunas de las variables pueden ser objetos y el
proceso de clculo incluye interacciones entre los mismos,
Propiedades generalmente.
heredadas. Estn
definidas en un objeto Un mtodo toma argumentos como entrada, realiza una secuencia
antepasado del actual. de pasos programados y devuelve un resultado del tipo declarado
A veces estas (existen mtodos que no devuelven obligatoriamente un valor,
propiedades se llaman pueden sencillamente cambiar el valor de una propiedad o inicializar
propiedades miembro
24
una de esas molde para hacer objetos (clase) nos debemos plantear muy a
propiedades). conciencia qu propiedades y qu mtodos queremos que tenga esa
Tambin puede clase.
llamar a otros Hoy en da casi todos los lenguajes de programacin se basan en
mtodos en el curso propiedades y mtodos, pudiendo el usuario del programa cambiar
de sus clculos. los valores de estas propiedades a su gusto (ejemplo: escritorio,
Una definicin de propiedad: papel tapiz, podemos nosotros configurarlo a nuestro
mtodo contiene un antojo).
encabezado y un 2.10. Mensajes
cuerpo. El Para que el objeto haga algo, enviamos una solicitud. sta hace que
encabezado define el se produzca una operacin. La operacin ejecuta el mtodo
nombre del mtodo y apropiado y, de manera opcional, produce una respuesta. El
el tipo del valor de mensaje que constituye la solicitud contiene el nombre del objeto, el
regreso. El nombre de una operacin, a veces, un grupo de parmetros.
encabezado tambin Un mensaje es una solicitud para que se lleve a cabo la operacin
especifica variables, indicada y se produzca el resultado. Por tanto, los mensajes son
conocidas como solicitudes que invocan operaciones especficas, con uno o ms
parmetros formales, objetos como parmetros. La respuesta a estas rdenes ser la
que reciben los informacin requerida, siempre que el objeto considere que quien
argumentos de enva el mensaje est autorizado para obtenerla.
entrada y se utilizan 2.11. Identidad
en el cuerpo del La identidad es aquella propiedad de un objeto que los distingue de
mtodo para realizar todos los dems objetos. La identidad nica (pero no
clculos. necesariamente el nombre) de cada objeto se preserva durante el
Mientras que el cuerpo tiempo de vida del mismo, incluso cuando su estado cambia. La
incluye una secuencia identidad es la naturaleza de un objeto que lo distingue de todos los
de declaraciones e dems.
instrucciones 2.12. Reutilizacin o reusabilidad
encerradas entre
llaves, { }, una Es volver a generar una clase, teniendo en cuenta que puede ser til
declaracin para varios sistemas, sin tener que volver a generarlos, ahorrando
proporciona con esto tiempo para programacin, etc. Las clases estn definidas
informacin al para que se reutilicen en muchos sistemas. Para que sta sea
compilador y una efectiva, las clases se deben construir a partir de un modo que
instruccin especifica puedan ser adaptables y reutilizables indefinidamente.
las acciones que Un objetivo de las tcnicas orientadas a objetos es lograr la
habrn de ejecutarse. reutilizacin masiva al construir un software. Los sistemas suelen
En general, a las ser construidos a travs de objetos ya existentes, que se lleva a un
propiedades y a los alto grado de reutilizacin, esto conlleva a un ahorro de dinero, un
mtodos de una clase menor tiempo de desarrollo y una mayor confiabilidad de sistemas.
se les suele llamar Por lo tanto, si ya hemos puesto a prueba una clase en un sistema,
miembros de datos tendremos la garanta y la confiabilidad que podr volver a ser
pues realmente son reutilizada.
los nicos elementos 2.13. Jerarqua
que aparecen La jerarqua es una clasificacin u ordenacin de abstracciones. Las
fsicamente dentro de dos jerarquas ms importantes en un sistema complejo son su
la clase. Antes de estructura de clases y su estructura de objetos,
pretender crear un jerarqua de clase y jerarqua de partes correspondientemente.
25
Como ya habamos de computadores para la implantacin que se persigue o utilizar
mencionado procesadores capaces de realizar multitareas, a travs de un hilo de
anteriormente la control, mediante la cual se producen acciones dinmicas
herencia es el ejemplo independientes dentro del sistema. La concurrencia permite a
ms claro de una diferentes objetos actuar al mismo tiempo.
jerarqua de clases. 2.14.2. Persistencia
sta define una Es la propiedad por la cual la existencia de un objeto trasciende en
relacin entre clases, el tiempo (esto es, el objeto sigue existiendo despus de que su
en la que una clase creador deja de existir) o en el espacio (esto es, la localizacin del
comparte la objeto cambia respecto a la direccin en la que fue creado).
estructura de 2.14.3. Tipificado
comportamiento
definida en una o ms Tipificar es la imposicin de una clase a un objeto, de tal modo que
clases (herencia objetos de diferentes tipos no se puedan intercambiar, o se puedan
simple o herencia intercambiar slo de forma restringida.
mltiple, Tipo es una caracterizacin precisa de las propiedades
respectivamente). estructurales y de com-portamiento que comparten una coleccin de
2.14. entidades.
Concurrencia, Una clase define un nuevo tipo de objetos, por tanto, clase
persistencia y y tipo muchos programadores los consideran sinnimos.
tipificado Existen lenguajes fuertemente tipificados (Ada) y
2.14.1. dbilmente tipificados. Estos ltimos soportan polimorfismo,
Concurrencia mientras que los fuertemente tipificados no.
Es la propiedad que 2.15. Modularidad
distingue un objeto La modularidad es la propiedad que posee un sistema que ha sido
activo de uno no descompuesto en un conjunto de mdulos cohesivos y dbilmente
activo. Concurrencia acoplados. La modularizacin consiste en dividir un programa en
permite que diferentes mdulos que pueden compilarse separadamente, pero que tiene
objetos acten al conexiones con otros mdulos. As, los principios de abstraccin,
mismo tiempo, usando encapsulamiento y modularidad son sinrgicos (puede haber
distintos threads muchas ms abstracciones diferentes de las que se pueden
(hilos) de control. comprender simultneamente, el encapsulamiento ayuda a manejar
Para cierto tipos de esta complejidad ocultando la visin interna de las abstracciones.
problemas, un sistema La modularidad ayuda ofreciendo una va para agrupar
automatizado puede abstracciones relacionadas lgicamente).
tener que manejar 2.16. Relaciones entre los conceptos asociados al modelo de
muchos eventos objetos
diferentes Los conceptos de abstraccin y encapsulacin son
simultneamente, en conceptos complementarios: abstraccin hace referencia al
otro problema pueden comportamiento observable de un objeto, mientras encapsulacin
implicar tantos hace referencia a la implementacin que la hace alcanzar este
clculos que excedan comportamiento.
la capacidad de Existe una tensin entre los conceptos de encapsulacin
cualquier procesador de la informacin y el concepto de jerarqua de herencia, que
individual. En ambos requiere una apertura en el acceso a la informacin.
casos es natural C++ ofrece mucha flexibilidad, pudiendo disponer de tres
considerar el uso de compartimentos en cada clase:
un conjunto distribuido
26
1. Privado: suceder a otro la posesin de bienes o acciones.
declaraciones MENSAJE Informacin que se le enva a alguien.
accesibles slo a la MTODO Modo de hacer en orden una cosa, modo habitual
clase (completamente de procede.
encapsulado). IDENTIDAD Cualidad de ser lo mismo que otra cosa con que
2. Protegido: se compara.
declaraciones REUSABILIDAD Accin de volver a utilizar. Que puede volver a
accesibles a la clase y ser utilizado.
a sus subclases. JERARQUA Orden o grados de una especie.
3. Pblico: ABSTRACCIN Separacin, apartamiento, aislamiento,
declaraciones prescindir.
accesibles a todos los CONCURRENCIA Asistencia, reunin simultnea de personas o
clientes. cosas.
Adems de estos tres MODULARIDAD Accin de pasar de un trmino a otro.
tipos, C++ soporta la
definicin de clases 3. Ventajas e inconvenientes
cooperativas a las que 3.1. Ventajas de POO
se les permite acceder Un programa grande de computadora se encuentra entre las
a la parte privada de la construcciones ms complejas. El costo del diseo, la
implementacin. Estas implantacin, la verificacin, el mantenimiento y la revisin de
clases se denominan sistemas grandes de software es muy alto. Por tanto, es importante
friends. encontrar maneras de facilitar estas tareas. En este sentido, POO
tiene un potencial enorme.
Los sistemas orientados a objetos son tambin ms resistentes al
Vamos a realizar un cambio y, por lo tanto, estn mejor preparados para evolucionar en
esquema de cada uno el tiempo, porque su diseo esta basado en formas intermedias
de los trminos vistos: estables.
OBJETO Fin, intento, El modelo de objetos ha influido incluso en las fases iniciales del
propsito. Materia y ciclo de vida del desarrollo del software. El anlisis orientado a
sujeto de una ciencia. objetos (AOO) enfatiza la construccin de modelos del mundo real
CLASE Orden de utilizando una visin del mundo orientado a objetos. El anlisis
cosas de una misma orientado a objetos es un mtodo de anlisis que examina los
especie. Conjunto de requisitos desde la perspectiva de las clases y objetos que se
rdenes. encuentran en el vocabulario del dominio del problema.
POLIMORFISMO
Propiedad Bsicamente los productos del anlisis orientado a objetos sirven
de los cuerpos que como modelos de los que se puede partir para un diseo orientado
cambian de forma sin a objetos; los productos del diseo orientado a objetos pueden
cambiar su naturaleza. utilizarse entonces como anteproyectos para la imple- mentacin
Presencia de distintas completa de unos sistemas utilizando mtodos de programacin
formas individuales en orientado a objetos, de esta forma se relacionan AOO, DOO y POO.
una sola especie. La Programacin Orientada a Objetos ofrece las siguientes ventajas
ENCAPSULACIN principales:
Proceso de Simplicidad: como los objetos de software son modelos
constitucin de una de objetos reales en el dominio de la aplicacin, la complejidad del
cpsula. programa se reduce y su estructura se vuelve clara y simple.
HERENCIA
Derecho de
27
interaccin entre los objetos sin alterarlos.
Modularidad: cada Facilidad para darle mantenimiento: los objetos pueden
objeto forma una mantenerse por separado, lo que facilita la localizacin y el arreglo
entidad separada cuyo de problemas, as como la adicin de otros elementos.
funcionamiento Reusabilidad: los objetos pueden emplearse en diferentes
interno est programas. Por ejemplo, si se tiene uno que construye tablas
desacoplado de otras puede utilizarse en cualquier programa que requiera cierto tipo de
partes del sistema. tabla. Por tanto, es posible construir programas a partir de
Facilidad componentes prefabricados y preprobados en una fraccin del
para hacer tiempo requerido para elaborar nuevos programas desde el
modificaciones: es principio.
sencillo hacer cambios Dominio del problema: el paradigma O.O. es ms que una
menores en la forma de programar. Es una forma de pensar acerca de un problema
representacin de los desde el punto de vista del mundo real en vez de desde el punto de
datos o los vista del ordenador. El AOO permite analizar mejor el dominio del
procedimientos problema, sin pensar en trminos de implementar el sistema de un
utilizados en un ordenador, permite, adems, pasar directamente el dominio del
programa Orientado a problema al modelo del sistema.
Objetos (O.O.). Las Comunicacin: el concepto O.O. es ms simple y est
modificaciones menos relacionado con la informtica que el concepto de flujo de
hechas en el interior datos. Esto permite una mejor comunicacin entre el analista y el
de un objeto no experto en el dominio del problema.
afectan ninguna otra
parte del programa, Consistencia: los objetos encapsulan tanto atributos como
siempre y cuando se operaciones. Debido a esto, el AOO reduce la distancia entre el
preserve su punto de vista de los datos y el punto de vista del proceso, dejando
comportamiento menos lugar a inconsistencias disparidades entre ambos modelos.
externo. Expresin de caractersticas comunes: el paradigma lo
Posibilidad utiliza la herencia para expresar explcitamente las caractersticas
de extenderlo: la comunes de una serie de objetos estas caracterstica comunes
adicin de nuevas quedan escondidas en otros enfoques y llevan a duplicar entidades
funciones o la en el anlisis y cdigo en los programas. Sin embargo, el paradigma
respuesta a ambientes O.O. pone especial nfasis en la reutilizacin y proporciona
operativos cambiantes mecanismos efectivos que permiten reutilizar aquello que es
puede lograrse con comn sin impedir por ello describir las diferencias.
slo introducir algunos Resistencia al cambio: los cambios en los requisitos
objetos nuevos y afectan notablemente a la funcionalidad de un sistema por lo que
variar algunos afectan mucho al software desarrollando con mtodos
existentes. estructurados. Sin embargo, los cambios afectan en mucha menos
Flexibilidad: medida a los objetos que componen o maneja el sistema, que son
un programa mucho ms estables. Las modificaciones necesarias para adaptar
Orientado a Objetos una aplicacin basada en objetos a un cambio de requisitos suelen
(O.O.) puede ser muy estar mucho ms localizadas.
manejable al Reutilizacin: aparte de la reutilizacin interna, basada en
adaptarse a diferentes la expresin explcita de caractersticas comunes, el paradigma O.O.
situaciones, porque es desarrolla modelos mucho ms prximos al mundo real, con lo que
posible cambiar los aumentan las posibilidades de reutilizacin. Es probable que en
patrones de
28
futuras aplicaciones software sea ms intuitivo porque la gente piensa naturalmente en
nos encontremos con trminos de objetos ms que en trminos de algoritmos de
objetos iguales o software.
similares a los de la 3.2. Inconvenientes de la POO
actual. En un sistema orientado a objetos los problemas (si los hubiese)
Todos los problemas suelen surgir en la implementacin de tal sistema. Muchas
an no han sido compaas oyen acerca de los beneficios de un sistema orientado
solucionados en forma a objetos e invierten gran cantidad de recursos luego comienzan a
completa. Pero como darse cuenta que han impuesto una nueva cultura que es ajena a
los objetos son los programadores actuales. A pesar de ser muy pocos los
portables mientras inconvenientes de la POO, citaremos los siguientes:
que la herencia
permite la reusabilidad Curvas de aprendizaje largas. Al hacer la transicin a un
del cdigo orientado sistema orientado a objetos la mayora de los programadores
a objetos, es ms deben capacitarse nuevamente antes de poder usarlo.
sencillo modificar Dependencia del lenguaje. La eleccin de un lenguaje
cdigo existente orientado a objetos u otro tiene ramificaciones de diseo muy
porque los objetos no importantes.
interaccio- nan Determinacin de las clases. Una clase es un molde que
excepto a travs de se utiliza para crear nuevos objetos. Si bien hay muchas jerarquas
mensajes; en de clase predefinidas usualmente se deben crear clases especficas
consecuencia un para la aplicacin que se est desarrollando. En consecuencia, es
cambio en la importante crear el conjunto de clases adecuado para un proyecto.
codificacin de un Descomposicin funcional. El anlisis estructurado se
objeto no afectar la basa en la descomposicin funcional del sistema que queremos
operacin con otro construir. El problema es que no existe un mecanismo para
objeto siempre que los comprobar si la especificacin del sistema expresa con exactitud los
mtodos respectivos requisitos del sistema.
permanezcan Flujos de datos. El anlisis estructurado muestra cmo
intactos. La fluye la informacin a travs del sistema. Aunque este enfoque se
introduccin de adapta bien al uso de sistemas informticos para implementar al
tecnologa de objetos sistema, no es la forma habitual de pensar.
como una herramienta Modelo de datos. El anlisis estructurado moderno
conceptual para incorpora modelos de datos, adems de modelos de procesos y de
analizar, disear e comportamiento. Sin embargo, la relacin entre los modelos es muy
implementar dbil, y hay muy poca influencia de un modelo en otro.
aplicaciones permite 4. Patrones de diseo y lenguaje de modelado unificado
obtener aplicaciones (UML)
ms modificables, 4.1. UML
fcilmente extensibles UML, Lenguaje Unificado de Modelado (Unified Modeling Language)
y a partir de es el lenguaje de modelado de sistemas de software. Es un lenguaje
componentes grfico para visualizar, especificar, construir y documentar un
reusables. Esta sistema de software. UML ofrece un estndar para describir un
reusabilidad del plano del sistema (modelo), incluyendo aspectos conceptuales
cdigo disminuye el tales como procesos de negocios y funciones del sistema, y
tiempo que se utiliza aspectos concretos como expresiones de lenguajes de
en el desarrollo y hace programacin, esquemas de bases de datos y componentes de
que el desarrollo del software reutilizables.
29
Es importante Construir, a partir de los modelos especificados.
remarcar que UML es Documentar, los propios elementos grficos sirven de
un lenguaje para documentacin.
especificar y no un 4.1.1. Bloques de construccin de un modelo UML
mtodo o un proceso, Un modelo UML est compuesto por tres clases de bloques de
se utiliza para definir construccin:
un sistema de A) Elementos
software, para detallar Los elementos son abstracciones de cosas reales o ficticias (objetos,
los artefactos en el acciones, etc.).
sistema y para Pueden ser estructurales, de comportamiento de
documentar y agrupacin o de anotacin.
construir -es el Elementos estructurales: actores, casos de uso,
lenguaje en el que clases, objetos.
est descrito el Elementos de comportamiento: mensajes.
modelo-. Se puede Elementos de agrupacin: paquetes.
aplicar en una gran
variedad de formas
para soportar una B) Relaciones
metodologa de Relacionan los elementos entre s. Las relaciones pueden ser del
desarrollo de software tipo:
pero no especifica en Dependencia
s mismo qu Es una relacin semntica entre dos elementos, en la cual un
metodologa o cambio en un elemento puede afectar a la semntica de otro
proceso usar. elemento. Existen varios tipos de dependencia predefinidas que se
UML es un lenguaje. indican mediante extend o include para casos de uso.
Un lenguaje Asociacin
proporciona un Es una relacin estructural entre dos elementos, que describen las
vocabulario y unas conexiones entre ellos (suele ser bidireccional). Puede presentarse
reglas para permitir como agregacin o composicin.
una comunicacin.
Este lenguaje nos Generalizacin
indica cmo crear y Es una relacin entre un elemento ms general (el padre) y un
leer los modelos, pero elemento ms especfico (el hijo).
no dice cmo crearlos. Implementacin
Esto ltimo es el Es una relacin en la que un elemento (hijo) realiza las acciones
objetivo de las indicadas por el padre.
metodologas de 4.2. Diagramas
desarrollo. Los Son colecciones de elementos con sus relaciones. UML cuenta con
objetivos de UML varios tipos de diagramas, los cuales muestran diferentes aspectos
son: de las entidades representadas. Los veremos en esta seccin:
Visualizar,
expresa de forma
grfica. 4.2.1. Diagramas de estructura
Especificar, Enfatizan en los elementos que deben existir en el sistema
las caractersticas de modelado. Los diagramas estructurales representan elementos y as
un sistema. componen un sistema o una funcin. Estos diagramas pueden
reflejar las relaciones estticas de una estructura, como lo hacen los
diagramas de clases o de paquetes, o arquitecturas en tiempo de
30
ejecucin, tales como seran: la marca, tamao, color y peso.
diagramas de Operaciones: son aquellas actividades o verbos que se
Objetos o de pueden realizar con/para
Estructura de este objeto, como por ejemplo abrir, cerrar, buscar, cancelar,
Composicin. acreditar, cargar. De la misma manera que el nombre de un atributo,
Diagrama de clases el nombre de una operacin se escribe con minsculas si consta de
una sola palabra. Si el nombre contiene ms de una palabra, cada
Los diagramas de palabra ser unida a la anterior y comenzar con una letra
clases son utilizados mayscula, a excepcin de la primera palabra que comenzar en
durante el proceso de minscula. Por ejemplo: abrirPuerta, cerrarPuerta, buscarPuerta,
anlisis y diseo de los etc.
sistemas informticos, Interfaz: es un conjunto de operaciones o propiedades que
donde se crea el permiten a un objeto comportarse de cierta manera, por lo
diseo conceptual de que define los requerimientos mnimos
la informacin que se del objeto.
manejara en el Herencia: se define como la reutilizacin de un objeto
sistema, y los padre ya definido para poder extender la funcionalidad en un objeto
componentes que se hijo. Los objetos hijos heredan todas las operaciones o propiedades
encar de un objeto padre. Por ejemplo: una persona puede subdividirse
garan del en Proveedores, Acreedores, Clientes, Accionistas, Empleados;
funcionamiento y la todos comparten datos basicos como una persona, pero adems
relacin entre uno y tendr informacin adicional que depende del tipo de persona,
otro. Muestra una como saldo del cliente, total de inversin del accionista, salario del
coleccin de empleado, etc.
elementos de Diagrama de componentes
modelado declarativo Un diagrama de componentes representa la separacin de un
(estticos), tales como sistema de sofware en componentes fsicos (por ejemplo archivos,
clases, tipos y sus cabeceras, mdulos, paquetes, etc.) y muestra las dependecias
contenidos y entre estos componentes. Representa los componentes que
relaciones. Se basan componen una aplicacin, sistema o empresa. Los componentes,
en: sus relaciones, interacciones y sus interfaces pblicas.
Los diagramas de componentes describen los elementos fsicos del
Propiedades: tambin sistema y sus relaciones. Muestran las opciones de realizacin
llamados atributos o incluyendo cdigo fuente, binario y ejecutable. Los componentes
caractersticas, son representan todos los tipos de elementos software que entran en la
valores que fabricacin de aplicaciones informticas. Pueden ser simples
corresponden a un archivos, paquetes de Ada, bibliotecas cargadas dinmicamente,
objeto, como color, etc. Las relaciones de dependencia se utilizan en los diagramas de
material, cantidad, componentes para indicar que un componente utiliza los servicios
ubicacin. ofrecidos por otro componente.
Generalmente se
conoce como la Un diagrama de componentes representa las dependencias entre
informacin detallada componentes software, incluyendo componentes de cdigo
del objeto. fuente, componentes del cdigo binario, y componentes ejecutables.
Suponiendo que el Un mdulo de software se
objeto es una puerta, puede representar como componente. Algunos componentes
sus propiedades existen en tiempo de compilacin, algunos en tiempo de enlace y
algunos en tiempo de ejecucin, otros en varias de stas.
31
Un componente de un componente proveedor del que depende. Los tipos de
slo compilacin es dependencias son especficos del lenguaje y se pueden
aquel que es representar como estereotipos de las dependencias.
significativo El diagrama tambin puede usarse para mostrar interfaces y las
nicamente en tiempo dependencias de llamada entre componentes, usando flechas con
de compilacin. Un lneas discontinuas desde los componentes a las interfaces de otros
componente componentes.
ejecutable es un El diagrama de componente hace parte de la vista fsica de un
programa ejecutable. sistema, la cual modela la estructura de implementacin de la
Un diagrama de aplicacin por s misma, su organizacin en componentes y su
componentes tiene despliegue en nodos de ejecucin. Esta vista proporciona la
slo una versin con oportunidad de establecer correspondecias entre las clases y los
descriptores, no tiene componentes de implementacin y nodos. La vista de
versin con implementacin se representa con los diagramas de componentes.
instancias. Para Diagrama de objetos
mostrar las instancias Los diagramas de objetos son utilizados durante el proceso de
de los componentes Anlisis y Diseo de los sistemas informticos en la metodologa
se debe usar un UML.
diagrama de Se puede considerar un caso especial de un diagrama de clases en
despliegue. el que se muestran instancias especficas de clases (objetos) en un
Un diagrama de momento particular del sistema. Los diagramas de objetos utilizan
componentes muestra un subconjunto de los elementos de un diagrama de clase. Los
clasificadores de diagramas de objetos no muestran la multiplicidad ni los roles,
componentes, las aunque su notacin es similar a los diagramas de clase. Una
clases definidas en diferencia con los diagramas de clase es que el compartimiento de
ellos, y las relaciones arriba va en la forma, Nombre de objeto: Nombre de clase. Por
entre ellas. Los ejemplo, Miguel: Persona.
clasificadores de
componentes tambin Un diagrama que presenta los objetos y sus relaciones en un punto
se pueden anidar del tiempo. Un diagrama de objetos se puede considerar como un
dentro de otros caso especial de un diagrama de clases o un diagrama de
clasificadores de comunicaciones.
componentes para Diagrama de despliegue
mostrar relaciones de El Diagrama de Despliegue es un tipo de diagrama del Lenguaje
definicin. Unificado de Modelado que se utiliza para modelar el hardware
Un diagrama que utilizado en la implementaciones de sistemas y las relaciones entre
contiene sus componentes.
clasificadores de Los elementos usados por este tipo de diagrama son nodos
componentes y de (representados como un prisma), componentes (representados
nodo se puede utilizar como una caja rectangular con dos protuberancias del lado
para mostrar las izquierdo) y asociaciones.
dependencias del En el UML 2.0 los componentes ya no estn dentro de nodos. En
compilador, que se cambio, puede haber artefactos u otros nodos dentro de un nodo.
representa como Un artefacto puede ser algo como un archivo, un programa, una
flechas con lneas biblioteca, o una base de datos construida o modificada en un
discontinuas proyecto. Estos artefactos implementan colecciones de
(dependencias) de un componentes. Los nodos internos indican ambientes, un concepto
componente cliente a ms amplio que el hardware propiamente dicho, ya que un ambiente
32
puede incluir al de la jerarqua lgica de un sistema.
lenguaje de Los paquetes estn normalmente organizados para maximizar la
programacin, a un coherencia interna dentro de cada paquete y minimizar el
sistema operativo, un acoplamiento externo entre los paquetes. Con estas lneas maestras
ordenador o un cluster sobre la mesa, los paquetes son buenos elementos de gestin. Cada
de terminales. paquete puede asignarse a un individuo o a un equipo, y las
Un diagrama de dependencias entre ellos pueden indicar el orden de desarrollo
despliegue fsico requerido.
muestra cmo y dnde Un diagrama que presenta cmo se organizan los elementos de
se desplegar el modelado en paquetes y las dependencias entre ellos, incluyendo
sistema. Las importaciones y extensiones de paquetes.
mquinas fsicas y los Diagrama de Estructura de Composicin
procesadores se Representa la estructura interna de un clasificador (tal como una
representan como clase, un componente o un caso de uso), incluyendo los puntos de
nodos y la interaccin de clasificador con otras partes del sistema.
construccin interna
puede ser
representada por Los diagramas de composicin de estructuras fueron
nodos o artefactos especficamente diseados para la representacin de patrones de
embebidos. Como los diseo, y son una de las modificaciones de mayor impacto dentro
artefactos se ubican de UML 2.0. Los diagramas de composicin de estructuras permiten,
en los nodos para potencialmente, documentar arquitecturas de software de manera
modelar el despliegue un poco ms clara que en versiones anteriores del UML 2.0.
del sistema, la 4.2.2. Diagramas de comportamiento
ubicacin es guiada Enfatizan en lo que debe suceder en el sistema modelado. Los
por el uso de las diagramas de comportamiento representan las caractersticas de
especificaciones de comportamiento de un sistema o proceso de negocios y, a su vez,
despliegue. incluyen a los diagramas de: actividades, casos de uso, mquinas
Diagrama de estados, tiempos, secuencias, repaso de interacciones y
de paquetes comunicaciones.
En el Lenguaje Diagrama de actividades
Unificado de En el Lenguaje de Modelado Unificado, un diagrama de actividades
Modelado, un representa los flujos de trabajo paso a paso de negocio y
diagrama de paquetes operacionales de los componentes en un sistema. Un Diagrama de
muestra cmo un Actividades muestra el flujo de control general.
sistema est dividido En SysML el diagrama de Actividades ha sido extendido para indicar
en agrupaciones flujos entre pasos que mueven elementos fsicos (e.g., gasolina) o
lgicas mostrando las energa (e.g., presin). Los cambios adicionales permiten al
dependencias entre diagrama soportar mejor flujos de comportamiento y datos
esas agrupaciones. continuos.
Dado que Muchos cambios fueron realizados en los diagramas de actividad en
normalmente un la versin 2 de UML. Los cambios realizados son tendentes a:
paquete est pensado Dar soporte en la definicin de procesos de negocio.
como un directorio, los Brindar una semntica similar al de las redes de Petri.
diagramas de Permitir una mayor y ms flexible representacin de
paquetes suministran paralelismo.
una descomposicin
33
Representa los mucho ms detallados que los diagramas de casos de uso.
procesos de negocios El estndar de Lenguaje de Modelado Unificado de OMG define una
de alto nivel, incluidos notacin grfica para realizar diagramas de casos de uso, pero no
el flujo de datos. el formato para describir casos de uso. Mucha gente sufre la
Tambin puede equivocacin pensando que un caso de uso es una notacin grfica
utilizarse para modelar (o es su descripcin). Mientras la notacin grfica y las
lgica compleja o descripciones son importantes, ellas son documentacin de un caso
paralela dentro de un de uso: un propsito para el que el actor puede usar el sistema. los
sistema. diagramas de casos de uso son diagramas que muestran las
Diagrama relaciones entre actores y el sistema.
de casos de uso Un diagrama que muestra las relaciones entre los actores y el sujeto
En el Lenguaje de (sistema), y los casos de uso.
Modelado Unificado, El valor verdadero de un caso de uso reposa en dos reas:
un diagrama de casos La descripcin escrita del comportamiento del sistema al
de uso es una especie afrontar una tarea de negocio o un requisito de negocio. Esta
de diagrama de descripcin se enfoca en el valor suministrado por el sistema a
comportamiento. El entidades externas tales como usuarios humanos u otros sistemas.
Lenguaje de La posicin o contexto del caso de uso entre otros casos
Modelado Unificado de uso. Dado que es un mecanismo de organizacin, un conjunto de
define una notacin casos de uso coherentes, consistentes promueve una imgen fcil
grfica para del comportamiento del sistema, un entendimiento comn entre el
representar casos de cliente/propietario/usuario y el equipo de desarrollo.
uso llamada modelo Es prctica comn crear especificaciones suplementarias para
de casos de uso. UML capturar detalles de requisitos que caen fuera del mbito de las
no define estndares descripciones de los casos de uso. Ejemplos de esos temas incluyen
para que el formato rendimiento, temas de escalabilidad/gestin, o cumplimiento de
escrito describa los estndares.
casos de uso, y as Relaciones de Casos de Uso. Las tres relaciones principales entre
mucha gente no los casos de uso son soportadas por el estndar UML, el cual
entiende que esta describe notacin grfica para esas relaciones.
notacin grfica define Include. En una forma de interaccin, un caso de uso dado puede
la naturaleza de un incluir otro. El primer caso de uso a menudo depende del resultado
caso de uso; sin del caso de uso incluido. Esto es til para extraer comportamientos
embargo una notacin verdaderamente comunes desde mltiples casos de uso a una
grfica puede solo descripcin individual. La notacin es una flecha rayada desde el
dar una vista general caso de uso que lo incluye hasta el caso de uso incluido, con la
simple de un caso de etiqueta include. Este uso se asemeja a una expansin de una
uso o un conjunto de macro donde el comportamiento del caso incluido es colocado
casos de uso. Los dentro del comportamiento del caso de uso base. No hay parmetros
diagramas de casos o valores de retorno.
de uso son a menudo
confundidos con los Extend. En otra forma de interaccin, un caso de uso dado (la
casos de uso. extensin), puede extender a otro. Esta relacin indica que el
comportamiento del caso de uso extensin puede ser insertado en
Mientras los dos el caso de uso extendido bajo ciertas condiciones. La notacin es
conceptos estn una flecha rayada desde el caso de uso extensin al caso de uso
relacionados, los extendido, con la etiqueta extend. Esto puede ser til para lidiar
casos de uso son
34
con casos especiales, computador a procesos de negocio.
o para acomodar Un diagrama de Mquina de Estados ilustra cmo un elemento,
nuevos requisitos muchas veces una clase, se puede mover entre estados que
durante el clasifican su comportamiento, de acuerdo con disparadores de
mantenimiento del transiciones, guardias de restricciones y otros aspectos de los
sistema y su diagramas de Mquinas de Estados, que representan y explican el
extensin. movimiento y el comportamiento.
Generalization. En la Lo siguiente son los elementos bsicos de notacin que pueden
tercera forma de usarse para componer un diagrama:
relacin entre casos Crculo lleno, apuntando a un estado inicial
de uso, existe una Crculo hueco que contiene un crculo lleno ms pequeo
relacin en el interior, indicando el estado final (si existiera)
generalizacin/especi Rectngulo redondeado, denotando un estado. En la parte
alizacin. Un caso de superior del rectngulo est el nombre del estado. Puede contener
uso dado puede estar una lnea horizontal en la mitad, debajo de la cual se indican las
en una forma actividades que se hacen en el estado
especializada de un Flecha, denotando transicin. El nombre del evento (si
caso de uso existente. existiera) que causa esta transicin etiqueta el cuerpo de la flecha.
La notacin es una Se puede aadir una expresin de Guarda, encerrada en corchetes
lnea solida ([]) denotando que esta expresin debe ser cierta para que la
terminada en un transicin tenga lugar. Si se realiza una accin durante la transicin,
tringulo dibujado se aade a la etiqueta despus de /.
desde el caso de uso NombreDeEvento[ExpresinGuarda]/accin
especializado al caso Lnea horizontal gruesa con x>i lneas entrando y i lnea
de uso general. Esto saliendo o i lnea entrando y x>i lneas saliendo. stas denotan
se asemeja al Unin/Separacin, respectivamente.
concepto orientado a
objetos de sub-clases, Un diagrama de Mquina de Estados ilustra cmo un elemento,
en la prctica puede muchas veces una clase, se puede mover entre estados que
ser til factorizar clasifican su comportamiento, de acuerdo con disparadores de
comportamientos transiciones, guardias de restricciones y otros aspectos de los
comunes, diagramas de Mquinas de Estados, que representan y explican el
restricciones al caso movimiento y el comportamiento. Al igual que los diagramas de
de uso general, secuencia, las Mquinas de Estados permiten un mejor rehso, a
descrbelos una vez, y travs del agregado de Puntos de Entrada y Puntos de Salida
enfrntate a los (Entry/Exit Points). Las mquinas de estados son ahora
detalles excepcionales generalizables y soportan una vista centrada en la transicin. Las
en los casos de uso capacidades de generalizacin incluyen: agregar estados y
especializados. transiciones, extender estados, reemplazar transiciones,
Diagrama de estados reemplazar maquinas compuestas, etc. Lo que permite que, por
El diagrama de ejemplo, dada una clase que hereda de otra, especificar ambas
estados de UML es un clases mediante mquinas de estados que heredan funcionalidad.
diagrama de estados 4.2.3. Diagramas de interaccin
con notacin Son un subtipo de diagramas de comportamiento, que enfatiza sobre
estandarizada que el flujo de control y de datos entre los elementos del sistema
puede describir los modelado. El UML 2.0 se encuentra diseado de manera Orientada
elementos, desde un a Objetos, dentro de la nueva organizacin interna, y cuenta con los
programa de llamados Diagramas de Interacciones, que son una subcategora
35
de los diagramas de que el diagrama de casos de uso permite el modelado de una vista
comportamiento. busi- ness del escenario, el diagrama de secuencia contiene
Estos diagramas detalles de implementacin del escenario, incluyendo los objetos y
muestran la clases que se usan para implementar el escenario, y mensajes
interaccin entre pasados entre los objetos. Tpicamente uno examina la descripcin
distintos de un caso de uso para determinar qu objetos son necesarios para
clasificadores de un la implementacin del escenario. Si tienes modelada la descripcin
modelo desde de cada caso de uso como una secuencia de varios pasos, entonces
distintos puntos de puedes caminar sobre esos pasos para descubrir qu objetos son
vista, es decir, necesarios para que se puedan seguir los pasos. Un diagrama de
haciendo foco en secuencia muestra los objetos que intervienen en el escenario con
distintos aspectos de lneas discontinuas verticales, y los mensajes pasados entre los
la interaccin. Esto objetos como vectores horizontales. Los mensajes se dibujan
hace que todos los cronolgicamente desde la parte superior del diagrama a la parte
diagramas de inferior; la distribucin horizontal de los objetos es arbitraria. Durante
interaccin tengan el anlisis inicial, el modelador tpicamente coloca el nombre busi-
ciertas caractersticas ness de un mensaje en la lnea del mensaje. Ms tarde, durante el
compartidas, como diseo, el nombre business es reemplazado con el nombre del
por ejemplo la mtodo que est siendo llamado por un objeto en el otro. El mtodo
capacidad de crear llamado, o invocado, pertenece a la definicin de la case ins-
Diagramas de tanciada por el objeto en la recepcin final del mensaje.
descripcin de Las modificaciones de los diagramas de secuencias tienden
interaccin y la bsicamente a permitir la reutilizacin de los diagramas, agregando
utilizacin de los elementos de tipos Fragmento Combinado.
fragmentos Un diagrama que representa una interaccin, poniendo el foco en la
combinados. Dichos secuencia de los mensajes que se intercambian, junto con sus
conceptos sern correspondientes ocurrencias de eventos en las Lneas de Vida.
descriptos a
continuacin Diagrama de comunicacin (Antiguos diagramas de
utilizando los colaboracin)
diagramas de Anteriormente tenan el nombre de Diagramas de Colaboracin.
secuencias. Por ser las colaboraciones un diagrama de interaccin, al igual que
Diagrama los diagramas
de secuencia de secuencias, heredan la misma capacidad de soportar fragmentos
El diagrama de combinados. En UML 2.0, un diagrama de comunicacin es una
secuencia es uno de versin simplificada del diagrama de colaboracin de la versin de
los diagramas ms UML i.x.
efectivos para modelar Un diagrama de Comunicacin modela las interacciones entre
interaccin entre objetos o partes en trminos de mensajes en secuencia. Los
objetos en un sistema. diagramas de Comunicacin representan una combinacin de
Un diagrama de informacin tomada desde el diagrama de Clases, Secuencia, y
secuencia muestra la Diagrama de casos de uso describiendo tanto la estructura esttica
interaccin de un como el comportamiento dinmico de un sistema.
conjunto de objetos en Los diagramas de comunicacin y de secuencia describen
una aplicacin a informacin similar, y con ciertas transformaciones, pueden ser
travs del tiempo y se transformados unos en otros sin dificultad.
modela para cada Para mantener el orden de los mensajes en un diagrama de
caso de uso. Mientras comunicacin, los mensajes son etiquetados con un nmero
36
cronolgico y tiempo especificado, y el instante exacto en que cualquiera de las
colocados cerca del seales cambia de estado con respecto a las restantes.
enlace por el cual se El propsito primario de los diagramas de tiempos (o temporizados)
desplaza el mensaje. es mostrar los cambios en el estado, o la condicin, de una lnea de
Leer un diagrama de vida de una instancia (de un Clasificador o un Rol de un
comunicacin conlleva clasificador), a lo largo del tiempo y de manera lineal. El uso ms
comenzar en el comn es mostrar el cambio de estado de un objeto a lo largo del
mensaje i.o, y seguir tiempo, en respuesta a los eventos o estmulos aceptados.
los mensajes desde El propsito primario del diagrama de tiempos es mostrar los
un objeto hasta el cambios en el estado o la condicin de una lnea de vida
siguiente, (representando una Instancia de un Clasificador o un Rol de un
sucesivamente. clasificador) a lo largo del tiempo lineal. El uso ms comn es
Es un diagrama que mostrar el cambio de estado de un objeto a lo largo del tiempo, en
enfoca la interaccin respuesta a los eventos o estmulos aceptados. Los eventos que
entre lneas de vida, se reciben se anotan, a medida que muestran cundo se desea
donde es central la mostrar el evento que causa el cambio en la condicin o en el
arquitectura de la estado.
estructura interna y
cmo ella se
corresponde con el Diagramas de Revisin de interacciones
pasaje de mensajes. Es un diagrama que muestra cmo interactan varios diagramas de
La secuencia de los interacciones. Este tipo de diagramas es muy til para mostrar de
mensajes se da a qu manera distintos escenarios se combinan.
travs de un esquema Los Diagramas de Revisin de la Interaccin enfocan la revisin del
de numerado de la flujo de control, donde los nodos son Interacciones u Ocurrencias de
secuencia. Interacciones. Las Lneas de Vida los Mensajes no aparecen en este
Diagrama de tiempos nivel de revisin.
Un diagrama de 4.2.4. Diagramas UML 2.0
tiempos o cronograma La superestructura del UML es la definicin formal de los elementos
es una grfica de que componen el UML 2.0. ste se encuentra organizado en
formas de onda paquetes, que definen los elementos internos del UML y de qu
digitales que muestra manera se relacionan. El diseo interno del UML 2.0 se encuentra
la relacin temporal orientado a objetos.
entre varias seales, y
cmo vara cada seal
en relacin a las
dems.
Un cronograma puede
contener cualquier
nmero de seales
relacionadas entre s.
Examinando un
diagrama de tiempos,
se puede determinar
los estados, nivel alto
o nivel bajo, de cada
una de las seales en
cualquier instante de
37
38
40