Mag. Estanislao Contreras Chvez pcsiecon@upc.edu.pe estanislao.contreras@hotmail.com Unidad 2: Elementos bsicos de POO Programacin Orientada a Objetos Temario Elementos bsicos de POO Relaciones entre clases Estndares de programacin Programacin Orientada a Objetos Unidad 2: Elementos bsicos de POO Elementos bsicos de POO Programacin Orientada a Objetos Elementos bsicos de POO Objeto Cuando nos abstraemos, pensamos en una entidad del problema que estamos analizando, dejando de pensar en lo superficial, identificamos sus principales caractersticas y su comportamiento. Estamos definiendo un objeto. Programacin Orientada a Objetos Elementos bsicos de POO Propiedades de los objetos Identidad: Es aquello que lo distingue de los dems, qu lo hace nico. Se corresponde con la direccin de memoria que ocupa Programacin Orientada a Objetos Elementos bsicos de POO Propiedades de los objetos Estado: Valores que tienen sus caractersticas en un instante dado. Un cambio de estado se da cuando cambia algunas de sus caractersticas. Programacin Orientada a Objetos Elementos bsicos de POO Propiedades de los objetos Estado: Por ejemplo: Si el valor del atributo Saldo Disponible es 0 entonces el estado del objeto Telfono Celular es de no disponiblepara hacer llamadas. Programacin Orientada a Objetos Elementos bsicos de POO Propiedades de los objetos Comportamiento: Es lo que el objeto puede o sabe hacer. Cmo reacciona antes los mensajes recibidos (cambiando de estado, enviando mensajes). Responsabilidad: Cuando un comportamiento est mas dirigido hacia el servicio que presta el objeto. Programacin Orientada a Objetos Elementos bsicos de POO Propiedades de los objetos Programacin Orientada a Objetos Elementos bsicos de POO Objetos y Algoritmia La resolucin de problemas se hace desde el punto de vista de los objetos. Aplicacin: Se compone de objetos que se comunican para lograr un objetivo comn. Programacin Orientada a Objetos Elementos bsicos de POO Objetos y Algoritmia Los objetos son entidades activas, que emiten mensajes y responden a estmulos. Es decir, un objeto Emisor enva un mensaje a otro receptor para requerir o para notificar algo. Programacin Orientada a Objetos Elementos bsicos de POO Objetos y Algoritmia Ejemplo de comunicacin entre objetos Programacin Orientada a Objetos Elementos bsicos de POO Mtodo Un mtodo es un conjunto de instrucciones a las que se les asocia un nombre de modo que si se desea ejecutarlos basta con hacer referencia a ellos mediante el nombre. Los mtodos contienen la lgica asociada a las responsabilidades de la clase. Adicionalmente, existen mtodos especiales que se tienen que considerar en una clase: constructores, de acceso y destructores Programacin Orientada a Objetos Elementos bsicos de POO Mtodos Constructores Se utilizan para inicializar un objeto nuevo. Una clase puede tener varios constructores estos se diferencian unos de otros en el nmero y tipo de sus argumentos Efectan tareas de inicializacin. Antes de usar un objeto se debe llamar a su constructor. Por lo tanto, cada clase debe tener por lo menos un constructor. Programacin Orientada a Objetos UPC - EPE - POO 15 Elementos bsicos de POO Mtodos de Acceso Operaciones que actan sobre los atributos e informan el valor actual (lectura) o permiten cambiarlo (escritura) Programacin Orientada a Objetos UPC - EPE - POO 16 Elementos bsicos de POO Mtodos Destructores Cumplen tareas de liberacin de memoria y vnculos con otros objetos. Al final de la vida de un objeto es conveniente llamar al destructor de la clase. Recomendacin: Llamar al destructor al final del bloque de cdigo en el que fue declarado. Programacin Orientada a Objetos UPC - EPE - POO 17 Elementos bsicos de POO Clase Cuando llevamos nuestra definicin de objetos a una abstraccin superior, donde ubicamos una plantilla que nos permitir generar objetos de un mismo tipo, con caractersticas y comportamientos similares, hemos definido una Clase Programacin Orientada a Objetos UPC - EPE - POO 18 Elementos bsicos de POO Clase Programacin Orientada a Objetos Elementos bsicos de POO Instanciacin Cuando utilizamos una clase para crear un objeto de ese tipo decimos que estamos instanciando la clase. Un objeto es una instancia de la clase y se puede instanciar tantos objetos como sean necesarios. Programacin Orientada a Objetos Elementos bsicos de POO Instanciacin Creacin de objetos invocando a los mtodos constructores de la clase. class Alumno Objeto Juan Objeto Carlos Objeto Maria Objeto Ana Instanciacin Estructura de datos Alumno juan := new Alumno(); Lgica asociada al comportamiento Programacin Orientada a Objetos Unidad 2: Elementos bsicos de POO Relaciones entre clases Programacin Orientada a Objetos Relaciones entre clases Relacin Una relacin es una conexin semntica entre elementos de un modelo. Dependiendo de que modelo se est tratando, la relacin ser entre objetos de una o mas clases o entre elementos de distinto nivel de abstraccin. Programacin Orientada a Objetos Relaciones entre clases Las relaciones entre clases que utilizaremos son: Asociacin Agregacin Composicin Generalizacin. Las relaciones existentes entre las clases nos indican como se comunican sus objetos entre s Programacin Orientada a Objetos Relaciones entre clases 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 continua entre dos clases. Programacin Orientada a Objetos Relaciones entre clases Asociacin Aqu, cada programador utiliza una computadora, y cada computadora es utilizada por un solo programador (es decir, un objeto Programador est asociado slo a un objeto Computadora ). Programacin Orientada a Objetos Relaciones entre clases Asociacin Aqu, cada cliente vive en una direccin y direccin es utilizada por un solo cliente (es decir, un objeto Cliente est asociado slo a un objeto Direccin ). Programacin Orientada a Objetos Relaciones entre clases Multiplicidad 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. Programacin Orientada a Objetos Relaciones entre clases Multiplicidad Este diagrama indica que cada programador tendr varias computadoras (posiblemente ninguna), y que cada computadora ser usada por al menos un programador. Programacin Orientada a Objetos Relaciones entre clases Multiplicidad Cada asociacin tiene dos multiplicidades. Una para cada extremo de la relacin. Para especificar la multiplicidad de una asociacin hay que indicar la multiplicidad mnima y la multiplicidad mxima (mnimamxima) Programacin Orientada a Objetos Relaciones entre clases Multiplicidad 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. Programacin Orientada a Objetos Relaciones entre clases Rangos de multiplicidad Programacin Orientada a Objetos Relaciones entre clases Rangos de multiplicidad Cuando la multiplicidad mnima es 0, la relacin es opcional. Una multiplicidad mnima mayor o igual 1 establece una relacin obligatoria Programacin Orientada a Objetos Relaciones entre clases Rangos de multiplicidad Ejemplo 1 Todo departamento tiene un director Un profesor puede dirigir un departamento Programacin Orientada a Objetos Relaciones entre clases Rangos de multiplicidad Ejemplo 2 Todo profesor pertenece a un departamento. A un departamento pueden pertenecer varios profesores. Programacin Orientada a Objetos Relaciones entre clases Rangos de multiplicidad Ejemplo 3 Programacin Orientada a Objetos Relaciones entre clases Agregacin / Composicin Son formas especiales de relacin donde una clase se define con la conjuncin de objetos de otras clases de tal modo que stos ltimos forman parte de la clase como un atributo adicional. Se les conoce como relacin TODO-PARTE Programacin Orientada a Objetos Relaciones entre clases Agregacin / Composicin Si la relacin es fuerte, tal que objetos de la clase PARTE son dependiente de la existencia de la clase TODO entonces la relacin es composicin. La clase TODO, tiene la responsabilidad de la creacin y destruccin de objetos de sus componentes Programacin Orientada a Objetos Relaciones entre clases Agregacin / Composicin Al contrario, si la existencia de objetos de la clase PARTE es independiente de la existencia de objetos de la clase TODO, entonces la relacin es agregacin. Programacin Orientada a Objetos Relaciones entre clases Agregacin / Composicin Su representacin grfica es la siguiente: Programacin Orientada a Objetos Relaciones entre clases Agregacin Este diagrama indica que todo auto posee un motor, de una marca particular, y con su correspondiente nmero de identificacin. Clase Agregada Programacin Orientada a Objetos Relaciones entre clases Composicin Clase Compuesta Programacin Orientada a Objetos Relaciones entre clases Multiplicidad En la composicin o agregacin, la multiplicidad de la clase agregada/compuesta debe ser cero, pero en las clases que conforman las partes puede ser un rango cualquiera. Programacin Orientada a Objetos Relaciones entre clases Multiplicidad Aqu, el diagrama indica que una ventana de Windows puede contener uno o ms botones. Clase Compuesta Programacin Orientada a Objetos Relaciones entre clases Generalizacin Si se tiene una relacin en la que un objeto posee atributos y operaciones similares a otro, entonces son objetos de la misma clase, pero si uno de los objetos posee atributos y/o operaciones extras o de diferente comportamiento, se tiene una relacin de generalizacin. Programacin Orientada a Objetos Relaciones entre clases Generalizacin La generalizacin es la relacin entre una clase ms general y un clase ms especfica. Se denota con un tringulo en el extremo del vnculo correspondiente al elemento ms general. La relacin puede interpretarse informalmente como es un. Programacin Orientada a Objetos Relaciones entre clases Generalizacin Cliente Cdigo Direccin Persona Nombres Apellidos Empresa Razn Social RUC Programacin Orientada a Objetos Relaciones entre clases Generalizacin La clase con mayor refinamiento es llamada clase de especializacin o subclase la otra, la de menor refinamiento es llamada clase de generalizacin o superclase Programacin Orientada a Objetos Relaciones entre clases Generalizacin Cliente Cdigo Direccin Persona Nombres Apellidos Empresa Razn Social RUC Superclase Subclases Programacin Orientada a Objetos Relaciones entre clases Herencia Concepto derivado de la generalizacin, indica que la subclase hereda los atributos, operaciones y relaciones de la superclase. Programacin Orientada a Objetos Relaciones entre clases Generalizacin Cuando una clase posee ms de una subclase, pueden organizarse en forma de rbol de la siguiente manera: Programacin Orientada a Objetos Relaciones entre clases Jerarquia de clases El comportamiento de una categora ms general es aplicable a una categora particular. Las subclases heredan caractersticas de las clases de las que se derivan y aaden caractersticas especficas que las diferencian Las clases se organizan en una estructura jerrquica formando una taxonoma. Programacin Orientada a Objetos Relaciones entre clases Jerarqua de clases Programacin Orientada a Objetos Unidad 2: Elementos bsicos de POO Estndares de programacin Programacin Orientada a Objetos Estndares de Programacin http://javafoundations.blogspot.com/2010/07/java- estandares-de-programacion.html