Análisis y Diseño Orientado a Objetos – Grady Booch
Análisis y Diseño Orientado a Objetos Grady Booch
CAPITULO 1 – COPL!"IDAD CAPITULO # – !L OD!LO D! OB"!TO$ CAPITULO % – CLA$!$ & OB"!TO$ CAPITULO ' ( CLA$I)ICACI*+ CLA$I)ICACI*+
Pág. 1/38
Análisis y Diseño Orientado a Objetos – Grady Booch
I+DIC! ,,,,,,,,,,,,,, ,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,, ,,,,, ,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,, 1 CAPITULO 1 – COPL!"IDAD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,, ,, 1 CAPITULO # – !L OD!LO D! OB"!TO$,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,, ,,,, ,,,,,,1 CAPITULO % – CLA$!$ CLA$!$ & OB"!TO$ ,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,,,,, ,,, 1 CAPITULO ' ( CLA$I)ICACI*+ CLA$I)ICACI*+,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, 1 I+DIC!,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,, ,,, # 1.1 – La complejidad inheren inherente te al software..................................................................................................... ..................... 5 5 Software de dimensión industrial. .................................................................................................................................... .................................................................................................................................... 5 El software es complejo de forma innata. Es una característica esencial de él. ............................................................... ............................................................... 5 La complejidad del dominio del problema...................................................................................................................5 La dificultad de gestionar el proceso de desarrollo......................................................................................................5 La flexibilidad que se puede alcanzar a traés del software........................................................................................! Los problemas que plantea la caracterización del comportamiento de sistemas discretos..........................................! Las consecuencias de la complejidad ilimitada. ............................................................................................................... ............................................................................................................... ! 1.2 La estructura de los sistemas complejos. ...................................................................................................................... ...................................................................................................................... 6... ... Ejemplos de sistemas complejos. ..................................................................................................................................... ..................................................................................................................................... ! Los cinco atributos de un sistema complejo. .................................................................................................................... ! "omplejidad organizada # desorganizada. ....................................................................................................................... $ La forma canónica de un sistema complejo.................................................................................................................$ 1.3 - Imponiendo orden al caos........................................................................................................................ caos.......................................................................................................................... ..................... .. 7 7 El rol de la descomposición. ............................................................................................................................................. $ "ategorías de métodos de dise%o. .................................................................................................................................... & El rol de la abstracción. .................................................................................................................................................... & El rol de la jerarquía. ........................................................................................................................................................ ........................................................................................................................................................ & 1.4 - el dise!o de sistemas complejos...................................................................................................... complejos....................................................................................................................... ................. ............ " " El significado del dise%o. ................................................................................................................................................. ' La importancia de construir un modelo. ........................................................................................................................... ........................................................................................................................... ' #$%&'$( – )*+I,&L 1 ....................................................................................................... .......................................................................................................................................... ................................... ........ 1 1
CAP-TULO # – !L OD!LO D! OB"!TO$,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,,,,11 2.1 - La e/oluci0n del modelo de ojetos...................................................................................................... ojetos......................................................................................................... .................... ... 11 11 (endencias en ingeniería de software. ............................................................................................................................ )) Las generaciones de lenguajes de programación........................................................................................................)) programación........................................................................................................)) (opología de los lenguajes de primera # principios de la segunda generación. ............................................................. )) (opología de los lenguajes de fines de la segunda # principios de la tercera generación. ............................................. )) (opología de los lenguajes de finales de la tercera generación. ..................................................................................... )* (opología de los lenguajes basados en objetos # orientados a objetos. ......................................................................... )* +undamentos del modelo de objetos. ............................................................................................................................. )* ,rogramación orientada a objetos. ................................................................................................................................. )* Pág. 2/38
Análisis y Diseño Orientado a Objetos – Grady Booch
I+DIC! ,,,,,,,,,,,,,, ,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,, ,,,,, ,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,, 1 CAPITULO 1 – COPL!"IDAD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,, ,, 1 CAPITULO # – !L OD!LO D! OB"!TO$,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,, ,,,, ,,,,,,1 CAPITULO % – CLA$!$ CLA$!$ & OB"!TO$ ,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,,,,, ,,, 1 CAPITULO ' ( CLA$I)ICACI*+ CLA$I)ICACI*+,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, 1 I+DIC!,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,, ,,, # 1.1 – La complejidad inheren inherente te al software..................................................................................................... ..................... 5 5 Software de dimensión industrial. .................................................................................................................................... .................................................................................................................................... 5 El software es complejo de forma innata. Es una característica esencial de él. ............................................................... ............................................................... 5 La complejidad del dominio del problema...................................................................................................................5 La dificultad de gestionar el proceso de desarrollo......................................................................................................5 La flexibilidad que se puede alcanzar a traés del software........................................................................................! Los problemas que plantea la caracterización del comportamiento de sistemas discretos..........................................! Las consecuencias de la complejidad ilimitada. ............................................................................................................... ............................................................................................................... ! 1.2 La estructura de los sistemas complejos. ...................................................................................................................... ...................................................................................................................... 6... ... Ejemplos de sistemas complejos. ..................................................................................................................................... ..................................................................................................................................... ! Los cinco atributos de un sistema complejo. .................................................................................................................... ! "omplejidad organizada # desorganizada. ....................................................................................................................... $ La forma canónica de un sistema complejo.................................................................................................................$ 1.3 - Imponiendo orden al caos........................................................................................................................ caos.......................................................................................................................... ..................... .. 7 7 El rol de la descomposición. ............................................................................................................................................. $ "ategorías de métodos de dise%o. .................................................................................................................................... & El rol de la abstracción. .................................................................................................................................................... & El rol de la jerarquía. ........................................................................................................................................................ ........................................................................................................................................................ & 1.4 - el dise!o de sistemas complejos...................................................................................................... complejos....................................................................................................................... ................. ............ " " El significado del dise%o. ................................................................................................................................................. ' La importancia de construir un modelo. ........................................................................................................................... ........................................................................................................................... ' #$%&'$( – )*+I,&L 1 ....................................................................................................... .......................................................................................................................................... ................................... ........ 1 1
CAP-TULO # – !L OD!LO D! OB"!TO$,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,,,,11 2.1 - La e/oluci0n del modelo de ojetos...................................................................................................... ojetos......................................................................................................... .................... ... 11 11 (endencias en ingeniería de software. ............................................................................................................................ )) Las generaciones de lenguajes de programación........................................................................................................)) programación........................................................................................................)) (opología de los lenguajes de primera # principios de la segunda generación. ............................................................. )) (opología de los lenguajes de fines de la segunda # principios de la tercera generación. ............................................. )) (opología de los lenguajes de finales de la tercera generación. ..................................................................................... )* (opología de los lenguajes basados en objetos # orientados a objetos. ......................................................................... )* +undamentos del modelo de objetos. ............................................................................................................................. )* ,rogramación orientada a objetos. ................................................................................................................................. )* Pág. 2/38
Análisis y Diseño Orientado a Objetos – Grady Booch -ise%o orientado a objetos. ............................................................................................................................................ ) /n0lisis orientado a objetos............................................................................................................. objetos............................................................................................................................................ ............................... ) 2.2 - $lementos del modelo de ojetos. ........................................................................................................... ........................................................................................................... ..................... 13 13 (ipos de paradigmas de programación. .......................................................................................................................... .......................................................................................................................... ) /bstracción. .................................................................................................................................................................... .................................................................................................................................................................... )1 Encapsulamiento.......................................................................................................... Encapsulamiento. ............................................................................................................................................................ ................................................... )5 El significado del encapsulamiento........................................................................................................................ encapsulamiento........................................................................................................................ ....)5 2odularidad. .................................................................................................................................................................. )5 El significado de la modularidad................................................................................................................................)5 3erarquía. ........................................................................................................................................................................ )! El significado de la jerarquía......................................................................................................................................)! (ipos. (ipific (ipificación. ación. ......................................................................................................................................................... ......................................................................................................................................................... )$ El significado de los tipos................................................................................................................................ tipos...........................................................................................................................................)$ ...........)$ 4eneficios del uso de tipos estrictos........................................................................................... estrictos..........................................................................................................................)$ ...............................)$ Ligadura est0tica # din0mica.................................................................................................................................. din0mica.................................................................................................................................. ....)& El significado de la concurrencia...............................................................................................................................)& El significado de la persistencia.................................................................................................................................)& 2.3 - *plicaci0n del modelo de ojetos. ojetos............................................................................................................... ................................................................................................................ ................ .. 1" 1" 4eneficios del modelo de objetos. .................................................................................................................................. .................................................................................................................................. )' #$%&'$( – )*+I,&L 2 ....................................................................................................... .......................................................................................................................................... ................................... ........ 2 2
CAP-TULO % – CLA$!$ & OB"!TO$,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,, #1 3.1 - La naturalea de los ojetos. ................................................................................................................ ................................................................................................................ ........................ 21 21 6ué es # qué no es un objeto. ......................................................................................................................................... ......................................................................................................................................... *) Sem0ntica. .................................................................................................................................................................. *) El significado del comportamiento.............................................................................................................................** comportamiento.............................................................................................................................** 7oles # responsabilidades................................................................................................................ responsabilidades............................................................................................................................................... ............................... ** Los objetos como m0quinas. .......................................................................................................................................... ** 8dentidad. ........................................................................................................................................................................ ........................................................................................................................................................................ * "opia9 asignación e igualdad. ......................................................................................................................................... * Espacio de ida de un objeto. ......................................................................................................................................... ......................................................................................................................................... * 3.2 - #elaciones entre ojetos............................................................................................................ ojetos............................................................................................................................. ................. ................... 23 23 (ipos de relaciones. ........................................................................................................................................................ ........................................................................................................................................................ * 3.3 - La naturalea de una clase.......................................................................................................... clase..................................................................................................................................... ........................... ....... 25 25 6ué es # qué no es una clase. ......................................................................................................................................... ......................................................................................................................................... *5 8nterfaz e implementación. ............................................................................................................................................. ............................................................................................................................................. *5 "iclo de ida de las clases. ............................................................................................................................................. ............................................................................................................................................. *5 3.4 - #elaciones entre clases........................................................................................................ clases........................................................................................................................................... ................................... ........ 25 25 (ipos de relaciones. ........................................................................................................................................................ ........................................................................................................................................................ *5 ,olimorfismo simple. ..................................................................................................................................................... *$ :erencia m;ltiple. .......................................................................................................................................................... *$ /gregación. .................................................................................................................................................................... *$ "ontención física. ........................................................................................................................................................... ........................................................................................................................................................... *$ 8nstanciación. .................................................................................................................................................................. .................................................................................................................................................................. *& 2etaclases. ..................................................................................................................................................................... ..................................................................................................................................................................... *& 3.5 - La interacci0n entre clases ojetos......................................................................................................... ojetos............................................................................................................. .............. .... 2 2 7elaciones entre clases # objetos. .................................................................................................................................. *& El papel de clases # objetos en an0lisis # dise%o. ........................................................................................................... *& 3.6 - e la construcci0n de clases ojetos de calidad. ............................................................................................. ............................................................................................. ........ 2" 2" Pág. 3/38
Análisis y Diseño Orientado a Objetos – Grady Booch 2edida de la calidad de una abstracción. ....................................................................................................................... *' Selección de operaciones. ............................................................................................................................................... < Sem0ntica funcional...................................................................................................................................................< Sem0ntica espacial # temporal...................................................................................................................................< Elección de relaciones. ................................................................................................................................................... ) "olaboraciones...........................................................................................................................................................) 2ecanismos # isibilidad......................................................................................................................................... ..) Elección de implementaciones. ...................................................................................................................................... ) 7epresentación...........................................................................................................................................................) #$%&'$( – )*+I,&L 3 .......................................................................................................................................... ........ 32
CAP-TULO ' – CLA$I)ICACI*+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,%% 4.1 La importancia de una clasificaci0n correcta. ...................................................................................... ....................... 33 "lasificación # dise%o orientado a objetos. .................................................................................................................... La dificultad de la clasificación...................................................................................................................................... Ejemplos de clasificación.......................................................................................................................................... . La naturaleza incremental e iteratia de la clasificación............................................................................................ 4.2 Identificando clases ojetos..................................................................................................................................... ..... 34 Enfoques cl0sicos # modernos........................................................................................................................................ 1 "ategorización cl0sica............................................................................................................................................... .1 /grupamiento conceptual...........................................................................................................................................1 (eoría de los prototipos..............................................................................................................................................1 /plicación de las teorías cl0sicas # modernas............................................................................................................1 /n0lisis =rientado a =bjetos.......................................................................................................................................... 1 Enfoques cl0sicos.......................................................................................................................................................5 /n0lisis del comportamiento......................................................................................................................................5 /n0lisis de dominios..................................................................................................................................................5 /n0lisis de "asos de >so...........................................................................................................................................! +ic?as "7".................................................................................................................................................................! -escripción informal en espa%ol............................................................................................................................... .! /n0lisis Estructurado..................................................................................................................................................! 4.3 *stracciones mecanismos cla/e.................................................................................................................. ............... 36 8dentificación de las abstracciones clae. ....................................................................................................................... ! 4;squeda de las abstracciones clae..........................................................................................................................! 7efinamiento de abstracciones clae..........................................................................................................................$ 8dentificación de mecanismos.......................................................................................................................... .............. $ 4;squeda de mecanismos...........................................................................................................................................$ Ejemplos de mecanismos...........................................................................................................................................$
Pág. 4/38
Análisis y Diseño Orientado a Objetos – Grady Booch
Ca./t0lo 1 ( Co.lejidad 1.1 – La complejidad inherente al software
$o2t3are de diensi4n ind0strial, Aplicaciones con un ciclo de vida muy largo y de los cuales muchos usuarios a lo largo del tiempo llegan a depender de su funcionamiento correcto. Su compleidad e!cede la capacidad intelectual del ser humano" por lo #ue resulta imposi$le ser comprendido en su totalidad por un %nico desarrollador. & esto es caracter'stica esencial de casi todos los sistemas de soft(are de gran tama)o.
!l so2t3are es co.lejo de 2ora innata, !s 0na caracter/stica esencial de 5l, *s compleo por#ue hereda la compleidad del dominio del pro$lema" la dificultad de gestionar el proceso de desarrollo" la fle!i$ilidad #ue se puede alcan+ar a trav,s del soft(are y los pro$lemas #ue plantea la caracteri+aci-n del comportamiento de sistemas discretos.
La co.lejidad del doinio del .roblea ).
*l pro$lema a resolver presenta muchos re#uisitos #ue compiten entre s' o se contradicen cuando se compite entre 2acilidad de 0so o costo con la 2acilidad de desarrollo o s0 20ncionalidad
2. *sas contradicciones o desacoplamientos e!isten de$ido a #ue los usuarios suelen encontrar grandes dificultades para e!presar sus necesidades en una forma en #ue los desarrolladores puedan entender. 0os usuarios tal ve+ solo tiene vagas ideas de lo #ue #uieren del sistema. 3.
0os re#uisitos además cam$ian con frecuencia durante el desarrollo incluso por#ue la mera e!istencia de un proyecto de soluci-n lo altera al sistema real.
4. n sistema grande" de$ido a la inversi-n financiera #ue implica" no puede desecharse y reempla+arse por uno nuevo cada ve+ #ue los re#uisitos cam$ian. e$e evolucionar.
!6ol0cionar del soft(are responder al cam$io de re#uerimientos anteniiento del soft(are corregir errores Conser6aci4n del soft(are emplear recursos para mantener en operaci-n un elemento de soft(are anticuado y decadente.
La di2ic0ltad de 7estionar el .roceso de desarrollo . 0a principal tarea del grupo de desarrollo es dar una ilusi-n de simplicidad para defender a los usuarios de esta compleidad ar$itraria del pro$lema. 5. Se hace lo posi$le por escri$ir menos c-digo pero a veces es imposi$le eludir el tama)o de un sistema grande. e$e recurrirse a la aplicaci-n de varias t,cnicas de re6utili+aci-n de c-digo e!istente o de la escritura de nuevo soft(are. 7. e$e tam$i,n enfrentarse la e!istencia de miles de m-dulos separados y esto implica un grupo de desarrolladores" nunca una %nica persona. *sto implica más personas y por consiguiente una comunicaci-n más rigurosa y coordinaci-n más dif'cil" más a%n si el grupo y el proyecto se e!tienden geográficamente.
Pág. /38
Análisis y Diseño Orientado a Objetos – Grady Booch La 2le8ibilidad 90e se .0ede alcan:ar a tra65s del so2t3are 8. n proyecto de soft(are es muy frecuentemente apoyado en pilares construidos por los mismos desarrolladores a diferencia de una o$ra edilicia" por eemplo" #ue no contiene un acer'a para fa$ricar sus propias vigas metálicas. *sto significa #ue el desarrollo del proyecto de soft(are sigue siendo una tarea muy la$oriosa. o hay estándares para el desarrollo de soft(are.
Los .robleas 90e .lantea la caracteri:aci4n del co.ortaiento de sisteas discretos, '. *l estado act0al de 0na a.licaci4n está dado por el conunto de varia$les #ue pueden ser miles" de sus valores actuales y de la direcci-n de eecuci-n y de la pila de cada proceso del sistema. )<. *n sisteas contin0os una pe#ue)a modificaci-n en la entrada provoca una pe#ue)a modificaci-n en la salida. Pero en sisteas discretos y de 7ran taaño se perci$e una e!plosi-n com$inatoria #ue hace #ue la salida se modifi#ue enormemente. )). Se intenta dise)ar los sistemas con una se.araci4n de intereses de forma #ue el comportamiento de una parte del sistema tenga el m'nimo impacto en el comportamiento de otra parte del sistema. )*. *n un sistema de gran volumen de$e uno contentarse con un 7rado de con2ian:a deterinado a lo 90e re2iere s0 correcci4n ya #ue no puede llevarse a ca$o una prue$a a fondo e!haustiva por no tener las herramientas matemáticas ni intelectuales para un sistema no continuo.
Las consec0encias de la co.lejidad iliitada, 9ás compleo es el sistema" más a$ierto está al derrum$amiento total.
Crisis del so2t3are ha e!istido tanto tiempo #ue de$e considerarse normal. *s cuando se pretende dominar la compleidad del sistema a un e!tremo #ue lleva al presupuesto a niveles e!cedentes y #ue transforman en deficiente al sistema respecto a los re#uerimientos fiados.
1.2 La estructura de los sistemas complejos.
!je.los de sisteas co.lejos, Co.0tador .ersonal compleidad moderada. :asi todos los computadores están formados por los mismos elementos $ásicos. 0os sistemas compleos no s-lo son erár#uicos" sino #ue los ni6eles de esta jerar90/a representan diferentes niveles de a$stracci-n. A cada ni6el de abstracci4n se encuentra una serie de dispositivos #ue cola$oran para proporcionar servicios a capas más altas. Se elige determinado nivel de a$stracci-n para satisfacer necesidades .artic0lares. S-lo a trav,s de la coo.eraci4n 0t0a de colecciones si7ni2icati6as de estos agentes se ve la funcionalidad de nivel superior de una planta. la ciencia de la compleidad llama a esto co.ortaiento eer7ente. *l comportamiento del todo es mayor #ue la suma de sus partes.
Los cinco atrib0tos de 0n sistea co.lejo, ).
0a compleidad toma la forma de una jerar90/a" por lo cual un sistema compleo está compuesto de su$sistemas relacionados #ue tiene a su ve+ sus propios su$sistemas" y as' sucesivamente" hasta #ue se alcan+a alg%n 'nfimo nivel de componentes elementales. Pág. 5/38
Análisis y Diseño Orientado a Objetos – Grady Booch *l hecho de tener una estr0ct0ra jerár90ica y casi descomponi$le es lo #ue 2acilita la co.rensi4n del sistema compleo. *n realidad s-lo se puede comprender a los sistemas #ue tiene una estructura de erar#u'a. 2. 0a elecci-n de #u, componentes de un sistema son primitivos es relativamente ar$itraria y #ueda en gran medida a decisi-n del o$servador. .
0os enlaces internos de los componentes suelen ser más fuertes #ue los enlaces entre los co.onentes. *ste hecho tiene el efecto de separar la dináica de alta 2rec0encia de los componentes ; #ue involucra a la estructura interna de los mismos ; de la dináica de baja 2rec0encia ; #ue involucra la interacci-n entre los componentes. *sto posi$ilita un estudio de cada parte de forma relativamente aislada.
1.
0os sistemas erár#uicos están compuestos usualmente de s-lo unas pocas clases diferentes de su$sistemas dispuestos en varias com$inaciones y disposiciones. *sto lleva a la reutili+aci-n de componentes pe#ue)os.
5.
Se encontrará siempre #ue un sistema compleo #ue funciona ha evolucionado de un sistema simple #ue funciona$a... n sistema compleo dise)ado desde cero nunca funciona y no puede parchearse para conseguir #ue lo haga.
Co.lejidad or7ani:ada y desor7ani:ada, La 2ora can4nica de 0n sistea co.lejo, *l descu$rimiento de a$stracciones y mecanismos comunes facilita la comprensi-n del sistema compleo. A un sistema se lo puede descomponer en una jerar90/a estr0ct0ral o ;.arte(de< o en una jerar90/a de ti.os o ;es(0n<. *s esencial ver a un sistema desde am$as perspectivas. A estas erar#u'as se las llaman respectivamente estr0ct0ra de clases y estr0ct0ra de objetos. Por lo general" e!isten muchos más o$etos #ue clases en un sistema. Al tener en cuenta la estructura de clases" se capturan las propiedades de determinados o$etos en un s-lo lugar" posi$ilitando as' una meor comprensi-n. na nueva mirada a cada nivel de estructura de o$etos e!pone un nuevo nivel de compleidad. Am$as estructuras no son del todo independientes y untas conforman la ar90itect0ra del sistea.
1.3 - Imponiendo orden al caos.
!l rol de la desco.osici4n, Para estudiar y tra$aar con sistemas compleos es muy %til e imperioso dividirlo en partes más y más pe#ue)as para as' poder refinarlas en forma independiente. ivide y vencerás. As' se satisface la restricci-n fundamental de la capacidad humana .ara entender 0n ni6el dado basta con co.render 0nas .ocas .artes =no necesariaente todas> a la 6e:.
Desco.osici4n al7or/tica cada m-dulo del sistema representa un paso importante de un proceso glo$al. Se siguen las reglas del dise)o estructurado y descendente.
!sta 6isi4n en2ati:a el orden de los e6entos,
Desco.osici4n orientada a objetos?
se identifican los o$etos #ue se derivan directamente del voca$ulario del dominio del pro$lema. Son agentes aut-nomos #ue cola$oran para llevar aca$o alg%n comportamiento de nivel superior. n o$eto a#u' es una entidad tangi$le #ue muestra un comportamiento $ien definido.
!sta 6isi4n resalta a los objetos 90e .ro6ocan acciones o son s0jetos de estas acciones, Pág. 7/38
Análisis y Diseño Orientado a Objetos – Grady Booch Abas 6isiones son i.ortantes@ .ero no se .0ede diseñar 0n sistea co.lejo con las dos 6isiones al iso tie.o@ ya 90e son 6istas .er.endic0lares,
Cate7or/as de 5todos de diseño, 5todo es un proceso disciplinado para generar un conunto de modelos #ue descri$en varios aspectos de un sistema de soft(are en desarrollo" utili+ando alguna notaci-n $ien definida.
etodolo7/a es una colecci-n de m,todos aplicados a lo largo del ciclo de vida del desarrollo del soft(are y unificados por alguna apro!imaci-n general o filos-fica. 0os m,todos son importantes por#ue introducen una disciplina en el desarrollo de sistemas de soft(are compleos. De2inen los .rod0ctos 90e sir6en coo 6eh/c0lo con .ara la co0nicaci4n entre iebros de 0n e90i.o de desarrollo.
Diseño estr0ct0rado descendente o diseño co.0esto
representado en lenguaes como =>?@?A y :>>0 se aplica descomposici-n algor'tmica para fragmentar un pro$lema grande en pasos pe#ue)os. 0a unidad fundamental es el su$programa.
Diseño diri7ido .or los datos con este dise)o" la estructura de un sistema de soft(are se deduce de la correspondencia entre las entradas y las salidas del sistema.
Diseño orientado a objetos? se modelo los sistemas de soft(are como colecciones de o$etos #ue cooperan" tratando los o$etos individuales como instancias de una clase #ue está adentro de una erar#u'a de clases. 0enguaes #ue reflean esta topolog'a son SmalltalB" >$ect Pascal" :CC" :ommon 0isp >$ect System :0>S y Ada. 0a desco.osici4n orientada a objetos produce sistemas más pe#ue)os a trav,s de la re0tili:aci4n de ecanisos co0nes" proporcionando una %til econo/a de e8.resi4n. 0os sistemas orientados a o$etos son más resistentes al cabio por lo #ue están ejor .re.arados .ara e6ol0cionar a trav,s del tiempo" por#ue está $asado en formas intermedias esta$les a$stracciones y mecanismos ya pro$ados. *stá dise)ado para evolucionar de forma incremental" partiendo de sistemas más pe#ue)os en los #ue ya se tiene confian+a.
!l rol de la abstracci4n, *s una t,cnica muy potente para enfrentarse a la compleidad. Al ser incapaces de dominar en su totalidad a un o$eto compleo" i7noraos entonces s0s detalles no esenciales@ tratando en s0 l07ar con el odelo 7enerali:ado e ideali:ado del objeto.
!l rol de la jerar90/a, ?econocer erar#u'as de clases y o$etos es otra forma de incrementar el contenido semántico de $lo#ues de informaci-n. la estr0ct0ra de objetos es importante por#ue nos muestra como los o$etos colaboran entre s/ a trav,s de diferentes mecanismos" mientras #ue la estr0ct0ra de clases resalta la estr0ct0ra y co.ortaiento co0nes en el interior del sistema. 0a identi2icaci4n de jerar90/as en un sistema compleo no es fácil ya #ue re#uiere #ue se descu$ran patrones entre muchos o$etos" cada uno de los cuales puede incluir comportamientos muy complicados. Pág. 8/38
Análisis y Diseño Orientado a Objetos – Grady Booch Puede hacerse frente a las restricciones de la cognici-n humana mediante el uso de la desco.osici4n" la abstracci4n y la jerar90/a.
1.4 - Del diseño de sistemas complejos.
!l si7ni2icado del diseño, *s l a a.ro8iaci4n disci.linada 90e se 0tili:a .ara in6entar 0na sol0ci4n para alg%n pro$lema" suministrando as' un camino desde los re#uerimientos hasta la implantaci-n. :onstruir un sistema #ue
satisfaga determinada condici-n funcional
se auste a las limitaciones impuestas por el medio de destino
respete re#uisitos impl'citos o e!pl'citos so$re el rendimiento y reutili+aci-n de recursos
satisfaga criterios de dise)o impl'citos o e!pl'citos so$re la forma del artefacto
satisfaga restricciones so$re el propio proceso de dise)o" tales como su longitud o coste" o las herramientas disponi$les para reali+ar el dise)o
D:rear una estructura interna o ar#uitectura clara y relativamente simpleD
D*s un $alance entre un conunto de re#uisitos #ue compitenD
D0os productos del dise)o son modelos #ue permiten ra+onar so$re las estructuras" hacer concesiones cuando los re#uisitos entran en conflicto y" en general" proporcionar un anteproyecto para la implementaci-n.
La i.ortancia de constr0ir 0n odelo, :ada modelo dentro de un dise)o descri$e un aspecto espec'fico del sistema #ue se está considerando. Eeneralmente" se $usca construir nuevos modelos $asados en modelos vieos en los #ue ya se conf'a. 0os odelos dan la o.ort0nidad de 2allar en condiciones controladas " $ao situaciones tanto previstas como impro$a$les para modificarlo para #ue se comporte del modo esperado o deseado.
Los eleentos de los 5todos de diseño del so2t3are, *l lenguae para e!presar cada modelo ). +otaci4n 0as actividades #ue encaminan a la construcci-n ordenada de los modelos del *. Proceso sistema. .
erraientas 0os artefactos #ue eliminan el tedio de construir el modelo y reafirman las reglas so$re los propios modelos" de forma #ue sea posi$le revelar errores e inconsistencias.
Los odelos del desarrollo orientado a objetos, *l diseño orientado a objetos es el m,todo #ue lleva a una descomposici-n orientada a o$etos. Aplicando dise)o orientado a o$etos se crea so2t3are resistente al cabio meor evoluci-n y escrito con econo/a de e8.resi4n.
9odelo l-gico
9odelo f'sico
9odelo estático
9odelo dinámico Pág. F/38
Análisis y Diseño Orientado a Objetos – Grady Booch
R!"#$ – %&'I("L) 1
*l soft(are es compleo de forma innataG la compleidad de los sistemas de soft(are e!cede frecuentemente la capacidad intelectual humana.
0a tarea del e#uipo de desarrollo de soft(are es la de crear una ilusi-n de sencille+.
0a compleidad toma a menudo la forma de una erar#u'aG esto es %til para modelar tanto las erar#u'as Hes6unI como Hparte deI de un sistema compleo.
0os sistemas compleos evolucionan generalmente de formas intermedias esta$les.
*!isten factores de limitaci-n fundamentales en la cognici-n humanaG puede hacerse frente a estas restricciones mediante el uso de la descomposici-n" a$stracci-n y erar#u'a.
0os sistemas compleos pueden verse centrando la atenci-n $ien en las cosas o $ien en los procesosG hay ra+ones de peso para aplicar la descomposici-n orientada a o$etos" en la cual se ve el mundo como una colecci-n significativa de o$etos #ue cola$oran para conseguir alg%n comportamiento de nivel superior.
*l dise)o orientado a o$etos es el m,todo #ue conduce a una descomposici-n orientada a o$etosG el dise)o orientado a o$etos define una notaci-n y un proceso para construir sistemas de soft(are compleos" y ofrece un rico conunto de modelos l-gicos y f'sicos con los cuales se puede ra+onar so$re diferentes aspectos del sistema #ue se esta considerando.
Pág. 1J/38
Análisis y Diseño Orientado a Objetos – Grady Booch
Ca./t0lo # – !l odelo de objetos *l modelo de o$etos es el conunto de s-lidos fundamentos de ingenier'a para la tecnolog'a orientada a o$etos. *ste modelo a$arca los principios de abstracci4n@ enca.s0laci4n@ od0laridad@ jerar90/a@ ti.os@ conc0rrencia y .ersistencia. 0os conceptos no son nuevos pero el modelo los integra de forma sin,rgica. Por desgracia la programaci-n orientada a o$etos significa cosas distintas para personas distintas.
2.1 - La e*oluci+n del modelo de o,jetos.
Tendencias en in7enier/a de so2t3are, Las 7eneraciones de len70ajes de .ro7raaci4n,
espla+amiento de programaci-n al por menor a la programaci-n al por mayor.
0a evoluci-n de los lenguaes de alto nivel.
0a tendencia ha demostrado un despla+amiento de los lenguaes imperativos hacia los lenguaes declarativos.
Len70ajes i.erati6os le dicen a la computadora #u, hacer. Len70ajes declarati6os descri$en las a$stracciones claves del dominio del pro$lema.
Priera 7eneraci4n? represent- un paso de acercamiento al pro$lema y un paso de aleamiento de la má#uina #ue ha$'a de$ao al poder escri$ir el voca$ulario casi totalmente matemático y cient'fico directamente con f-rmulas sin complicaciones de lenguae de má#uina.
$e70nda 7eneraci4n? se enfati+- las a$stracciones algor'tmicas. 0o principal ahora era decirle a la má#uina lo #ue de$'a hacer.
Tercera 7eneraci4n se re#uirieron más tipos de datos. Se empe+- a soportar la a$stracci-n de datos. A partir de los a)os setenta se crearon más de dos millares de lenguaes de programaci-n de los cuales pocos so$revivieron.
To.olo7/a de los len70ajes de .riera y .rinci.ios de la se70nda 7eneraci4n, ).
*l $lo#ue principal de construcci-n de programas de esta ,poca era el s0b.ro7raa o .árra2o . *structura f'sica relativamente plana" consistente solo en datos glo$ales y su$programas.
*.
De.endencia de cada 0no de los s0b.ro7raas a los datos 7lobales . n error en una parte de estos programas puede tener un devastador efecto de propagaci-n de$ido a #ue las estructuras de datos glo$ales están e!puestas a todos los su$programas.
Di2/cil antener la inte7ridad del dise)o original en un sistema grande. 1. 0a entro./a es fácil de encontrar. *norme cantidad de acoplamientos entre su$programas y fluo de .
control retorcidos" amena+ando la fia$ilidad y claridad de la soluci-n del sistema.
To.olo7/a de los len70ajes de 2ines de la se70nda y .rinci.ios de la tercera 7eneraci4n, Kncorporaci-n del concepto de abstracci4n L.rocedientalM con tres consecuencias Pág. 11/38
Análisis y Diseño Orientado a Objetos – Grady Booch ).
mecanismos de .asaje de .aráetros"
*.
se asentaron los 20ndaentos de la .ro7raaci4n estr0ct0rada y
.
surgieron los 5todos de diseño estr0ct0rado con su$programas como $lo#ues f'sicos $ásicos para la construcci-n.
To.olo7/a de los len70ajes de 2inales de la tercera 7eneraci4n, Se incorpor- la idea del m-dulo compilado separadamente para tra$aar en e#uipos de desarrollo grande y dividir las tareas" pero #ue carec'an de reglas #ue e!igiesen una consistencia semántica entre los diferentes m-dulos escritos.
To.olo7/a de los len70ajes basados en objetos y orientados a objetos, ).
Surgieron primero los 5todos de diseño diri7ido .or los datos" #ue proporcionaron una apro!imaci-n disciplinada al hecho de reali+ar a$stracciones de datos en lenguaes orientados algor'tmicamente.
*. Aparecieron
teor/as acerca del conce.to de ti.o.
*stos dos conceptos fueron meorando poco a poco a trav,s de los millares de lenguaes #ue perecieron y culminaron representándose en lenguaes como SmalltalB" >$ect Pascal" :CC" :0>S" Ada y *iffel. *stos lenguaes son basados en objetos y orientados a objetos . *l $lo#ue $ásico de construcci-n de este tipo de lenguaes es el 4d0lo #ue representa una colecci-n l-gica de clases y o$etos en lugar de su$programas.
)0ndaentos del odelo de objetos, 0as clases y objetos son los $lo#ues $ásicos de construcci-n en este modelo. *l modelo de o$etos result- ser un concepto unificador de la informática" al aplicársele a las interfaces de usuario" $ases de datos y ar#uitecturas de computadores. @odo esto de$ido a los primeros puntos citados del primer cap'tulo la orientaci4n a objetos ay0da a cobatir la co.lejidad inherente a 0chos ti.os
de sisteas n objeto s4lo .0ede cabiar de estado" actuar" ser manipulado o permanecer en relaci-n con otros o$etos de maneras apropiadas. *!isten .ro.iedades in6ariantes 90e caracteri:an a 0n objeto y s0 co.ortaiento.
Pro7raaci4n orientada a objetos, Es un método de implementación en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son, todas ellas miembros de una jerarquía de clases unidas mediante relaciones de herencia. Si falta cual#uiera de estos elementos" el programa no es orientado a o$etos. 0a programaci-n sin herencia es e!pl'citamente no orientada a o$etos" se denomina .ro7raaci4n con ti.os abstractos de datos.
Un len70aje es orientado a objetos si y s4lo si Pág. 12/38
Análisis y Diseño Orientado a Objetos – Grady Booch 1. soporta o$etos #ue son a$stracciones de datos con un interfa+ de operaciones con nom$re y un estado local oculto 2. los o$etos tiene un tipo asociado clase 3. los tipos clase pueden heredar atri$utos de los supertipos superclases. Para un lenguae soportar la herencia significa #ue es posi$le e!presar relaciones Les unM entre tipos.
Basado en objeto es un lenguae #ue no ofrece soporte directo para la herencia.
Diseño orientado a objetos, Es un método de diseño que abarca el proceso de descomposición orientada a objetos y una notación para describir los modelos lógico y físico, así como los modelos esttico y dinmico del sistema que se diseña. *l soporte para la descomposici-n orientada a o$etos diferencia a este tipo de dise)o del estructurado ya #ue permite diagramar l-gicamente el sistema haciendo uso de a$stracciones de clases y o$etos.
Análisis orientado a objetos, Enfatiza la construcción de modelos del mundo real, utilizando una visión orientada a objetos. Es un método de anlisis que e!amina los requisitos desde la perspectiva de las clases y objetos que se encuentran en el vocabulario del dominio del problema. 0os productos del AOO sirven como modelos de los #ue se puede partir para un >>. 0os productos del DOO puede utili+arse como anteproyectos para la implementaci-n completa de un sistema utili+ando m,todos de POO.
2.2 - lementos del modelo de o,jetos.
Ti.os de .aradi7as de .ro7raaci4n, !stilo de .ro7raaci4n una forma de organi+ar programas so$re las $ases de alg%n modelo conceptual de programaci-n y un lenguae apropiado para #ue resulten claros los programas escritos en ese estilo.
!stilo de .ro7raaci4n
Abstracci4n 90e se 0sa
>rientado a procedimientos >rientado a o$etos >rientado a l-gica >rientado a reglas >rientados a restricciones
Algoritmos :lases y o$etos >$etivos" e!presados como cálculo de predicados ?eglas si6entonces ?elaciones invariantes
Abstracci4n !nca.s0laiento od0laridad "erar90/a Pág. 13/38
Análisis y Diseño Orientado a Objetos – Grady Booch
Ti.os =ti.i2icaci4n> Conc0rrencia Persistencia
Abstracci4n, "urge del reconocimiento de las similitudes entre ciertos objetos, situaciones o procesos del mundo real, y la decisión de concentrarse en esas similitudes e ignorar por el momento las diferencias. #na abstracción denota las características esenciales de un objeto que lo distinguen de todos los dems tipos de objeto y proporciona así fronteras conceptuales nítidamente definidas respecto a la perspectiva del observador. na a$stracci-n se centra en la visi-n e!terna del o$eto y por tanto sirve para separar el comportamiento esencial de un o$eto de su implantaci-n N barrera de abstracci4n.
Abstracci4n de entidades
n o$eto representa un modelo %til de una entidad del dominio del pro$lema o del dominio de la soluci-n.
Abstracci4n de acciones
n o$eto #ue proporciona un conunto generali+ado de operaciones y todas ellas desempe)an funciones del mismo tipo.
Abstracci4n de á90inas 6irt0ales
n o$eto #ue agrupa operaciones" todas ellas virtuales utili+adas por alg%n nivel superior o control" u operaciones #ue utili+an todas alg%n conunto de operaciones de nivel inferior.
Abstracci4n de coincidencia
n o$eto #ue almacena un conunto de operaciones #ue no tiene relaci-n entre s'.
n cliente es cual#uier o$eto #ue utili+a los recursos de otro o$eto denominado ser6idor . Se puede caracteri+ar el comportamiento de un o$eto considerando los servicios #ue presta a otros o$etos. Al conunto completo de operaciones #ue puede reali+ar un cliente so$re un o$eto" unto con las formas de invocaci-n u -rdenes #ue admite" se le denomina .rotocolo. n in6ariante es una condici-n $ooleana cuyo valor de verdad de$e mantenerse.
Precondiciones invariantes asumidos por la operaci-n Postcondiciones invariantes satisfechos por la operaci-n. Si se viola una precondici-n significa #ue un cliente no ha satisfecho su parte del convenio" y por tanto el servidor no puede proceder con fia$ilidad. Si se viola una postcondici-n significa #ue un servidor no ha llevado a ca$o su parte del contrato" y por tanto sus clientes ya no pueden seguir confiando en el comportamiento del servidor.
Pág. 14/38
Análisis y Diseño Orientado a Objetos – Grady Booch na Le8ce.ci4nM es una indicaci-n de #ue no se ha satisfecho alg%n invariante. @odas las a$stracciones tiene propiedades tanto estáticas como dináicas.
Objeto archivo en un disco. Pro.iedades !$TTICA$ nom$re" tama)o" contenido. alores de las .ro.iedades DI+ICO$ su nom$re" su tama)o y su contenido pueden cam$iar.
!nca.s0laiento, !l si7ni2icado del enca.s0laiento, inguna parte de un sistema compleo de$e depender de los detalles internos de otras partes. 9ientras la a$stracci-n ayuda a las personas a pensar so$re lo #ue están haciendo" el encapsulamiento permite #ue los cam$ios hechos en los programas sean fia$les con el menor esfuer+o. *l encapsulamiento se consigue a menudo mediante la oc0ltaci4n de in2oraci4n" la estructura de un o$eto está oculta as' como la implantaci-n de sus m,todos. LPara #ue la a$stracci-n funcione" la implementaci-n de$e estar encapsuladaM *n la práctica cada clase de$e tener dos partes un interfa+ y una implementaci-n.
Inter2a: captura s-lo su 6ista e8terna" a$arcando la a$stracci-n #ue se ha hecho del comportamiento com%n de todas las instancias de esa clase.
I.leentaci4n o implantaci-n comprende la re.resentaci4n de la abstracci4n as/ coo los ecanisos #ue consiguen el comportamiento deseado. El encapsulamiento es el proceso de almacenar en un mismo compartimento los elementos de una abstracción que constituyen su estructura y su comportamiento$ sirve para separar el interfaz contractual de una abstracción y su implementación. *sos elementos encapsulados se llaman L secretos de 0na abstracci4nM. 0a ocultaci-n es un concepto relati6o lo #ue está oculto a un nivel de a$stracci-n puede representar la visi-n e!terna a otro nivel de a$stracci-n.
od0laridad, !l si7ni2icado de la od0laridad, L*l acto de fragmentar un programa en componentes individuales puede reducir su compleidad en alg%n gradoM. *sto es una ra+-n %til" pero más poderosa es la ustificaci-n de #ue la fragmentaci-n crea 0na serie de 2ronteras bien de2inidas y doc0entadas dentro del .ro7raa. *l uso de m-dulos es esencial para ayudar a manear la compleidad. 0a modulari+aci-n consiste en dividir un programa en m-dulos #ue pueden compilarse separadamente" pero #ue tienen cone!iones con otros m-dulos. 0as cone!iones entre m-dulos son las suposiciones #ue cada m-dulo hace acerca de todos los demás. 0a decisi-n so$re el conunto adecuado de m-dulos para determinado pro$lema es casi tan dif'cil como decidir so$re el conunto adecuado de a$stracciones. *n el dise)o estructurado tradicional" la modulari+aci-n persigue ante todo el agrupamiento significativo de su$programas" utili+ando los criterios de acoplamiento y cohesi-n. *n el dise)o orientado a o$etos" el Pág. 1/38
Análisis y Diseño Orientado a Objetos – Grady Booch pro$lema presenta diferencias sutiles" la tarea es decidir d4nde e.a90etar 2/sicaente las clases y objetos a partir de la estructura l-gica del dise)o" y ,stos son claramente diferentes de los su$programas. *l o$etivo de fondo de la descomposici-n en m-dulos es la reducci-n del coste del soft(are al permitir #ue los m-dulos se dise)en y revisen independientemente. 0a estructura de cada m-dulo de$er'a ser lo $astante simple como para ser comprendida en su totalidad. 0os detalles de un sistema" #ue pro$a$lemente cam$ien de forma independiente" de$er'an ser secretos en m-dulos separadosG las %nicas suposiciones #ue de$er'an darse entre m-dulos son a#uellas cuyo cam$io se considera impro$a$le.
"erar90/a, !l si7ni2icado de la jerar90/a, 0a abstracci4n es algo $ueno" pero e!cepto en las aplicaciones más triviales" puede ha$er muchas más a$stracciones diferentes de las #ue se pueden comprender simultáneamente. *l enca.s0laiento ayuda a manear esta compleidad ocultando la visi-n interna de las a$stracciones. 0a od0laridad tam$i,n ayuda" ofreciendo una v'a para agrupar a$stracciones relacionadas l-gicamente. %a jerarquía es una ordenación o clasificación de abstracciones. 0as dos erar#u'as más importantes en un sistema compleo son su estructura de clases la erar#u'a L de clasesM y su estructura de o$etos la erar#u'a L de .artesM. 0a herencia es la erar#u'a de clases más importante elemento esencial en los sistemas orientados a o$etos. ásicamente la herencia define una relaci-n entre clases" en la #ue una clase comparte la estructura de comportamiento definida en una o más clases lo denominado herencia si.le o lti.le. na su$clase hereda de una o más superclases. @'picamente una su$clase aumenta o redefine la estructura y el comportamiento de sus superclases. Semánticamente la herencia denota una relaci-n de tipo Les 0nM. A medida #ue se desarrolla una erar#u'a de herencias" la estructura y comportamiento comunes a diferentes clases tenderá a migrar hacia superclases comunes.
erencia E jerar90/a de 7enerali:aci4n F es.eciali:aci4n,
0as s0.erclases representan a$stracciones generali+adas
0as s0bclases representan especiali+aciones en la #ue los campos y m,todos de las superclases sufren adiciones" modificaciones o incluso ocultaciones. De este modo la herencia permite declarar las a,stracciones con economa de epresi+n. Sin herencia cada clase ser'a una unidad independiente" desarrollada partiendo de cero.
Pág. 15/38
Análisis y Diseño Orientado a Objetos – Grady Booch 0a herencia posi$ilita la de2inici4n de n0e6o so2t3are de la misma forma #ue se presenta un nuevo concepto a un reci,n llegado" comparándolo con lago #ue ya le resulte familiar. L0a a$stracci-n de datos intenta proporcionar una $arrera opaca tras de la cual se ocultan los m,todos y el estadoG la herencia re#uiere a$rir ese interfa+ en cierto grado y puede permitir el acceso a m,todos y al estado sin a$stracci-nM Para la herencia lti.le primero se idean clases #ue capturen independientemente las propiedades $uscadas se las llama clases aditivas y luego se las une en una su$clase.
"erar90/a de a7re7aci4n son relaciones L.arte deM. *sto permite ha$lar de ni6eles de abstracci4n. iveles más altos o más $aos para indicar la dependencia de una clase a otra. na clase está a nivel más alto de a$stracci-n #ue cual#uiera de las clases #ue constituyen su implantaci-n.
La cobinaci4n de herencia con a7re7aci4n es 0y .otente, 0a agregaci-n permite el agrupamiento f'sico de estructuras relacionadas l-gicamente" y la herencia permite #ue estos grupos de aparici-n frecuente se reutilicen con facilidad en diferentes a$stracciones.
Ti.os, Ti.i2icaci4n, !l si7ni2icado de los ti.os, n tipo es una caracteri+aci-n precisa de las propiedades estructurales o de comportamiento #ue comparten una serie de entidades. /Las clases implementan a los tipos0 $o son eactamente lo mismo. %os tipos son la puesta en vigor de la clase de los objetos, de modo que los objetos de tipos distintos no pueden intercambiarse o, como mucho, pueden intercambiarse sólo de formas muy restringidas. n lenguae de programaci-n determinado puede tener compro$aci-n estricta de tipos" compro$aci-n d,$il de tipos" o incluso no tener tipos" y a%n as' ser considerado como orientado a o$etos.
Co.robaci4n estricta de ti.os no puede llamarse a una operaci-n so$re un o$eto a menos #ue en la clase o superclases del o$eto est, definido el prototipo de esa operaci-n. @odas las e!presiones son consistentes respecto al tipo. *n lenguaes con compro$aci-n estricta de tipos puede detectarse en tiempo de compilaci-n cual#uier violaci-n a la concordancia de tipos.
Co.robaci4n d5bil de ti.os hacer cumplir la clase de un o$eto" lo #ue previene el intercam$io de o$etos de diferentes tipos o" como mucho" permite este intercam$io de maneras muy limitadas.
Bene2icios del 0so de ti.os estrictos? •
•
sin la compro$aci-n de tipos un programa puede estallar de forma misteriosa en eecuci-n en la mayor'a de los lenguaes. en la mayor'a de los sistemas" el ciclo editar6compilar6depurar es tan tedioso #ue la compro$aci-n temprana de errores es indispensa$le.
•
la declaraci-n de tipos ayuda a documentar los programas.
•
la mayor'a de los compiladores pueden generar un c-digo más eficiente si se han declarado tipos. Pág. 17/38
Análisis y Diseño Orientado a Objetos – Grady Booch Li7ad0ra estática y dináica, a. Li7ad0ra estática o te.rana significa #ue se fian los tipos de todas las varia$les y e!presiones en tiempo de compilaci-nG b.
Li7ad0ra dináica o tard/a los tipos de las varia$les y e!presiones no se conocen hasta el tiempo de eecuci-n.
Polior2iso representa un concepto de teor'a de tipos" en el #ue un solo nom$re tal como una declaraci-n de varia$le puede denotar o$etos de muchas clases diferentes #ue se relacionan por alguna superclase com%n de operaciones. *l opuesto del polimorfismo es el onoor2iso.
Conc0rrencia, !l si7ni2icado de la conc0rrencia, ilo de control un solo proceso. *s com%n tener #ue manear muchos eventos diferentes simultáneamente. n solo proceso es la ra'+ a partir de la cual se producen acciones dinámicas independientes dentro del sistema. 0os sistemas #ue se eecutan en m%ltiples :Ps permiten hilos de control verdaderamente concurrentes" mientras #ue los sistemas #ue se eecutan en una sola :P s-lo pueden conseguir la ilusi-n de hilos concurrentes de control" normalmente mediante alg%n algoritmo de tiempo compartido.
Proceso .esado a#uel t'picamente maneado de forma independiente por el sistema operativo de destino" y a$arca su propio espacio de direcciones.
Proceso li7ero suele e!istir dentro de un solo proceso del sistema operativo en compa)'a de otros procesos ligeros" #ue comparten el mismo espacio de direcciones. ise)ar un sistema #ue a$ar#ue m%ltiples hilos de control es muy dif'cil ya #ue hay #ue preocuparse de pro$lemas tales como inter$lo#ueo" $lo#ueo activo" inanici-n" e!clusi-n mutua y condiciones de competencia. 9ientras #ue la P>> se centra en la a$stracci-n de datos" encapsulamiento y herencia" la concurrencia se centra en la a$stracci-n de procesos y la sincroni+aci-n. *l o$eto es un concepto #ue unifica estos dos puntos de vista distintos cada o$eto e!tra'do de una a$stracci-n del mundo real puede representar un hilo separado de control una a$stracci-n de un proceso. @ales o$etos se llaman acti6os. *n un sistema >> se puede conceptuali+ar el mundo como un conunto de o$etos cooperativos" algunos de los cuales son activos y sirven as' como centros de la actividad independiente. %a concurrencia es la propiedad que distingue un objeto activo de uno que no est activo. na ve+ #ue se introduce la concurrencia a un sistema" hay #ue tener en cuenta como los o$etos activos sincroni+an sus actividades con otros" as' como con o$etos puramente secuenciales.
Persistencia, !l si7ni2icado de la .ersistencia, n o$eto de soft(are ocupa una cierta cantidad de espacio" y e!iste durante una cierta cantidad de tiempo.
Análisis y Diseño Orientado a Objetos – Grady Booch ).
?esultados transitorios en la e6al0aci4n de e8.resiones.
*.
ariables locales en la activaci-n de procedimientos. ariables .ro.ias" 7lobales y eleentos del ont/c0lo cuya duraci-n difiere de su ám$ito. atos #ue e!isten entre ejec0ciones de 0n .ro7raa. atos #ue e!isten entre 6arias 6ersiones de 0n .ro7raa. atos #ue sobre6i6en al .ro7raa.
. 1. 5. !.
0a persistencia a$arca algo más #ue la mera duraci-n de los datos. *n las $ases de datos orientadas a o$etos" no s-lo persiste el estado del o$eto" sino #ue su clase de$e trascender tam$i,n a cual#uier programa individual" de forma #ue todos los programas interpreten de la misma manera el estado almacenado. *sto hace #ue sea un reto evidente el mantener la integridad de una $ase de datos a medida #ue crece" particularmente si hay #ue cam$iar la clase de un o$eto. %a persistencia es la propiedad de un objeto por la que su e!istencia trasciende el tiempo &es decir, el objeto contin'a e!istiendo después de que su creador deja de e!istir( y ) o el espacio *es decir, la posición del objeto varía con respecto al espacio de direcciones en el que fue creado(.
2.3 - &plicaci+n del modelo de o,jetos.
Bene2icios del odelo de objetos, *l uso del modelo de o$etos conduce a la construcci-n de sistemas #ue incluyen los cinco atri$utos de los sistemas compleos $ien estructurados. 1 Ayuda además a e!plotar la potencia e!presiva de los lenguaes de programaci-n $asados en o$etos y orientados a o$etos. Se han logrado meoras significativas con por eemplo" una pi+ca de a$stracci-n de datos a)adida donde era claramente %til" o apreciando las erar#u'as de clases en el proceso de dise)o. 2 Promueve la reutili+aci-n no s-lo de soft(are" sino de dise)os enteros" conduciendo a la creaci-n de marcos de desarrollo de aplicaciones reutili+a$les. 0os sistemas orientados a o$etos son frecuentemente más pe#ue)os #ue sus implantaciones e#uivalente no orientadas a o$etos. Significa escri$ir y mantener menos c-digo aparte de una reutili+aci-n de soft(are #ue reflea $eneficios de coste y planificaci-n. 3 Produce sistemas #ue se construyen so$re formas intermedias esta$les" son más fle!i$les al cam$io. @ienen una meor evoluci-n en el tiempo y mayor ciclo de vida. 4 ?educe los riesgos inherentes al desarrollo de sistemas compleos. 0a integraci-n se distri$uye a lo largo del ciclo vital en ve+ de suceder como un evento principal. ?esulta atractivo para el funcionamiento de la cognici-n humana" por#ue muchas personas #ue no tiene ni idea de c-mo funciona un computador encuentran $astante natural la idea de los sistemas orientados a o$etos. *l modelo de o$etos ha demostrado ser aplica$le a una amplia variedad de dominios de pro$lema. > puede #ue sea el %nico m,todo #ue puede emplearse para atacar la compleidad innata a muchos sistemas grandes. Sin em$argo" puede no ser aconsea$le en dominios" no por ra+ones t,cnicas sino por cuestiones como falta de personal con entrenamiento adecuado o $uenos entornos de desarrollo.
Pág. 1F/38
Análisis y Diseño Orientado a Objetos – Grady Booch R!"#$ – %&'I("L) 2
0a madure+ de la ingenier'a del soft(are ha conducido al desarrollo de m,todos de análisis" dise)o y programaci-n orientados a o$etos" todos los cuales tienen la misi-n de resolver los pro$lemas de la programaci-n a gran escala.
*!isten varios paradigmas de programaci-n distintos orientados a procedimientos" orientados a o$etos" orientados a l-gica" orientados a reglas y orientados a restricciones.
na a$stracci-n denota las caracter'sticas esenciales de un o$eto #ue lo distinguen de todos los demás tipos de o$eto" y proporciona as' fronteras conceptuales definidas con nitide+" desde la perspectiva del o$servador.
*l encapsulamiento es el proceso de compartimentar los elementos de una a$stracci-n #ue constituyen su estructura y comportamiento. Sirve para separa el interfa+ HcontractualI de una a$stracci-n y su implantaci-n.
0a modularidad es la propiedad de un sistema #ue ha sido descompuesto en un conunto de m-dulos cohesivos y d,$ilmente acoplados.
0a erar#u'a es una graduaci-n u ordenaci-n de a$stracciones.
0os tipos son el resultado de imponer la clase de los o$etos" de forma #ue los o$etos de tipos diferentes no pueden intercam$iarse o" como mucho" pueden hacerlo de formas muy restrictivas.
0a concurrencia es la propiedad #ue distingue un o$eto activo de uno #ue no está activo.
0a persistencia es la propiedad de un o$eto mediante la cual su e!istencia perdura en el tiempo y/o el espacio.
Pág. 2J/38
Análisis y Diseño Orientado a Objetos – Grady Booch
Ca./t0lo % – Clases y Objetos 0as clases y los o$etos son los $lo#ues $ásicos de construcci-n de un sistema de soft(are compleo.
3.1 - La naturalea de los o,jetos.
05 es y 905 no es 0n objeto, A trav,s del concepto de o$eto un ni)o llega a darse cuenta de #ue los o$etos tienen una permanencia e identidad además de cuales#uiera operaciones so$re ellos. esde la perspectiva de la cognici-n humana un o$eto es cuales#uiera de las siguientes cosas
na cosa tangi$le y / o visi$le.
Algo #ue puede comprenderse intelectualmente.
Algo hacia lo #ue se dirige un pensamiento o acci-n.
n o$eto modelo alguna parte de la realidad" y es por tanto algo #ue e!iste en el tiempo y el espacio. 0os o$etos del mundo real no son el %nico tipo de o$eto de inter,s para el desarrollo del soft(are. >tros tipos importantes de o$etos son invenciones del proceso de dise)o cuyas cola$oraciones con otros o$etos semeantes sirven como mecanismos para desempe)ar alg%n comportamiento de nivel superior.
Un objeto re.resenta 0n eleento@ 0nidad o entidad indi6id0al e identi2icable@ ya sea real o abstracta@ con 0n .a.el bien de2inido en el doinio del .roblea, n o$eto es cual#uier cosa #ue tenga una frontera definida con nitide+. Algunos o$etos pueden tener l/ites conce.t0ales .recisos" pero a%n as' pueden re.resentar e6entos o .rocesos intan7ibles. Algunos o$etos pueden ser tan7ibles y a%n as' tener 2ronteras 2/sicas di20sas o$etos como los r'os" la nie$la" etc.. #n o,jeto tiene estado, comportamiento e identidad$ la estructura y comportamiento de objetos similares estn definidos en su clase com'n$ los términos instancia y o,jeto son intercam,ia,les .
!stado,
$eántica. *l comportamiento de un o$eto está influenciado por su historia el orden en el #ue se opera so$re un o$eto es importante. 0a ra:4n .ara este co.ortaiento de.endiente del tie.o y los e6entos es la e8istencia de 0n estado interior del objeto. > sea #ue El estado de un objeto abarca todas las propiedades *normalmente estticas( del mismo ms los valores actuales *normalmente dinmicos( de cada una de esas propiedades. na propiedad es una caracter'stica distintiva o inherente" un rasgo o cualidad #ue contri$uye a hacer #ue un o$eto sea ese o$eto y no otro. @odas las propiedades tiene alg%n valor. *ste valor puede ser una mera cantidad" o puede denotar a otro o$eto. *sas cantidades son intemporales" inmuta$les y no instanciadasG mientras #ue los objetos e!isten en el tiempo" son modifica$les" tienen estado" son instanciados y pueden crearse" destruirse y compartirse. *l hecho de #ue todo o$eto tiene un estado implica #ue todo o$eto toma cierta cantidad de espacio" ya sea en el mundo f'sico o en la memoria del computador. Pág. 21/38
Análisis y Diseño Orientado a Objetos – Grady Booch Puede decirse #ue todos los objetos de 0n sistea enca.s0lan al7n estado" y #ue todo el estado de 0n sistea está enca.s0lado en objetos. Sin em$argo" encapsular el estado de un o$eto es un punto de partido pero no es suficiente para permitir #ue se capturen todos los designios de las a$stracciones #ue se descu$ren e inventan durante el desarrollo. Por esta ra+-n" hay 90e considerar tabi5n c4o se co.ortan los objetos.
Co.ortaiento, !l si7ni2icado del co.ortaiento, ing%n o$eto e!iste de forma aislada. 0os o$etos reci$en acciones y act%an so$re otros o$etos. El comportamiento es cómo act'a y reacciona un objeto, en términos de sus cambios de estado y paso de mensajes. +epresenta su actividad visible y comprobable e!teriormente. na operaci-n es una acci-n #ue un o$eto efect%a so$re otro con el fin de provocar una reacci-n. 0os t,rminos o.eraci4n y ensaje son intercam$ia$les. *n la mayor'a de los lenguaes de programaci-n orientados a o$etos" las operaciones #ue los clientes pueden reali+ar so$re un o$eto suelen declararse como 5todos o funci-n miem$ro en :CC por eemplo. 0a definici-n de co.ortaiento tam$i,n recoge #ue el estado de un o$eto afecta asimismo a su comportamiento. *l comportamiento de un o$eto es funci-n de su estado as' como tam$i,n de la operaci-n #ue se reali+a so$re ,l" teniendo algunas operaciones el efecto lateral de modificar el estado del o$eto. El estado de un objeto representa los resultados acumulados de su comportamiento. na operaci-n denota un servicio #ue una clase ofrece a sus clientes. 0os tres tipos más comunes de operaciones so$re un o$eto son
odi2icador na operaci-n #ue altera el estado de un o$eto. na operaci-n #ue accede al estado de un o$eto" pero no altera ese estado. b. $elector na operaci-n #ue permite acceder a todas las partes de un o$eto en alg%n orden c. Iterador a.
perfectamente esta$lecido.
Constr0ctor na operaci-n #ue crea un o$eto y / o iniciali+a su estado. na operaci-n #ue li$era el estado de un o$eto y / o destruye el propio o$eto. e. Destr0ctor d.
Holes y res.onsabilidades, @odos los m,todos y su$programas li$res asociados a un o$eto concreto forman su protocolo. *l protocolo define as' la envoltura del comportamiento admisi$le en un o$eto" englo$ando la visi-n estática y dinámica completa del mismo. Para la mayor'a de las a$stracciones es %til dividir este protocolo en grupos l-gicos de comportamiento. *stas colecciones" #ue constituyen una partici-n del espacio de comportamiento de un o$eto" denotan papeles #ue un o$eto puede desempe)ar. n papel es una máscara #ue se pone un o$eto y por tanto define un contrato entre una a$stracci-n y sus clientes. 0as responsa$ilidades de un o$eto Lincluyen dos elementos claveM el conocimiento #ue un o$eto mantiene y las acciones #ue puede llevar a ca$o. Las res.onsabilidades están encainadas a transitir 0n sentido del .ro.4sito de 0n objeto y de s0 l07ar en el sistea . 0as responsa$ilidades de un o$eto son todos los servicios #ue proporciona para todos los contratos #ue soporta.
Los objetos coo á90inas, 0a e!istencia de un estado significa #ue el orden en el #ue se invocan las operaciones es importante. *sto da lugar a la idea de #ue cada o$eto es como una pe#ue)a má#uina independiente. Se pueden entonces Pág. 22/38
Análisis y Diseño Orientado a Objetos – Grady Booch clasificar los o$etos como activos o pasivos. n objeto acti6o es a#uel #ue comprende su propio hilo de control" mientras #ue un objeto .asi6o no. 0os o$etos activos suelen ser aut-nomos" pueden e!hi$ir alg%n comportamiento sin #ue ning%n otro o$eto opere so$re ellos. 0os pasivos" s-lo pueden padecer un cam$io de estado cuando se act%a e!pl'citamente so$re ellos.
Identidad,
$eántica, %a identidad es aquella propiedad de un objeto que lo distingue de todos los dems objetos. 0a mayor'a de los lenguaes de programaci-n y $ases de datos utili+an nom$res de varia$le para distinguir o$etos temporales" me+clando la posi$ilidad de acceder a ellos con su identidad. *l fracaso en reconocer la diferencia entre el nom$re del o$eto y el o$eto en s' mismo es fuente de muchos errores en la programaci-n orientada a o$etos.
Co.ia@ asi7naci4n e i70aldad, 0a compartici-n estructural se da cuando la identidad de un o$eto reci$e un alias a trav,s de un segundo nom$re. *s una operaci-n de co.ia. 0a asi7naci4n es del mismo modo en general una operaci-n de copia. *l pro$lema de la i70aldad está en relaci-n muy estrecha con el de la asignaci-n. Aun#ue se presenta como un concepto simple la igualdad puede presentar una de dos cosas. Primero" puede significar #ue dos nom$res designan el mismo o$eto y segundo" puede significar #ue dos nom$res designan o$etos distintos cuyos estados son iguales.
!s.acio de 6ida de 0n objeto, *l tiempo de vida de un o$eto se e!tiende desde el momento en #ue se crea por primera ve+ y consume as' espacio por primera ve+ hasta #ue ese espacio se recupera. Para crear e!pl'citamente un o$eto hay #ue declararlo o $ien asignarle memoria dinámicamente.
3.2 - Relaciones entre o,jetos.
Ti.os de relaciones, 0os o$etos contri$uyen al comportamiento de un sistema cola$orando con otros. *n lugar de un procesador triturador de $its #ue golpea y sa#uea estructuras de datos" tenemos un universo de o$etos $ien educados #ue cort,smente solicitan a los demás #ue lleven a ca$o sus diversos deseos. 0a relaci-n entre dos o$etos cuales#uiera a$arca las suposiciones #ue cada uno reali+a acerca del otro" incluyendo #u, operaciones pueden reali+arse y #u, comportamiento se o$tiene.
*nlaces Agregaci-n
!nlaces, na cone!i-n f'sica o conceptual entre o$etos. n o$eto cola$ora con otros o$etos a trav,s de sus enlaces con ,stos. n enlace denota la asociaci-n espec'fica por la cual un o$eto el cliente utili+a los servicios de otro o$eto el suministrador o servidor" o a trav,s de la cual un o$eto puede comunicarse con otro. Pág. 23/38
Análisis y Diseño Orientado a Objetos – Grady Booch *l paso de mensaes entre dos o$etos es unidireccional" aun#ue ocasionalmente puede ser $idireccional. :omo participante de un enlace" un o$eto puede desempe)ar uno de tres papeles ).
Actor n o$eto #ue puede operar so$re otros o$etos pero nunca se opera so$re ,l por parte de otros o$etosG en algunos conte!tos" los t,rminos o$eto activo y actor son e#uivalentes.
n o$eto #ue nunca opera so$re otros o$etosG s-lo otros o$etos operan so$re ,l. $er6idor . A7ente n o$eto #ue puede operar so$re otros o$etos y además otros o$etos pueden operar *.
so$re ,lG un agente se crea normalmente para reali+ar alg%n tra$ao en nom$re de un actor u otro agente.
isibilidad, :onsid,rense dos o$etos A y con un enlace entre am$os. Para #ue A pueda enviarle un mensae a " de$e ser visi$le para A de alg%n modo. urante el análisis del pro$lema se puede ignorar la visi$ilidad" pero una ve+ #ue se comien+a a idear implantaciones concretas hay #ue considerarla a trav,s de los enlaces" por#ue las decisiones en este punto dictan el ám$ito y acceso de los o$etos a cada lado del enlace.
!l objeto ser6idor es 7lobal .ara el cliente,
•
!l objeto ser6idor es 0n .aráetro de al70na o.eraci4n del cliente,
•
!l objeto ser6idor es .arte del objeto cliente,
•
!l objeto ser6idor es 0n objeto declarado localente en al70na o.eraci4n del cliente,
$incroni:aci4n, Siempre #ue un o$eto pasa un mensae a otro a trav,s de un enlace se dice #ue los dos o$etos están sincroni:ados. Para o$etos de una aplicaci-n completamente secuencial" esta sincroni+aci-n suele reali+arse mediante una simple invocaci-n de m,todos. Sin em$argo en presencia de m%ltiples hilos de control" los o$etos re#uieren un paso de mensaes más sofisticado.
$ec0encial
*.
i7ilado
.
$/ncrono
0a semántica del o$eto pasivo está garanti+ada s-lo en presencia de un %nico o$eto activo simultáneamente. 0a semántica del o$eto pasivo está garanti+ada en presencia de m%ltiples hilos de control" pero los clientes activos de$en cola$orar para lograr la e!clusi-n mutua. 0a semántica del o$eto pasivo está garanti+ada en presencia de m%ltiples hilos de control" y el servidor garanti+a la e!clusi-n mutua.
A7re7aci4n, 9ientras #ue los enlaces denotan relaciones de igual6a6igual o cliente / servidor" la agregaci-n denota una erar#u'a todo / parte" con la capacidad de ir desde el todo tam$i,n llamado el agregado hasta sus partes conocido tam$i,n como atri$utos. 0a agregaci-n puede o no denotar contenci-n f'sica. *!isten claros pros y contras entre los enlaces y la agregaci-n. 0a agregaci-n es a veces meor por#ue encapsula partes y secretos del todo. A veces son meores los enlaces por#ue permiten acoplamientos más d,$iles entre los o$etos. Por implicaci-n" un o$eto #ue es atri$uto de otro tiene un enlace a su agregado. A trav,s de este enlace" el agregado puede enviar mensaes a sus partes.
Pág. 24/38
Análisis y Diseño Orientado a Objetos – Grady Booch
3.3 - La naturalea de una clase.
05 es y 905 no es 0na clase, 0os conceptos de clase y o$eto están estrechamente ligados pero hay #ue sa$er #ue mientras un o$eto es una entidad concreta #ue e!iste en el tiempo y el espacio" una clase representa s-lo una a$stracci-n" la LesenciaM de un o$eto lo #ue representa las caracter'sticas comunes de todos los o$etos #ue pertenecen a una clase. #na clase es un conjunto de objetos que comparten una estructura com'n y un comportamiento com'n. n solo o$eto no es más #ue una instancia de una clase. n o$eto no es una clase" aun#ue una clase s' puede ser un o$eto. 0a clase es un veh'culo necesario" pero no suficiente" para la descomposici-n.
Inter2a: e i.leentaci4n, n o$eto es una entidad concreta #ue desempe)a alg%n papel en el sistema glo$al y una clase captura la estructura y comportamiento comunes a todos los o$etos relacionados. As'" una clase sirve como una especie de contrato #ue vincula a una a$stracci-n y todos sus clientes. *sta visi-n de la programaci-n como un contrato lleva a distinguir entre la visi-n e!terna y la visi-n interna de una clase. *l inter2a: de una clase proporciona su visi-n e!terna y por tanto enfati+a la a$stracci-n a la ve+ #ue oculta su estructura y los secretos de comportamiento. Se compone principalmente de todas las operaciones aplica$les a instancias de esta clase" pero tam$i,n puede incluir la declaraci-n de otras clases" constantes" varia$les" e!presiones" seg%n se necesiten para completar la a$stracci-n. Por contraste" la i.leentaci4n es su visi-n interna #ue englo$a los secretos de su comportamiento. 0a implementaci-n de una clase se compone principalmente de la implementaci-n de todas las operaciones definidas en el interfa+ de la misma. *l interfa+ puede dividirse en na declaraci-n accesi$le a todos los clientes. Pblico Pu$lic *. Prote7ida Protected na declaraci-n accesi$le s-lo a la propia clase" sus su$clases" y sus ).
clases amigas. .
Pri6ada Private
na declaraci-n accesi$le s-lo a la propia clase y sus clases amigas.
Ciclo de 6ida de las clases, Se puede llegar a la comprensi-n del comportamiento de una clase simple con s-lo comprender la semántica de sus distintas operaciones p%$licas de forma aislada. Sin em$argo" el comportamiento de clases más interesantes implica la interacci-n de sus diversas operaciones a lo largo del tiempo de vida de cada una de sus instancias.
3.4 - Relaciones entre clases.
Ti.os de relaciones, 0as clases" al igual #ue los o$etos no e!isten aisladamente. Para un domino de pro$lema espec'fico las a$stracciones clave suelen estar relacionadas por v'as muy diversas e interesantes formando la estructura de clases del dise)o. Se esta$lecen relaciones entre clases por#ue a.
la relaci-n podr'a indicar alg%n tipo de compartici-n.
$.
la relaci-n podr'a indicar alg%n tipo de cone!i-n semántica.
*!isten tres tipos $ásicos de relaciones entre clases Pág. 2/38
Análisis y Diseño Orientado a Objetos – Grady Booch 7enerali:aci4n F es.eciali:aci4nG denota una relaci-n Les unM. *. todo F .arteG denota una relaci-n Lparte deM. . asociaci4nG denota alguna dependencia semántica entre clases de otro modo independientes. ).
Helaciones 1 Asociaci-n 2
Asociaci4n, na asociaci-n s-lo denota una dependencia semántica y no esta$lece la direcci-n de esta dependencia a menos #ue se diga lo contrario" una asociaci-n implica relaci-n $idireccional ni esta$lece la forma e!acta en #ue una clase se relaciona con otra s-lo puede denotarse esta semántica nom$rando el papel #ue desempe)a cada clase en relaci-n con la otra.
Cardinalidad, *!isten tres tipos de :ardinalidad en una asociaci-n 1.
no a uno
2.
no a muchos
3. 9uchos a muchos.
erencia, 0a herencia es una relaci-n entre clases en la #ue una clase comparte la estructura y / o comportamiento definidos en una herencia si.le o más clases herencia lti.le. 0a clase de las #ue otras heredan se llama s0.erclase. 0a clase #ue hereda de otra o más clases se denomina su$clase. 0a herencia define por tanto una erar#u'a Lde tiposM entre clases" en las #ue una su$clase hereda de una o más superclases. adas las clases A y " si A no Les unM tipo de " entonces A no de$er'a ser una su$clase de . 0a capacidad de un lenguae para soportar o no este tipo de herencia distingue a los lenguaes de programaci-n orientados a o$etos de los lenguaes $asados en o$etos. na su$clase generalmente aumenta o restringe la estructura y comportamiento e!istentes en sus superclases. na su$clase #ue aumenta sus superclases se dice #ue utili+a herencia .or e8tensi4n" mientras #ue la su$clase #ue restringe a sus superclases se dice #ue utili+a herencia .or restricci4n. Se espera #ue algunas de las clases generadas tengan instancias y #ue otras no las tengan frecuentemente las intermedias. 0as clases sin instancias se llaman clases abstractas. 0as clases más especiali+adas se llaman clases hoja o clases concretas. 0a clase más generali+ada en una estructura de clases se llama clase base. na clase cual#uiera tiene t'picamente dos tipos de clientes
A, Instancias, Pág. 25/38
Análisis y Diseño Orientado a Objetos – Grady Booch B, $0bclases, Para comprender el significado de una clase particular muchas veces hay #ue estudiar todas sus superclases" a veces incluyendo sus vistas internas.
Polior2iso si.le, *s un concepto de teor'a de tipos en el #ue un nom$re puede denotar instancias de muchas clases diferentes en tanto y en cuanto est,n relacionadas por alguna superclase com%n. :ual#uier o$eto denotado por este nom$re es" por tanto" capa+ de responder a alg%n conunto de operaciones de diversas formas.
$obrecar7a es una forma de llamar a un polimorfismo por el cual s'm$olos como el LCM podr'an definirse para significar cosas distintas. *l polimorfismo es más %til cuando e!isten muchas clases con los mismos protocolos.
erencia lti.le, :on herencia simple" cada su$clase tiene e!actamente una superclase. *sto limita la aplica$ilidad de las clases predefinidas" haciendo muchas veces necesario duplicar c-digo. 0as colisiones de nom$res pueden aparecer cuando dos o más superclases diferentes utili+an el mismo nom$re para alg%n elemento de sus interfaces" como las varia$les de instancias o los m,todos. >tro pro$lema es la herencia repetida" #ue es lo #ue sucede cuando una clase es un antecesor de otra por más de una v'a. 0a e!istencia de herencia m%ltiple plantea un estilo de clases" llamadas aditi6as por#ue se me+clan" se com$inan pe#ue)as clases para construir clases con un comportamiento más sofisticado. na clase aditiva es sintácticamente id,ntica una normal" pero su intenci-n es distinta. *l prop-sito de tal clase es %nicamente a)adir funciones a otras clases. o pueden e!istir por s' mismas" se usan para aumentar el significado de otra clase. na clase #ue se construye principalmente heredando de clases aditivas y no a)ade su propia estructura o comportamiento se llama clase a7re7ada.
A7re7aci4n, 0as relaciones de agregaci-n entre clases tienen un paralelismo directo con las relaciones de agregaci-n entre los o$etos correspondientes a esas clases.
Contenci4n 2/sica, Contenci4n .or 6alor un tipo de contenci-n f'sica #ue significa #ue el o$eto no e!iste independientemente de la instancia #ue lo encierra. *l tiempo de vida de am$os o$etos está en 'ntima cone!i-n.
Contenci4n .or re2erencia tipo de agregaci-n menos directo. *n este caso" la clase sigue denotando al todo" y una de sus partes sigue siendo una instancia de la clase" aun#ue ahora hay #ue acceder a esa parte indirectamente. Sus tiempos de vida no están tan estrechamente empareados. 0a agregaci-n esta$lece una direcci-n en la relaci-n todo / parte. 0a contenci-n por valor no puede ser c/clica am$os o$etos no pueden ser f'sicamente partes del otro" aun#ue la contenci-n por referencia s' puede serlo. 0a herencia m%ltiple se confunde a menudo con la agregaci-n. :uando se considera la herencia versus agregaci-n" recu,rdese aplicar la prue$a correspondiente para am$as. Si no se puede afirmar sinceramente #ue e!iste una relaci-n Les unM entre dos clases" ha$r'a #ue utili+ar agregaci-n o alguna otra relaci-n en ve+ de herencia. Pág. 27/38
Análisis y Diseño Orientado a Objetos – Grady Booch
Uso, na clase usa los servicios de otra. 9ientras #ue una asociaci-n denota una cone!i-n semántica $idireccional" una relaci-n L de 0soM es un posi$le re2inaiento de 0na asociaci4n" por el #ue se esta$lece #u, a$stracci-n es el cliente y #u, a$stracci-n es el servidor #ue proporciona ciertos servicios.
Instanciaci4n, :reaci-n de instancias.
etaclases, *s una clase cuyas instancias son" ellas mismas" clases. Se ustifica su necesidad al hacer notar #ue en un sistema $ao desarrollo" una clase proporciona al programador un interfa+ para comunicarse con la definici-n de o$etos. Para este uso de las clases" es e!tremadamente %til para ellas ser o$etos" de forma #ue puedan ser manipulados de la misma forma #ue todas las demás descripciones.
3. - La interacci+n entre clases o,jetos.
Helaciones entre clases y objetos, 0as clases y o$etos son conceptos diferentes pero en 'ntima relaci-n. :oncretamente todo o$eto es instancia de alguna clase y toda clase tiene cero o más instancias.
!l .a.el de clases y objetos en análisis y diseño, urante el análisis y las primeras etapas de dise)o" el desarrollador tiene dos tareas principales
Kdentificar las clases y o$etos #ue forman el voca$ulario del dominio del pro$lema.
Kdear las estructuras por las #ue conuntos de o$etos tra$aan untos para lograr los comportamientos #ue satisfacen los re#uerimientos del pro$lema.
*n conunto se llama a esas clases y o$etos las abstracciones cla6es del pro$lema. Se denomina a esas estructuras cooperativas los ecanisos de la implantaci-n. urante estas fases del desarrollo" el inter,s principal del desarrollo de estar en la vista e!terna de estas a$stracciones clave y mecanismos. *sta vista representa el marco de referencia l-gico del sistema y" por tanto" a$arca la estructura de clases y la estructura de o$etos del mismo. *n las etapas finales del dise)o y entrando ya en la implantaci-n" la tarea del desarrollador cam$ia el centro de atenci-n está en la vista interna de estas a$stracciones clave y mecanismos" involucrando a su representaci-n f'sica. Pueden e!presarse estas decisiones de dise)o como parte de la ar#uitectura de m-dulos y la ar#uitectura de procesos del sistema.
Pág. 28/38
Análisis y Diseño Orientado a Objetos – Grady Booch 3. - De la construcci+n de clases o,jetos de calidad.
edida de la calidad de 0na abstracci4n, O:-mo puede sa$erse si una clase u o$eto está $ien dise)ado Se sugieren cinco m,tricas significativas
Acoplamiento
:ohesi-n
Suficiencia
:ompleci-n estado completo / plenitud
Ser primitivo
Aco.laiento es una noci-n copiada del dise)o estructurado" es la medida de la fuer+a de la asociaci-n esta$lecida por una cone!i-n entre un m-dulo y otro. *l acoplamiento fuerte complica un sistema por#ue los m-dulos son más dif'ciles de comprender" cam$iar o corregir por s' mismos si están muy interrelacionados con otros m-dulos. 0a compleidad puede reducirse dise)ando sistemas con los acoplamientos más d,$iles posi$les entre los m-dulos. *s igualmente importante el acoplamiento entre clases y o$etos. *!iste tensi-n entre los conceptos de acoplamiento y herencia ya #ue la herencia implica un acoplamiento considera$le. *s desea$le clases d,$ilmente acopladas pero es la herencia ayuda tam$i,n a e!plotar las caracter'sticas comunes de las a$stracciones.
Cohesi4n tam$i,n proviene del dise)o estructurado. 9ide el grado de conectividad entre los elementos de un solo m-dulo" clase u o$eto. 0a forma de cohesi-n menos desea$le es la cohesi-n por coincidencia" en la #ue se incluyen en la misma clase o m-dulo a$stracciones sin ninguna relaci-n. 0a más desea$le es la cohesi-n funcional en la cual los elementos de una clase o m-dulo tra$aan todos untos para proporcionar alg%n comportamiento $ien delimitado.
$02iciente la clase o m-dulo captura suficientes caracter'sticas de la a$stracci-n como para permitir una interacci-n significativa y eficiente.
$er .riiti6o? Son a#uellas # solo se pueden resolver cuando se tiene acceso a la implentacion !stado co.leto? el interfa+ de la clase o m-dulo captura todas las caracter'sticas significativas de la a$stracci-n. na clase o m-dulo completo es a#uel cuyo interfa+ es suficientemente general para ser utili+a$le de forma com%n por cual#uier cliente. 0a compleci-n puede e!agerarse. >frecer todas las operaciones significativas para una a$stracci-n particular des$orda al usuario y suele ser innecesario" ya #ue muchas operaciones de alto nivel pueden componerse partiendo de las de $ao nivel. Por ello se sugiere #ue las clases y m-dulos sean primitivos.
O.eraciones .riiti6as? a#uellas #ue pueden implantarse eficientemente s-lo si tienen acceso a la representaci-n su$yacente. na operaci-n es primitiva si se puede implantar s-lo accediendo a la representaci-n interna. na operaci-n #ue podr'a implantarse so$re operaciones primitivas e!istentes pero a un coste de recursos computacionales significativamente mayor" es tam$i,n candidata para su inclusi-n como operaci-n primitiva.
Pág. 2F/38
Análisis y Diseño Orientado a Objetos – Grady Booch
$elecci4n de o.eraciones, $eántica 20ncional, *s ha$itual en el desarrollo orientado a o$etos dise)ar los m,todos de una clase como un todo" por#ue todos esos m,todos cooperan para formar el protocolo completo de la a$stracci-n. As'" dado un comportamiento #ue se desea hay #ue decidir en #u, clase se sit%a. Para tomar una decisi-n de ese tipo se sugieren los siguientes criterios
He0tili:aci4n Co.lejidad A.licabilidad
OSer'a este el comportamiento más %til en más de un conte!to
Conociiento de la i.leentaci4n
Oepende la implementaci-n del comportamiento de los detalles internos de un cierto tipo
OQu, grado de dificultad plantea el implementar este comportamiento OQu, relevancia tiene este comportamiento para el tipo en el #ue podr'a u$icarse
$eántica es.acial y te.oral, na ve+ definida una operaci-n y su semántica funcional hay #ue especificar la cantidad de tiempo #ue lleva completar la operaci-n semántica temporal y la cantidad de espacio de almacenamiento #ue necesita semántica espacial. Siempre #ue un o$eto pasa un mensae a trav,s de un enlace" am$os o$etos de$en estar sincroni+ados de alguna forma. *n presencia de m%ltiples hilos de control esto significa #ue el paso de mensaes es mucho más #ue una mera selecci-n de su$programas. *l paso de mensaes de$e as' adoptar una de las formas siguientes
$/ncrono
na operaci-n comien+a s-lo cuando el emisor ha iniciado la acci-n y el receptor está preparado para aceptar el mensaeG el emisor y el receptor esperarán indefinidamente hasta #ue am$as partes est,n preparadas para continuar.
Abandono inediato
Kgual #ue el s'ncrono" e!cepto en #ue el emisor a$andonará la operaci-n si el receptor no está preparado inmediatamente.
De inter6alo
Kgual #ue el s'ncrono" e!cepto en #ue el emisor esperará a #ue el receptor est, listo durante un intervalo de tiempo especificado.
As/ncrono
n emisor puede hincar una acci-n independientemente de si el receptor está esperando o no el mensae.
Pág. 3J/38
Análisis y Diseño Orientado a Objetos – Grady Booch !lecci4n de relaciones, Colaboraciones, efine la accesi$ilidad. Por accesi$le se entiende la capacidad de una a$stracci-n para ver a otra y hacer referencia a recursos en su vista e!terna. na a$stracci-n es accesi$le a otra s-lo donde sus ám$itos se superpongan y s-lo donde est,n garanti+ados los derechos de acceso. 0os m,todos de una clase no de$er'an depender de ninguna manera de la estructura de ninguna clase" salvo de la estructura inmediata de nivel superior de su propia clase.
ecanisos y 6isibilidad, 0a decisi-n so$re las relaciones entre o$etos es principalmente una cuesti-n de dise)ar los mecanismos por los #ue esos o$etos interact%an. urante el proceso de dise)o es %til esta$lecer e!pl'citamente c-mo un o$eto es visi$le para otro. *!isten cuatro formas fundamentales por las #ue un o$eto se puede hacer visi$le aun o$eto &
•
*l o$eto proveedor es glo$al al cliente.
•
*l o$eto proveedor es parámetro de alguna operaci-n del cliente.
•
*l o$eto proveedor es parte del o$eto cliente.
•
*l o$eto proveedor es un o$eto declarado localmente en el ám$ito del diagrama de o$etos.
!lecci4n de i.leentaciones, He.resentaci4n, 0a representaci-n de una clase u o$eto de$er'a casi siempre ser uno de los secretos encapsulados de la a$stracci-n. *sto posi$ilita cam$iar la representaci-n sin violar ninguna de las suposiciones funcionales #ue los clientes puedan ha$er hecho. A veces no es fácil elegir con #ue representaci-n se #ueda el o$eto cuando dos o más se contradicen o compiten. e eso modo muchas veces se aca$a con familias de clases cuyas interfaces son prácticamente id,nticos" pero cuyas implantaciones son radicalmente distintas" con el fin de proporcionar diferentes comportamientos respecto al espacio y al tiempo. na de las compensaciones más dif'ciles cuando se selecciona la implantaci-n de una clase se da entre el cálculo del valor del estado de 0n objeto y su alacenaiento coo 0n ca.o .
!.a90etaiento, Aparecen pro$lemas similares en la declaraci-n de clases y o$etos dentro de los m-dulos. 0os re#uerimientos competidores de visi$ilidad y ocultaci-n de informaci-n suelen guiar las decisiones de dise)o so$re donde declarar clases y o$etos. Eeneralmente" se $usca construir m-dulos con cohesi-n funcional y d,$ilmente acoplados.
Pág. 31/38
Análisis y Diseño Orientado a Objetos – Grady Booch
R!"#$ – %&'I("L) 3
n o$eto tiene estado" comportamiento e identidad.
0a estructura y comportamiento de o$etos similares están definidos en su clase com%n.
*l estado de un o$eto a$arca todas las propiedades normalmente estáticas del mismo más los valores actuales normalmente dinámicos de cada una de esas propiedades.
*l comportamiento de la forma en #ue un o$eto act%a y reacciona en t,rminos de sus cam$ios de estado y paso de mensaes.
0a identidad es la propiedad de un o$eto #ue lo distingue de todos los demás o$etos.
0os dos tipos de erar#u'as de o$etos son los la+os de incl0si4n y las relaciones de a7re7aci4n.
na clase es un conunto de o$etos #ue comparten una estructura y comportamiento comunes.
0os seis tipos de erar#u'as de clase son las relaciones de asociaci-n" herencia" agregaci-n" HsoI" instanciaci-n y relaciones de metaclase.
0as a$stracciones clave son las clases y o$etos #ue forman el voca$ulario del dominio del pro$lema.
n mecanismo es una estructura por la #ue un conunto de o$etos tra$aan untos para ofrecer un comportamiento #ue satisfaga alg%n re#uerimiento del pro$lema.
0a calidad de una a$stracci-n puede medirse por su acoplamiento" cohesi-n" suficiencia" completad estado completo" y por el grado hasta el cual es primitiva.
Pág. 32/38
Análisis y Diseño Orientado a Objetos – Grady Booch
Ca./t0lo ' – Clasi2icaci4n 0a clasificaci-n es el medio por el #ue ordenamos el conocimiento. *n el dise)o orientado a o$etos" el renacimiento de la similitud entre las cosas nos permite e!poner lo #ue tienen en com%n en a$stracciones clave y mecanismos. o hay recetas fáciles para identificar clases y o$etos. *!isten t,cnicas de análisis orientado a o$etos #ue ofrecen varias recomendaciones prácticas y reglas %tiles para identificar las clases y o$etos relevantes para un pro$lema concreto.
4.1 La importancia de una clasificaci+n correcta.
Clasi2icaci4n y diseño orientado a objetos, 0a identificaci-n de clases y o$etos es la parte más dif'cil del dise)o >>. 0a e!periencia muestra #ue la identificaci-n implica descu$rimiento e invenci-n. 9ediante el descu$rimiento" se llega a reconocer las a$stracciones clave y los mecanismos #ue forman el voca$ulario del dominio del pro$lema. 9ediante la invenci-n" se idean a$stracciones generali+adas as' como nuevos mecanismos #ue especifican como cola$oran los o$etos. 0a clasificaci-n tam$i,n proporciona una gu'a para tomar decisiones so$re modulari+aci-n. Se puede decidir u$icar ciertas clases y o$etos untos en el mismo m-dulo o en m-dulos diferentes" dependiendo de la similitud #ue se encuentra entre esas declaraciones" el acoplamiento y la cohesi-n son simplemente medidas de esta similitud.
La di2ic0ltad de la clasi2icaci4n !je.los de clasi2icaci4n, *n el cap'tulo anterior se defini- un o$eto como algo #ue tiene una frontera definida con nitide+. Sin em$argo" las fronteras #ue distinguen un o$eto de otro son a menudo $astante difusas. Por eemplo O-nde comien+a la rodilla y donde termina ar(in propuso la teor'a de #ue la selecci-n natural fue el mecanismo de la evoluci-n" en virtud de la cual las especies actuales evolucionaron de otras más antiguas. 0a teor'a de ar(in depend'a de una clasificaci-n inteligente de especies. escartes afirma$a #ue Hel descubrimiento de un orden no es tarea fcil, sin embargo, una vez que se ha descubierto el orden, no hay dificultad alguna en comprenderlo-.
La nat0rale:a increental e iterati6a de la clasi2icaci4n, 0a clasificaci-n inteligente es un tra$ao intelectualmente dif'cil" y la meor forma de reali+arlo es a trav,s de un proceso incremental e iterativo. 0a naturale+a incremental e iterativa de la clasificaci-n tiene un impacto directo en la construcci-n de erar#u'as de clases y o$etos en el dise)o de un sistema de soft(are compleo. Se puede dividir una clase grande en varias más pe#ue)as composici-n. Se puede incluso descu$rir aspectos comunes #ue ha$'an pasado desaperci$idos" e idear una nueva su$clase a$stracci-n. 0a dificultad radica en 2 ra+ones importantes 1. o e!iste algo #ue pueda llamarse una clasificaci-n perfecta" algunas clasificaciones son meores #ue otras. Potencialmente" hay al menos tantas formas de dividir el mundo en sistemas de o$etos como cient'ficos para emprender la tarea. 2.
0a clasificaci-n inteligente re#uiere una gran perspicacia creativa a veces la respuesta es evidente" a veces es una cuesti-n de gustos" y otras veces" la selecci-n de componentes adecuados es un punto curial del análisis.
Pág. 33/38
Análisis y Diseño Orientado a Objetos – Grady Booch 4.2 Identificando clases o,jetos.
!n2o90es clásicos y odernos,
:ategori+aci-n clásica. Agrupamiento conceptual. @eor'a de los prototipos.
Cate7ori:aci4n clásica, *s la apro!imaci-n clásica a la categori+aci-n todas las entidades 5ue tienen una determinada propiedad o colecci+n de propiedades en com6n forman una cate7ora. (ales propiedades son necesarias suficientes para definir la cate7ora. n mayor conocimiento significativo so$re un dominio facilita" hasta cierto punto" conseguir una clasificaci-n inteligente. *n sentido general" las propiedades pueden denotar algo más #ue meras caracter'sticas medi$lesG pueden tam$i,n a$arcar comportamientos o$serva$les. Por eemplo el hecho de #ue un páaro pueda volar pero un pe+ no pueda" es una propiedad #ue distingue un águila de un salm-n.
A7r0.aiento conce.t0al *s una variaci-n más moderna del enfo#ue clásico. ?epresenta más $ien un agrupamiento pro$a$il'stico de los o$etos. *l agrupamiento conceptual está en estrecha relaci-n con la teor'a de conuntos difusos multivalor" en la #ue los objetos .0eden .ertenecer a 0no o ás 7r0.os " en diversos grados de adecuaci-n. ?eali+a uicios a$solutos de la clasificaci-n centrándose en la mayor adecuación.
Teor/a de los .rototi.os *!isten a$stracciones #ue no tienen ni propiedades ni conceptos delimitados con claridad. Por eemplo" una categor'a como uego no encaa en el molde clásico" por#ue no hay propiedades comunes compartidas por todos los uegosR tampoco hay una frontera fia para la categor'a uego. Podr'a e!tenderse" se pueden introducir nuevos tipos de uegos" siempre #ue se pare+can a uegos anteriores de forma apropiada. *sta es la ra+-n por la #ue el enfo#ue se denomina teoría de prototipos una clase de o$etos se representa por un o$eto protot'pico" y se considera un o$eto como un miem$ro de esta clase si y solo si se parece a este prototipo de forma significativa.
A.licaci4n de las teor/as clásicas y odernas, 0as tres apro!imaciones a la clasificaci-n tienen aplicaci-n directa en el dise)o >>. Se identifican las clases y o$etos 6en primer lugar6 de acuerdo con las propiedades relevantes para nuestro dominio particular.
Análisis Orientado a Objetos 0as fronteras entre análisis y dise)o son difusas. *n el análisis se persigue modelar el mundo descu$riendo las clases y o$etos #ue forman el voca$ulario del dominio del pro$lema" y en el dise)o se inventan las a$stracciones y mecanismos #ue proporcionan el comportamiento #ue este modelo re#uiere.
Pág. 34/38
Análisis y Diseño Orientado a Objetos – Grady Booch !n2o90es clásicos erivan so$re todo de los principios de la categori+aci-n clásica. *emplos Shlaer y 9ellor sugieren #ue las clases y o$etos candidatos provienen ha$itualmente de una de las fuentes siguientes :>SAS @AEK0*S PAP*0*S ?>0*S **@>S K@*?A::K>*S
:oches" datos de telemetr'a" sensores de presi-n 9adre" profesor" pol'tico Aterri+ae" interrupci-n" petici-n Pr,stamo" reuni-n" intersecci-n.
esde la perspectiva del modelado de $ases de datos P*?S>AS SAS >$etos f'sicos" o grupos de o$etos" #ue son tangi$les. >?EAKTA:K>*S :olecciones formalmente organi+adas de personas" recursos" instalaciones y posi$ilidades #ue tienen una misi-n definida. **@>S :osas #ue suceden" ha$itualmente a alguna otra cosa" en una fecha y hora concretas" o como pasos dentro de una secuencia ordenada. :oad y &ourdon sugieren otro conunto más fuerte de o$etos potenciales *structuras ?elaciones Hde clasesI y Hde partesI >tros sistemas Sistemas e!ternos con los #ue la aplicaci-n interact%a. ispositivos ispositivos con los #ue la aplicaci-n interact%a. *ventos recordados Sucesos
Análisis del co.ortaiento Se centra en el comportamiento dinámico como fuente primaria de clases y o$etos. Se forman clases $asadas en grupos de o$etos #ue e!hi$en comportamiento similar. 0as responsa$ilidades Hdenotan el conocimiento #ue un o$eto tiene y las acciones #ue un o$eto puede reali+ar. 0as responsa$ilidades de un o$eto son todos los servicios #ue suministra para todos los contratos #ue soporta. e esta forma se agrupan cosas #ue tienen responsa$ilidades comunes" y se forman erar#u'as de clases #ue involucran a superclases #ue incorporan responsa$ilidades generales y su$clases #ue especiali+an su comportamiento. Al poner el ,nfasis en la comprensi-n de lo #ue sucede en el sistema" nos encontramos con los comportamientos del sistema" asignándolos a partes del sistema" donde surge la necesidad de entender #uien inicia esos comportamientos y #uien participa en ellos. 0os iniciadores y los participantes #ue desempe)an papeles significativos se reconocen como o$etos" y se les asignan las responsa$ilidades de actuaci-n para esos papeles.
Análisis de doinios, usca identificar las clases y o$etos comunes a todas las aplicaciones dentro de un dominio dado" tales como mantenimiento de registros de pacientes" operaciones $ursátiles" etc. Se trata de un intento por identificar los o$etos" operaciones y relaciones con los e!pertos del dominio consideran importantes acerca del mismo. Pág. 3/38
Análisis y Diseño Orientado a Objetos – Grady Booch Análisis de Casos de Uso, na forma o patr-n o eemplo concreto de utili+aci-n" un escenario #ue comien+a con alg%n usuario del sistema #ue inicia alguna transacci-n o secuencia de eventos interrelacionados. 0os usuarios finales" e!pertos del dominio y el e#uipo de desarrollo enumeran los escenarios fundamentales para el funcionamiento del sistema. *stos escenarios en conunto descri$en las funcionales del sistema en esa aplicaci-n. *l análisis procede entonces como un estudio de cada escenario" utili+ando t,cnicas de presentaci-n. A medida #ue el e#uipo pasa por cada escenario" de$e identificar los o$etos #ue participan en el" las responsa$ilidades de cada o$eto" y c-mo esos o$etos cola$oran con otros" en t,rminos de las operaciones #ue invoca cada uno so$re el otro.
)ichas CHC 0as fichas :?: surgieron como una forma simple" pero maravillosamente efectivas de anali+ar escenarios. *s una tareta con una ta$la de 3 U " so$re la cual el analista escri$e el nom$re de una clase en la parte superior de la tareta" sus responsa$ilidades en la mitad de la tareta y sus cola$oradores en la otra mitad. Se crea una ficha para cada clase #ue se identifi#ue como relevante para el escenario. Pueden disponerse espacialmente para representar patrones de cola$oraci-n.
Descri.ci4n in2oral en es.añol na alternativa al análisis >> clásico fue la propuesta de A$$ott" #uien sugiri- redactar una descripci-n del pro$lema o parte del pro$lema en lenguae natural y su$rayar entonces los nom$res y los ver$os. 0os nom$res representan o$etos candidatos" y los ver$os representan operaciones candidatas so$re ellos. *ste enfo#ue es %til por#ue es simple y por#ue o$liga al desarrollador a tra$aar en el voca$ulario del espacio del pro$lema.
Análisis !str0ct0rado na segunda alternativa al Análisis >> clásico utili+a los productos del análisis estructurado como v'a de entrada al dise)o orientado a o$etos. *sta t,cnica es atractiva s-lo por#ue hay gran n%mero de analistas con e!periencia en análisis estructurado" y e!isten muchas herramientas :AS* #ue soportan la automati+aci-n de estos m,todos. *s desaconsea$le el uso del análisis estructurado como punto de partida para el dise)o >>.
4.3 &,stracciones mecanismos cla*e.
Identi2icaci4n de las abstracciones cla6e, Bs90eda de las abstracciones cla6e na a$stracci-n clave es una clase u o$eto #ue forma parte del voca$ulario del dominio del pro$lema. *l valor principal #ue tiene la identificaci-n de tales a$stracciones es #ue dan unos l'mites al pro$lemaG enfati+an las cosas #ue están en el sistema y" por lo tanto" son relevantes para el dise)o y suprimen las cosas #ue están fura del sistema. Por eemplo n cliente #ue utili+a un caero automático ha$la en t,rminos de cuentas" dep-sitos y reintegrosG estas pala$ras son parte del voca$ulario del dominio del pro$lema. n desarrollador de un sistema semeante utili+a estas mismas a$stracciones" pero introduce tam$i,n algunas nuevas" como $ases de datos" maneadores de pantallas" listas" cosas" etc. *stas a$stracciones clave son artefactos del dise)o particular" no del dominio del pro$lema.
. Pág. 35/38
Análisis y Diseño Orientado a Objetos – Grady Booch He2inaiento de abstracciones cla6e, na ve+ #ue se identifica determinada clave como candidata" hay #ue evaluarla de acuerdo a las m,5tricas descriptas en el cap'tulo anterior. ada una nueva a$stracci-n" hay #ue u$icarla en el conte!to de las erar#u'as de clases y o$etos #ue se han dise)ado. *n la práctica o siempre se dise)an tipos en una erar#u'a de tipos comen+ando por un supertipo y creando a continuaci-n los su$tipos" sino #ue se crean varios tipos aparentemente dispares" se da cuenta de #ue están relacionados" y entonces factori+a sus caracter'sticas comunes en uno o más supertipos. 0a colocaci-n de clases y o$etos en los niveles correctos de a$stracci-n es dif'cil. A veces se puede encontrar una su$clase general" y elegir moverla hacia arri$a en la estructura de clases" incrementando as' el grado de compartici-n. *sto se llama promoci+n de clases, Anal-gicamente se puede apreciar #ue una clase es demasiado general" dificultando as' la herencia por las su$clases a causa de un vac'o semántico grande. *sto reci$e el nom$re de conflicto de 7ranularidad. Sugerencias
Los objetos de$er'an nobrarse empleando frases construidas con nobres .ro.ios " como elSensor o simplemente forma. Las clases de$er'an nobrarse empleando frases construidas con nobres co0nes" como Sensores o =ormas. Las o.eraciones de odi2icaci4n de$er'an nom$rarse empleando 2rases constr0idas con 6erbos acti6os@ como di$uar o moverK+#uierda. Las o.eraciones de selecci4n de$er'an implicar una interrogaci-n" o $ien nom$rarse con 6erbos del ti.o Jser(estarK@ como e!tensione o *staA$ierto. *l uso de caracteres de su$rayado y estilos de uso de may%sculas son en gran medida cuestiones de gusto personal.
Identi2icaci4n de ecanisos Bs90eda de ecanisos, tili+amos la pala$ra mecanismo para descri$ir cual#uier estructura mediante la cual los o$etos cola$oran para proporcionar alg%n comportamiento #ue satisface un re#uerimiento del pro$lema. 0os mecanismos representan patrones de comportamiento. *l mecanismo #ue elige un desarrollador entre un conunto de alternativas es frecuentemente el resultado de otros factores" como costo" fia$ilidad" facilidad de fa$ricaci-n y seguridad. na ve+ #ue el desarrollador decide so$re un patr-n concreto de cola$oraci-n" se distri$uye el tra$ao entre muchos o$etos definiendo m,todos convenientes en las clases apropiadas. 0os mecanismos representan as' decisiones de dise)o estrat,gicas" como el dise)o de una estructura de clases. 0a interfa+ de una clase individual es más $ien una decisi-n de dise)o táctica.
!je.los de ecanisos :onsideremos el mecanismo de di$uo utili+ado ha$itualmente en intercales gráficas de usuario. arios o$etos de$en cola$orar para presentar una imagen a un usuario una ventana" una vista" el modelo #ue se va a visuali+ar" y alg%n cliente #ue sa$e cuándo pero no c-mo hay #ue visuali+ar ese modelo.
Pág. 37/38