Está en la página 1de 36

Programación I

Programación Orientada a Objetos

Segundo Cuatrimestre

UCSE – 2022
En que consiste la Programación
Orientada a Objetos (POO)
Programación Orientada a Objetos (POO)

● Es un paradigma de programación que intenta simular el mundo real a


través del significado de objetos que contiene características y funciones.
Está basado en la idea de encapsular estado y operaciones en objetos.
● La programación se resuelve comunicando dichos objetos a través de
mensajes.
● Su principal ventaja es la reutilización de código y su facilidad para pensar
soluciones a determinados problemas.
Programación Orientada a Objetos (POO)

● Metodología de desarrollo de aplicaciones en la cual éstas se


organizan como colecciones cooperativas de objetos, cada uno de
los cuales representan una instancia de alguna clase, y cuyas
clases son miembros de jerarquías de clases unidas mediante
relaciones de herencia (Grady Booch*)

● Se considera que es una “simulación de un modelo del universo”


*La Metodología de Booch es una técnica usada en ingeniería de software en el diseño de software orientado a objetos. Fue
desarrollada por Grady Booch mientras trabajaba para Rational Software (hoy parte de IBM).
Programación Orientada a Objetos (POO)
“Simulación de un modelo del universo”
● Un programa consta de un conjunto de objetos
● Los objetos son abstracciones de cosas del mundo real
● Nos interesa qué se puede hacer con los objetos más que cómo se hace
● Cada objeto es responsable de unas tareas
● Los objetos interactúan entre sí por medio de mensajes
● Cada objeto es un ejemplar de una clase
● Las clases se pueden organizar en una jerarquía de herencia
Programación Orientada a Objetos (POO)

La POO no es un lenguaje de
programación, es una forma
de enfrentarse a ella. Esto
significa que La POO servirá
para desarrollar en muchos
lenguajes comunes en la
actualidad
Programación Orientada a Objetos (POO)
Programación Orientada a Objetos (POO)

Ventajas de la POO:
● Reusabilidad. Si las clases se diseñaron adecuadamente, se pueden usar en distintas partes del
programa y en numerosos proyectos
● Mantenibilidad. Debido a las sencillez para abstraer el problema, los programas orientados a
objetos son más sencillos de leer y comprender, ya que permiten ocultar detalles de
implementación dejando visibles sólo aquellos detalles más relevantes
● Modificabilidad. La facilidad de añadir, suprimir o modificar nuevos objetos permite hacer
modificaciones de una forma muy sencilla
● Fiabilidad. Al dividir el problema en partes más pequeñas se puede probarlas de manera
independiente y aislar mucho más fácilmente los posibles errores que puedan surgir
Programación Orientada a Objetos (POO)

Desventajas de la POO:

● Cambio en la forma de pensar de la programación tradicional a la orientada a objetos

● La ejecución de programas orientados a objetos, a veces, es más lenta (depende de la


plataforma, el tamaño del proyecto y la forma en que se haya modelado el problema).
Con el hardware de hoy en día esto no representa un problema en realidad

● La necesidad de utilizar bibliotecas de clases obliga a su aprendizaje y entrenamiento


Programación Orientada a Objetos (POO)

La POO está conformada por tres conceptos básicos fundamentales:

● Abstracción: proceso mental para extraer características “esenciales”, ignorando detalles que no
son relevantes. Cada observador creará abstracciones diferentes para una misma realidad.

● Encapsulación: es “ocultar” los detalles que dan soporte a un conjunto de características


esenciales de una abstracción. Existen partes visibles que proporcionan la funcionalidad y otras
partes ocultas que implementan los detalles internos que hacen a la funcionalidad.

● Modularidad: es descomponer un sistema en un conjunto de partes. Siempre buscando bajo


acoplamiento (el nivel de asociación entre módulos) y alta cohesión (grado de conectividad entre
los elementos que forman el módulo).
Programación Orientada a Objetos (POO)
Otros conceptos asociados a la POO son:

● Jerarquía: proceso de estructuración de varios elementos por niveles.

● Clases y objetos, atributos y estado, métodos y mensajes, herencia y polimorfismo.


Clases

● Es una representación o una abstracción de un objeto del mundo real


● Es un modelo con el que se construyen los objetos
● Es un molde del que luego se pueden crear múltiples objetos con similares características.
● Asumen el principio de encapsulación, se describe una vista pública que representa la
funcionalidad de la misma, y una vista privada que describe los detalles de implementación
● La POO se basa en la programación de clases, a diferencia de la programación
estructurada, que está centrada en las funciones.
● Una clase es una plantilla (molde), que define atributos (variables) y métodos (funciones)
Objetos
● Son representaciones de cosas, de algo en particular
● Son, específicamente, entidades o ejemplares o instancias de una clase concreta, que se
estructuran y comportan según lo definido en dicha clase
● Siempre pertenecen a una clase, de la que toman su estructura y comportamiento.
Objetos

● Tienen un estado independiente del resto de las otras instancias de la misma clase
● Pueden ser simples o complejos
● Pueden ser reales o imaginarios
● El proceso de crear un objeto se conoce también como instanciar una clase
● Tienen un:
○ estado (valores de los datos en un instante dado) y
○ comportamiento (operaciones que puede realizar)
Atributos - Estado

● Son rasgos o características de los objetos


● Definen lo que se conoce como el estado de un objeto
● Cada una de estas características tendrá un valor determinado para cada objeto
● Por ejemplo, para un objeto en particular de una clase Auto se podrían tener los atributos:

○ Marca
○ Modelo
○ Color
○ Kilómetros
○ Año
○ Patente
Ejemplo

EjemploComComponentes de un Objeto: -> Estados (atributos)


-> Operaciones (métodos)
Clases y objetos: ejemplos
Clases y objetos: ejemplos
Clases y objetos: ejemplos
Ejemplos
Ejemplos
Ejemplos
Objetos vs Clases
Comportamiento

● Ningún objeto existe en forma aislada


● Los objetos reciben acciones, y ellos mismos actúan sobre otros
● El comportamiento es cómo actúa y reacciona un objeto, en términos de sus cambios de estado y
paso de mensajes
● Representa su actividad visible y comprobable exteriormente
● Una operación en una acción que un objeto efectúa sobre otro con el fin de provocar una reacción.
● Las operaciones que los objetos cliente pueden realizar sobre un objeto, suelen declararse como
métodos y forman parte de la declaración de la clase a la que pertenece ese objeto
Métodos
● El comportamiento se realiza a través de métodos, los cuáles son operaciones sobre un objeto
● Permiten consultar el estado de un objeto y modificarlo
● Los métodos disponen de parámetros que permiten delimitar la acción del mismo
● Existen métodos que:
○ Consultan o modifican un atributo, normalmente se referencia a ellos
como: getters & setters
○ Realizan operaciones sobre el conjunto de atributos, calculando valores
o realizando modificaciones
○ Inicializan los atributos al principio del ciclo de vida, o liberan los recursos
al final del ciclo; nos referiremos a ellos como constructores o destructores
Métodos Públicos y Privados

● Los métodos públicos: describen qué pueden hacer los objetos de una clase en
particular. En otras palabras, es lo que se quiere dejar disponible desde fuera de la
clase

● Los métodos privados: describen la implementación del cómo lo hacen


Mensajes
● Un mensaje es la invocación de un método de un objeto
● Se puede decir que un objeto lanza un mensaje (quien realiza la invocación) y otro lo recibe (el
que ejecuta el método)
● Por tanto, se puede redefinir una clase como la descripción e implementación de un conjunto de
atributos y métodos
● Normalmente, se componen de:
_ un objeto destinatario,
_ un método que se debe ejecutar como respuesta y
_ los parámetros necesarios del método
Constructores y Destructores
Inicializan los atributos al principio del ciclo de vida, o liberan los recursos al final del ciclo.

Constructores:
● Son métodos pertenecientes a una clase.
● Se utilizan para construir o instanciar la misma.
● Permiten asignar valores iniciales a los atributos.
● Pueden existir varios constructores para una clase.
● Pueden tener o no parámetros, si no los tienen, se asignarán valores por defecto a los
atributos según su tipo de dato.
● En Java existe un constructor que se crea por defecto y se llama cada vez que se crea una
instancia de la clase (objeto).
Constructores y Destructores

Destructores:

● Son métodos de una clase que se ejecutan al final de todos los demás y tienen por objetivo
liberar el espacio ocupado en memoria por los atributos de un objeto.

● En Java no existen destructores, los mismos se manejan con el recolector de basura del
lenguaje, liberando memoria automáticamente.
Herencia
● La herencia es una característica que permite a las clases definirse a partir de otras, y así
reutilizar su funcionalidad
● La herencia permite definir nuevas clases en base a otras clases
● A la clase padre se le llama superclase, clase base..., y a la hija subclase, clase derivada....
● Es una relación entre clases, en la que una clase comparte la estructura y/o el comportamiento
definidos en una (herencia simple) o más clases (herencia múltiple)
● La clase de la que otras heredan se denomina “superclase”, o “clase padre”.
● La clase que hereda de una o más clases se denomina “subclase” o “clase hija”
● La herencia define una jerarquía de “tipos” entre clases, en la que una subclase hereda de una o
más superclases
Herencia
Herencia
Herencia: Nomenclatura
Polimorfismo
● El polimorfismo es la capacidad de que un mismo mensaje funcione con
diferentes objetos. Es aquél en el que el código no incluye ningún tipo de
especificación sobre el tipo concreto de objetos sobre el que se trabaja.
El método opera sobre un conjunto de posibles objetos compatibles
● En otras palabras, es la capacidad de un objeto para responder de distinto
modo ante el mismo mensaje
● Ejemplo: si se tienen las clases Auto, Barco y Avión (todas derivadas de
la clase Vehículo), y se envía un mensaje “Moverse”, cada clase sabrá
como hacerlo y cada una lo realizará de diferente manera
Polimorfismo

También podría gustarte