Sei sulla pagina 1di 8

PROGRAMACION ORIENTADA A OBJETOS

Departamento de Ciencias de la Computacin Universidad Nacional del Sur

PROGRAMACION ORIENTADA A OBJETOS

Modelamiento de Clases y Objetos

El lenguaje UML (en ingls, Unified Modeling Language) es un lenguaje para la especificacin, visualizacin, construccin y documentacin de las partes de un sistema de software. Consiste en una coleccin de las mejores prcticas de ingeniera que mostraron ser exitosas en el modelamiento de sistemas complejos, a tal punto que muchas empresas estn actualmente incorporando UML para el desarrollo de sus productos. Fu creado en 1996, por el Object Mangement Group1 con sucesivas modificaciones y agregados para permitir mayor funcionalidad, gracias al aporte y la participacin de empresas como IBM, Hewlett Packard, Microsoft, Unisys y Oracle, entre otras. UML es un lenguaje predominantemente visual, que consiste de varios diagramas, cada uno modelando un parte esencial del sistema a construir. La especificacin completa de UML incluye doce diagramas, divididos en tres categoras. Cuatro diagramas son utilizados para representar la estructura esttica de la aplicacin en desarrollo, cinco diagramas representan diferentes aspectos del comportamiento dinmico y tres representan la forma en que se organizan los mdulos de la aplicacin. Nos centraremos aqu nicamente en el Diagrama de Clases, el cual nos permite disear la estructura del programa en funcin de las clases que lo componen.

DIAGRAMAS DE CLASES
Clases Las clases son dibujadas con un rectngulo, dividido en tres partes: el nombre de la clase, los atributos, y las operaciones correspondientes. Puede agregarse tambin una divisin en donde se especifican las responsabilidades de esa clase. Nombre Atributos Operaciones Responsabilidades Nombre: El nombre de la clase debe ser lo menos ambiguo posible, usualmente un sustantivo. Atributos: Los atributos describen las caracteristicas de los objetos. Poseen un tipo, que nos indica qu clase de atributo es. Si bien existen ciertos tipos primitivos, como enteros, booleanos y reales, cualquier tipo puede ser usado, incluso otras clases. La restriccin ms importante es que los atributos son visibles nicamente por la clase que los contiene. La sintaxis de declaracin es la siguiente: <nombre>:<tipo> < = valor_inicial >
1

www.omg.org

PROGRAMACION ORIENTADA A OBJETOS


Departamento de Ciencias de la Computacin Universidad Nacional del Sur

El dato valor_inicial es opcional y permite inicializar los atributos directamente en la declaracin. Operaciones: Las operaciones son utilizadas para manipular los atributos o realizar consultas. La sintaxis para describir una operacin es la siguiente: <nombre_operacin> (<parmetros>) : <tipo_resultado> A diferencia de los atributos, las operaciones pueden tener diferente visibilidad hacia otras clases, la cual se denota entre llaves a la izquierda de la declaracin. Todas las operaciones estn agrupadas de acuerdo a los estereotipos <<comando>>, <<consulta>> o <<constructor>> de acuerdo a su funcin en la clase. Responsabilidades: Las responsabilidades son las obligaciones de una clase y son definidas por el usuario. Si bien existe un compartimiento dentro de la clase para la especificacin de las responsabilidades, stas son de carcter opcional.

Ejemplo: Punto x: entero; y: entero; Punto(x,y:entero) mover(dist_x, dist_y:entero) distancia(P:Punto):real Representa un punto en el plano Dependiendo del nivel de detalle que querramos alcanzar en el modelo, se pueden obviar algunas de las divisiones del grfico de clases. Esto permite simplificar el diagrama completo, de acuerdo al nivel de abstraccin necesario. Puede utilizarse, por ejemplo: Slo el nombre Nombre y atributos Punto x: entero; y: entero; Nombre y operaciones Punto
Punto(x,y:entero) mover(dist_x,dist_y:entero)

Punto

Notas A los grficos de clases se les puede agregar notas o comentarios sobre algn aspecto interesante de la clase. Estas notas pueden incluir observaciones sobre la clase, alguna restriccin de uso, e incluso el pseudo-cdigo de algunas operaciones. Se grafican por medio de un rectngulo con la esquina superior derecha plegada, como si fuera una hoja, y se une con una lnea al elemento de la clase al cual corresponde la nota. Punto x: entero; y: entero; Punto(x,y:entero) mover(dist_x,dist_y:entero) distancia(P:Punto):real
distancia entre puntos

PROGRAMACION ORIENTADA A OBJETOS


Departamento de Ciencias de la Computacin Universidad Nacional del Sur

En este ejemplo se agrega un comentario sobre la operacin distancia. Ms adelante veremos cmo especificar a travs de notas el cdigo correspondiente a una operacin de la clase. Relaciones entre clases Las relaciones ms importantes entre clases que utilizaremos son asociaciones, agregaciones, y generalizacin. Para simplificar los grficos, omitiremos en los siguientes diagramas de clases las declaraciones de las respectivas operaciones. Asociaciones Una asociacin es una conexin entre clases. Significa que los objetos de dos clases tendrn un vnculo bidireccional en comn, el cual puede interpretarse como para cada X existe un Y. Se representa por medio de una lnea contnua entre dos clases. Por ejemplo, Programador nombre:string legajo:string utiliza Computadora codigo:integer nombre:string

Aqu, cada programador utiliza una computadora, y cada computadora es utilizada por un slo programador (es decir, un objeto Programador est asociado slo a un objeto Computadora ). La asociacin es una abstraccin de la relacin existente en los enlaces entre los objetos Se utiliza multiplicidad cuando no necesariamente los vnculos entre objetos son de uno a uno. Se especifica en cada extremo del vnculo, a travs de un rango, cuntos objetos pueden estar vinculados. Programador nombre:string legajo:string utiliza 1..* 0..* Computadora codigo:integer nombre:string

Este diagrama indica que cada programador tendr varias computadoras (posiblemente ninguna), y que cada computadora ser usada por al menos un programador. Algunos ejemplos de rangos son los siguientes: 0..1 cero o uno 0..* ( o slo * ) cero o muchos 1..* uno o muchos 2 dos 5..11 cinco a once

Cuando no se especifica ningn rango, se asume el valor uno (1) por defecto. Puede agregarse una flecha a la lnea, indicando la direccin del vnculo:

De esta manera, la clase A puede utilizar las operaciones de la clase B, pero no al revs.

PROGRAMACION ORIENTADA A OBJETOS


Departamento de Ciencias de la Computacin Universidad Nacional del Sur

Agregaciones Agregacin es un caso especial de asociacin. Indica que una o ms clases (clases componentes) forman parte de otra clase (clase agregada). Se denota con un rombo en uno de los extremos del vnculo, aqul que corresponde a la clase agregada. Puede interpretarse como posee (o contiene) un. Auto patente:string modelo:entero Motor marca:string identif:entero

Este diagrama indica que todo auto posee un motor, de una marca particular, y con su correspondiente nmero de identificacin. En la agregacin, la multiplicidad de la clase agregada debe ser cero o uno (0..1), pero en las clases que conforman las partes puede ser un rango cualquiera. Ventana ttulo:string id:entero Botn nombre:string identif:entero

1..*

Aqu, el diagrama indica que una ventana de Windows puede contener uno o ms botones. Otra posible forma de representar la agregacin entre clases es incluir el grfico de una clase (el agregado) dentro del grfico de otra. Por ejemplo, Auto patente:string modelo:entero Motor marca:string indentif:entero {operaciones} Si el agregado requiere especificar multiplicidad, escribimos el rango correspondiente en la esquina superior derecha de la clase. Ventana ttulo:string id:entero 1..* Botn nombre:string indentif:entero {operaciones}

PROGRAMACION ORIENTADA A OBJETOS


Departamento de Ciencias de la Computacin Universidad Nacional del Sur

Generalizacin La generalizacin es la relacin entre una clase ms general y un clase ms especfica. La clase ms especifica (denominada subclase) es consistente con la clase ms general (denominada superclase), y contiene informacin adicional. La generalizacin permite la especializacin de las clases. Se denota con un tringulo en el extremo del vnculo correspondiente al elemento ms general. La relacin puede interpretarse informalmente como es un. Auto + patente:string + modelo:entero Taxi + patente:string + codigo:entero

El diagrama indica que un taxi es una clase particular de autos, con una patente extra y un cdigo utilizado por la empresa. Son heredados de la clase Auto todos los dems atributos, como la patente oficial, el modelo, el motor, etc. Cuando una clase posee ms de una subclase, pueden organizarse en forma de rbol de la siguiente manera:

DIAGRAMAS DE OBJETOS Hasta ahora, slo hemos mostrado clases en el modelo del sistema. Los objetos pueden modelarse tambin en un diagrama de objetos. Este diagrama utiliza la misma notacin y relaciones que el diagrama de clases, puesto que los objetos son simplemente instancias de esas mismas clases. Mientras el diagrama de clases muestra las diferentes clases y sus relaciones, el diagrama de objetos muestra instancias especficas de estas clases, y los vnculos entre estas instancias en un momento dado. Los objetos son mostrados como las clases, pero con el nombre del objeto subrayado y precedido del nombre de la clase que representa. La sintaxis correspondiente es: <nombre del objeto>:<clase> Por ejemplo, utilizando el diagrama de las clases Auto y Motor, una instancia particular de estas clases puede ser: Gol : Auto patente=IBM360 modelo=98 AP1600 : Motor marca=Audi identif=A2D43

PROGRAMACION ORIENTADA A OBJETOS


Departamento de Ciencias de la Computacin Universidad Nacional del Sur

A veces el nombre del objeto no necesariamente debe existir, por lo que en ese caso utilizaremos slo los dos puntos (:) y el nombre de la clase, por ejemplo :Avion

ESPECIFICACIN DE LAS OPERACIONES En las notas que se agregan al diagrama de clases podemos explicitar la implementacin de una o ms operaciones de la clase. Para ello utilizaremos la siguiente convencin: <nombre_operacin>(<param>):<tipo> { <sentencias> }

En las notas tambin explicitamos los invariantes de clase. En este caso, la nota va unida por un vnculo al rectngulo que representa la clase. El lenguaje que utilizaremos para la especificacin de las operaciones es el Lenguaje de Diseo de Algoritmos, (sentencias de asignacin con , condicionales "si..entonces..si no...", ciclos "repetir..hasta" y "repetir mientras..", sentencia case, etc) con algunas operaciones especiales que se detallan a continuacin. OPERACIONES Creacin de objetos Para la creacin se utilizan los constructores de la clase <nombre_del_objeto> !!<constructor>(<parmetros>)

Ejemplos L !!Linea() p !!CrearPunto(1,3) E !!CrearEmpleado(Homero,123,Sector7G) Acceso a los servicios <nombre_del_objeto>.<nombre_del_servicio>(<parametros>) Ejemplos P.Rho() Emp.Sueldo_correspondiente(A) Emp.Nombre Actual.verificarCodigo(C)

PROGRAMACION ORIENTADA A OBJETOS


Departamento de Ciencias de la Computacin Universidad Nacional del Sur

Asignacin Sintaxis: Objeto1 Ejemplos Punto1 Punto2 N Empleado.Nombre La asignacin se aplica tanto a referencias a objetos como a objetos de tipo expandido (por valor). La siguiente tabla indica qu sucede para la operacin X Y en cada caso, X e Y como referencias o por valor.
X Y Y referencia X e Y referencian al mismo objeto Los valores de X se copian de los valores de Y Y por valor X es un nuevo objeto con los valores de Y Los valores de X se copian de los valores de Y

Objeto2

X referencia X por valor

Comparacin Sintaxis: Objeto1 = Objeto2 El operador (=) devuelve verdadero si la referencia de los dos objetos es null, o si los dos referencian al mismo objeto. Puede aplicarse tambin a objetos por valor (de tipo expandido). La siguiente tabla indica que ocurre en cada caso:
X = Y X referencia Y referencia VERDADERO si X referencian al objeto. e Y mismo Y por valor VERDADERO si los valores de Y son iguales a los valores del objeto que referenciado X VERDADERO si el objeto X es igual al objeto Y

X por valor

verdadero si el objeto X es igual al referenciado por Y

Clonacin y Copia Objeto1 clonar(Objeto2) {Objeto1 es la clonacin del Objeto2} {Objeto1 se convierte en copia del Objeto2}

Objeto1.copiar(Objeto2)

PROGRAMACION ORIENTADA A OBJETOS


Departamento de Ciencias de la Computacin Universidad Nacional del Sur

La diferencia entre la clonacin y la copia es que la clonacin involucra la creacin de un objeto (en el ejemplo, Objeto1). La copia supone que los dos objetos involucrados ya han sido creados. Objeto1 clonar_prof(Objeto2) {Objeto1 es la clonacin de toda la estructura de objetos a la que hace referencia Objeto2} {Verdadero si x e y son referencias nulas o referencian objetos con idnticos campos} {Idem anterior, pero explora la estructura formada por referencias a otros objetos}

igual(x,y)

igual_prof(x,y)

OBSERVACIONES Esta gua no es completa. Existen varios aspectos de los diagramas de clases que no figuran aqu y que por el momento no son de relevancia. A medida que se incluyan nuevos temas en la materia, se agregarn las modificaciones o expansiones necesarias a los Diagramas de Clases. Algunas otras caractersticas no sern mencionadas porque no sern aplicables durante el cursado de la materia. Para los lectores motivados, en la siguiente seccin figuran algunos links relacionados con UML. ALGUNOS LINKS RELACIONADOS CON UML UML en Object Management Group, la organizacin autora del lenguaje. Contiene la especificacin completa y tutoriales. http://www.omg.org/uml/ Meta-links. Contiene varios links a pginas relacionadas con UML. Tutoriales, ejemplos, FAQs y artculos generales. http://www.cetus-links.org/oo_uml.html UML Resource Center en Rational. Rational es una empresa de desarrollo de software ligada estrechamente a la creacin de UML. http://www.rational.com/uml/ Herramientas basadas en UML. Listado de productos para el desarrollo de software basados en el lenguaje UML, algunos de ellos de distribucin gratuita. http://www.objectsbydesign.com/tools/umltools_byPrice.html Bibliografa UML. Listado de trabajos y publicaciones que hacen referencia a UML. http://www.db.informatik.uni-bremen.de/umlbib/

Potrebbero piacerti anche