SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
Carlos Fontela 
cfontela@fi.uba.ar
Encapsulamiento 
Delegación 
Herencia 
Herencia vs. delegación 
UML: clases, secuencias 
Redefinición 
Clases abstractas y métodos abstractos 
Polimorfismo 
2 1c2013
Alan Kay se basó en sus conocimientos de 
bacterias 
La membrana de una bacteria nos aísla de la 
ccoommpplleejjiiddaadd iinntteerrnnaa 
Sabemos de ella por su comportamiento 
La bacteria interactúa con el mundo a través 
de su interfaz 
Respondiendo a estímulos 
Realizando acciones 
3 1c2013
Importante para garantizar ocultamiento de 
implementación 
Atributos y métodos privados 
Sólo los puede usar el objeto receptor en su clase 
Atributos y métodos públicos 
Se los puede usar desde cualquier lado 
Atributos y métodos protegidos 
Sólo los puede usar el objeto receptor en 
su clase y en las clases derivadas 
4 1c2013
Todos los métodos son públicos 
Todos los atributos son protegidos 
No privados, se pueden acceder desde una subclase 
Aunque se recomienda considerarlos privados 
Hay convenciones para hacer métodos y 
atributos privados 
Pero no se puede forzar 
Sólo como aviso 
5 1c2013
Lo que se indica con (-) está oculto: es 
“privado” de cada objeto 
Lo que se indica con (+) lo pueden usar los 
clientes: es “público” 
6 1c2013
Sistema = conjunto de partes interrelacionadas 
Con características singulares 
Se habla de web (=telaraña) de objetos 
Web de objetos =>> wweebb ddee ccllaasseess 
Mecanismos de vinculación 
Agregación 
Generalización y especialización 
(son los mecanismos de abstracción llevados a 
POO)
Un objeto contiene referencias a otros objetos y les 
delega comportamiento 
Segmento >> longitud 
^ (p1 distancia: p2). 
8 1c2013
Es una forma de reutilización 
Mediante el envío de un mensaje a otro objeto 
“cliente” pide un servicio a un “servidor” 
El otro objeto se preocupa de cómo 
implementa el método 
Evitar los objetos omnipotentes 
Con muchas responsabilidades 
El comportamiento debe mantenerse junto con la 
información que utiliza 
9 1c2013
Composición 
Las partes no son independientes del todo 
El objeto contenido no puede estar contenido en más 
de un contenedor 
Eliminación del todo implica la de las partes 
Rombo lleno en UML 
10 1c2013
11 1c2013
12 1c2013
En un banco existen varios mostradores. 
Cada mostrador puede atender cierto tipo de trámites y tiene 
una cola de clientes, que no puede superar un número 
determinado para cada cola. 
Además hay una cola general del banco en la cual se colocan 
todos los clientes cuando las colas de los mostradores están 
completas. 
Cada cliente concurre al banco para realizar un solo trámite. 
Un trámite tiene un horario de creación y un horario de 
13 1c2013 
resolución. 
Se pide: 
1) Implementar el método mostrador>>atiende:unTramite, que 
devuelve true o false indicando si el tramite se puede atender 
o no en el mostrador; note que el tipo de trámite 
correspondiente a unTramite tiene que coincidir con alguno de 
los tipos de trámite que atiende el mostrador.
2) Implementar el método 
banco>>mostradoresQueAtienden:unTramite, que retorna la 
colección de todos los mostradores que atienden ese trámite. 
3) Implementar el método 
banco>>mejorMostradorPara:unTramite, que retorna el 
mostrador con la cola más corta con espacio para al menos una 
persona más y que atienda ese trámite; si ningún mostrador 
tiene espacio, retorna nil. 
4) Implementar el método banco>>atender:unCliente; cuando 
llega un cliente al banco se lo ubica en el mostrador que 
atienda el trámite que el cliente requiere, que tenga espacio y 
la menor cantidad de clientes esperando; si no hay lugar en 
ningún mostrador el cliente debe permanecer en la cola 
general de espera del banco. 
5) Implementar el método mostrador>>atenderPrimero; debe 
desencolar al primer cliente de la cola y atender su trámite, lo 
cual implica asignarle la hora de resolución al trámite del 
cliente. 
14 1c2013 
6) Implementar el método 
banco>>siguienteClientePara:unMostrador; debe elegir de la 
cola general del banco, el primer cliente que necesite realizar 
un trámite que unMostrador pueda atender; si no existe tal 
cliente el método retorna nil.
Relaciones “es un” 
15 1c2013
16 1c2013
Observamos 
No tienen por qué ser completas: sí excluyentes 
Ojo: ¿Cuadrado no podría ser una especialización de 
Rombo? 
Algunas de las clases del árbol pueden no tener 
instancias: clases abstractas 
La ubicación de una clase en la jerarquía se 
establece por la relación “es un” 
Cada clase hereda comportamiento 
y estructura de su ancestro 
17 1c2013
Animal subclass: #Vaca 
Vaca tiene, por lo menos: 
los mismos atributos de Animal 
los mismos métodos de Animal 
puede agregar atributos y métodos 
puede redefinir métodos 
18 1c2013
Se puede volver a definir un método en una clase 
descendiente: 
19 1c2013
Debe preservar la semántica (significado) 
Obligatoria 
Si la implementación debe ser diferente 
Caso de extraer en CuentaBancaria 
20 1c2013 
Optativa 
Razones, en general, de eficiencia 
Caso de longitud de Elipse 
Los métodos deben tener la misma firma
Herencia: relación “es un” 
Composición/agregación: 
“contiene” 
“hace referencia” 
“es parte de” 
Mito: en POO todo es herencia 
Mal ejemplo: Stack en Java 1.0/1.1 y Smalltalk 
¡una pila no es un vector! 
Herencia si se va a reutilizar la interfaz 
Stack es un mal ejemplo 
21 1c2013
Herencia 
Cuando se va a reutilizar la interfaz tal como está 
Delegación 
Cuando se va a reutilizar sin mantener la interfaz 
22 1c2013
Las clases dejaron de ser excluyentes 
23 1c2013
24 1c2013 
¿No sería mejor…
No tienen instancias 
Caso de CuentaBancaria si implemento CajaAhorro 
Generalizan estructura y comportamiento de 
varias clases 
Ej, método depositar 
25 1c2013 
O crean una familia
No definidas en Smalltalk 
Sólo convencionalmente 
Se supone que una clase con un método 
abstracto es abstracta 
26 1c2013
No se quiere que sean invocados: caso del 
extraer de CuentaBancaria 
Las instancias de las subclases van a poder 
responder el mensaje 
Pero sin definir comportamiento en la clase 
ancestro 
A nivel de la clase madre sólo se puede prever la 
firma que tendrá 
27 1c2013 
Corolarios 
No tienen implementación 
Deben redefinirse
Convencional 
Llamar a self 
subclassResponsibility 
Pero no hay manera de 
forzar que no se lo 
28 1c2013 
llame
cb := CuentaBancaria new. 
cc := CuentaCorriente new. 
29 1c2013 
cb extraer: 200. 
cc extraer: 200.
30 1c2013
unaElipse mover. 
=> llama al dibujar de Elipse 
unTriangulo mover. 
=> llama al dibujar de Triangulo 
coleccion dibujar. 
=> llama al dibujar de la clase de cada figura 
En Smalltalk la “virtualidad” se da por defecto 
31 1c2013
Los métodos virtuales agregan ineficiencias 
Pero garantizan reutilización 
Eliminar la “virtualidad” sólo si se demuestra que no se 
van a redefinir y la presunta ineficiencia 
Un método debe ser virtual sí o sí cuando se lo 
redefinirá y es llamado desde: 
Un método en una clase ancestro 
Un método que delegue en el método en cuestión de la 
clase ancestro 
En Smalltalk no hay opción: todo método de 
instancia es virtual 
32 1c2013
Magnitude >> <= otroValor 
^ self subclassResponsibility 
Magnitude >> > otroValor 
^ otroValor <= self 
Luego, SortedCollection usa <= para insertar 
elementos 
=> deberíamos redefinir <= en la clase correspondiente 
Otro ejemplo: Object >> = 
33 1c2013
Objetos de distintas clases de una misma familia 
entienden los mismos mensajes 
Igual semántica (significado) 
Implementaciones diferentes 
Un mismo mensaje puede provocar la invocación de 
34 1c2013 
métodos distintos 
Vinculación tardía 
Se retarda la decisión sobre el método a llamar hasta el 
momento en que vaya a ser utilizado
Caso SUnit 
TestCase es la “clase plantilla” 
setUp es un método a redefinir, con 
implementación vacía por defecto 
35 1c2013
36 1c2013
Herencia si se va a reutilizar la interfaz tal como 
está 
Relaciones “es un” 
Delegación cuando se va a reutilizar cambiando la 
interfaz 
Redefinición permite cambiar implementación 
manteniendo la semántica 
Clases abstractas no tienen instancias 
Polimorfismo = distintos comportamientos para un 
mismo mensaje 
37 1c2013
Principios de diseño de Smalltalk, de Daniel H. 
H. Ingalls. 
Lo tienen en: 
http://www.smalltalking.net/Papers/stDesign/stD 
38 1c2013 
esign.htm
Object-oriented analysis and design : with applications, Grady Booch 
Capítulo 3: “Classes and Objects” 
Análisis y diseño orientado a objetos, James Martin y James Odell 
Capítulo 16: “Administración de la complejidad de un objeto” 
Ambos libros están en biblioteca 
El de Booch tiene una versión en castellano, agotada 
39 1c2013 
Son libros antiguos 
Orientación a objetos, diseño y programación, Carlos Fontela 2008, 
capítulos 4 y 5 “Delegación” y “Herencia de implementación” 
Orientación a objetos, diseño y programación, Carlos Fontela 2008, 
capítulos 7 y 8 “Polimorfismo basado en herencia” y “Polimorfismo 
basado en interfaces” 
UML gota a gota, Martin Fowler, capítulos 4, 5, 6 y 7
Excepciones y cierre conceptual 
Calidad de código y buenas prácticas 
de desarrollo 
Ojo: el parcial no está lejos 
40 1c2013

Contenu connexe

Tendances

Jyoc java-cap05 metodos (funciones)
Jyoc java-cap05 metodos (funciones)Jyoc java-cap05 metodos (funciones)
Jyoc java-cap05 metodos (funciones)Jyoc X
 
Informe Técnico - Recursividad Unidad 2 (Rubi Veronica)
Informe Técnico - Recursividad Unidad 2 (Rubi Veronica)Informe Técnico - Recursividad Unidad 2 (Rubi Veronica)
Informe Técnico - Recursividad Unidad 2 (Rubi Veronica)Rubi Veronica Chimal Cuxin
 
Guía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CGuía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CPablo Chiesa
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Javaricardomore94
 
Curso Java Inicial 8 Conceptos Avanzados Applets
Curso Java Inicial   8 Conceptos Avanzados   AppletsCurso Java Inicial   8 Conceptos Avanzados   Applets
Curso Java Inicial 8 Conceptos Avanzados AppletsEmilio Aviles Avila
 
Unidad 5 Estructuras algoritmicas
Unidad 5 Estructuras algoritmicasUnidad 5 Estructuras algoritmicas
Unidad 5 Estructuras algoritmicasCarlos M. Sandoval
 
Lineamientos para la realización de la actividad de aprendizaje basado en pro...
Lineamientos para la realización de la actividad de aprendizaje basado en pro...Lineamientos para la realización de la actividad de aprendizaje basado en pro...
Lineamientos para la realización de la actividad de aprendizaje basado en pro...OlveraLizbeth
 
Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.DENIRAMIREZANDRADE
 

Tendances (20)

Jyoc java-cap05 metodos (funciones)
Jyoc java-cap05 metodos (funciones)Jyoc java-cap05 metodos (funciones)
Jyoc java-cap05 metodos (funciones)
 
Informe Técnico - Recursividad Unidad 2 (Rubi Veronica)
Informe Técnico - Recursividad Unidad 2 (Rubi Veronica)Informe Técnico - Recursividad Unidad 2 (Rubi Veronica)
Informe Técnico - Recursividad Unidad 2 (Rubi Veronica)
 
03 iteracion
03 iteracion03 iteracion
03 iteracion
 
Intro
IntroIntro
Intro
 
Recursividad
RecursividadRecursividad
Recursividad
 
Guía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CGuía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en C
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Ejercicios3
Ejercicios3Ejercicios3
Ejercicios3
 
Calse 3 JAVA 2012
Calse 3 JAVA 2012Calse 3 JAVA 2012
Calse 3 JAVA 2012
 
Curso Java Inicial 8 Conceptos Avanzados Applets
Curso Java Inicial   8 Conceptos Avanzados   AppletsCurso Java Inicial   8 Conceptos Avanzados   Applets
Curso Java Inicial 8 Conceptos Avanzados Applets
 
Unidad 5 Estructuras algoritmicas
Unidad 5 Estructuras algoritmicasUnidad 5 Estructuras algoritmicas
Unidad 5 Estructuras algoritmicas
 
Lineamientos para la realización de la actividad de aprendizaje basado en pro...
Lineamientos para la realización de la actividad de aprendizaje basado en pro...Lineamientos para la realización de la actividad de aprendizaje basado en pro...
Lineamientos para la realización de la actividad de aprendizaje basado en pro...
 
Poo3 java-0910
Poo3 java-0910Poo3 java-0910
Poo3 java-0910
 
Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.
 
Java
JavaJava
Java
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
T9
T9T9
T9
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Algoritmos recursivos
Algoritmos recursivosAlgoritmos recursivos
Algoritmos recursivos
 
Variables en Visual Basic 6.0
Variables en Visual Basic 6.0Variables en Visual Basic 6.0
Variables en Visual Basic 6.0
 

En vedette

3 interfaces clases_abstractas_herencia_polimorfismo
3 interfaces clases_abstractas_herencia_polimorfismo3 interfaces clases_abstractas_herencia_polimorfismo
3 interfaces clases_abstractas_herencia_polimorfismoJesus Alberto Iribe Gonzalez
 
Polimorfismo en java
Polimorfismo en javaPolimorfismo en java
Polimorfismo en javaSa_Van
 
Mcts self paced training kit exam 432 sql server 2008 - implementation and ...
Mcts self paced training kit exam 432   sql server 2008 - implementation and ...Mcts self paced training kit exam 432   sql server 2008 - implementation and ...
Mcts self paced training kit exam 432 sql server 2008 - implementation and ...Portal_do_Estudante_SQL
 
Aho hopcroft - estructura de datos y algoritmos p1
Aho   hopcroft - estructura de datos y algoritmos p1Aho   hopcroft - estructura de datos y algoritmos p1
Aho hopcroft - estructura de datos y algoritmos p1Emiliano Andres Abadi
 
Sql server 2012_licensing_reference_guide
Sql server 2012_licensing_reference_guideSql server 2012_licensing_reference_guide
Sql server 2012_licensing_reference_guideamenus006
 
Programación III (Java) - 03 Interfaces
Programación III (Java) - 03 InterfacesProgramación III (Java) - 03 Interfaces
Programación III (Java) - 03 InterfacesAndoni Eguíluz Morán
 
Interface Design Getting Real
Interface Design Getting RealInterface Design Getting Real
Interface Design Getting RealMiguel Rodriguez
 
Estructuras de datos osvaldo cairo
Estructuras de datos   osvaldo cairoEstructuras de datos   osvaldo cairo
Estructuras de datos osvaldo cairoYossLu Molina
 
Windows Server 2012 Exam Paper 70-411 PDF
Windows Server 2012 Exam Paper 70-411 PDFWindows Server 2012 Exam Paper 70-411 PDF
Windows Server 2012 Exam Paper 70-411 PDFKesavan Munuswamy
 
Clases abstractas e interfaces
Clases abstractas e interfacesClases abstractas e interfaces
Clases abstractas e interfaceslopezcortes
 
09 Clases Abstractas E Interfaces
09   Clases Abstractas E Interfaces09   Clases Abstractas E Interfaces
09 Clases Abstractas E InterfacesNetwork Sens
 
Sql server 2012 transact sql dml reference
Sql server 2012 transact sql dml referenceSql server 2012 transact sql dml reference
Sql server 2012 transact sql dml referenceU.N.S.C
 
SQL Server Backup and Restore
SQL Server Backup and RestoreSQL Server Backup and Restore
SQL Server Backup and RestoreKesavan Munuswamy
 
Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012dbLearner
 
NoSQL databases pros and cons
NoSQL databases pros and consNoSQL databases pros and cons
NoSQL databases pros and consFabio Fumarola
 
Recovery, logging and the transaction log
Recovery, logging and the transaction logRecovery, logging and the transaction log
Recovery, logging and the transaction logMiroslav Dimitrov
 

En vedette (20)

3 interfaces clases_abstractas_herencia_polimorfismo
3 interfaces clases_abstractas_herencia_polimorfismo3 interfaces clases_abstractas_herencia_polimorfismo
3 interfaces clases_abstractas_herencia_polimorfismo
 
Polimorfismo en java
Polimorfismo en javaPolimorfismo en java
Polimorfismo en java
 
Mcts self paced training kit exam 432 sql server 2008 - implementation and ...
Mcts self paced training kit exam 432   sql server 2008 - implementation and ...Mcts self paced training kit exam 432   sql server 2008 - implementation and ...
Mcts self paced training kit exam 432 sql server 2008 - implementation and ...
 
Aho hopcroft - estructura de datos y algoritmos p1
Aho   hopcroft - estructura de datos y algoritmos p1Aho   hopcroft - estructura de datos y algoritmos p1
Aho hopcroft - estructura de datos y algoritmos p1
 
Clases abstractas
Clases abstractasClases abstractas
Clases abstractas
 
Informes+con+ireport (2)
Informes+con+ireport (2)Informes+con+ireport (2)
Informes+con+ireport (2)
 
Clases abstractas
Clases abstractasClases abstractas
Clases abstractas
 
Sql server 2012_licensing_reference_guide
Sql server 2012_licensing_reference_guideSql server 2012_licensing_reference_guide
Sql server 2012_licensing_reference_guide
 
Programación III (Java) - 03 Interfaces
Programación III (Java) - 03 InterfacesProgramación III (Java) - 03 Interfaces
Programación III (Java) - 03 Interfaces
 
Interface Design Getting Real
Interface Design Getting RealInterface Design Getting Real
Interface Design Getting Real
 
Estructuras de datos osvaldo cairo
Estructuras de datos   osvaldo cairoEstructuras de datos   osvaldo cairo
Estructuras de datos osvaldo cairo
 
Windows Server 2012 Exam Paper 70-411 PDF
Windows Server 2012 Exam Paper 70-411 PDFWindows Server 2012 Exam Paper 70-411 PDF
Windows Server 2012 Exam Paper 70-411 PDF
 
Clases abstractas e interfaces
Clases abstractas e interfacesClases abstractas e interfaces
Clases abstractas e interfaces
 
09 Clases Abstractas E Interfaces
09   Clases Abstractas E Interfaces09   Clases Abstractas E Interfaces
09 Clases Abstractas E Interfaces
 
MCSA Exam paper 70-412 PDF
MCSA Exam paper 70-412 PDFMCSA Exam paper 70-412 PDF
MCSA Exam paper 70-412 PDF
 
Sql server 2012 transact sql dml reference
Sql server 2012 transact sql dml referenceSql server 2012 transact sql dml reference
Sql server 2012 transact sql dml reference
 
SQL Server Backup and Restore
SQL Server Backup and RestoreSQL Server Backup and Restore
SQL Server Backup and Restore
 
Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012
 
NoSQL databases pros and cons
NoSQL databases pros and consNoSQL databases pros and cons
NoSQL databases pros and cons
 
Recovery, logging and the transaction log
Recovery, logging and the transaction logRecovery, logging and the transaction log
Recovery, logging and the transaction log
 

Similaire à delegacion_herencia_polimorfismo (20)

Jf 2 14_sg_esp(4)
Jf 2 14_sg_esp(4)Jf 2 14_sg_esp(4)
Jf 2 14_sg_esp(4)
 
leccion 14
leccion 14leccion 14
leccion 14
 
Cap14
Cap14Cap14
Cap14
 
Jf 2 14_sg_esp(4)
Jf 2 14_sg_esp(4)Jf 2 14_sg_esp(4)
Jf 2 14_sg_esp(4)
 
Capítulo 14
Capítulo 14Capítulo 14
Capítulo 14
 
Alice 14
Alice 14Alice 14
Alice 14
 
PDF 14
PDF 14PDF 14
PDF 14
 
Alice 14
Alice 14Alice 14
Alice 14
 
Alice 14
Alice 14Alice 14
Alice 14
 
CAPITULO 14 DE ALICE
CAPITULO 14 DE ALICECAPITULO 14 DE ALICE
CAPITULO 14 DE ALICE
 
Capitulo 14
Capitulo 14Capitulo 14
Capitulo 14
 
CAPITULO 14 ALICE
CAPITULO 14 ALICECAPITULO 14 ALICE
CAPITULO 14 ALICE
 
Alice capitulo 14
Alice capitulo 14Alice capitulo 14
Alice capitulo 14
 
Metodos Constructor Y Destructor
Metodos Constructor Y DestructorMetodos Constructor Y Destructor
Metodos Constructor Y Destructor
 
Tema7 herencia
Tema7 herenciaTema7 herencia
Tema7 herencia
 
Informatica
InformaticaInformatica
Informatica
 
Tap04 poo
Tap04 pooTap04 poo
Tap04 poo
 
Patron Singleton
Patron SingletonPatron Singleton
Patron Singleton
 
Recursividad y Cola (Estructura de Datos)
Recursividad y Cola (Estructura de Datos)Recursividad y Cola (Estructura de Datos)
Recursividad y Cola (Estructura de Datos)
 
Conceptos POO PV
Conceptos POO PVConceptos POO PV
Conceptos POO PV
 

Dernier

ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSBeatrizGonzales19
 
Caso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralCaso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralAitana
 
Trabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaTrabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaKANTUPAULAPORCELYUCR
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Evaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfEvaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfGuillermoBarquero7
 
2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptxEncomiendasElSherpa
 

Dernier (6)

ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
 
Caso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralCaso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business Central
 
Trabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaTrabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - Ofimática
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Evaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfEvaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdf
 
2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx
 

delegacion_herencia_polimorfismo

  • 2. Encapsulamiento Delegación Herencia Herencia vs. delegación UML: clases, secuencias Redefinición Clases abstractas y métodos abstractos Polimorfismo 2 1c2013
  • 3. Alan Kay se basó en sus conocimientos de bacterias La membrana de una bacteria nos aísla de la ccoommpplleejjiiddaadd iinntteerrnnaa Sabemos de ella por su comportamiento La bacteria interactúa con el mundo a través de su interfaz Respondiendo a estímulos Realizando acciones 3 1c2013
  • 4. Importante para garantizar ocultamiento de implementación Atributos y métodos privados Sólo los puede usar el objeto receptor en su clase Atributos y métodos públicos Se los puede usar desde cualquier lado Atributos y métodos protegidos Sólo los puede usar el objeto receptor en su clase y en las clases derivadas 4 1c2013
  • 5. Todos los métodos son públicos Todos los atributos son protegidos No privados, se pueden acceder desde una subclase Aunque se recomienda considerarlos privados Hay convenciones para hacer métodos y atributos privados Pero no se puede forzar Sólo como aviso 5 1c2013
  • 6. Lo que se indica con (-) está oculto: es “privado” de cada objeto Lo que se indica con (+) lo pueden usar los clientes: es “público” 6 1c2013
  • 7. Sistema = conjunto de partes interrelacionadas Con características singulares Se habla de web (=telaraña) de objetos Web de objetos =>> wweebb ddee ccllaasseess Mecanismos de vinculación Agregación Generalización y especialización (son los mecanismos de abstracción llevados a POO)
  • 8. Un objeto contiene referencias a otros objetos y les delega comportamiento Segmento >> longitud ^ (p1 distancia: p2). 8 1c2013
  • 9. Es una forma de reutilización Mediante el envío de un mensaje a otro objeto “cliente” pide un servicio a un “servidor” El otro objeto se preocupa de cómo implementa el método Evitar los objetos omnipotentes Con muchas responsabilidades El comportamiento debe mantenerse junto con la información que utiliza 9 1c2013
  • 10. Composición Las partes no son independientes del todo El objeto contenido no puede estar contenido en más de un contenedor Eliminación del todo implica la de las partes Rombo lleno en UML 10 1c2013
  • 13. En un banco existen varios mostradores. Cada mostrador puede atender cierto tipo de trámites y tiene una cola de clientes, que no puede superar un número determinado para cada cola. Además hay una cola general del banco en la cual se colocan todos los clientes cuando las colas de los mostradores están completas. Cada cliente concurre al banco para realizar un solo trámite. Un trámite tiene un horario de creación y un horario de 13 1c2013 resolución. Se pide: 1) Implementar el método mostrador>>atiende:unTramite, que devuelve true o false indicando si el tramite se puede atender o no en el mostrador; note que el tipo de trámite correspondiente a unTramite tiene que coincidir con alguno de los tipos de trámite que atiende el mostrador.
  • 14. 2) Implementar el método banco>>mostradoresQueAtienden:unTramite, que retorna la colección de todos los mostradores que atienden ese trámite. 3) Implementar el método banco>>mejorMostradorPara:unTramite, que retorna el mostrador con la cola más corta con espacio para al menos una persona más y que atienda ese trámite; si ningún mostrador tiene espacio, retorna nil. 4) Implementar el método banco>>atender:unCliente; cuando llega un cliente al banco se lo ubica en el mostrador que atienda el trámite que el cliente requiere, que tenga espacio y la menor cantidad de clientes esperando; si no hay lugar en ningún mostrador el cliente debe permanecer en la cola general de espera del banco. 5) Implementar el método mostrador>>atenderPrimero; debe desencolar al primer cliente de la cola y atender su trámite, lo cual implica asignarle la hora de resolución al trámite del cliente. 14 1c2013 6) Implementar el método banco>>siguienteClientePara:unMostrador; debe elegir de la cola general del banco, el primer cliente que necesite realizar un trámite que unMostrador pueda atender; si no existe tal cliente el método retorna nil.
  • 17. Observamos No tienen por qué ser completas: sí excluyentes Ojo: ¿Cuadrado no podría ser una especialización de Rombo? Algunas de las clases del árbol pueden no tener instancias: clases abstractas La ubicación de una clase en la jerarquía se establece por la relación “es un” Cada clase hereda comportamiento y estructura de su ancestro 17 1c2013
  • 18. Animal subclass: #Vaca Vaca tiene, por lo menos: los mismos atributos de Animal los mismos métodos de Animal puede agregar atributos y métodos puede redefinir métodos 18 1c2013
  • 19. Se puede volver a definir un método en una clase descendiente: 19 1c2013
  • 20. Debe preservar la semántica (significado) Obligatoria Si la implementación debe ser diferente Caso de extraer en CuentaBancaria 20 1c2013 Optativa Razones, en general, de eficiencia Caso de longitud de Elipse Los métodos deben tener la misma firma
  • 21. Herencia: relación “es un” Composición/agregación: “contiene” “hace referencia” “es parte de” Mito: en POO todo es herencia Mal ejemplo: Stack en Java 1.0/1.1 y Smalltalk ¡una pila no es un vector! Herencia si se va a reutilizar la interfaz Stack es un mal ejemplo 21 1c2013
  • 22. Herencia Cuando se va a reutilizar la interfaz tal como está Delegación Cuando se va a reutilizar sin mantener la interfaz 22 1c2013
  • 23. Las clases dejaron de ser excluyentes 23 1c2013
  • 24. 24 1c2013 ¿No sería mejor…
  • 25. No tienen instancias Caso de CuentaBancaria si implemento CajaAhorro Generalizan estructura y comportamiento de varias clases Ej, método depositar 25 1c2013 O crean una familia
  • 26. No definidas en Smalltalk Sólo convencionalmente Se supone que una clase con un método abstracto es abstracta 26 1c2013
  • 27. No se quiere que sean invocados: caso del extraer de CuentaBancaria Las instancias de las subclases van a poder responder el mensaje Pero sin definir comportamiento en la clase ancestro A nivel de la clase madre sólo se puede prever la firma que tendrá 27 1c2013 Corolarios No tienen implementación Deben redefinirse
  • 28. Convencional Llamar a self subclassResponsibility Pero no hay manera de forzar que no se lo 28 1c2013 llame
  • 29. cb := CuentaBancaria new. cc := CuentaCorriente new. 29 1c2013 cb extraer: 200. cc extraer: 200.
  • 31. unaElipse mover. => llama al dibujar de Elipse unTriangulo mover. => llama al dibujar de Triangulo coleccion dibujar. => llama al dibujar de la clase de cada figura En Smalltalk la “virtualidad” se da por defecto 31 1c2013
  • 32. Los métodos virtuales agregan ineficiencias Pero garantizan reutilización Eliminar la “virtualidad” sólo si se demuestra que no se van a redefinir y la presunta ineficiencia Un método debe ser virtual sí o sí cuando se lo redefinirá y es llamado desde: Un método en una clase ancestro Un método que delegue en el método en cuestión de la clase ancestro En Smalltalk no hay opción: todo método de instancia es virtual 32 1c2013
  • 33. Magnitude >> <= otroValor ^ self subclassResponsibility Magnitude >> > otroValor ^ otroValor <= self Luego, SortedCollection usa <= para insertar elementos => deberíamos redefinir <= en la clase correspondiente Otro ejemplo: Object >> = 33 1c2013
  • 34. Objetos de distintas clases de una misma familia entienden los mismos mensajes Igual semántica (significado) Implementaciones diferentes Un mismo mensaje puede provocar la invocación de 34 1c2013 métodos distintos Vinculación tardía Se retarda la decisión sobre el método a llamar hasta el momento en que vaya a ser utilizado
  • 35. Caso SUnit TestCase es la “clase plantilla” setUp es un método a redefinir, con implementación vacía por defecto 35 1c2013
  • 37. Herencia si se va a reutilizar la interfaz tal como está Relaciones “es un” Delegación cuando se va a reutilizar cambiando la interfaz Redefinición permite cambiar implementación manteniendo la semántica Clases abstractas no tienen instancias Polimorfismo = distintos comportamientos para un mismo mensaje 37 1c2013
  • 38. Principios de diseño de Smalltalk, de Daniel H. H. Ingalls. Lo tienen en: http://www.smalltalking.net/Papers/stDesign/stD 38 1c2013 esign.htm
  • 39. Object-oriented analysis and design : with applications, Grady Booch Capítulo 3: “Classes and Objects” Análisis y diseño orientado a objetos, James Martin y James Odell Capítulo 16: “Administración de la complejidad de un objeto” Ambos libros están en biblioteca El de Booch tiene una versión en castellano, agotada 39 1c2013 Son libros antiguos Orientación a objetos, diseño y programación, Carlos Fontela 2008, capítulos 4 y 5 “Delegación” y “Herencia de implementación” Orientación a objetos, diseño y programación, Carlos Fontela 2008, capítulos 7 y 8 “Polimorfismo basado en herencia” y “Polimorfismo basado en interfaces” UML gota a gota, Martin Fowler, capítulos 4, 5, 6 y 7
  • 40. Excepciones y cierre conceptual Calidad de código y buenas prácticas de desarrollo Ojo: el parcial no está lejos 40 1c2013