Escolar Documentos
Profissional Documentos
Cultura Documentos
Definicin de Objeto
Todo aquello a lo que podemos reconocerle una identidad, un estado y un comportamiento. Es una coleccin de elementos de datos junto con las funciones asociadas para operar sobre ellos y para comunicarse con otros objetos.
Tipos de Objetos
Concretos: Persona-Carro-PC
Roles: Doctor-Propietario-Maestro
Relacional: Sociedad-Hijo-Matrimonio Eventos: Venta-Compra-Arribo Exponibles: Icono-Window-Imagen-Men
Datos y funciones
Dentro de los objetos residen los datos as como las funciones o mtodos que operan sobre ellos. Los datos y las funciones asociados se dice que estn encapsulados y ocultos; si se desea modificar los datos de un objeto se debe conocer exactamente cuales son las funciones que interactan con los mismos ya que ninguna otra funcin puede acceder a ellos.
Ejemplos de Objetos
Desde el punto de vista informtico los objetos son tipos abstractos de datos (tipos que encapsulan datos y funciones que operan sobre esos datos). Ejemplos de objetos:
Numero racional
Dato (valor actual) Operaciones (sumar, multiplicar, )
Vehculo
Datos (velocidad, kilometraje, posicin, precio,) Operaciones (acelerar, frenar, parar, )
Avin
Datos (fabricante, modelo, matricula, capacidad, ) Operaciones (aterrizar, despegar, volar, )
Conjunto
Dato (numero elementos) Operaciones (adicionar, quitar, visualizar, )
Clases
Una clase es la descripcin de un conjunto de objetos; consta de datos y mtodos que resumen caractersticas comunes de un conjunto de objetos. Cada vez que se construye un objeto a partir de una clase estamos creando lo que se llama una instancia de esa clase.
Ejec105 : Maleta Viaj325: Maleta
Cobr2154 : Maleta
Est1235: Maleta
Maleta
ATRIBUTOS
Denominacion Color Precio Capacidad Abrir ( ) Cerrar ( ) Calcular peso ( )
OPERACIONES
OPERACIONES
(FUNCIONES MIEMBRO)
Propiedades fundamentales
Sirven para definir a un objeto de modo inequvoco: una identidad, un estado, y un comportamiento (que depende del estado).
PLANCHA
nroserie = 23456A tipo = vapor color = rosada estado = desenchufada enchufar( ) regular_temperatura( ) flujo_vapor( )
Identidad
Es la propiedad que diferencia un objeto de otro similar. En esencia la identidad de un objeto caracteriza su propia existencia. La identidad hace posible distinguir cualquier objeto sin ambigedad e independientemente de su estado.
Esto permite, entre otras cosas, la diferenciacin de dos objetos que tengan atributos idnticos.
Estado
Agrupa los valores de todos los atributos de un objeto en un momento dado, en donde un atributo es una pieza de informacin que califica el objeto contenedor.
El estado de un objeto, en un momento dado, se corresponde con una seleccin determinada de valores a partir de valores posibles de los diversos atributos.
un AUTO
Audi azul 25000 US$ 2010 1200cc nuevo
AUTO
modelo color precio ao motor estado
un AUTO
Fiat plateado 5500 US$ 1990 1200cc viejo
Comportamiento
Los datos describen la abstraccin de las caractersticas individuales que poseen todos los objetos. Las operaciones cambian el objeto (su comportamiento) de alguna forma, es decir, cambian valores de uno o ms atributos contenidos en el objeto. Aunque existen gran nmero de operaciones que se pueden realizar sobre un objeto, generalmente se dividen en tres grandes grupos:
Operaciones que manipulan los datos de alguna forma especfica (aadir, borrar, cambiar formato, ) Operaciones que realizan un clculo o proceso Operaciones que comprueban un objeto frente a la ocurrencia de algn evento de control.
Mtodos y mensajes
Los procedimientos y funciones, denominados mtodos, residen en el objeto y determinan cmo actan los objetos cuando reciben un mensaje. Un mensaje es la accin que hace un objeto. Un mtodo es el procedimiento o funcin que se invoca para actuar sobre un objeto y especifica cmo se ejecuta un mensaje. Los mensajes que recibe o enva un objeto son los nicos conductos que asociacian el objeto con el mundo externo. Los datos de un objeto estn disponibles slo para ser manipulados por los mtodos del propio objeto.
Estado de un objeto
Cada uno los objetos de una clase tendr generalmente un estado particular propio. El estado esta relacionado con los valores de algunos de sus atributos (una botella puede estar llena, puede estar medio llena o vaca segn el volumen de su contenido), y con algunas operaciones comunes que comparte con los otros (como <<llenar>>, <<vaciar>>), pero tiene otros atributos (como el color y modelo de una botella) no relacionados con el estado.
Asociacin
PERSONA
Empleado
AVION
Piloto
PERSONA
Pasajero
*
0..* 1..*
empleador
obrero
Empresa
* 0..1
ejecutivo
Persona
tasarAuto ( )
Partes de un Mensaje
Identidad del receptor. El mtodo que se ha de ejecutar. Informacin especial necesaria para realizar el mtodo invocado (argumentos o parmetros requeridos).
Nombre de un mensaje
Un mensaje incluye el nombre de una operacin y cualquier argumento requerido por esa operacin. Con frecuencia es til referirse a una operacin por su nombre sin considerar sus argumentos.
Mensajes y Mtodos
Cuando un objeto recibe un mensaje se realiza la operacin solicitada ejecutando un mtodo. Un mtodo es el algoritmo ejecutado en respuesta a la recepcin de un mensaje cuyo nombre se corresponde con el nombre del mtodo.
Paso de Mensajes
Los objetos se comunican entre s a travs del uso de mensajes. Esencialmente el protocolo de un mensaje implica dos partes: el emisor y el receptor. Cuando un objeto emisor enva un mensaje a un objeto receptor especifica lo siguiente:
Un receptor (objeto receptor). Un nombre de mensaje (en relacin al mtodo invocado). Argumentos o parmetros (si se necesitan).
Los parmetros o argumentos pueden ser:
Datos utilizados por el mtodo invocado Un mensaje propiamente dicho
Clase Parametrizada
Son modelos de clases. Una clase parametrizable es una clase que es usada para crear una familia de otras clases. Una clase parametrizable no puede ser utilizada tal cual. Conviene primero instanciarla, a fin de obtener una clase concreta que podr a su vez ser instanciada en objetos.
Item
Clase Parametrizada
Atributo 01 Atributo 02
Operacion 1 ( ) Operacion 2 ( )
Clase Parametrizada
Lista Item
Una clase parametrizable es alguna suerte de contenedor, y tambin es conocida como un template(plantilla), como los
templates de C++. Este tipo de clases no aparece generalmente en el anlisis. Las clases parametrizables se utilizan sobre todo en diseo detallado para incorporar, por ejemplo, componentes reutilizables.
Atributo
Adicionar ( ) Remover ( )
Lista<Ordenes>
Lista<Empleados>
Atributo Adicionar ( ) Remover ( ) Adicionar ( ) Remover ( ) Atributo
Clase utilidad
Es una coleccin de slo operaciones. Aquellas operaciones de uso general que no pueden acomodarse dentro de una clase particular, se encapsulan dentro de una clase utilidad para uso por las otras clases del sistema. Son clases que no pueden ser instanciadas, y que son tiles para agrupar elementos dentro de un mdulo, como por ejemplo las funciones de una biblioteca matemtica.
Clase Utilidad
Operacion 01 ( ) Operacion 02 ( )
Operacion 01 ( ) Operacion 02 ( )
Metaclase
Es una clase cuyas instancias son clases en lugar de objetos. Las clases parametrizadas y las clases parametrizadas utilidad son ejemplos de metaclases.
Clase Parametrizada
Atributo 01 Atributo 02 Operacion 1 ( ) Operacion 2 ( )
Item
Operacion 01 ( ) Operacion 02 ( )
Abstraccin
Es una de las vas fundamentales por la que los humanos combatimos la complejidad. La abstraccin surge del reconocimiento de las similitudes entre ciertos objetos, situaciones o procesos del mundo real, y en la decisin de concentrarse en esas similitudes e ignorar por el momento las diferencias.
La abstraccin centra su atencin en las caractersticas esenciales de un objeto en relacin a la perspectiva del observador
Encapsulamiento
La encapsulacin es una caracterstica que permite el ocultamiento de la informacin como un concepto avanzado de la teora de objetos. Es la propiedad que permite incluir en una sola clase los datos y los mtodos o funciones que operan sobre esa informacin. La encapsulacin de informacin y operaciones es muy importante. Los mtodos de un objeto slo pueden manipular directamente datos asociados con el objeto.
Objeto
Datos privados
Datos pblicos
Funciones privados
Funciones pblicas
Herencia
La herencia es la propiedad que permite a los objetos ser construidos a partir de las caractersticas de otros objetos.
El objetivo de la herencia es la reutilizacin del cdigo previamente desarrollado, siendo esta la real potencia de la POO. La herencia supone una clase base y una jerarqua de clases que contienen las clases derivadas de la clase base.
AVE
CRIATURA
tipo peso habitat crear( ) esperanza_vida( )
PEZ MAMIFERO
periodo_gestacion
Jerarqua y Herencia
PERSONA
nombre fecha_nacimiento origen
HOMBRE
esposa
MUJER
esposo
Tipos de Herencia
Herencia simple (jerrquica)
La simple es aquel tipo de herencia en la cual un objeto puede tener slo un ascendiente, o dicho de otro modo, una subclase puede heredar datos y mtodos de una nica clase as como aadir o quitar comportamiento de la clase base.
FIGURA
PERSONA
CIRCULO
CUADRILATERO
TRIANGULO
PROFESOR
INVESTIGADOR
TRAPECIO
RECTANGULO
PROF_UNIVERSITARIO
Herencia Simple
Herencia Mltiple
Atributos -nombre estudiante -direccion -campus -carrera -ao PROFESOR ESTUDIANTE Atributos -nombre -direccion -campus -salario -estudios -carrera -ao -dias_vacaciones
Atributos -nombre empleado -direccion -estudios -campus -salario -dias_vacaciones Mtodos -Aumento_salario( )
Ejemplos de conflictos
PERSONA
Conflicto de nombres:
nombre_estudiante nombre_empleado
Conflicto de valores:
campus
(atributos con igual nombre tienen valores en cada clase)
ESTUDIANTE
EMPLEADO
PROFESOR ESTUDIANTE
Clases Abstractas
Con frecuencia cuando se disea un modelo orientado a objetos es til introducir clases a cierto nivel que pueden no existir en la realidad pero que son construcciones conceptuales tiles. Estas clases se conocen como clases abstractas. Una clase abstracta normalmente ocupa una posicin adecuada en la jerarqua de clases que le permite actuar como un depsito de mtodos y atributos compartidos para las subclases del nivel inmediato inferior. Las clases abstractas no tienen instancias directamente. Las clases derivadas de una clase abstracta se conocen como clases concretas y pueden ser instanciadas. Tinta Impresora
Laser
Matricial
Sobrecarga
Es una propiedad que describe una caracterstica adecuada que utiliza el mismo nombre de operacin para representar operaciones similares que se comportan de modo diferente cuando se aplican a clases diferentes. Los nombres de las operaciones se pueden sobrecargar, esto es, las operaciones se definen en clases diferentes y pueden tener nombres idnticos, aunque su cdigo programado puede diferir. Si los nombres de una operacin se utilizan para nuevas definiciones en clases de una jerarqua, la operacin a nivel inferior se dice que anula la operacin a un nivel ms alto (overriding), es decir se redefine la operacin heredada.
Ejemplo de sobrecarga
Empleado
Atributos - nombre - salario - edad Operacion - Incrementar salario = salario*inflacion + comision
Administrativo
Ingeniero
Atributos Atributos - especialidad - beneficios Operacion - salario [40 80] - comision = 0.05*presupuesto - edad [25 65] Operaciones -Incrementar salario = (salario+comision)*inflacion -Comision = 0.03*presupuesto
La sobrecarga puede estar situada entre dos clases que no estn relacionadas jerrquicamente. Lenguajes como C y Pascal soportan este tipo de operaciones a travs de los operadores aritmticos, operaciones de E/S y operadores de asignacin de valores.
Objetos compuestos
AUTO nro_autos_vends concesionario color ao
Un objeto puede contener a otros objetos. A los objetos que pueden contener otros objetos se conocen como objetos compuestos. En la mayora de los sistemas los objetos no contienen en el sentido estricto a otros objetos, sino que contienen referencias a otros objetos. Un objeto compuesto consta de una coleccin de dos o ms objetos componentes, los cuales tienen una relacin del tipo parte-de con el objeto compuesto. Cuando un objeto compuesto se instancia para producir una instancia del objeto, todos sus objetos componentes se deben instanciar al mismo tiempo.
Un ejemplo de un objeto compuesto es la clase auto. Un auto consta de diversas partes tales como un motor, un sistema de frenos, un sistema de transmisin y un chasis. Estas partes constituyen los objetos componentes del objeto auto de modo que cada uno de estos objetos componentes pueden tener atributos y mtodos que los caracterizan. AUTO Atributos nro_autos_disponibles nro_autos_vendidos Atributos compartidos concesionario Atributos de instancia modelo color precio ao Objetos componentes motor sistema_frenos sistema_transmision chasis MOTOR nro_cilindros potencia cilindrada valvulas_cilindro SISTEMA FRENOS tipo proveedor nivel_liquido
Objeto compuesto
obj1
Orden compra
Orden compra
articulo
cliente
articulo
Polimorfismo
Propiedad por la cual un mismo objeto u objetos de una misma clase u objetos de clases diferentes, responden de distinta manera a un mismo mensaje. La utilizacin de operadores o funciones de formas diversas, dependiendo de cmo estn operando se denomina polimorfismo.
Operaciones
Son funciones o transformaciones que se aplican a todos los objetos de una clase particular. La operacin puede ser una accin ejecutada por el objeto o sobre el objeto. No se debe utilizar el mismo nombre en operaciones que tengan un significado totalmente diferente.
PERSONA nombre edad trabajar ( ) votar( ) UNIVERSIDAD nombre direccion ensear ( ) graduar( )
NOMBRE DE LA CLASE
Atributo1 : Tipo1 = Valor-Omision1 Atributo2 : Tipo2 = Valor-Omision2 Operacion1 (Lista Tipo -- Arg1) : Tipo -- Result1 Operacion2 (Lista Tipo Arg2) : Tipo Result2
ARCHIVO nombre extensin tipo imprimir(d: dispositivo, n : entero) : Boolean borrar( ) : Boolean
Tipo atributo
Atributo
Operacin
alta ( ) poner_nota (asignatura: char[5], ao: int, nota: float ) matricular (curso: asignatura, ao: int) listar_expediente ( )
Argumentos de operacin
Un mtodo destructor, en contraposicin al constructor, elimina el vnculo y libera el espacio de memoria de un objeto, para que pueda ser ocupado nuevamente.
Constructor y Destructor
Los objetos ocupan un espacio en memoria y en consecuencia existen en el tiempo y debern crearse o instanciarse. Por la misma razn se debe liberar el espacio ocupado por los objetos en la memoria. Los constructores y destructores se declaran como parte de la definicin de una clase.
clase criatura // atributos string : tipo real : peso tipoHabitat : habitat // operaciones constructor criatura( ) inicio fin_constructor metodo predadores(E criatura: predador) inicio fin_metodo entero funcin esperanza_vida( ) inicio fin_funcion fin_clase // fin criatura Clase mamifero hereda_de criatura // atributos real : periodo_gestacion // operaciones fin_clase // fin mamifero
Clase persona hereda_de mamifero // atributos string : apellidos, nombre date : fecha_nacimiento pais : origen // operaciones fin_clase // fin persona Clase hombre hereda_de persona // atributos mujer : esposa string : nombre // operaciones fin_clase // fin hombre Clase mujer hereda_de persona // atributos hombre : esposo string : nombre // operaciones fin_clase // fin mujer
Reglas de Visibilidad
Privada ( - ): visible slo para la clase y para las clases amigas (C++). Protegida( # ): visible slo para las clases derivadas (subclases). Pblica ( + ): visible para todas las clases con las que esta asociada.
Clase asociacin
ALUMNO
1 0..*
Realiza >
0..* 0..*
Nombre
1
TRABAJO Tema
DIPLOMA Mencion
1
Nota
HABITACION Numero
La asociacin entre la clase Alumno y la clase Trabajo es del tipo n a n. La clase Trabajo describe el tema, la solucin aportada por el Alumno no se conserva. En el caso de los controles de conocimientos, cada Alumno escribe individualmente sobre un Trabajo dado y la nota obtenida no puede almacenarse en un Alumno en particular (porque ste realiza varios trabajos) ni en un Trabajo (porque hay que registrar tantas notas como alumnos). La nota es un atributo de la relacin entre la clase Alumno y la clase Trabajo.
Cualificador
Consiste en seleccionar un subconjunto de objetos entre el conjunto de objetos que participan en una asociacin. Se realiza por medio de una tupla de atributos particulares (llamada clave) y se utiliza conjuntamente con un objeto de la clase de partida. La clave se representa sobre el rol de la clase de partida bajo el nombre de cualificador o calificador. La clave pertenece a la asociacin y no a las clases asociadas. El cualificador es un atributo especial que reduce la multiplicidad efectiva de una asociacin. Las asociaciones uno a muchos y muchos a muchos pueden ser cualificadas.
DIRECTORIO
Contiene >
1..* 0..*
FILE
DIRECTORIO
FILE
path
nombre
path
ID_file 1..* 1
nombre
Calificador
Cualificador
Si el valor de un atributo depende de un contexto particular, hay que pensar recalificar el atributo como cualificador. Por ejemplo, ID_empleado no es una propiedad nica para una persona que tenga dos trabajos, lo que hace es cualificar la asociacin Empresa a Persona nombrada como Emplea>.
EMPRESA
Emplea>
0..* 0..*
PERSONA
EMPRESA
PERSONA
direccion
nombre
direccion
ID_empl 0..* 1
nombre
Cualificador
Navegabilidad
Dada una asociacin simple entre dos clases, es posible navegar de los objetos de un tipo a los del otro tipo. A menos que se indique lo contrario, la navegacin a travs de una asociacin es bidireccional. Esto conceptualmente es correcto pero existen ocasiones en donde se desea restringir este mecanismo y trabajar de forma unidireccional para dotar de mayor detalle a nuestro modelo.
1 0..*
1..* PRODUCTO - ID producto : char - denominacion : char - stock minimo : int + producto () : int 1 0..* DETALLE ORDEN - cantidad : int - precio : float - descuento : float + adic item () : int PERSONA NATURAL - nro tarjeta credito : int
. Navegabilidad
Las asociaciones describen la red de relaciones estructurales que existen entre las clases y que dan lugar a los enlaces entre los objetos. Los enlaces pueden ser vistos como canales de navegacin entre los objetos. En principio, las asociaciones son navegables en ambas direcciones. En ciertos casos slo es til una direccin de navegacin. La navegabilidad se representa por una flecha orientada hacia la clase sobre la que es psible la navegacin.
USUARIO
PASSWORD
Id usuario
Direccin de navegavilidad
derecho
Expresiones de Navegabilidad
La sintaxis de las expresiones de navegacin viene dada por las cuatro reglas siguientes :
destino::=conjunto . selector destino::=conjunto . ~ selector destino::=conjunto [ expresion_booleana ] destino::=conjunto . selector [ valor_de_clave ]
El selector corresponde bien a un nombre de atributo de los objetos del conjunto, bien a un nombre de asociacin de la clase de objetos, o bien a un nombre de rol opuesto sobre un enlace que concierne a los objetos del conjunto. El destino es un conjunto de valores o de objetos cuyo nmero depende de la multiplicidad del conjunto y de la asociacin.
PERSONA nombre
hijo 1..*
padre 2
PERSONA nombre
hijo
padre id persona 2
UnaPersona.Hijos designa todos los hijos de una persona dada. UnaPersona. ~Hijos designa los padres de una persona dada. UnaPersona.Hijos[edad>=18aos] designa todos los hijos mayores de edad de una persona dada. UnaPersona.Hijo[UnNombre] identifica un hijo dado de manera no ambigua.