SlideShare una empresa de Scribd logo
1 de 26
Programación Orientada a
     Objetos (OOP)
Definición

La Programación Orientada a Objetos (Object Oriented
Programming) es una técnica de programación que establece
una unión muy estrecha entre algoritmos y datos.



  Algoritmos      +        Datos       =        Objetos
Características
Las características principales de los objetos son:
Encapsulación: combinación en una sola estructura los
datos, procedimientos y funciones que los manipulan para
formar un nuevo tipo - el objeto.
Herencia: Definición de un objeto y luego uso del mismo
para construir una jerarquía de objetos descendientes, con
cada descendiente heredando acceso a todo el código y datos
del ancestro.
Polimorfismo: Dada una acción un nombre que es
compartido hacia arriba y abajo en una jerarquía de objetos,
con cada objeto en la jerarquía implementando la acción de
una manera apropiada a sí mismo.
Mensajes y métodos
•En la programación orientada a objetos, la acción se indica
mediante la transmisión de un mensaje a un agente (un
objeto) responsable de la acción.
•El mensaje tiene codificada la petición de una acción y se
acompaña de cualquier información adicional (argumentos)
necesaria para llevar a cabo la petición.
•El receptor es el agente al cual se envía el mensaje.
•Si el receptor acepta el mensaje, acepta la responsabilidad de
llevar a cabo la acción indicada.
•En respuesta a un mensaje, el receptor ejecutará algún
método para satisfacer la petición.
Diferencia entre mensajes y
             procedimientos
La distinción entre el paso de mensajes y la llamada a
procedimiento es que, en el paso de mensaje, hay un receptor
designado, y la interpretación – es decir, la selección del
método que se ejecutará como respuesta al mensaje – puede
diferir con receptores diferentes.
Por lo general, el receptor específico para cualquier mensaje no
se conoce sino hasta el tiempo de ejecución, por lo que la
determinación del método que se debe invocar no puede hacerse
sino hasta entonces.
Clases y ejemplares

•Todos los objetos son ejemplares de una clase.
•El método invocado por un objeto en respuesta a un mensaje
queda determinado por la clase del receptor.
•Todos los objetos de una clase dada usan el mismo método
en respuesta a mensajes similares.
Herencia

•Las clases se pueden organizar en una estructura de herencia
jerárquica.
•Una subclase heredará atributos de una superclase que esté
más arriba en el árbol.
•Una superclase abstracta es una clase (como mamífero) que
se usa sólo para crear subclases y para la cual no hay
ejemplares directos.
Ejemplo de herencia
                                             Objeto material




                       Animal                                     Planta

                       Mamífero                                    Flor



 Perro                 Humano                Ornitorrinco


         Comerciante    Artista   Dentista



         Florista



Relámpago   Flo          Beth      Ken          Pepe           flores de la abuela
Enlace de métodos
•La búsqueda para encontrar un método que pueda invocarse
en respuesta a un mensaje dado empieza con la clase del
receptor.
•Si no se encuentra un método apropiado, se lleva la
búsqueda a la superclase de dicha clase.
•La búsqueda continúa hacia arriba de la cadena de la
superclase hasta que se encuentra un método o se agota la
cadena de la superclase.
•En el primer caso el método se ejecuta; en el último caso, se
emite un mensaje de error.
Computación como simulación
El computador es un manejador de datos que sigue un patrón de
instrucciones, se desplaza por la memoria, obtiene de diversas
posiciones, los transforma de alguna manera y devuelve los
resultados a otras posiciones.
Si observamos los valores de los segmentos, podemos determinar
el estado de la máquina o los resultados producidos por el
cómputo.
Aunque el modelo puede ser un cuadro más o menos exacto de lo
que pasa dentro de un computador, nos ayuda muy poco para
entender como resolver problemas por medio de él.
Computación como simulación
                 (cont.)
En el marco orientado a objetos, nunca mencionamos direcciones de
memoria, variables, asignaciones o algún otro de los términos
convencionales de programación.
En su lugar, hablamos de objetos, mensajes y responsabilidad por alguna
acción.
En lugar de un procesador triturador de bits.. que saquea estructuras de
datos, nosotros tenemos un universo de objetos con buen comportamiento
que cortésmente se solicitan entre sí cumplir sus diversos deseos, Dan
Ingalls.
Ver a la computación como si creara un “universo” se asemeja en mucho a
un estilo de simulación de computación llamado “simulación determinada
por eventos discretos”.
Manejo de la complejidad
Puesto que la construcción de software es en forma inherente
una actividad de sistemas, esto es, un ejercicio de
interrelaciones complejas, el esfuerzo de comunicación es
grande y pronto domina la disminución de tiempo de trabajo
individual originado por la división. Añadir más hombres
alarga, no acorta, el plan de trabajo.
Mecanismos de abstracción
Módulos
1. Uno debe proporcionar al usuario toda la información necesaria para usar correctamente el
módulo, y nada más.
2. Uno debe proporcionar al implantador toda la información necesaria para completarlo, y nada
más.
Los módulos por si mismos ofrecen un método efectivo para la ocultación de información, pero
no nos permite realizar la creación de ejemplares (instantiation), la cual es la capacidad para
hacer copias múltiples de las áreas de datos.

Tipos de datos abstractos
1. Exportar una definición de tipo
2. Proporcionar un conjunto de operaciones que puedan usarse para manipular los ejemplares de
tipo.
3. Proteger los datos asociados con el tipo de tal manera que pueda operar con ellos solo
mediante las operaciones provistas.
4. Crear múltiples ejemplares del tipo.

Objetos: mensajes, herencia y polimorfismo
En el paso de mensajes está implícita la idea de que un mensaje puede variar de acuerdo con los
diferentes objetos. El comportamiento y la respuesta que el mensaje provoca dependerá del
objeto que lo recibe.
Tarea #1
Dibuje la jerarquía de dispositivos electrónicos que conozca
(pasivos, activos, de dos patas de 3 patas, lineales, no lineales,
etc.)

De un ejemplo de una jerarquía de la vida diaria similar a la
vista en clase.

Dibuje una jerarquía de figuras geométricas (cuadrado,
triángulo, pentágono, trapecio, etc.)

Dibuje una jerarquía de vehículos para pasajeros (bicicleta,
motocicleta, automóvil, etc.).
Tarjetas CRC
Las tarjetas CRC (Class-Responsability-Collaboration) Son utilizadas para
representar clases en el proceso de diseño.
sirven para determinar que clases se necesitan y como interactúan


                                        15 cm


                                                Colaboradores
                     Nombre de Clase

                    Responsabilidades
      10 cm
Ejemplo
                     Controlador
 Vista
                     Modelo
Dibuja el modelo
                                                       Vista
                               Controlador
Transforma
                                                       Modelo
coordenadas                    Interpreta entrada de
                               usuario
                               Distribuye control

Modelo

Mantiene
información del
problema
Envía notificación
de cambios
Reglas para los nombres
•Use nombres pronunciables. Como regla práctica, si no se
puede leer el nombre en voz alta, no es un buen nombre.
•Use mayúsculas o subrayado para marcar el principio de una
nueva palabra dentro del nombre.
•Examine con cuidado las abreviaturas.
•No use dígitos dentro de un nombre, se pueden confundir con
letras (l y 1, O y 0, etc.)
•Nombre las variables y funciones que manejen valores
booleanos de tal forma que describan claramente la
interpretación de un valor falso o verdadero.
Categorías de las clases
Clases de manejadores de datos, de datos o de estado. Son
clases cuya responsabilidad principal es mantener
información de datos o de estado de un genero o de otro.
Pozos de datos o fuentes de datos. Clases que generan datos
o que aceptan datos y los procesan.
Clase de vista u observadoras. Presentan la información en
un dispositivo de salida.
Clases auxiliares o de ayuda. Guardan poca o ninguna
información, pero asisten en la ejecución de tareas complejas.
Diseño por escenarios
Iniciar con las clases más obvias y necesarias
Se simulan escenarios jugando al “que tal si”.
Cada diseñador es responsable de una o más clases
Se levantan las clases activas
El control se pasa moviendo una tarjeta a otra
Las tarjetas relacionadas se agrupan
Se identifica cada acción y se hace responsable a algún objeto
Se añade la responsabilidad a ese objeto
Se prueban más escenarios
Case de ejemplo: Cajero automático
Se desea desarrollar software para un cajero automático
La primera clase es LectorDeTarjetas que muestra el mensaje de bienvenida y lee la
banda magnética.
Cuando se introduce el NIP, se lo pasa a VerificadorDeNip
VerificadorDeNip pasa el número de cuenta a ManejadorDeCuenta para confirmar
cuenta y NIP. Si los números coinciden, VerificadorDeNip regresa verdadero, sino
regresa falso.
Si todo está correcto LectorDeTarjetas pasa el control a SelectorDeActividad.
Colaboradores
 LectorDeTarjetas               VerificadorDeNip
                                SelectorDeActividad
Muestre mensaje de
bienvenida, espere tarjeta
                                                                          Colaboradores
Pida a VerificadorDeNip que                ManejadorDeCuenta
compruebe validez
Llame al SelectorDeActividad              Verificar validez de cuenta;
                                          devuelva número NIP
Devuelva tarjeta al usuario
                                          Verifique información de
                                          retiro/depósito




                                Colaboradores
 VerificadorDeNip               ManejadorDeCuent
                                a
Reciba número NIP de                                                       Colaboradores
ManejadorDeCuenta                            SelectorDeActividad           ManejadorDeDepósi
Presente ventana de solicitud                                              tos
de NIP                                      Muestre menú de actividades
                                                                           ManejadorDeRetiros
Reciba número NIP del usuario               Espere selección de usuario
Compare números NIP;                        Llame al manejador de
devuelva el resultado                       transacción apropiado
Colaboradores
 ManejadorDeRetiros                 ManejadorDeCuent
                                    a
Pregunte al usuario la cantidad
                                    DistribuidorDeEfecti
a retirar
                                    vo
Verifique la cantidad con
ManejadorDeCuenta
Diga al DistribuidorDeEfectivo
que descargue




                                                                Colaboradores
                                   CajaElectrónica              ManejadorDeRetiros
                                                                ManejadorDeDispos
                                  Dar efectivo
                                                                itivos
                                  Dar sobre de depósito con
                                  indicación de hora
                                  Recuperar sobre de depósito
Manejadores de datos
Cualquier valor al que se tenga acceso o que pueda ser modificado
ampliamente, o que vaya a existir por un periodo significativo, debe ser
manejado. Es decir, una y solo una clase debe tener la responsabilidad de
las acciones tomadas para consultar o alterar los valores. Todas las demás
clases que necesiten tener los valores deben hacer solicitudes al manejador
para tales acciones, más que lograr el acceso de datos por si mismas.
El acceso a datos debe quedar tan restringido como sea posible. Si una
clase no necesita en absoluto el acceso a cierta parte de la información
para llevar a cabo sus tareas, no debe buscar y tener tal acceso.
Una clase debe tener acceso a todos los valores de datos que necesite para
llevar a cabo sus responsabilidades, y solo a ellos.
Ejemplo
discusión inapropiada entre manejadores
ManejadorDeRetiros                         ManejadorDeCuenta
¿Cuál es el saldo actual?                  El saldo actual es $1,756.09
(Hmmm. Si resto $200 a esa
cantidad todavía obtengo un
valor positivo. De acuerdo)
Por favor ajusta el saldo a $1,556.09


discusión apropiada entre manejadores
ManejadorDeRetiros                         ManejadorDeCuenta
¿Puede retirar el cliente $200?             (Hmmm. Si resto $200 a ese
                                           saldo todavía obtengo un
                                           valor positivo)
                                           Si
De acuerdo. Por favor registra el retiro
Tarea #2
Describa las responsabilidades de una organización que comprenda al
menos seis tipos de individuos. Ejemplos de una organización son un
escuela (estudiantes, profesores, director, conserje), un negocio (secretaria,
gerente, trabajadores) y un club (presidente, vicepresidente, miembros).
Para cada clase de individuo, describa las responsabilidades y los
colaboradores.

Considere un juego común. Describa un sistema de software que interactúe
con el usuario para jugarlo, (dados, solitario, damas, turista, etc.)

Para cada uno de los pares siguientes, diga si la relación es es-un o tiene-
un.
Casa – techo
Conserje – empleado
Ratón digital – dispositivo de entrada
Menú – ventana
Conjunto – colección
Herencia
Tipos de relaciones: es-un                    tiene-un
                    Herencia                  Composición

                  Transporte



  Avión                        Vehículo

                                                         Puerta
                                                         Motor
                    Camión                Automóvil
                                                         Capota
                                                         Llanta

Más contenido relacionado

La actualidad más candente

Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetoslindacajaperuiz
 
Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1Ezer Ayala Mutul
 
ProgramacióN Orientada A Objetos
ProgramacióN Orientada A ObjetosProgramacióN Orientada A Objetos
ProgramacióN Orientada A ObjetosPatricio Abad
 
Realizarmanipulacion
RealizarmanipulacionRealizarmanipulacion
Realizarmanipulacionannaaaprz
 
Copia de e.si.m.l.p
Copia de e.si.m.l.pCopia de e.si.m.l.p
Copia de e.si.m.l.pAyhli123
 
Apunte paradigma orientado a objetos
Apunte paradigma orientado a objetosApunte paradigma orientado a objetos
Apunte paradigma orientado a objetosAlejandro Canosa
 
Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.Juan Carlos Espinoza
 
9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetosClara Patricia Avella Ibañez
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosjent46
 
Tema 5 arreglos y cadenas - lsia por gio
Tema 5   arreglos y cadenas - lsia por gioTema 5   arreglos y cadenas - lsia por gio
Tema 5 arreglos y cadenas - lsia por gioRobert Wolf
 
Conceptos poo progra visual
Conceptos poo progra visualConceptos poo progra visual
Conceptos poo progra visualLibertad25
 

La actualidad más candente (19)

Visual
VisualVisual
Visual
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Conceptos poo (presentación1)
Conceptos poo (presentación1)Conceptos poo (presentación1)
Conceptos poo (presentación1)
 
Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1
 
ProgramacióN Orientada A Objetos
ProgramacióN Orientada A ObjetosProgramacióN Orientada A Objetos
ProgramacióN Orientada A Objetos
 
Programación
ProgramaciónProgramación
Programación
 
Realizarmanipulacion
RealizarmanipulacionRealizarmanipulacion
Realizarmanipulacion
 
Copia de e.si.m.l.p
Copia de e.si.m.l.pCopia de e.si.m.l.p
Copia de e.si.m.l.p
 
Realizarmanipulacion
RealizarmanipulacionRealizarmanipulacion
Realizarmanipulacion
 
Copia de e.si.m.l.p
Copia de e.si.m.l.pCopia de e.si.m.l.p
Copia de e.si.m.l.p
 
Apunte paradigma orientado a objetos
Apunte paradigma orientado a objetosApunte paradigma orientado a objetos
Apunte paradigma orientado a objetos
 
8.Clases y objetos Java
8.Clases y objetos Java8.Clases y objetos Java
8.Clases y objetos Java
 
Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.
 
9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Tema 5 arreglos y cadenas - lsia por gio
Tema 5   arreglos y cadenas - lsia por gioTema 5   arreglos y cadenas - lsia por gio
Tema 5 arreglos y cadenas - lsia por gio
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Conceptos poo progra visual
Conceptos poo progra visualConceptos poo progra visual
Conceptos poo progra visual
 
Qué es la poo
Qué es la pooQué es la poo
Qué es la poo
 

Similar a IntroduccionPOO

Diseño y realizacion jessica proaño
Diseño y realizacion jessica proañoDiseño y realizacion jessica proaño
Diseño y realizacion jessica proañoPaty Love
 
Base de datos orientada a objetos vs base obje to relacion
Base de datos orientada a objetos vs base obje to relacionBase de datos orientada a objetos vs base obje to relacion
Base de datos orientada a objetos vs base obje to relacionAlfonso Triana
 
Unidad 1 Programación Orientada a Objetos (Programación III)
Unidad 1 Programación Orientada a Objetos (Programación III)Unidad 1 Programación Orientada a Objetos (Programación III)
Unidad 1 Programación Orientada a Objetos (Programación III)Servicio Tecnico de Computadoras
 
Programación i 1. diseño orientado a objetos
Programación i 1. diseño orientado a objetosProgramación i 1. diseño orientado a objetos
Programación i 1. diseño orientado a objetosEdward Ropero
 
Trabajo de diseño de sistemas orientados a objetos
Trabajo de diseño de sistemas orientados a objetosTrabajo de diseño de sistemas orientados a objetos
Trabajo de diseño de sistemas orientados a objetosdouglimar89
 
Programacion Orientada a Objetos IE
Programacion Orientada a Objetos IEProgramacion Orientada a Objetos IE
Programacion Orientada a Objetos IEKaren Olan
 
Programación Orientada a Objetos parte 2
Programación Orientada a Objetos  parte 2Programación Orientada a Objetos  parte 2
Programación Orientada a Objetos parte 2Karla Silva
 
Programación en base de datos
Programación en base de datosProgramación en base de datos
Programación en base de datosFred M. Jr.
 
Clase y Objeto de la POO
Clase y Objeto de la POOClase y Objeto de la POO
Clase y Objeto de la POOjvaldes9928
 
Análisis y diseño de sistemas de información
Análisis y diseño de sistemas de informaciónAnálisis y diseño de sistemas de información
Análisis y diseño de sistemas de informaciónjovy2905
 
Trabajo sistemas digitales
Trabajo sistemas digitalesTrabajo sistemas digitales
Trabajo sistemas digitalesDany7x
 
Monografía leslie
Monografía leslieMonografía leslie
Monografía leslielesliekbt24
 
Estructuras básicas 3 er periodo.docx
Estructuras básicas 3 er periodo.docxEstructuras básicas 3 er periodo.docx
Estructuras básicas 3 er periodo.docxLuzAngieBolaosOrdoez
 
Estructuras básicas 3 er periodo.docx (1)
Estructuras básicas 3 er periodo.docx (1)Estructuras básicas 3 er periodo.docx (1)
Estructuras básicas 3 er periodo.docx (1)LuzAngieBolaosOrdoez
 

Similar a IntroduccionPOO (20)

Conceptos poo
Conceptos pooConceptos poo
Conceptos poo
 
Diseño y realizacion jessica proaño
Diseño y realizacion jessica proañoDiseño y realizacion jessica proaño
Diseño y realizacion jessica proaño
 
Base de datos orientada a objetos vs base obje to relacion
Base de datos orientada a objetos vs base obje to relacionBase de datos orientada a objetos vs base obje to relacion
Base de datos orientada a objetos vs base obje to relacion
 
Unidad 1 Programación Orientada a Objetos (Programación III)
Unidad 1 Programación Orientada a Objetos (Programación III)Unidad 1 Programación Orientada a Objetos (Programación III)
Unidad 1 Programación Orientada a Objetos (Programación III)
 
Programación i 1. diseño orientado a objetos
Programación i 1. diseño orientado a objetosProgramación i 1. diseño orientado a objetos
Programación i 1. diseño orientado a objetos
 
Trabajo de diseño de sistemas orientados a objetos
Trabajo de diseño de sistemas orientados a objetosTrabajo de diseño de sistemas orientados a objetos
Trabajo de diseño de sistemas orientados a objetos
 
Programacion Orientada a Objetos IE
Programacion Orientada a Objetos IEProgramacion Orientada a Objetos IE
Programacion Orientada a Objetos IE
 
3_Orientación a objeto
3_Orientación a objeto3_Orientación a objeto
3_Orientación a objeto
 
Programación Orientada a Objetos parte 2
Programación Orientada a Objetos  parte 2Programación Orientada a Objetos  parte 2
Programación Orientada a Objetos parte 2
 
Programación en base de datos
Programación en base de datosProgramación en base de datos
Programación en base de datos
 
Unidad II
Unidad IIUnidad II
Unidad II
 
Clase y Objeto de la POO
Clase y Objeto de la POOClase y Objeto de la POO
Clase y Objeto de la POO
 
Unidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a ObjetosUnidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a Objetos
 
Análisis y diseño de sistemas de información
Análisis y diseño de sistemas de informaciónAnálisis y diseño de sistemas de información
Análisis y diseño de sistemas de información
 
Poo 03
Poo 03Poo 03
Poo 03
 
Trabajo sistemas digitales
Trabajo sistemas digitalesTrabajo sistemas digitales
Trabajo sistemas digitales
 
Crc use case_uml
Crc use case_umlCrc use case_uml
Crc use case_uml
 
Monografía leslie
Monografía leslieMonografía leslie
Monografía leslie
 
Estructuras básicas 3 er periodo.docx
Estructuras básicas 3 er periodo.docxEstructuras básicas 3 er periodo.docx
Estructuras básicas 3 er periodo.docx
 
Estructuras básicas 3 er periodo.docx (1)
Estructuras básicas 3 er periodo.docx (1)Estructuras básicas 3 er periodo.docx (1)
Estructuras básicas 3 er periodo.docx (1)
 

IntroduccionPOO

  • 2. Definición La Programación Orientada a Objetos (Object Oriented Programming) es una técnica de programación que establece una unión muy estrecha entre algoritmos y datos. Algoritmos + Datos = Objetos
  • 3. Características Las características principales de los objetos son: Encapsulación: combinación en una sola estructura los datos, procedimientos y funciones que los manipulan para formar un nuevo tipo - el objeto. Herencia: Definición de un objeto y luego uso del mismo para construir una jerarquía de objetos descendientes, con cada descendiente heredando acceso a todo el código y datos del ancestro. Polimorfismo: Dada una acción un nombre que es compartido hacia arriba y abajo en una jerarquía de objetos, con cada objeto en la jerarquía implementando la acción de una manera apropiada a sí mismo.
  • 4. Mensajes y métodos •En la programación orientada a objetos, la acción se indica mediante la transmisión de un mensaje a un agente (un objeto) responsable de la acción. •El mensaje tiene codificada la petición de una acción y se acompaña de cualquier información adicional (argumentos) necesaria para llevar a cabo la petición. •El receptor es el agente al cual se envía el mensaje. •Si el receptor acepta el mensaje, acepta la responsabilidad de llevar a cabo la acción indicada. •En respuesta a un mensaje, el receptor ejecutará algún método para satisfacer la petición.
  • 5. Diferencia entre mensajes y procedimientos La distinción entre el paso de mensajes y la llamada a procedimiento es que, en el paso de mensaje, hay un receptor designado, y la interpretación – es decir, la selección del método que se ejecutará como respuesta al mensaje – puede diferir con receptores diferentes. Por lo general, el receptor específico para cualquier mensaje no se conoce sino hasta el tiempo de ejecución, por lo que la determinación del método que se debe invocar no puede hacerse sino hasta entonces.
  • 6. Clases y ejemplares •Todos los objetos son ejemplares de una clase. •El método invocado por un objeto en respuesta a un mensaje queda determinado por la clase del receptor. •Todos los objetos de una clase dada usan el mismo método en respuesta a mensajes similares.
  • 7. Herencia •Las clases se pueden organizar en una estructura de herencia jerárquica. •Una subclase heredará atributos de una superclase que esté más arriba en el árbol. •Una superclase abstracta es una clase (como mamífero) que se usa sólo para crear subclases y para la cual no hay ejemplares directos.
  • 8. Ejemplo de herencia Objeto material Animal Planta Mamífero Flor Perro Humano Ornitorrinco Comerciante Artista Dentista Florista Relámpago Flo Beth Ken Pepe flores de la abuela
  • 9. Enlace de métodos •La búsqueda para encontrar un método que pueda invocarse en respuesta a un mensaje dado empieza con la clase del receptor. •Si no se encuentra un método apropiado, se lleva la búsqueda a la superclase de dicha clase. •La búsqueda continúa hacia arriba de la cadena de la superclase hasta que se encuentra un método o se agota la cadena de la superclase. •En el primer caso el método se ejecuta; en el último caso, se emite un mensaje de error.
  • 10. Computación como simulación El computador es un manejador de datos que sigue un patrón de instrucciones, se desplaza por la memoria, obtiene de diversas posiciones, los transforma de alguna manera y devuelve los resultados a otras posiciones. Si observamos los valores de los segmentos, podemos determinar el estado de la máquina o los resultados producidos por el cómputo. Aunque el modelo puede ser un cuadro más o menos exacto de lo que pasa dentro de un computador, nos ayuda muy poco para entender como resolver problemas por medio de él.
  • 11. Computación como simulación (cont.) En el marco orientado a objetos, nunca mencionamos direcciones de memoria, variables, asignaciones o algún otro de los términos convencionales de programación. En su lugar, hablamos de objetos, mensajes y responsabilidad por alguna acción. En lugar de un procesador triturador de bits.. que saquea estructuras de datos, nosotros tenemos un universo de objetos con buen comportamiento que cortésmente se solicitan entre sí cumplir sus diversos deseos, Dan Ingalls. Ver a la computación como si creara un “universo” se asemeja en mucho a un estilo de simulación de computación llamado “simulación determinada por eventos discretos”.
  • 12. Manejo de la complejidad Puesto que la construcción de software es en forma inherente una actividad de sistemas, esto es, un ejercicio de interrelaciones complejas, el esfuerzo de comunicación es grande y pronto domina la disminución de tiempo de trabajo individual originado por la división. Añadir más hombres alarga, no acorta, el plan de trabajo.
  • 13. Mecanismos de abstracción Módulos 1. Uno debe proporcionar al usuario toda la información necesaria para usar correctamente el módulo, y nada más. 2. Uno debe proporcionar al implantador toda la información necesaria para completarlo, y nada más. Los módulos por si mismos ofrecen un método efectivo para la ocultación de información, pero no nos permite realizar la creación de ejemplares (instantiation), la cual es la capacidad para hacer copias múltiples de las áreas de datos. Tipos de datos abstractos 1. Exportar una definición de tipo 2. Proporcionar un conjunto de operaciones que puedan usarse para manipular los ejemplares de tipo. 3. Proteger los datos asociados con el tipo de tal manera que pueda operar con ellos solo mediante las operaciones provistas. 4. Crear múltiples ejemplares del tipo. Objetos: mensajes, herencia y polimorfismo En el paso de mensajes está implícita la idea de que un mensaje puede variar de acuerdo con los diferentes objetos. El comportamiento y la respuesta que el mensaje provoca dependerá del objeto que lo recibe.
  • 14. Tarea #1 Dibuje la jerarquía de dispositivos electrónicos que conozca (pasivos, activos, de dos patas de 3 patas, lineales, no lineales, etc.) De un ejemplo de una jerarquía de la vida diaria similar a la vista en clase. Dibuje una jerarquía de figuras geométricas (cuadrado, triángulo, pentágono, trapecio, etc.) Dibuje una jerarquía de vehículos para pasajeros (bicicleta, motocicleta, automóvil, etc.).
  • 15. Tarjetas CRC Las tarjetas CRC (Class-Responsability-Collaboration) Son utilizadas para representar clases en el proceso de diseño. sirven para determinar que clases se necesitan y como interactúan 15 cm Colaboradores Nombre de Clase Responsabilidades 10 cm
  • 16. Ejemplo Controlador Vista Modelo Dibuja el modelo Vista Controlador Transforma Modelo coordenadas Interpreta entrada de usuario Distribuye control Modelo Mantiene información del problema Envía notificación de cambios
  • 17. Reglas para los nombres •Use nombres pronunciables. Como regla práctica, si no se puede leer el nombre en voz alta, no es un buen nombre. •Use mayúsculas o subrayado para marcar el principio de una nueva palabra dentro del nombre. •Examine con cuidado las abreviaturas. •No use dígitos dentro de un nombre, se pueden confundir con letras (l y 1, O y 0, etc.) •Nombre las variables y funciones que manejen valores booleanos de tal forma que describan claramente la interpretación de un valor falso o verdadero.
  • 18. Categorías de las clases Clases de manejadores de datos, de datos o de estado. Son clases cuya responsabilidad principal es mantener información de datos o de estado de un genero o de otro. Pozos de datos o fuentes de datos. Clases que generan datos o que aceptan datos y los procesan. Clase de vista u observadoras. Presentan la información en un dispositivo de salida. Clases auxiliares o de ayuda. Guardan poca o ninguna información, pero asisten en la ejecución de tareas complejas.
  • 19. Diseño por escenarios Iniciar con las clases más obvias y necesarias Se simulan escenarios jugando al “que tal si”. Cada diseñador es responsable de una o más clases Se levantan las clases activas El control se pasa moviendo una tarjeta a otra Las tarjetas relacionadas se agrupan Se identifica cada acción y se hace responsable a algún objeto Se añade la responsabilidad a ese objeto Se prueban más escenarios
  • 20. Case de ejemplo: Cajero automático Se desea desarrollar software para un cajero automático La primera clase es LectorDeTarjetas que muestra el mensaje de bienvenida y lee la banda magnética. Cuando se introduce el NIP, se lo pasa a VerificadorDeNip VerificadorDeNip pasa el número de cuenta a ManejadorDeCuenta para confirmar cuenta y NIP. Si los números coinciden, VerificadorDeNip regresa verdadero, sino regresa falso. Si todo está correcto LectorDeTarjetas pasa el control a SelectorDeActividad.
  • 21. Colaboradores LectorDeTarjetas VerificadorDeNip SelectorDeActividad Muestre mensaje de bienvenida, espere tarjeta Colaboradores Pida a VerificadorDeNip que ManejadorDeCuenta compruebe validez Llame al SelectorDeActividad Verificar validez de cuenta; devuelva número NIP Devuelva tarjeta al usuario Verifique información de retiro/depósito Colaboradores VerificadorDeNip ManejadorDeCuent a Reciba número NIP de Colaboradores ManejadorDeCuenta SelectorDeActividad ManejadorDeDepósi Presente ventana de solicitud tos de NIP Muestre menú de actividades ManejadorDeRetiros Reciba número NIP del usuario Espere selección de usuario Compare números NIP; Llame al manejador de devuelva el resultado transacción apropiado
  • 22. Colaboradores ManejadorDeRetiros ManejadorDeCuent a Pregunte al usuario la cantidad DistribuidorDeEfecti a retirar vo Verifique la cantidad con ManejadorDeCuenta Diga al DistribuidorDeEfectivo que descargue Colaboradores CajaElectrónica ManejadorDeRetiros ManejadorDeDispos Dar efectivo itivos Dar sobre de depósito con indicación de hora Recuperar sobre de depósito
  • 23. Manejadores de datos Cualquier valor al que se tenga acceso o que pueda ser modificado ampliamente, o que vaya a existir por un periodo significativo, debe ser manejado. Es decir, una y solo una clase debe tener la responsabilidad de las acciones tomadas para consultar o alterar los valores. Todas las demás clases que necesiten tener los valores deben hacer solicitudes al manejador para tales acciones, más que lograr el acceso de datos por si mismas. El acceso a datos debe quedar tan restringido como sea posible. Si una clase no necesita en absoluto el acceso a cierta parte de la información para llevar a cabo sus tareas, no debe buscar y tener tal acceso. Una clase debe tener acceso a todos los valores de datos que necesite para llevar a cabo sus responsabilidades, y solo a ellos.
  • 24. Ejemplo discusión inapropiada entre manejadores ManejadorDeRetiros ManejadorDeCuenta ¿Cuál es el saldo actual? El saldo actual es $1,756.09 (Hmmm. Si resto $200 a esa cantidad todavía obtengo un valor positivo. De acuerdo) Por favor ajusta el saldo a $1,556.09 discusión apropiada entre manejadores ManejadorDeRetiros ManejadorDeCuenta ¿Puede retirar el cliente $200? (Hmmm. Si resto $200 a ese saldo todavía obtengo un valor positivo) Si De acuerdo. Por favor registra el retiro
  • 25. Tarea #2 Describa las responsabilidades de una organización que comprenda al menos seis tipos de individuos. Ejemplos de una organización son un escuela (estudiantes, profesores, director, conserje), un negocio (secretaria, gerente, trabajadores) y un club (presidente, vicepresidente, miembros). Para cada clase de individuo, describa las responsabilidades y los colaboradores. Considere un juego común. Describa un sistema de software que interactúe con el usuario para jugarlo, (dados, solitario, damas, turista, etc.) Para cada uno de los pares siguientes, diga si la relación es es-un o tiene- un. Casa – techo Conserje – empleado Ratón digital – dispositivo de entrada Menú – ventana Conjunto – colección
  • 26. Herencia Tipos de relaciones: es-un tiene-un Herencia Composición Transporte Avión Vehículo Puerta Motor Camión Automóvil Capota Llanta