diseo orientado a objetos Conceptos del paradigma orientado a objetos La idea fundamental de este paradigma es la integracin de dos aspectos de los sistemas de informacin que se analizan de manera separada: datos y procesos. n el paradigma de la orientacin al objeto! un sistema se concibe como un conjunto de objetos que se comunican entre s" mediante mensajes. # ni$el conceptual un objeto es una entidad percibida en el sistema que se est desarrollando! mientras que a ni$el de implementacin! un objeto se corresponde con un encapsulamiento de un conjunto de operaciones que pueden ser in$ocadas e%ternamente y de un estado que recuerda el efecto de los ser$icios. Un objeto se describe por sus propiedades! tambi&n llamadas atributos 'estructura del objeto( y por los mtodos 'comportamiento del objeto( que puede proporcionar. n este paradigma! un tipo de objeto puede implementarse de diferentes maneras) se denomina clase a la implementacin de un tipo de objeto. *e esta manera los objetos se consideran instancias de las clases. La propiedades ms importantes del paradigma orientado a objetos son: l encapsulamiento que es un principio de abstraccin que agrupa datos y procesos permitiendo ocultar a los usuarios de un objeto los aspectos de implementacin! ofreci&ndoles una interfaz e%terna mediante la cual poder interactuar con el objeto. l principio de ocultacin de la informacin que permite modificar los aspectos pri$ados de un objeto sin que se $ean afectados los dems objetos que interact+an con &ste. La herencia que es una manera de re utilizacin del soft,are en la que se crean nue$as clases a partir de clases ya e%istentes por medio de la absorcin de sus atributos y m&todos- l polimorfismo que es la capacidad de que un mensaje sea interpretado de maneras distintas seg+n el objeto que lo recibe. .epresentacin de objetos Los objetos se describen grficamente por medio de un diagrama de objetos o diagrama de instancias. La notacin general para un objeto es una caja rectangular que contiene el nombre del objeto. /ombre del objeto Las clases se describen por medio del diagrama de clases. La notacin para una clase es una caja rectangular! que contiene el nombre de la clase. /ombre de la clase La notacin general para el objeto se e%tiende mediante el nombre de la clase seguido del nombre del objeto. /ombre del objeto: /ombre de la clase l proceso de crear objetos pertenecientes a una clase se conoce como instanciacin! por esta razn los objetos son las instancias de la clase a las que pertenecen. 0ara representarlo se utiliza una flec1a punteada para mostrar los objetos como instancias de la clase. l desarrollo orientado al objeto *urante el anlisis orientado a objetos! se presta especial atencin a encontrar y describir los objetos o conceptos en el dominio del problema *urante el diseo orientado a objetos se presta especial atencin a la definicin de los objetos soft,are y en cmo colaboran para satisfacer los requisitos 2inalmente durante la implementacin o programacin! los objetos de diseo se implementan l proceso de desarrollo se puede generalizar con las siguientes acti$idades: 3e identifican las clases semnticas 'con sus atributos y ser$icios(! esto es! las que reflejan el espacio del problema 3e establecen las interacciones entre las clases! estudiando con detenimiento la generalizacin '1erencia( y la colaboracin entre las mismas. 3e aaden las clases de interfaz '$entanas! men+s! etc(! las de aplicacin 'o mecanismos de control( y las clases base 'utilidades independientes de la aplicacin( 3e implementan las clases l uso de esta metodolog"a acorta la distancia e%istente entre el espacio de conceptos 'lo que los e%pertos conocen( y el espacio de diseo e implementacin! y que los objetos del mundo real tienen una correspondencia bastante clara con los objetos del sistema informtico. Las metodolog"as describen tres aspectos principales de un sistema: Los datos! objetos! conceptos y estructura l comportamiento o proceso funcional l control o arquitectura 0ara reflejar estos aspectos! se utilizan los diagramas de datos y de entidad! los diagramas de flujo o diagramas de transicin. 4odelado de atributos Los atributos definen la estructura de una clase y de sus correspondientes objetos! el atributo define el $alor de un dato para todos los objetos pertenecientes a una clase. Los atributos corresponden a sustanti$os y sus $alores pueden ser sustanti$os o adjeti$os. 3e debe definir un $alor para cada atributo de una clase. Los $alores pueden ser iguales o distintos en los diferentes objetos. /o se puede dar un $alor en un objeto si no e%iste un atributo correspondiente en la clase. Los atributos se listan en el diagrama de clases a continuacin del nombre de la clase! en una segunda seccin. /ombre de la clase Lista de atributos La notacin para el diagrama de objetos incluye los $alores de los atributos que se ubican en el centro de la caja! con letra normal! a continuacin del nombre de la clase. 3e tienen dos notaciones alternas: /otacin e%tendida /ombre de la clase #tributo567alor5 #tributo867alor8 #tributo967alor9 /otacin compacta /ombre de la clase 7alor del atributo5 7alor del atributo8 7alor del atributo9 0uede darse el caso de que un atributo de una clase sea un objeto instanciado por otra clase! en ese caso! &ste atributo debe subrayarse. /ombre de la clase #tributo567alor5 #tributo867alor8 #tributo9 #tributo467alor4 s posible asociar cada atributo con un tipo de dato para restringir sus posible $alores. l tipo se aade separado por dos puntos al diagrama de clases inmediatamente despu&s del nombre del atributo. s posible tambi&n definir un $alor de omisin en cada atributo! es decir el $alor que se asigna en caso de que no se 1aya especificado ninguno. ste $alor $a separado por un signo de igual '6( a continuacin de tipo de dato. /ombre de la clase #tributo5 : :ipo567alor;<misin5 #tributo8 : :ipo867alor;<misin8 #tributo9 : :ipo967alor;<misin9 #tributos deri$ados Los atributos bsicos son atributos independientes dentro del objeto. Los atributos deri$ados son atributos que dependen de otros atributos del objeto los cules pueden ser bsicos o deri$ados. La notacin es una diagonal como prefijo del atributo. /ombre de la clase #tributo bsico5 #tributo bsico8 =#tributo deri$ado <peraciones Las operaciones son funciones o transformaciones que se aplican a todos los objetos de una clase particular. La operacin puede ser una accin ejecutada por el objeto o sobre el objeto. Las operaciones se incorporan en la tercera seccin de la clase y es recomendable que su nombre o al menos una parte de &l sea un $erbo. /ombre de la clase Lista de atributos Lista de operaciones Las operaciones pueden tener argumentos! es decir! una lista de parmetros cada uno con un tipo y pueden tambi&n de$ol$er resultados! cada uno con un tipo. /ombre de la clase #tributo5 : :ipo567alor;<misin5 #tributo8 : :ipo867alor;<misin8 #tributo9 : :ipo967alor;<misin9 <peracin5'Lista-:ipo-#rg5( : :ipo.esult5 <peracion8'Lista-:ipo-#rg8( : :ipo.esult8 7isibilidad Los atributos y los m&todos de una clase pueden tener distintos grados de $isibilidad! que se conocen como especificadores de acceso de miembros! &stos especificadores son: 0+blico. Cualquier atributo o funcin declarado como p+blico 'public( es accesible cuando el programa tiene acceso a un objeto de la clase que lo instanci. 3u representacin se realiza colocando el s"mbolo '>( antes del nombre del atributo o m&todo. 0ri$ado. Cualquier atributo o funcin declarado como pri$ado 'private( es accesible solo desde los m&todos de su propia clase. 3u representacin se realiza colocando el s"mbolo '-( antes del nombre del atributo o m&todo. 0rotegido. Los miembros amigables 'friend( de la clase base y los miembros amigables 'friend( de las clases deri$adas son los +nicos que pueden acceder a los miembros protegidos 'protected( de una clase base. 3u representacin se realiza colocando el s"mbolo '?( antes del nombre del atributo o m&todo. #unque es permitido que sean de tipo pri$ado! se recomienda que todos los m&todos de una clase sean de tipo p+blico. *e la misma manera se recomienda que los miembros sean de tipo pri$ado! 1aciendo necesario la creacin de m&todos para asignarles un $alor o poder consultar el mismo. /ombre de la clase -#tributo5 : :ipo567alor;<misin5 -#tributo8 : :ipo867alor;<misin8 -#tributo9 : :ipo967alor;<misin9 ?#tributo9 : :ipo967alor;<misin9 ><peracin5'Lista-:ipo-#rg5( : :ipo.esult5 ><peracion8'Lista-:ipo-#rg8( : :ipo.esult8 @erencia Las clases con atributos y operaciones comunes se pueden organizar de forma jerrquica mediante la herencia. La 1erencia es una abstraccin importante para compartir similitudes entre clases! donde todos los atributos y operaciones comunes a $arias clases se pueden compartir por medio de una superclase! es decir la clase ms general. Las clases que 1eredan sus propiedades se conocen como subclases. La notacin de la 1erencia se representa de la siguiente manera: La 1erencia es transitiva a tra$&s de un n+mero arbitrario de ni$eles. Los ancestros de una clase son las superclases de una clase en cualquier ni$el de la jerarqu"a! y los descendientes de una clase son las subclases de una clase en cualquier ni$el de la jerarqu"a. 4<*L#*< * 0<LA4<.2A34< Ligas y asociacin La relacin entre objetos se conoce como liga. Una asociacin describe la relacin entre clases de objetos y posibles ligas! donde una liga es una instancia de una asociacin! al igual que un objeto es una instancia de una clase. %isten dos tipos de asociaciones entre clases: Una asociacin de conocimiento. s una asociacin esttica entre instancias y significa que una instancia conoce de la e%istencia de otra instancia. *enota conocimiento entre clases. Una asociacin de comunicacin. s una asociacin dinmica que modela la comunicacin entre dos objetos! y sir$e para intercambiar informacin entre objetos! denota la relacin entre las clases cuando e%iste una comunicacin entre ellos. # tra$&s des estas asociaciones! un objeto en$"a y recibe e$entos. La asociacin une a dos clases La liga une dos objetos instanciados por sus respecti$as clases La notacin que describe una asociacin es una l"nea! la cul conecta las dos clases y contiene el nombre de la asociacin en letras cursi$as La notacin que describe una liga es una l"nea que conecta a los dos objetos! y que tiene el nombre de la liga en letras cursi$as. l nombre de la liga debe ser igual al nombre correspondiente de la asociacin. #sociacin. Liga Brado de la asociacin l grado de una asociacin se determina por el n+mero de clases conectadas por la misma asociacin. Las asociaciones pueden ser binarias! ternarias o de mayor grado. l grado de las ligas corresponde al de las asociaciones. La notacin para una relacin ternaria entre objetos se muestra en la siguiente figura: #sociaciones refle%i$as. Las asociaciones son llamadas refle%i$as si relacionan distintos objetos de una misma clase! por ejemplo en el caso de una clase llamada 0ersona que se utiliza para modelar los miembros de una familia! una liga entre ellos llamada Cpariente-deD ser"a una asociaciones refle%i$a. n este caso! se puede representar la clase de la siguiente manera: 4ultiplicidad La multiplicidad o cardinalidad de una asociacin especifica cuntas instancias de una clase se pueden relacionar a una sola instancia de otra clase. s necesario decidir la multipicidad de cada clase en una asociacin! es decir dos multiplicidades en una relacin binaria! una para cada e%tremo de la relacin. La multiplicidad depende del conte%to de la aplicacin! e%isten distintos tipos de multiplicidades para las asociaciones! de los cuales los ms rele$antes son: Uno-uno: donde dos objetos se relacionan de forma e%clusi$a! uno con el otro. E40L<: Cada Uni$ersidad tiene un .ector y cada .ector dirige una Uni$ersidad Uno-muc1os: donde uno de los objetos puede estar ligado a muc1os otros objetos. E40L<: 4uc1os Estudiantes pueden estudiar en una Universidad! y una sola Universidad da estudios a muc1os Estudiantes 4uc1os-muc1os: *onde cada objeto de cada clase puede estar ligado con muc1os otros objetos E40L<: 4uc1os Estudiantes pueden estudiar en $arias Universidades Una relacin opcional es aquella en donde la multiplicidad es uno o cero. sto significa que dos objetos pueden o no estar conectados y! si lo estn! corresponden a una multiplicidad de 5. La notacin para representar una relacin opcional se muestra en la siguiente figura: La relacin de muc1os se puede restringir con un n+mero o secuencias de n+meros como se muestra en la siguiente figura .ol l rol describe el papel que juega cada e%tremo de una asociacin. Una asociacin binaria tiene dos roles! uno en cada e%tremo! los cuales pueden tener un nombre diferente cada uno. Una relacin de n clases tendr"a n roles. E40L<: Los nombre de roles son necesarios para asociaciones refle%i$as ya que slo sabiendo el nombre de la asociacin no es suficiente para distinguir el papel que juegan los diferentes objetos en la asociacin. nsamblado: #gregacin y Composicin Los ensamblados son formas especiales de asociacin entre un todo y sus partes! en donde el ensamblado est compuesto por sus componentes. Un ensamblado puede componerse de $arias partes! para esto se tienen dos tipos: #gregacin. 0artes del ensamblado que pueden aparecer en m+ltiples ensamblados. Composicin. Las partes del ensamblado no pueden ser compartidas entre ensamblados. E40L<: Una red de computadoras se puede considerar un ensamblado! donde las computadoras son sus componentes. ste tambi&n es un ejemplo de agregacin! ya que las computadoras pueden ser partes de m+ltiples redes de computadoras a la $ez. #dems! las computadoras pueden e%istir independientemente de la e%istencia de la red. Un autom$il se puede tambi&n considerar un ensamblado! donde el motor y la carrocer"a son sus componentes. ste tambi&n es un ejemplo de composicin! ya que el motor y la carrocer"a son partes del autom$il! y a diferencia de la agregacin! no pueden ser compartidos entre distintos autom$iles a la $ez. 0ropiedades del ensamblado :ransicin: 3i # es parte de F y F es parte de C) entonces # es parte de C. jemplo: 3i el 4otor es parte del #utom$il! entonces sus propiedades! como posicin y $elocidad! estn dadas por la posicin y $elocidad del #utom$il. #ntisim&trico: 3i # es parte de F! entonces F no es parte de #. jemplo: 3i el 4otor es parte del #utom$il! entonces el #utom$il no es parte del 4otor. 3e considera un ensamblado y no una asociacin regular: 3i se puede usar la frase Gparte-deG o Gconsiste-deG o GtieneG 3i algunas operaciones en el todo se pueden propagarse a sus partes 3i algunos atributos en el todo se pueden propagar a sus partes .epresentacin La notacin para un ensamblado! en particular para una agregacin! es un diamante ad1erido al lado del objeto correspondiente al ensamblado total! conectado por una l"nea a sus componentes. La notacin para la composicin es similar a una agregacin y al ensamblado en general! aunque a diferencia de la agregacin el diamante se rellena de color negro. E40L< * .0.3/:#CAH/. Una computadora personal '0C( est compuesta por uno o $arios monitores! un sistema! un teclado y opcionalmente un ratn. l sistema tiene un c1asis! un procesador central 'C0U(! $arias tarjetas de memoria '.#4(! y opcionalmente un $entilador. :ipos de ensamblados 2ijos. :ienen una estructura fija donde el n+mero de componentes est predefinido. E40L<: 7ariables. l n+mero de componentes $ar"a E40L<: .ecursi$os. Contienen de forma directa o indirecta una instancia del mismo tipo de agregado! dnde el n+mero de ni$eles de ensamblado puede ser ilimitado.