Programación Orientada a Objetos Asignación de Responsabilidades Ing Ing.. Julio Ernesto Carreño Vargas MsC.. MsC Asignación de Responsabilidades a las clases Se deben asignar responsabilidades al experto en la información, la clase que tiene la información necesaria para satisfacer la responsabilidad. Cada objeto es responsable por mantener su propia información, principio de encapsulamiento Conoce y puede informar el valor de sus atributos Puede modificar el valor de sus atributos Programación Orientada a Objetos 2 1 Creación de Objetos Quién es el responsable de crear una nueva instancia de una clase? El objeto B tiene la responsabilidad de crear objetos de la Clase A si: B contiene objetos A B registra objetos A B usa exhaustivamente objetos A B conoce a A B posee la información necesaria para inicializar a A Programación Orientada a Objetos 3 Creación de Objetos Primera Alternativa: En el constructor de la clase “propietaria” de la relación, reciba y asigne una instancia de la clase referenciada. Programación Orientada a Objetos 4 2 Creación de Objetos Segunda Alternativa: En el constructor de la clase “propietaria” de la relación, cree una nueva instancia de la clase referenciada invocando un constructor vacío. Posteriormente use los métodos modificadores(set) para asignar valores a los atributos Programación Orientada a Objetos 5 Creación de Objetos Tercera Alternativa: En un método modificador de la clase “propietaria” de la relación, reciba y asigne una instancia de la clase referenciada, por lo tanto una tercera clase es la encargada de crear y pasar la instancia Programación Orientada a Objetos 6 3 Creación de Objetos Cuarta Alternativa: En un método de la clase “propietaria” de la relación, cree una nueva instancia de la clase referenciada, reciba los parámetros para crear la instancia. Programación Orientada a Objetos 7 Creación de Objetos En una relación de todo/parte(agregación/composición): El todo es responsable de crear cada una de las partes. Para ello se crea un nuevo método. Si la cardinalidad es *, se debe agregar la nueva instancia a la colección de objetos. Programación Orientada a Objetos 8 4 Colaboración de objetos La clase prueba quiere saber el nombre del Conductor del bus que está atado a dicha clase(Prueba) Programación Orientada a Objetos 9 Colaboración entre Objetos Prueba le pregunta a Bus, y Bus le consulta a su Conductor a través de las relaciones de asociación. Programación Orientada a Objetos 10 5 Colaboración de objetos Test desea conocer cuál es la cantidad total de salones de su edificio. Quién sabe cuántos salones hay en total? Quién tiene la información para contestar a esta pregunta? Programación Orientada a Objetos 11 Colaboración de objetos Observe que apareció un nuevo método “TotalizarSalones” en la clase Edificio, ya que es esta clase la que tiene la información para responder dicha pregunta. Programación Orientada a Objetos 12 6 Colaboración de objetos Test desea conocer de cuántos pisos está contruido su Edificio llamado contiene? Programación Orientada a Objetos 13 Error Típico No asignó memoria a la instancia llamada contiene (donde está el new?) Programación Orientada a Objetos 14 7 Error Típico El main tiene una instancia llamada “contiene” de Edificio que es diferente al atributo privado “contiene” de la clase Test. Programación Orientada a Objetos 15 Bibliografía UML y patrones una introducción al análisis y diseño orientado a objetos y al proceso unificado. Larman, Craig Paul Deitel. Como programar en Java 7/e. Pearson Education. 2007. Programación Orientada a Objetos 16 8