Download - Programación Orientada a Objetos
![Page 1: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/1.jpg)
Programación Orientada a ObjetosProgramación Orientada a Objetos
INTRODUCCIÓN Y CONCEPTOS
www.ingsistemaseliaschoez.wordpress.com
![Page 2: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/2.jpg)
Introducción a Orientación a ObjetosIntroducción a Orientación a Objetos
www.ingsistemaseliaschoez.wordpress.com
![Page 3: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/3.jpg)
3
Paradigma ProcedimentalParadigma Procedimental
• El paradigma procedimental ve a un sistema de computo como un “procesador de datos”
• Los datos ingresan al programa y se van transformando al pasar por una serie de funciones
www.ingsistemaseliaschoez.wordpress.com
![Page 4: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/4.jpg)
4
Paradigma ProcedimentalParadigma Procedimental
• Sistema de Rol de Pagos:– Obtener la lista de empleados– Obtener el registro de horas de trabajo– Obtener las tablas de remuneración y descuentos– Para cada empleado:
• Calcular la cantidad a pagar• Calcular las retenciones e impuestos• Calcular la paga neta• Preparar el cheque• Anotar el cheque en el sistema de contabilidad• Enviar el cheque al empleado
– Devolver todos los documentos a su respectivo lugar
www.ingsistemaseliaschoez.wordpress.com
![Page 5: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/5.jpg)
5
Paradigma ProcedimentalParadigma Procedimental
• Esas operaciones pueden llevarse a cabo con un computador
• Los pasos necesarios para llegar a cabo una tarea se conocen como “proceso”
• Cada uno de los pasos se conoce como “procedimiento”
www.ingsistemaseliaschoez.wordpress.com
![Page 6: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/6.jpg)
6
Paradigma ProcedimentalParadigma Procedimental
• ¿Cuales serían los procedimientos para el programa de rol de pagos?
www.ingsistemaseliaschoez.wordpress.com
![Page 7: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/7.jpg)
7
Paradigma ProcedimentalParadigma Procedimental
• ¿Cuales serían los procedimientos para el programa de rol de pagos?– Abrir base de Datos– Calcular Cantidad a Pagar
• Calcular Sueldo• Calcular Retenciones
– Imprimir Cheques– Actualizar Base de Datos– Cerrar Base de Datos
www.ingsistemaseliaschoez.wordpress.com
![Page 8: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/8.jpg)
8
Paradigma ProcedimentalParadigma Procedimental
• Cada procedimiento recibe datos de entrada, los procesa y luego los transmite a otro procedimiento y finalmente a un humano.
• Los datos son dados a los procedimientos de una manera similar a la que la materia prima es alimentada una línea de ensamblaje.
www.ingsistemaseliaschoez.wordpress.com
![Page 9: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/9.jpg)
9
Paradigma ProcedimentalParadigma Procedimental
• El diseñador trata de descomponer los problemas en pequeños procedimientos que siendo ejecutados en el orden correcto hacen que el sistema llegue a una respuesta.
• Esto funciona muy bien para problemas pequeños. ¿Pero que pasa con sistemas grandes y donde lo que gobierna al sistema no son los datos sino los eventos?
www.ingsistemaseliaschoez.wordpress.com
![Page 10: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/10.jpg)
10
Paradigma ProcedimentalParadigma Procedimental
• Ejemplos de este tipo de problema son los sistemas interactivos
• En ellos el flujo del programa ya no es lineal, sino que dependerá de la respuesta del usuario
• El orden en que los procedimientos son llamados no se conoce de antemano
www.ingsistemaseliaschoez.wordpress.com
![Page 11: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/11.jpg)
11
Construcción de una casa para “fido” Construcción de una casa para “fido”
Puede hacerlo una sola personaRequiere:
Modelado mínimoProceso simpleHerramientas simples
www.ingsistemaseliaschoez.wordpress.com
![Page 12: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/12.jpg)
12
Construcción de una casaConstrucción de una casa
Construida eficientemente y en un tiempo razonable por un equipoRequiere:
ModeladoProceso bien definidoHerramientas más sofisticadas
www.ingsistemaseliaschoez.wordpress.com
![Page 13: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/13.jpg)
13
Construcción de un rascacielosConstrucción de un rascacielos
www.ingsistemaseliaschoez.wordpress.com
![Page 14: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/14.jpg)
14
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
• En el paradigma orientado a objetos, el diseñador trata de resolver un problema modelando los diferentes objetos presentes y sus diferentes interacciones
• En este paradigma los datos no son algo externo al programa, sino que está embebido dentro de los “objetos”
www.ingsistemaseliaschoez.wordpress.com
![Page 15: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/15.jpg)
15
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
• El paradigma orientado a objetos permite al programador concentrarse en el la solución al problema y no en cómo implementarla en un computador
• Brinda tres claras ventajas sobre el paradigma procedimental:– Fácil Mantenimiento– Reusable– Escalable
www.ingsistemaseliaschoez.wordpress.com
![Page 16: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/16.jpg)
16
¿Por qué la POO es Popular?¿Por qué la POO es Popular?
• Similaridad con la forma de pensar acerca de los problemas en la vida real
• Es muy escalable, desde problemas triviales hasta sistemas muy complejos
• El uso de librerías permite el desarrollo de aplicaciones en muchos campos
natural
reusowww.ingsistemaseliaschoez.wordpress.com
![Page 17: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/17.jpg)
17
Lenguajes y PensamientoLenguajes y Pensamiento
• Una teoría muy aceptada entre los lingüistas asevera que el lenguaje que hablamos influencia directamente la manera en la cual vemos el mundo y expresamos nuestros pensamientos.
• Los esquimales son un ejemplo, su idioma tienes muchas palabras para describir los diversos tipos de nieve. Es muy fácil expresar situaciones complejas relacionadas con nieve en ese lenguaje que en un lenguaje menos adaptado para eso.
• Esto se aplica tanto a lenguajes naturales como a lenguajes computacionales.www.ingsistemaseliaschoez.wordpress.com
![Page 18: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/18.jpg)
18
Lenguajes de Programación y Solución de ProblemasLenguajes de Programación y Solución de Problemas
Ejemplo: análisis de una secuencia de DNA• Las secuencias de DNA es representada
como un vector de valores enteros: ACTCGGATCTTGCATTTCGGCAATTGG…..
• Encontrar si un patrón de largo M (donde M es pequeño y fijo) esta repetido en una secuencia de DNA de longitud N (siendo N muy muy largo)
![Page 19: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/19.jpg)
19
Solución en FortranSolución en Fortran
DO 10 I = 1, N-M
DO 10 J = 1, N-M
FOUND= .TRUE.
DO 20 K = 1, M
IF X[I+K-1] .NE. X[J+K-1] THEN FOUND = .FALSE.
IF FOUND THEN ….
![Page 20: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/20.jpg)
20
Solución en APLSolución en APL
ACTCCTCGATCCATTTCGGCAATTGG….
Reorganizar en una matriz N x M
Ordenar la matriz por columnas
Buscar filas adyacentes iguales
ACTCCTC 1-7 ACTCCTC
CTCCTCG 2-8 CCTCGAT
TCCTCGA 3-9 CGATCCA
CCTCGAT 4-10 CTCCTCG
CTCGATC 5-11 CTCGATC
TCGATCC 6-12 TCCTCGA
CGATCCA 7-13 TCGATCC
![Page 21: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/21.jpg)
21
Comparación de las 2 SolucionesComparación de las 2 Soluciones
• Los programadores de Fortran (procedimentales) piensan en términos de lazos. La solución en Fortran es extremadamente lenta O(M x N2)
• El programador de APL (funcional) piensa en términos de manipulación de secuencias, el ordenamiento es algo interno del lenguaje y los lazos no existen. La solución en APL es mas rápida O(M x NlogN) a pesar de que APL no es un lenguaje más eficiente que Fortran
www.ingsistemaseliaschoez.wordpress.com
![Page 22: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/22.jpg)
22
Conjetura de Church e Hipótesis de Safir-WorfConjetura de Church e Hipótesis de Safir-Worf
• Hipótesis Safir-Worf: afirma que un individuo utilizando un lenguaje dado puede tener ideas o pensamientos que no pueden ser traducidas o entendidas por un individuo que usa otro lenguaje.
• Conjetura de Church: cualquier programa puede ser escrito por una máquina de Turing, o sea que cualquier programa puede ser escrito en cualquier lenguaje de programación.
• Si bien Church demuestra su conjetura, un nuevo lenguaje puede no ofrecer mayor poder de computo pero puede proveer una manera más fácil o natural para resolver cierto tipos de problemas.
www.ingsistemaseliaschoez.wordpress.com
![Page 23: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/23.jpg)
23
Soluciones OO y Lenguajes OOSoluciones OO y Lenguajes OO
• El uso efectivo de los principios de la orientación a objetos requiere que el programador vea el mundo de una manera diferente
• El uso de un lenguaje orientado a objetos simplifica el desarrollo de soluciones orientadas a objetos.
• El uso de un lenguaje orientado a objetos no convierte al individuo en un programador orientado a objetos.
“programas de Fortran pueden ser escritos en cualquier lenguaje”
www.ingsistemaseliaschoez.wordpress.com
![Page 24: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/24.jpg)
24
Programación OOProgramación OO
• Vista Macro: – La programación orientada a objetos trata
sobre el desarrollo de software utilizando un paradigma que descompone el problema en objetos independientes
• Vista Micro: – La programación orientada a objetos es
utilizar un lenguaje orientado a objetos para implementar soluciones de software
www.ingsistemaseliaschoez.wordpress.com
![Page 25: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/25.jpg)
25
Vista MacroVista Macro
• Análisis y Diseño Orientado a Objetos (UML)
• Reuso• Diseño basado en Patrones• Marcos de Trabajo (Frameworks)• Componentes
www.ingsistemaseliaschoez.wordpress.com
![Page 26: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/26.jpg)
26
Vista MicroVista Micro
• Clases y Objetos• Mensajes y Métodos• Jerarquía de Clases y Herencia• Encapsulación y Ocultamiento de
Información• Unión de Métodos y Polimorfismo• Lenguajes
www.ingsistemaseliaschoez.wordpress.com
![Page 27: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/27.jpg)
27
¿Un nuevo paradigma?¿Un nuevo paradigma?
• Paradigma = conjunto de teorías, estándares y métodos que juntos representan maneras de organizar el conocimiento y ver el mundo.
• En la ciencia una revolución ocurre cuando un paradigma viejo es reexaminado, rechazado y remplazado por uno nuevo
• Paradigma de Programación = una manera de conceptuar que significa computar y como estructurar y organizar las tareas que deben ser llevadas a cabo por una computadora
www.ingsistemaseliaschoez.wordpress.com
![Page 28: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/28.jpg)
28
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
• Para entender POO necesitamos comprender los siguientes conceptos:– Objeto– Clase
• Y los siguientes principios– Encapsulación– Paso de Mensajes– Herencia– Polimorfismo
www.ingsistemaseliaschoez.wordpress.com
![Page 29: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/29.jpg)
29
POO: Una nueva manera de ver el mundoPOO: Una nueva manera de ver el mundo
“ Juan quiere mandar flores a su amiga Ana que vive en otra ciudad. Debido a la distancia Juan no puede llevar las flores directamente a Ana. Juan acude a Pedro, un florista local, y le da el número y tipo de flores que quiere enviarle a Ana y su dirección. Juan puede estar seguro que las flores serán entregadas a Ana. ”
www.ingsistemaseliaschoez.wordpress.com
![Page 30: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/30.jpg)
30
Agentes, Responsabilidad, Mensajes y MétodosAgentes, Responsabilidad, Mensajes y Métodos
• Juan encuentra un agente apropiado (Pedro) • Y le envía un mensaje que contiene una
petición. • Es la responsabilidad de Pedro el satisfacer
esa petición.• Existe algún método (conjunto de operaciones)
usadas por Pedro para entregar las flores. • Juan no necesita conocer el método particular
que Pedro utilizará, esa información esta oculta.
www.ingsistemaseliaschoez.wordpress.com
![Page 31: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/31.jpg)
31
POO: el Principio GeneralPOO: el Principio General
• Un programa orientado a objetos esta estructurado como una comunidad de agentes que interactúan entre si llamados objetos.
• Las acciones son iniciadas por la transmisión de mensajes a un agente (un objeto).
• El mensaje codifica un requerimiento de acción y es acompañado por información adicional (argumentos) necesaria para llevar a cabo el requerimiento.
• El receptor es el agente al cual el mensajes es enviado. Si el receptor acepta el mensaje, acepta la responsabilidad de llevar a cabo la acción solicitada.
• En respuesta a un mensajes el receptor ejecutará algún método para satisfacer el requerimiento.
www.ingsistemaseliaschoez.wordpress.com
![Page 32: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/32.jpg)
32
ObjetoObjeto
• ¿Qué es un objeto?– Así como los procedimientos son la base
para construir programas estructurados, los objetos son usados para construir programas orientados a objetos
– Un programa orientado a objetos es una colección de objetos que están organizados para, y cooperan para, lograr un objetivo.
www.ingsistemaseliaschoez.wordpress.com
![Page 33: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/33.jpg)
33
ObjetoObjeto
• Cada objeto:– Contiene datos: Los datos guardan
información que describe el estado del objeto.
– Tiene un conjunto de comportamientos: Estos comportamientos son cosas que el objeto sabe como hacer y que son disparadas por mensajes enviados al objeto.
– Tiene identidad individual: Esto hace posible distinguir un objeto de otro así como es posible distinguir una variable de otra
www.ingsistemaseliaschoez.wordpress.com
![Page 34: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/34.jpg)
34
ObjetoObjeto
• Objeto empleado:
Datos:Nombre: Juan Perez
Horas que trabaja a la semana: 40Afiliado al seguro: si
Comportamiento:Calcular Sueldo
Calcular RetencionesCambiar horario de trabajo
Empleado # 03123
www.ingsistemaseliaschoez.wordpress.com
![Page 35: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/35.jpg)
35
ObjetoObjeto
• Un objeto es una abstracción de una entidad del mundo real.
• Los datos de un objeto son conocidos como los atributos
• Los comportamientos de un objeto son conocidos como métodos.
www.ingsistemaseliaschoez.wordpress.com
![Page 36: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/36.jpg)
36
Enviar Mensajes vs. Llamadas a ProcedimientosEnviar Mensajes vs. Llamadas a Procedimientos
• Un mensaje tiene un receptor designado (algún objeto)
• La interpretación del mensaje, ej.: el método usado en respuesta a un mensaje es determinado por el receptor y pude variar entre diferentes receptores.
• Muy frecuentemente el receptor real no es conocido sino hasta tiempo de ejecución. A esto se lo conoce como unión tardía o dinámica entre un mensaje y el fragmento de código (método) utilizado para responder al mensaje.www.ingsistemaseliaschoez.wordpress.com
![Page 37: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/37.jpg)
37
Responsabilidad y AbstracciónResponsabilidad y Abstracción
• Analizar un problema en términos de responsabilidades incrementa el nivel de abstracción y permite una mayor independencia entre agentes.
• La conjunto completo de responsabilidades asociadas con un objeto se describes con el término protocolo o interfaz.
• Un receptor acepta la responsabilidad de responder a un mensaje. El que envía no necesita conocer los detalles de método usado. Esta es una forma estándar y poderosa de abstracción conocida como ocultamiento de información. www.ingsistemaseliaschoez.wordpress.com
![Page 38: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/38.jpg)
38
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
• Paso de Mensajes– Es la manera en que un objeto se comunica
con otro– El método de un objeto pude llamar a un
método público de otro objeto– Por ejemplo el objeto “conductor” puede
enviar el mensaje “acelerar” al objeto “automovil”
www.ingsistemaseliaschoez.wordpress.com
![Page 39: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/39.jpg)
39
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
• Paso de Mensajes
Metodo
Datos
Metodo
Metodo
Metodo
Met
odo
Datos
Datos
Datos
Metodo
Metodo
Met
odo
Metodo
Datos
Metodo
Metodo
Metodo
Met
odo
Datos
Datos
Datos
Metodo
Metodo
Met
odo
Objeto A Objeto B
www.ingsistemaseliaschoez.wordpress.com
![Page 40: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/40.jpg)
40
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
• Encapsulación– Encapsulación es el proceso de empaquetar
los objetos, de tal manera que cada uno tenga dos partes, la interfaz y la implementación
– La interfaz es la parte pública de un objeto (la que todos pueden ver)
– La implementación es la parte privada de un objeto (la que solo conoce el programador)
www.ingsistemaseliaschoez.wordpress.com
![Page 41: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/41.jpg)
41
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
• Encapsulación– Este no es un concepto original de POO.– ¿Podemos encontrar ejemplos del mundo
real donde se utilice la encapsulación?– La encapsulación hace que el mantenimiento
de mi programa sea mucho más sencillo.
www.ingsistemaseliaschoez.wordpress.com
![Page 42: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/42.jpg)
42
Clases e InstanciasClases e Instancias
• A pesar de que Juan no conoce a Pedro muy bien, el tiene una idea aproximada de como tratar y que pedir a Pedro. Juan es capaz de hacer ciertas asunciones basado en su experiencia previa con otros floristas. El espera que Pedro, siendo una instancia de la categoría de floristas, se ajuste a ese patrón.
• Todos los objetos son instancias de una clase. El método invocado por un objeto para responder a un mensaje es determinado por su clase.
• Todos los objetos de una misma clase usan el mismo método para responder al mismo mensaje.
www.ingsistemaseliaschoez.wordpress.com
![Page 43: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/43.jpg)
43
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
• ¿Qué es una clase?– Las clases son los planos para construir los
objetos– Lo que se especificamos no son los objetos,
sino las clases de que estos se construyen.– Las clases especifican que atributos y
métodos tendrá un objeto que se fabrique a partir de dicha clase.
www.ingsistemaseliaschoez.wordpress.com
![Page 44: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/44.jpg)
44
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
Clase
Objetos
www.ingsistemaseliaschoez.wordpress.com
![Page 45: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/45.jpg)
45
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
Objetos bicicletas
Abstraídos en
Clase Bicicleta
Atributos
Tamaño de frameTamaño de llantaMaterial ...
Operaciones
CambioMoverReparar
www.ingsistemaseliaschoez.wordpress.com
![Page 46: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/46.jpg)
46
Jerarquía de clases y HerenciaJerarquía de clases y Herencia
• Juan tiene más información acerca de Pedro, no necesariamente porque es un florista, sino porque Pedro es un vendedor, un humano, un mamífero, un animal y un objeto material.
• El principio que afirma que el conocimiento de una categoría más general es también aplicable a una categoría más específica es llamado herencia.
• Las clases pueden ser organizadas dentro de una estructura jerárquica. Una clase hija (o subclase) hereda los atributos de su clase padre (superclase).
• Una clase abstracta existe solamente para agrupar subclases.
www.ingsistemaseliaschoez.wordpress.com
![Page 47: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/47.jpg)
47
Categorías de PedroCategorías de Pedro
Objeto Material
Animal
Mamífero
Humano
Vendedor Florista Pedro
www.ingsistemaseliaschoez.wordpress.com
![Page 48: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/48.jpg)
48
Jerarquía de la clase Objeto MaterialJerarquía de la clase Objeto Material
Sultán
Perro
Pedro
Florista
Vendedor
Luis
Pintor
Artista
Humano
Fil
Ornitorrinco
Mamífero
Animal
Tulipán 1 Tulipán 2 Tulipán 3
Tulipanes
Flores
Planta
Objeto Material
www.ingsistemaseliaschoez.wordpress.com
![Page 49: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/49.jpg)
49
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
• Herencia– Es un mecanismo para compartir atributos y
métodos entre clases.– Por la herencia se forman jerarquías de
clases (subclases y superclases). – Las subclases heredan los atributos y
métodos de las superclases– Permite la reusabilidad.
www.ingsistemaseliaschoez.wordpress.com
![Page 50: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/50.jpg)
50
Unión de Métodos y PolimorfismoUnión de Métodos y Polimorfismo
• Si Juan pidiera a María, otra florista, que envíe flores a Ana por su cumpleaños, ella podría usar un método diferente al usado por Pedro.
• El método que se ejecuta en respuesta a un mensaje depende del receptor del mensaje.
• Que métodos diferentes se ejecuten en respuesta al mismo mensaje se conoce como polimorfismo.
www.ingsistemaseliaschoez.wordpress.com
![Page 51: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/51.jpg)
51
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
• Polimorfismo– Significa que la misma operación puede
comportarse diferente en clases distintas.– Esto es, objetos de diferentes clases pueden
responder diferente ante el mismo mensaje
www.ingsistemaseliaschoez.wordpress.com
![Page 52: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/52.jpg)
52
PolimorfismoPolimorfismo
Figura Geométrica
Atributo:area
Método:ObtenerArea
Atributos:
longitud
ancho
Métodos:
CrearRectangulo
ObtenerArea
Atributos:radio
ancho
Métodos:CrearCirculo
ObtenerArea
rectángulo círculo
www.ingsistemaseliaschoez.wordpress.com
![Page 53: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/53.jpg)
53
Unión de Métodos, Sobrescritura y ExcepcionesUnión de Métodos, Sobrescritura y Excepciones
• Fil es un ornitorrinco y por lo tanto un mamífero. Los Mamíferos dan a luz crías vivas, pero Fil no, ella pone huevos. Esta es una excepción a una regla general.
• La información contenida en una subclase pude sobrescribir a la información heredada de una clase padre.
• La búsqueda de un método en respuesta a un mensaje comienza en la clase del receptor y continua hacia arriba hacia la clase de su padre.
• Cuando un método con el mismo nombre esta disponible en una clase más alta en la jerarquía, se dice que el método esta sobrescrito.
www.ingsistemaseliaschoez.wordpress.com
![Page 54: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/54.jpg)
54
POO y como evitar la asignación infinitaPOO y como evitar la asignación infinita
“ En vez de procesadores procesando estructuras de datos, ahora tenemos un universo de objetos bien comportados que se preguntan cortesmente unos a otros para llevar a cabo sus diferentes deseos.”
• En algún punto algún objeto debe llevar a cabo algún trabajo en vez de solamente pasar requerimientos a otros.
• Lenguajes mixtos (C++, CLOS) escriben estos métodos utilizando su lenguaje base.
• Lenguajes OO puros (Smalltalk, Java) tienen operaciones primitivas o nativas.
www.ingsistemaseliaschoez.wordpress.com
![Page 55: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/55.jpg)
55
Resumen (por Alan Kay) Resumen (por Alan Kay)
• Todo es un objeto• El computo es llevado a cabo por objetos
comunicándose entre ellos, pidiendo a los otros realizar una acción.
• Los objetos se comunican enviando y recibiendo mensajes. Un mensaje es una petición de una acción junto con cualquier argumento necesario para completar la tarea.
• Cada objeto tiene su propia memoria que consiste de otros objetos.
www.ingsistemaseliaschoez.wordpress.com
![Page 56: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/56.jpg)
56
Resumen (cont)Resumen (cont)
• Cada objeto es una instancia de una clase. Una clase representa un agrupamiento de objetos similares.
• La clase es un repositorio del comportamiento asociado con un objeto. Esto es, todos los objetos que son instancias de la misma clase llevan a cabo las mismas acciones.
• Las clases están organizadas en una estructura de árbol llamada de herencia jerárquica. La memoria y el comportamiento asociadas con una clase son automáticamente disponibles para clases que son sus descendientes. www.ingsistemaseliaschoez.wordpress.com
![Page 57: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/57.jpg)
57
Manejando la ComplejidadManejando la Complejidad
• La complejidad de los proyectos de programación es no lineal– Dos programadores no pueden hacer en un mes lo
que uno puede hacer en 2 meses. – Añadir más programadores a un proyecto
generalmente alarga, no acorta, el cronograma.• La interconexión, la dependencia de una
porción de código de otra porción de código es responsable de este fenómeno.
• Los mecanismo de abstracción tratan de manejar esto. Las técnicas orientadas a objetos ofrecen son una avance en esta dirección. www.ingsistemaseliaschoez.wordpress.com
![Page 58: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/58.jpg)
58
Abstracción Abstracción
• Los mecanismos de abstracción son técnicas para crear, entender y administrar sistemas complejos.
• La abstracción es la supresión u ocultamiento de ciertos detalles de un proceso o artefacto para mostrar más claramente otros aspectos, detalles o estructuras.
• A través de la abstracción uno construye un modelo del sistema real.
www.ingsistemaseliaschoez.wordpress.com
![Page 59: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/59.jpg)
59
Capas de abstracción en la POOCapas de abstracción en la POO
• En el nivel más alto, un programa es visto como una comunidad de objetos cooperativos. Cada objeto en esta comunidad provee servicios que pueden ser usados por otros miembros. A este nivel las características importantes son los servicios proporcionados por cada objeto y las líneas de cooperación y comunicación entre ellos.
• El siguiente nivel de abstracción permite que grupos de objetos que trabajan juntos puedan ser agrupados en una unidad (paquetes, name spaces, unidades) permitiendo que algunos nombres sean expuestos al mundo exterior a la unidad, mientras otros permanecen ocultos.
www.ingsistemaseliaschoez.wordpress.com
![Page 60: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/60.jpg)
60
Capas de abstracción en la POOCapas de abstracción en la POO
• Los siguientes 2 niveles de abstracción manejan la interacción entre 2 objetos individuales, donde uno (el cliente) usa los servicios de otro (el servidor) – El servidor anuncia los servicios que pude proveer a
los clientes a través de una interfaz, el cliente utiliza esta interfaz.
– El servidor provee una implementación concreta para esta interfaz.
• El último nivel de abstracción considera una tarea en aislamiento. Ej.: los pasos seguidos para implementar un método.
www.ingsistemaseliaschoez.wordpress.com
![Page 61: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/61.jpg)
61
Mecanismos de Abstracción en los LenguajesMecanismos de Abstracción en los Lenguajes
• Procedimientos y Funciones (centrado en funciones)+ ocultamiento de información por el detalle del
comportamiento- Ocultamiento de información por el detalle de los
datos- encapsulasión
• Módulos y Paquetes (centrado en datos)+ ocultamiento de información+ encapsulasión- La instanciación no es siempre soportada
• Tipo de Datos Abstractos+ separa la interfase de la implementaciónwww.ingsistemaseliaschoez.wordpress.com
![Page 62: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/62.jpg)
62
Mecanismos de Abstracción en Lenguajes OOMecanismos de Abstracción en Lenguajes OO
• Las clases son Tipos de Datos Abstractos centrados en servicios
• El paso de mensajes y la unión de métodos tienen como consecuencia el polimorfismo que lleva a un código más legible.
• Las Jerarquías de Clases y la Herencia llevan a la compartición de código, lo que resulta en aumento de la funcionalidad y reducción del tamaño del código.
• La herencia y el polimorfismo ayudan al trabajo con el código compartido.
www.ingsistemaseliaschoez.wordpress.com
![Page 63: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/63.jpg)
63
Desarrollo de Software Orientado a ObjetosDesarrollo de Software Orientado a Objetos
• El desarrollo de software orientado objeto NO trata sobre la sintaxis de lenguajes de programación.
• El desarrollo de software orientado a objetos trata sobre las técnicas de diseño basadas en la determinación y delegación de responsabilidades.
• Responsabilidad implica no-interferencia, corta o reduce los enlaces entre diferentes objetos que dependen en detalles de su implementación.
• Va más allá del ocultamiento de información y la encapsulación cuando trata de la programación de sistemas grandes.
www.ingsistemaseliaschoez.wordpress.com
![Page 64: Programación Orientada a Objetos](https://reader037.vdocumento.com/reader037/viewer/2022102813/56814296550346895daec4ed/html5/thumbnails/64.jpg)
64
Programando lo pequeño vs. Programando lo grandeProgramando lo pequeño vs. Programando lo grande
• Código desarrollado por un solo programador o por un grupo pequeño de programadores.
• Cada individuo entiende todos los aspectos del proyecto.
• El esfuerzo principal es diseñar y desarrollar algoritmos para tratar con el problema
• El sistema de desarrollado por un equipo numeroso.• Ningún individuo es responsable por el problema total o
entiendo todos sus aspectos. • El esfuerzo principal es la administración de los
detalles y de la comunicación entre las diferentes porciones del proyecto.
www.ingsistemaseliaschoez.wordpress.com