Está en la página 1de 28

POO

INGA. ROSALBA PERALTA


¿QUÉ ES LA PROGRAMACIÓN ORIENTADA A
OBJETOS?
• Es una manera de construir Software basada en un paradigma.
• Propone resolver problemas de la realidad a través de identificar
objetos y relaciones de colaboración entre ellos.
• El Objeto y el mensaje son sus elementos fundamentales.
¿QUÉ ES LO QUE TIENEN EN COMÚN?
¿QUÉ ES UNA CLASE?

• Clasificación en base a comportamiento y atributos comunes.


• Permite crear un vocabulario estandarizado para comunicarse y
pensar dentro del equipo de trabajo.
• Es un tipo de dato abstracto que posee atributos y métodos.
• Describe el estado y contiene el comportamiento que todos los
objetos creados a partir de esa clase tendrán.
¿QUÉ ES UNA CLASE?

• Construcción Estática
• Describe:
• Comportamiento común
• Atributos [estado]
• Estructura de datos
• Incluye:
• Datos
• Funciones o métodos.
CONSTRUCTOR Y DESTRUCTOR

• Dos métodos de las clases


• Existen por defecto
• Constructor, inicializa valores
• Destructor, libera recursos al finalizar la vida de una instancia de una
clase creada en memoria
¿QUÉ ES UN OBJETO?

• Instancia de una clase


• Un objeto posee:
• Identidad: Relación única entre el objeto del modelo y el ente de la realidad que
representa. Se implementa a través de un id único en el modelo.
• Comportamiento: Resuelve un conjunto particular de problemas a través de su
protocolo.
• Estado: Almacena información
• Fija
• Variable
PILARES DE POO

Herencia Polimorfismo Encapsulamiento

Abstracción
ABSTRACCIÓN

• Corresponde a visualizar los elementos esenciales de algo.


• El proceso con lleva a conocer las características esenciales de una
clase que sea transformada o de una instancia.
• La abstracción también define limites relativos a la perspectiva del
observador.
• Diferentes perspectivas pueden provocar diferentes resultados de
abstracción para una misma entidad.
EJEMPLO DE ABSTRACCIÓN

Por ejemplo, considere una “casa” como un objeto. Usted puede pensar
en una casa como un lugar con “ tres dormitorios, un garaje para dos
carros, un jardín delantero con gramilla sintética… etc.”
Esa podría ser la definición de Casa desde un punto de vista de un
“lugar para vivir”. Sin embargo, la definición de “casa” para un
constructor podría variar ya que él ve una casa en términos de
Materiales, Mano de Obra, Tiempo de entrega, Dinero etc. requeridos
para construir una casa.
ENCAPSULAMIENTO

• Es la capacidad del objeto de responder a peticiones a través de sus


métodos sin la necesidad de exponer los medios utilizados para llegar
a brindar estos resultados.
• La utilidad del encapsulamiento va por la facilidad para manejar la
complejidad, ya que las Clases se ven como cajas negras donde sólo
se conoce el comportamiento pero no los detalles internos, y esto es
conveniente porque solo interesará conocer qué hace la Clase pero
no será necesario saber cómo lo hace.
Acelera()

velocidad 300
km/h

Frena()

El método Acelerar() del objeto “auto”, siempre aumentará


la velocidad, sin necesidad de tener conocimiento de
cuáles son los recursos que ejecuta para llegar a brindar
este resultado.
HERENCIA

• Es la capacidad de heredar las características y métodos de una clase


a otra mas especializada (sub-clase o clase hija)
• Existen 2 tipos de herencia
• Singular: La clase hija deriva de una única clase padre
• Múltiple: La clase hija deriva de varias clases padre
• No es soportada por todos los lenguajes
• Puede ser confusa
EJEMPLOS DE HERENCIA SIMPLE

Transport
e

Acelera

Frena

Automóvil
JERARQUÍA DE
CLASES
Transporte

Marítimo Aire Nieve Tierr


a

DentroAtmosfer FueraAtmosfera 1-Persona N-Personas


a
POLIMORFISMO

• Es la capacidad de que diferentes objetos de una misma jerarquía tengan


comportamientos distintos, aunque reciban el mismo mensaje
• La idea detrás del polimorfismo es poder diseñar nuestro código teniendo
en cuenta que todas las clases que derivan de una clase base heredan los
métodos de la clase base.
• Consideremos el siguiente ejemplo, que define una clase abstracta Animal.
Animal tiene un método habla() que es reemplazado en las subclases Perro
y Gato.
public class Perro extends Animal {
public Perro(String nombre) { super(nombre); }
public abstract class Animal public void habla() {
{ System.out.println(getNombre()+": Warf, Guau,
private String nombre; etc.");
public Animal(String nombre) }
{ }
this.nombre = nombre;
}
public String getNombre()
{
return nombre; public class Gato extends Animal {
} public Gato(String nombre) { super(nombre); }
public void habla() {
abstract public void habla(); System.out.println(getNombre()+": Miau, Pffff,
} etc.");
}
}
MODIFICADORES DE ACCESO

• Introducen al concepto de encapsulamiento


• Brindan seguridad al restringir el acceso a la información dependiendo
del lugar en donde es solicitada.

Public Private

Protected
Java admite una variante más en cuanto a modificadores de acceso: la
omisión del mismo (no declarar ninguno de los modificadores public,
private o protected). En la siguiente tabla puedes comparar los efectos
de usar uno u otro tipo de declaración en cuanto a visibilidad de los
campos o métodos:

Modificador Clase Package Subclase Todos


Public Si Si Si Si
Protected Si Si Si No
No especificado Si Si No No
(Default)
Private Si No No No
PUBLIC
PRIVATE
PROTECTED
SOBRECARGA DE MÉTODOS

• Sobrecarga: Definir más de un método por cada mensaje, los tipos de


los argumentos ayudan a decidir a qué mensaje se invoca.

• Tareas similares son realizadas por métodos con mismo nombre


CLASES ABSTRACTAS

• Se declaran los métodos no la implementación de los mismos.


• No se pueden instanciar.
• Clase base.
• Las clases hijas serán las encargadas de agregar la funcionalidad a
los métodos abstractos.
• Cuando se están diseñando clases, se tiene que decidir que clases
van a ser abstractas y cuáles no. Las clases concretas son aquellas
que son suficientemente específicas para ser instanciadas.
• Para crear una clase abstracta escribimos la palabra reservada
“abstract” antes de la declaración de la clase.
abstract class Canine extends Animal {
public void roam() { }
}

• El compilador no dejara crear instancias de una clase abstracta.


• Nadie podrá crear instancias de esa clase. Pero estas pueden ser
creadas para usar el polimorfismo.
Se puede asignar un objeto de una subclase a la
clase padre o super clase. Incluso si la clase padre es
abstracta

• public class MakeCanine {


public void go() {
Canine c;
c = new Dog();
c = new Canine();
c.roam();
}
}
• Una clase abstracta por sí sola no tiene un propósito a menos que
sea extendida

También podría gustarte