Está en la página 1de 2

24 Capítulo 1 Introducción a las computadoras, Internet y World Wide Web 1.

21 Introducción a la tecnología de objetos y UML 21


compañías formaron el consorcio UML Partners (Socios de UML) en respuesta a la solicitud de proposiciones por parte 1.21 Ejemplo práctico de Ingeniería de Software:
del OMG (el consorcio que desarrolló la versión 1.1 de UML y la envió al OMG). El OMG aceptó la proposición y, en
1997, asumió la responsabilidad del mantenimiento y revisión de UML en forma continua. La versión 2 de UML que introducción a la tecnología de objetos y el UML
está ahora disponible marca la primera modificación mayor al UML desde el estándar de la versión 1.1 de 1997. A lo Ahora empezaremos nuestra primera introducción al tema de la orientación a objetos, una manera natural de pensar
largo de este libro, presentaremos la terminología y notación de UML 2. acerca del mundo real y de escribir programas de cómputo. Los capítulos 1 a 7, 9 y 13 terminan con una sección breve
titulada Ejemplo práctico de Ingeniería de Software, en la cual presentamos una introducción cuidadosamente guiada al
tema de la orientación a objetos. Nuestro objetivo aquí es ayudarle a desarrollar una forma de pensar orientada a objetos,
¿Qué es el UML? y de presentarle el Lenguaje Unificado de Modelado™ (UML™), un lenguaje gráfico que permite a las personas que
El UML es ahora el esquema de representación gráfica más utilizado para modelar sistemas orientados a objetos. Eviden- diseñan sistemas de software orientados a objetos utilizar una notación estándar en la industria para representarlos.
temente ha unificado los diversos esquemas de notación populares. Aquellos quienes diseñan sistemas utilizan el lenguaje En esta sección requerida, presentamos los conceptos y la terminología de la orientación a objetos. Las secciones
(en forma de diagramas) para modelar sus sistemas. opcionales en los capítulos 2 a 7, 9 y 13 presentan un diseño y la implementación orientados a objetos del software para
Una característica atractiva de UML es su f lexibilidad. UML es extensible (es decir, capaz de mejorarse con nuevas un sistema de cajero automático (ATM) simple. Las secciones tituladas Ejemplo práctico de Ingeniería de Software al
características) e independiente de cualquier proceso de A/DOO específico. Los modeladores de UML tienen la libertad final de los capítulos 2 al 7:
de diseñar sistemas utilizando varios procesos, pero todos los desarrolladores pueden ahora expresar esos diseños con un
conjunto de notaciones gráficas estándar. • analizan una especificación de requerimientos típica que describe un sistema de software (el ATM) que se va a
UML es un lenguaje gráfico complejo, con muchas características. En nuestras secciones del Ejemplo práctico de construir
Ingeniería de Software, presentamos un subconjunto conciso y simplificado de estas características. Luego utilizamos • determinan los objetos requeridos para implementar ese sistema
este subconjunto para guiar al lector a través de la experiencia de su primer diseño con UML, la cual está dirigida a los
programadores principiantes orientados a objetos en cursos de programación de primer o segundo semestre. • determinan los atributos que deben tener estos objetos
• determinan los comportamientos que exhibirán estos objetos
Recursos Web de UML • especifican la forma en que los objetos deben interactuar entre sí para cumplir con los requerimientos del sis-
Para obtener más información acerca de UML, consulte los sitios Web que se enlistan a continuación. Para ver sitios Web tema
adicionales sobre UML, consulte los recursos Web que se enlistan al final de la sección 2.8.
Las secciones tituladas Ejemplo práctico de Ingeniería de Software al final de los capítulos 9 y 13 modifican y mejo-
www.uml.org
ran el diseño presentado en los capítulos 2 al 7. El apéndice G contiene una implementación completa y funcional en
Esta página de recursos de UML del Grupo de Administración de Objetos (OMG) proporciona documentos de la especifica-
C++ del sistema ATM orientado a objetos.
ción para UML y otras tecnologías orientadas a objetos.
Aunque nuestro ejemplo práctico es una versión reducida de un problema a nivel industrial, de todas formas cubri-
www.ibm.com/software/rational/uml
mos muchas prácticas comunes en la industria. Usted experimentará una sólida introducción al diseño orientado a obje-
Ésta es la página de recursos de UML para IBM Rational, sucesor de Rational Software Corporation (la compañía que creó a
tos con UML. Además, afinará sus habilidades para leer código al ver paso a paso la implementación en C++ del ATM,
UML).
cuidadosamente escrita y bien documentada.

Lecturas recomendadas Conceptos básicos de la tecnología de objetos


Los siguientes libros proporcionan información acerca del diseño orientado a objetos con UML: Comenzaremos nuestra introducción al tema de la orientación a objetos con cierta terminología clave. En cualquier parte
Ambler, S. The Object Primer: Agile Model-Driven Development with UML 2.0, Third Edition. Nueva York: Cambridge del mundo real puede ver objetos: gente, animales, plantas, autos, aviones, edificios, computadoras, monitores, etc. Los
University Press, 2005. humanos pensamos en términos de objetos. Los teléfonos, casas, semáforos, hornos de microondas y enfriadores de agua
Arlow, J. e I. Neustadt. UML and the Unified Process: Practical Object-Oriented Analysis and Design, Second Edition. Bos- son sólo unos cuantos objetos más que vemos a nuestro alrededor todos los días.
ton: Addison-Wesley Professional, 2006. Algunas veces dividimos a los objetos en dos categorías: animados e inanimados. Los objetos animados están “vivos”
Fowler, M. UML Distilled, Third Edition: A Brief Guide to the Standard Object Modeling Language. Boston: Addison- en cierto sentido; se mueven a su alrededor y hacen cosas. Los objetos inanimados no se mueven por su propia cuenta.
Wesley Professional, 2004. Sin embargo, los objetos de ambos tipos tienen ciertas cosas en común. Todos ellos tienen atributos (como tamaño,
Rumbaugh, J., I. Jacobson y G. Booch. The Unified Modeling Language User Guide, Second Edition. Boston: Addison- forma, color y peso), y todos exhiben comportamientos (por ejemplo, una pelota rueda, rebota, se inf la y desinf la; un
Wesley Professional, 2006. bebé llora, duerme, gatea, camina y parpadea; un auto acelera, frena y da vuelta; una toalla absorbe agua). Estudiaremos
los tipos de atributos y comportamientos que tienen los objetos de software.
Ejercicios de autorrepaso de la sección 1.21 Los humanos aprenden acerca de los objetos existentes estudiando sus atributos y observando sus comportamientos.
Distintos objetos pueden tener atributos similares y pueden exhibir comportamientos similares. Por ejemplo, pueden
1.1 Enliste tres ejemplos de objetos reales que no mencionamos. Para cada objeto, incluya varios atributos y compor- hacerse comparaciones entre los bebés y los adultos, y entre los humanos y los chimpancés.
tamientos. El diseño orientado a objetos (DOO) modela el software en términos similares a los que utilizan las personas para
1.2 El pseudocódigo es __________________. describir objetos del mundo real. Este diseño aprovecha las relaciones entre las clases, donde los objetos de cierta clase
a) otro término para el A/DOO. (como una clase de vehículos) tienen las mismas características; los autos, camiones, pequeños vagones rojos y patines
b) un lenguaje de programación utilizado para visualizar diagramas de UML. tienen mucho en común. El DOO también aprovecha las relaciones de herencia, donde las nuevas clases de objetos se
c) un medio informal de expresar la lógica de un programa. derivan absorbiendo las características de las clases existentes y agregando sus propias características únicas. Un objeto
d) un esquema de representación gráfica para modelar sistemas orientados a objetos. de la clase “convertible” ciertamente tiene las características de la clase más general “automóvil” pero, de manera más
1.3 El UML se utiliza principalmente para __________________. específica, el techo de un convertible puede ponerse y quitarse.
a) probar sistemas orientados a objetos. El diseño orientado a objetos proporciona una manera natural e intuitiva de ver el proceso de diseño de software: a
b) diseñar sistemas orientados a objetos. saber, modelando los objetos por sus atributos, comportamientos e interrelaciones, de igual forma que como describimos
c) implementar sistemas orientados a objetos. los objetos del mundo real. El DOO también modela la comunicación entre los objetos. Así como las personas se envían
d) a y b. mensajes unas a otras (por ejemplo, un sargento ordenando a un soldado que permanezca firme), los objetos también
22 Capítulo 1 Introducción a las computadoras, Internet y World Wide Web 1.21 Ejemplo práctico de Ingeniería de Software: introducción a la tecnología de objetos y UML 23
se comunican mediante mensajes. Un objeto cuenta de banco puede recibir un mensaje para reducir su saldo por cierta Evidentemente, con la tecnología de objetos podemos crear la mayor parte del software que necesitaremos mediante
cantidad, debido a que el cliente ha retirado esa cantidad de dinero. la combinación de clases existentes, así como los fabricantes de automóviles combinan las piezas intercambiables. Cada
El DOO encapsula (es decir, envuelve) los atributos y las operaciones (comportamientos) en los objetos; los atri- nueva clase que usted cree tendrá el potencial de convertirse en una valiosa pieza de software, que usted y otros progra-
butos y las operaciones de un objeto se enlazan íntimamente entre sí. Los objetos tienen la propiedad de ocultamiento madores podrán usar para agilizar y mejorar la calidad de los futuros esfuerzos de desarrollo de software.
de información. Esto significa que los objetos pueden saber cómo comunicarse entre sí a través de interfaces bien defi-
nidas, pero por lo general no se les permite saber cómo se implementan otros objetos; los detalles de la implementación Introducción al análisis y diseño orientados a objetos (A/DOO)
se ocultan dentro de los mismos objetos. Por ejemplo, podemos conducir un auto con efectividad, sin necesidad de saber Pronto estará escribiendo programas en C++. ¿Cómo creará el código para sus programas? Tal vez, como muchos progra-
los detalles acerca de cómo funcionan internamente los motores, las transmisiones y los sistemas de escape; siempre y madores principiantes, simplemente encenderá su computadora y empezará a teclear. Esta metodología puede funcionar
cuando sepamos cómo usar el pedal del acelerador, el pedal del freno, el volante, etc. Más adelante veremos por qué el para programas pequeños (como los que presentamos en los primeros capítulos del libro) pero ¿qué haría usted si se le
ocultamiento de información es tan imprescindible para la buena ingeniería de software. pidiera crear un sistema de software para controlar miles de máquinas de cajero automático para un importante banco?
Los lenguajes como C++ son orientados a objetos. La programación en dichos lenguajes se llama programación O suponga que le pidieron trabajar en un equipo de 1,000 desarrolladores de software para construir el nuevo sistema
orientada a objetos (POO), y permite a los programadores de computadoras implementar un diseño orientado a objetos de control de tráfico aéreo de Estados Unidos. Para proyectos tan grandes y complejos, no podría simplemente sentarse
en forma de sistemas de software funcionales. Por otra parte, los lenguajes como C son por procedimientos, de manera y empezar a escribir programas.
que la programación tiende a ser orientada a la acción. En C, la unidad de programación es la función. En C++, la Para crear las mejores soluciones, debe seguir un proceso detallado para analizar los requerimientos de su proyecto
unidad de programación es la clase a partir de la cual se instancian (un término de POO para “crean”) los objetos en (es decir, determinar qué es lo que se supone debe hacer el sistema) y desarrollar un diseño que cumpla con esos reque-
un momento dado. Las clases en C++ contienen funciones que implementan operaciones y datos que implementan rimientos (es decir, decidir cómo debe hacerlo el sistema). Idealmente usted pasaría por este proceso y revisaría cuida-
atributos. dosamente el diseño (o haría que otros profesionales de software lo revisaran) antes de escribir cualquier código. Si este
Los programadores de C se concentran en escribir funciones. Los programadores agrupan acciones que realizan ciertas proceso implica analizar y diseñar su sistema desde un punto de vista orientado a objetos, lo llamamos un proceso de
tareas comunes en funciones, y agrupan las funciones para formar programas. Evidentemente, los datos son importantes análisis y diseño orientado a objetos (A/DOO). Los programadores experimentados saben que el análisis y el diseño
en C, pero la visión es que los datos existen principalmente para apoyar a las acciones que realizan las funciones. Los ver- pueden ahorrar innumerables horas, ya que les ayudan a evitar un método de desarrollo de un sistema mal planeado,
bos en una especificación de sistema ayudan al programador de C a determinar el conjunto de funciones que trabajarán que tiene que abandonarse en plena implementación, con la posibilidad de desperdiciar una cantidad considerable de
juntas para implementar el sistema. tiempo, dinero y esfuerzo.
A/DOO es el término genérico para el proceso de analizar un problema y desarrollar un método para resolverlo.
Clases, miembros de datos y funciones miembro Los pequeños problemas como los que se describen en los primeros capítulos de este libro no requieren de un proceso
Los programadores de C++ se concentran en crear sus propios tipos definidos por el usuario, denominados clases. Cada exhaustivo de A/DOO. Podría ser suficiente con escribir pseudocódigo antes de empezar a escribir el código en C++.
clase contiene datos, además del conjunto de funciones que manipulan esos campos y proporcionan servicios a clientes El pseudocódigo es un medio informal de expresar la lógica de un programa. En realidad no es un lenguaje de progra-
(es decir, otras clases o funciones que utilizan esa clase). Los componentes de datos de una clase se llaman miembros de mación, pero podemos usarlo como un tipo de bosquejo para guiarnos a medida que escribimos nuestro código. En el
datos. Por ejemplo, una clase cuenta de banco podría incluir un número de cuenta y un saldo. Los componentes de las capítulo 4, Instrucciones de control: parte 1, presentamos el pseudocódigo.
funciones de una clase se llaman funciones miembro (por lo general se les llama métodos en otros lenguajes de progra- A medida que los problemas y los grupos de personas que los resuelven aumentan en tamaño, los métodos de
mación orientada a objetos, como Java). Por ejemplo, una clase cuenta de banco podría incluir funciones miembro para A/DOO se vuelven más apropiados que el pseudocódigo. Idealmente, los miembros de un grupo deberían acordar un
realizar un depósito (aumentar el saldo), realizar un retiro (reducir el saldo) y consultar cuál es el saldo actual. Utilizamos proceso estrictamente definido para resolver su problema, y acordar también una manera uniforme para que los miembros
los tipos integrados (y otros tipos definidos por el usuario) como “bloques de construcción” para construir nuevos tipos del grupo se comuniquen los resultados de ese proceso entre sí. Aunque existen muchos procesos de A/DOO distintos,
definidos por el usuario (clases). Los sustantivos en una especificación de sistema ayudan al programador de C++ a hay un solo lenguaje gráfico para comunicar los resultados de cualquier proceso A/DOO que se ha vuelto muy popular.
determinar el conjunto de clases a partir de las que se crean los objetos que funcionan en conjunto para implementar el Este lenguaje, conocido como Lenguaje Unificado de Modelado (UML), se desarrolló a mediados de la década de los
sistema. noventa, bajo la dirección inicial de tres metodologistas de software: Grady Booch, James Rumbaugh e Ivar Jacobson.
Las clases son para los objetos lo que los planos de construcción son para las casas; una clase es un “plano” para cons-
truir un objeto de esa clase. Así como podemos construir muchas casas a partir de un plano de construcción, podemos Historia de UML
instanciar (crear) muchos objetos a partir de una clase. No puede cocinar alimentos en la cocina de un plano de construc- En la década de los ochenta, un creciente número de empresas comenzó a utilizar la POO para crear sus aplicaciones, lo
ción; puede cocinar alimentos en la cocina de una casa. No puede dormir en la recámara de un plano de construcción; cual generó la necesidad de un proceso estándar de A/DOO. Muchos metodologistas (incluyendo a Booch, Rumbaugh
puede dormir en la recámara de una casa. y Jacobson) produjeron y promocionaron, por su cuenta, procesos separados para satisfacer esta necesidad. Cada uno de
Las clases pueden tener relaciones con otras clases. Por ejemplo, en un diseño orientado a objetos de un banco, la estos procesos tenía su propia notación, o “lenguaje” (en forma de diagramas gráficos), para transmitir los resultados del
clase “cajero” necesita relacionarse con otras clases, como la clase “cliente”, la clase “cajón de efectivo”, la clase “bóveda”, análisis y el diseño.
y así en lo sucesivo. A estas relaciones se les llama asociaciones. A principios de la década de los noventa, diversas compañías (e inclusive diferentes divisiones dentro de la misma
Al empaquetar el software en forma de clases, los sistemas de software posteriores pueden reutilizar esas clases. Los compañía) utilizaban sus propios procesos y notaciones únicos. Al mismo tiempo, estas compañías querían utilizar
grupos de clases relacionadas se empaquetan comúnmente como componentes reutilizables. Así como los corredores herramientas de software que tuvieran soporte para sus procesos particulares. Con tantos procesos, se les dificultó a los
de bienes raíces dicen a menudo que los tres factores más importantes que afectan el precio de los bienes raíces son “la distribuidores de software proporcionar dichas herramientas. Evidentemente era necesario contar con una notación y
ubicación, la ubicación y la ubicación”, algunas personas en la comunidad de desarrollo de software dicen a menudo que procesos estándar.
los tres factores más importantes que afectan el futuro del desarrollo de software son “la reutilización, la reutilización y En 1994, James Rumbaugh se unió con Grady Booch en Rational Software Corporation (ahora una división de
la reutilización”. IBM), y los dos comenzaron a trabajar para unificar sus populares procesos. Pronto se unió a ellos Ivar Jacobson. En
1996, el grupo liberó las primeras versiones de UML para la comunidad de ingeniería de software, y solicitaron retroa-
limentación. Casi al mismo tiempo, una organización conocida como Object Management Group™ (OMG™, Grupo
Observación de Ingeniería de Software 1.4 de administración de objetos) hizo una invitación para participar en la creación de un lenguaje común de modelado.
Reutilizar las clases existentes cuando se crean nuevas clases y programas es un proceso que ahorra tiempo, dinero y esfuerzo. El OMG (www.omg.org) es una organización sin fines de lucro que promueve la estandarización de las tecnologías
La reutilización también ayuda a los programadores a crear sistemas más confiables y efectivos, ya que las clases y componen- orientadas a objetos, emitiendo lineamientos y especificaciones como UML. Varias empresas (entre ellas HP, IBM,
tes existentes a menudo han pasado por un proceso extenso de prueba, depuración y optimización del rendimiento. Microsoft, Oracle y Rational Software) habían reconocido ya la necesidad de un lenguaje común de modelado. Estas

También podría gustarte