2. Universidad Andrés Bello
•El zologico de Quillota desea contruir
una aplicación para gestionar el
fucionamiento de forma adecuda ya
que se han perdido varios animales.
•Definir las clases y sus atributos y un
esquema de herencia,
4. Universidad Andrés Bello
Programación Orientada a Objeto
Introducción
La programación orientada a objetos o POO (OOP según sus siglas en
inglés) es un paradigma de programación que usa los objetos en sus
interacciones, para diseñar aplicaciones y programas informáticos. Está
basado en varias técnicas, incluyendo:
• herencia,
• cohesión,
• abstracción,
• polimorfismo,
• acoplamiento y encapsulamiento.
Su uso se popularizó a principios de la década de los años 1990. En la
actualidad, existe una gran variedad de lenguajes de programación que la
soportan (JAVA, C++, PYTHON, …)
.
5. Universidad Andrés Bello
Programación Orientada a Objeto
El término "orientación por objeto" significa que
organizaremos el software como una colección de objetos
discretos que incorporan tanto estructuras de datos como
procedimientos.
Esto contrasta con la programación convencional, en la cual
las estructura de datos y el comportamiento están solo
aproximadamente conectados.
El desarrollo orientado por objetos es una nueva forma de
pensar acerca del software basado sobre abstracciones
que existen en el mundo real.
En este contexto, el desarrollo es referido a la primera
parte del ciclo de vida del software: análisis, diseño e
implantación.
6. Universidad Andrés Bello
Programación Orientada a Objeto
El elemento base de la POO son los objetos.
Los objetos son entidades que tienen un
determinado estado, comportamiento (método) e identidad:
El estado está compuesto de datos o informaciones; serán
uno o varios atributos a los que se habrán asignado unos
valores concretos (datos).
El comportamiento está definido por los métodos o
mensajes a los que sabe responder dicho objeto, es decir,
qué operaciones se pueden realizar con él.
La identidad es una propiedad de un objeto que lo diferencia
del resto; dicho con otras palabras, es su identificador
(concepto análogo al de identificador de una variable o
una constante).
7. Universidad Andrés Bello
Programación Orientada a Objeto
A diferencia de otros métodos, la POO da como resultado un
diseño el cual interconecta los objetos de datos (elementos
de datos) y las operaciones de procesamiento, de forma tal
que encapsula la información y el procesamiento.
Este encapsulamiento es el paradigma fundamental de la
orientación por objetos.
La POO se basa en la idea natural de un mundo lleno de
objetos y que la resolución de problemas se realiza mediante
el modelo de objetos
8. Universidad Andrés Bello
Programación Orientada a Objeto
Beneficios
• Facilita la creación de software de calidad
pues sus características potencian:
La mantención
La extensión y
La reutilización del software generado bajo este
paradigma
9. Universidad Andrés Bello
Programación Orientada a Objeto
La naturaleza única de la programación orientada a
objeto se debe a su habilidad para construir
basándose en tres conceptos importantes del diseño
del software:
• Abstracción.
• Ocultamiento de la información.
• Modularidad.
10. Universidad Andrés Bello
Clase
La clase de estructura que abarca tantos propiedades como
comportamiento es la unidad natural de la abstracción en los
sistemas de orientación por objeto y puede ser utilizarse para
modelar tanto entidades objetos como relaciones entre los
objetos.
Los objetos que pertenecen a una clase se describen
colectivamente por la definición de una clase, esto significa que
en lugar de describir los objetos individuales la orientación por
objeto concentra en un patrón tanto el estado como el
comportamiento que es común a todos los objetos de la clase.
Componentes de la OO
Clase
11. Universidad Andrés Bello
Una clase se representa por una caja la cual puede tener 3
regiones.
• La primera región contiene el nombre de la clase.
• La segunda región contiene la lista de atributos, cada nombre
de atributo puede estar seguido por detalles opcionales tales
como tipo de atributo y valores por defectos.
• La tercera región contiene los nombres de las operaciones.
Cada nombre de operación puede ser seguido por detalles
opcionales tales como listas de argumentos y tipos de
resultados. Los atributos y operaciones puede o no
mostrarse; esto depende del nivel de detalle deseado.
Componentes de la OO
Clase
12. Universidad Andrés Bello
Representación de la clase
Nombre de la clase
Nombre_atributo1: tipo dato1= valor defecto1
Nombre_atributo2: tipo dato2= valor defecto2
.
.
.
Nombre_operación1(lista de argumento):tipo_resultado1
Nombre_operación2 (lista de argumento):tipo_resultado2
.
.
.
Atributos.
Representan las
características
propias del objeto
Métodos.
Representan las
operaciones que
puede realizar el
objeto
Componentes de la OO
Clase
13. Universidad Andrés Bello
Un objeto es una entidad física o abstracta que tiene
un comportamiento antes ciertos estímulos, tanto
externos como de otros objetos específicos que se
encuentran dentro del sistema.
Ejemplo de objeto:
• Persona
• Equipo Hardware
• Materiales
• Información
• Software
• Procesos
• Procedimientos
Componentes de la OO
Objeto
14. Universidad Andrés Bello
• Es una Instancia es una ocurrencia de la clase,
o sea una instancia de una clase.
• Entidad provista de un conjunto de propiedades
o atributos (datos) y de comportamiento o
funcionalidad (métodos), los mismos que
consecuentemente reaccionan a eventos.
• Se corresponden con los objetos reales del
mundo que nos rodea, o con objetos internos
del sistema (del programa).
Componentes de la OO
Objeto
15. Universidad Andrés Bello
Cada objeto tiene su propia identidad que lo distingue
de los demás objetos. En otras palabras, dos objetos
distintos no son iguales aunque todos los valores de
sus atributos sean idénticos.
Cuando un objeto se transforma en una realización de
software, consta de una interfaz, una estructura de
datos privada y unos procesos llamados operaciones o
métodos que son los únicos que pueden transformar
legítimamente la estructura de datos.
Componentes de la OO
Objeto
18. Universidad Andrés Bello
• Algoritmo asociado a un objeto (o a una clase
de objetos), cuya ejecución se desencadena tras
la recepción de un "mensaje".
• Desde el punto de vista del comportamiento, es
lo que el objeto puede hacer.
• Un método puede producir un cambio en las
propiedades del objeto, o la generación de un
"evento" con un nuevo mensaje para otro objeto
del sistema
Componentes de la OO
Método
19. Universidad Andrés Bello
• Es un suceso en el sistema (tal como una
interacción del usuario con la máquina, o un
mensaje enviado por un objeto).
• El sistema maneja el evento enviando el
mensaje adecuado al objeto pertinente.
También se puede definir como evento la
reacción que puede desencadenar un objeto;
es decir, la acción que genera.
Componentes de la OO
Evento
20. Universidad Andrés Bello
Una comunicación dirigida a un objeto, que le
ordena que ejecute uno de sus métodos con
ciertos parámetros asociados al evento que lo
generó.
Componentes de la OO
Mensaje
21. Universidad Andrés Bello
• Es una variable que se declara privada, que
puede ser únicamente accedida y alterada por
un método del objeto, y que se utiliza para
indicar distintas situaciones posibles para el
objeto (o clase de objetos).
• No es visible al programador que maneja una
instancia de la clase.
Componentes de la OO
Estado interno
22. Universidad Andrés Bello
Resumen de OO
Clase: Automóvil
Herencia: de la clase Vehículo
Objeto: (el automóvil que tengo en el estacionamiento)
Método: modificar los datos del propietario
Evento: vender el automóvil
Atributos: propietario, patente, modelo, marca, precio
Mensaje: el evento vender envió un mensaje con los datos
del nuevo propietario
Propiedad o atributo: precio (puede cambiar) patente (no
puede cambiar, static)
Estado interno: dirección de memoria en donde esta
físicamente el objeto
Componentes de un objeto: … todos sus atributos y
métodos
Identificación de un objeto: nombre de la variable en el
sistema, “mi cacharrito”
23. Universidad Andrés Bello
Resumen de OO
• Clase Estudiante
• Herencia de la clase Persona ( destacar las cosas heredadas)
• Objeto (cada uno de los presentes en la sala)
• Método, informar a su escuela de cambio de dirección
• Evento, rendir examen, terminar semestre, cambiarse de
carrera
• Atributos, nombre, correo, teléfono, sexo
• Mensaje, nueva dirección informada
• Propiedad o atributo, carrera (puede cambiar) rut (no
puede cambiar, static)
• Estado interno, dirección de memoria en donde esta
físicamente el objeto
• Componentes de un objeto … todos sus atributos y
métodos
• Identificación de un objeto , nombre de la variable en el
sistema, “juan”
24. Universidad Andrés Bello
Resumen de OO
Objeto
Cada objeto es responsable de inicializarse y destruirse
en forma correcta
Un objeto consta de:
Tiempo de vida
Estado
Comportamiento
Atributos
Métodos
25. Universidad Andrés Bello
Resumen de OO
Tiempo de vida de un objeto
• La duración de un objeto en un programa
siempre está limitada en el tiempo
• La mayoría de los objetos sólo existen durante
una parte de la ejecución del programa
• Los objetos son creados mediante un
mecanismo denominado instanciación
• Los objetos dejan de existir cuando son
destruidos
26. Universidad Andrés Bello
Resumen de OO
Estado de un objeto
Queda definido por sus atributos
Con él se definen las propiedades del objeto, y el estado
en que se encuentra en un momento determinado de su
existencia
27. Universidad Andrés Bello
Resumen de OO
Comportamiento de un objeto
Queda definido por los métodos
Los prototipos de los métodos definidos en la interfaz de
una clase permiten a otros objetos, que forman parte de
la aplicación, interactuar con los objetos de esa clase
30. Universidad Andrés Bello
Características de POO
Existe un acuerdo acerca de qué características
contempla la "orientación a objetos".
Las características siguientes son las más
importantes:
• Abstracción
• Encapsulamiento
• Modularidad
• Principio de ocultación
• Polimorfismo
• Herencia
• Recolección de basura
31. Universidad Andrés Bello
Características de POO
Abstracción
Denota las características esenciales de un objeto, donde se
capturan sus comportamientos. Cada objeto en el sistema sirve
como modelo de un "agente" abstracto que puede realizar trabajo,
informar y cambiar su estado, y "comunicarse" con otros objetos en
el sistema sin revelar cómo se implementan estas características.
Los procesos, las funciones o los métodos pueden también ser
abstraídos, y, cuando lo están, una variedad de técnicas son
requeridas para ampliar una abstracción. El proceso de abstracción
permite seleccionar las características relevantes dentro de un
conjunto e identificar comportamientos comunes para definir nuevos
tipos de entidades en el mundo real.
Esto es clave en el proceso de análisis y diseño OO, ya que
mediante ella podemos llegar a armar un conjunto de clases que
permitan modelar la realidad o el problema que se quiere atacar.
32. Universidad Andrés Bello
Características de POO
Encapsulamiento
Significa reunir todos los elementos que pueden
considerarse pertenecientes a una misma entidad, al
mismo nivel de abstracción.
Esto permite aumentar la cohesión de los componentes
del sistema.
Algunos autores confunden este concepto con el
principio de ocultación, principalmente porque se suelen
emplear conjuntamente.
33. Universidad Andrés Bello
El encapsulamiento es el proceso por el que se ocultan:
• Las estructuras de datos
• Los detalles de la implementación
Permite considerar a los objetos como "cajas negras",
evitando que otros objetos accedan a detalles que NO LES
INTERESA
Una vez creada la clase, las funciones usuarias no
requieren conocer los detalles de su implementación
Toda clase tiene un conjunto de atributos y métodos
asociados a ella
Características de POO
Encapsulamiento
34. Universidad Andrés Bello
Todos los atributos están encapsulados o contenidos dentro
de la misma clase, de manera que son miembros de dicha
clase
Esos métodos y atributos pueden ser utilizados por otras
clases sólo si la clase que los encapsula les brinda los
permisos necesarios para ello
Características de POO
Encapsulamiento
35. Universidad Andrés Bello
Características de POO
Modularidad
Se denomina modularidad a la propiedad que permite
subdividir una aplicación en partes más pequeñas
(llamadas módulos), cada una de las cuales debe ser tan
independiente como sea posible de la aplicación en sí y
de las restantes partes.
Estos módulos se pueden compilar por separado, pero
tienen conexiones con otros módulos.
Al igual que la encapsulación, los lenguajes soportan la
modularidad de diversas formas
36. Universidad Andrés Bello
Características de POO
Principio de ocultación
Cada objeto está aislado del exterior, es un módulo natural, y
cada tipo de objeto expone una interfaz a otros objetos que
especifica cómo pueden interactuar con los objetos de la
clase.
El aislamiento protege a las propiedades de un objeto contra
su modificación por quien no tenga derecho a acceder a ellas;
solamente los propios métodos internos del objeto pueden
acceder a su estado. Esto asegura que otros objetos no
puedan cambiar el estado interno de un objeto de manera
inesperada, eliminando efectos secundarios e interacciones
inesperadas. Algunos lenguajes relajan esto, permitiendo un
acceso directo a los datos internos del objeto de una manera
controlada y limitando el grado de abstracción. La aplicación
entera se reduce a un agregado o rompecabezas de objetos.
37. Universidad Andrés Bello
Características de POO
Herencia
Las clases no se encuentran aisladas, sino que se relacionan
entre sí, formando una jerarquía de clasificación. Los
objetos heredan las propiedades y el comportamiento de
todas las clases a las que pertenecen.
La herencia organiza y facilita el polimorfismo y el
encapsulamiento, permitiendo a los objetos ser definidos y
creados como tipos especializados de objetos preexistentes.
Estos pueden compartir (y extender) su comportamiento sin
tener que volver a implementarlo. Esto suele hacerse
habitualmente agrupando los objetos en clases y estas
en árboles o enrejados que reflejan un comportamiento
común. Cuando un objeto hereda de más de una clase se
dice que hayherencia múltiple; siendo de alta complejidad
técnica por lo cual suele recurrirse a la herencia virtual para
evitar la duplicación de datos.
38. Universidad Andrés Bello
Permite reutilizar código creando nuevas clases a partir
de las existentes (construidas y depuradas)
Compromete una relación de jerarquía (es-un)
Una nueva clase se generará agregando atributos y/o
código a una clase existente
Una clase (derivada) puede heredar de otra clase (base):
Atributos y
Métodos
Características de POO
Herencia
39. Universidad Andrés Bello
Características de POO
Polimorfismo
Comportamientos diferentes, asociados a objetos distintos,
pueden compartir el mismo nombre; al llamarlos por ese
nombre se utilizará el comportamiento correspondiente al
objeto que se esté usando. O, dicho de otro modo, las
referencias y las colecciones de objetos pueden contener
objetos de diferentes tipos, y la invocación de un
comportamiento en una referencia producirá el
comportamiento correcto para el tipo real del objeto
referenciado. Cuando esto ocurre en "tiempo de ejecución",
esta última característica se llama asignación
tardía o asignación dinámica. Algunos lenguajes
proporcionan medios más estáticos (en "tiempo de
compilación") de polimorfismo, tales como las plantillas y
la sobrecarga de operadores de C++.
40. Universidad Andrés Bello
Características de POO
Polimorfismo
Polimorfismo significa que la misma operación puede
comportarse diferentemente sobre distintas clases. Por
ejemplo, la operación "mover", puede comportarse
diferentemente sobre una clase llamada Ventana y una clase
llamada Piezas_ajedrez.
Capacidad que permite a dos clases diferentes responder de
forma distinta a un mismo mensaje
Esto significa que dos clases que tengan un método con el
mismo nombre y que respondan al mismo tipo de mensaje
(es decir, que reciban los mismo parámetros), ejecutarán
acciones distintas
41. Universidad Andrés Bello
Características de POO
Polimorfismo
Ejemplo
Al presionar el acelerador esperamos que aumente la
velocidad del auto, independiente de si se tiene un:
Motor con carburador
Motor con inyección electrónica
42. Universidad Andrés Bello
Polimorfismo
Polimorfismo por sobrecarga: es uno de los más usados y
consiste en sobrecargar los parámetros en un método
de una clase, permitiendo definir varios métodos con el
mismo nombre pero con distinto número o tipos de
parámetros (diferente comportamiento).
Características de POO
Polimorfismo
43. Universidad Andrés Bello
Características de POO
Recolección de basura
La recolección de basura o garbage collection es la
técnica por la cual el entorno de objetos se encarga de
destruir automáticamente, y por tanto desvincular la
memoria asociada, los objetos que hayan quedado sin
ninguna referencia a ellos. Esto significa que el
programador no debe preocuparse por la asignación o
liberación de memoria, ya que el entorno la asignará
al crear un nuevo objeto y la liberará cuando nadie lo
esté usando. En la mayoría de los lenguajes híbridos
que se extendieron para soportar el Paradigma de
Programación Orientada a Objetos como C++ u Object
Pascal, esta característica no existe y la memoria debe
desasignarse expresamente. Por eso JAVA no requiere
de “destructor”