Está en la página 1de 47

Programacion Orientado a

Objetos
Programacion
Procedimiental
Programa:
Secuencia de instrucciones que describen
la solucion
Conjunto de llamadas a funciones
Codigo y datos: separados, sin ninguna
coneccin formal
Codigo --> funciones
Datos --> estructuras
Programacion Orientada a
Objetos
Todo es un objeto, descrito por caracteristicas
y acciones.
Caracteristicas --> datos
Acciones --> funciones que operan sobre los
datos
Programa:
Conjunto de objetos que se relacionan entre
si,
Comunicandose" a traves de mensajes.

Quebrado a, b, c;
a = Quebrado_Pedir();
b = Quebrado_Pedir();
c = Quebrado_Sumar(a,b);
Quebrado a, b, c;
a = new Quebrado();
b = new Quebrado();
a.Pedir();
b.Pedir();
c = a.Sumar(b);
Lenguajes Orientados a Objetos
Simula
Smalltalk
C++
Object Pascal
Java
C#

Conceptos de Orientacin a
Objetos
Abstraccin
Visin simplificada de una realidad
Enfocarse en lo esencial.
POO intenta abstraer lo mas importante de
un objeto:
Estado del objeto (Atributos).
Comportamiento del objeto (Mtodos).
Comportamientos comunes entre objetos
relacionados.

Abstraccin
Qu es un objeto?
Un objeto es una abstraccin de un conjunto de
cosas del mundo real de tal forma que:
Todos los elementos del conjunto (las instancias)
tienen las mismas caractersticas.
Todas las instancias estn sujetas a y conforman
las mismas reglas.
Mundo Real Software
Abstraccin
Caractersticas de los objetos:
Clasificacin
Identidad
Relacion entre ellos
Tiene un
Conoce un
Es un
Polimorfismo

Estas caractersticas pueden ser usadas en
forma independiente, pero juntas se
complementan.
Objetos: Caracteristicas
Identidad
Variable Direccin
unCredito 10001324
unDebito 54647875
unaCuenta 87896545
unaCuentadeAhorros 87020486
Una tabla de smbolos
caballo
Doris
Residencia de Doris
Mi Computadora
Una bicicleta roja
cuenta bancaria
antena parablica
Clasificacin
Vehculo
Punto
Figura
Animal
(1,3)
(2,2)
(2,1)
(5,2.5)
Clases y Objetos
Class Template
Objetos
Clase
Es la plantillas que describe a un conjunto de
objeto, con los mismos
atributos (variables)
metodos (funciones)
relaciones
Un objeto es una instancia de una clase.
Los objetos creados a partir de una clase,
Tienen una estructura idntica,
Pero identidad propia
Clase
Clase --> TDA
Tipo de Dato Abstracto
Es la definicion de un nuevo tipo de dato
Un objeto es la variable de dicho tipo
Ejemplo:
Clase: Perro
Objetos: Balto, Firulais, etc
Ejemplo de Clase
Objetos bicicletas
Abstrados en
Clase Bicicleta
Atributos
Tamao de frame
Tamao de llanta
Material ...
Mtodos
Cambio
Mover
Frenar...
Ejemplo de Clase
public class Quebrado
{
private int numerador;
private int denominador;

public Quebrado(int n, int d)
{}
public void setNumerador(int n)
{}
public int getNumerador()
{}
}
UML
Java
Quebrado
- numerador: : int
- denominador : int
+ Quebrado (int, int)
+ setNumerador (n:int):void
+ getNumeradore () :int
Estructura de una Clase
Instancia
Una instancia es un objeto creado a partir
de una clase.
La clase describe la estructura de la
instancia (informacin y comportamiento),
mientras que el estado actual de la instancia
es definido por las operaciones ejecutadas.

Instancia






Quebrado b = new Quebrado (3, 19);

q1: Quebrado
numerador = 9
denominador 7
Creacin de instancias u objetos a partir de la clase Alumno:
Quebrado q1 = new Quebrado (9,7);

Quebrado a = new Quebrado (1,2);
Quebrado
- numerador: : int
- denominador : int
+ Quebrado (int, int)
+ setNumerador (n:int):void
+ getNumeradore () :int
b: Quebrado
numerador = 1
denominador 2
b: Quebrado
numerador = 3
denominador = 19
Constructor
Mtodo especial
Con el mismo nombre de la clase.
Es llamado automticamente
Cuando un objeto de una clase es creado.
Inicializa las variables del objeto.
Puede tomar argumentos
Pero no pueden retornar un valor.
Una clase puede tener mas de 1 constructor
Creando objetos: new y
constructor
new: operador para crear objetos de una
clase
Utiliza o llama al constructor de la clase
Si no se define un constructor,
La clase ofrece uno por defecto
El cual no recibe parametros y no hace nada
Si se define
El constructor por defecto se pierde
Ejemplo de Constructor
public class Quebrado
{
private int numerador;
private int denominador;

public Quebrado(int n, int d)
{ numerador = n;
denominador = d;
}
public Quebrado()
{ numerador = 1;
denominador = 0;
}
//...
};
Encapsulamiento
Consiste en separar
Los aspectos externos de un objeto
De los detalles internos de implementacin del
mismo.
Se protegen los datos(caracteristicas) de un objeto
Se exhibe solo el comportamiento del mismo
Haciendo enfasis en lo que se puede hacer
No como se puede hacerlo
EJEMPLO

Encapsulamiento: Como
implementarlo?
En JAVA se usan modificadores de acceso
Palabras claves antes de cada miembro de la clase
Private: Solo los miembros de la clase los pueden ver
Public: Todos los objetos los pueden ver
Protected: solo los objetos de las subclases los
pueden ver
Para acceder a los datos privados fuera de la clase
Debe hacerse a travs de mtodos
Get y Set
Ejemplo de Encapsulamiento
public class Quebrado
{
private int numerador, denominador;
public Quebrado(int n, int d)
{ numerador = n;
denominador = d;
}
public int getNumerador(){
return numerador;
}
public void setNumerador(int n){
numerador = n;
}
};
Overloading o Sobrecarga
Permite definir varios mtodos con el mismo
nombre,
Pero con diferentes parmetros (cantidad
y/o tipo).
Ejmplo:
public void setFecha(int anio, int dia, int mes );
public void setFecha(String strFecha);
public void setFecha(float segundos);

Relaciones entre objetos
Tiene: a un objeto pertenecen objetos de
otras clases
Ejemplo: Un computador tiene un teclado
Conoce: un objeto conoce datos sobre
objetos de otra clase
Ejemplo: un estudiante conoce en que curso
se registro
Es un: un objeto comparte caracteristicas
con otra clase
Ejemplo: un estudiante es una persona

ES UN: Herencia

Es un mecanismo para compartir atributos y
mtodos entre clases.
Por la herencia se forman jerarquas de
clases (superclases y subclases).
Las subclases heredan los atributos y
mtodos de las superclases.
Permite la reutilizacin de cdigo.

Superclase
Subclase
Ejemplo
Herencia: Reusando el cdigo
Auto
maxFuel
maxNroDePasajeros
modelo
velocidad

acelerar()
desacelerar()
doblarAIzq()
doblarADcha()

Avion
maxAltitud
maxFuel
maxNroDePasajeros
velocidad
nroDeMotores

acelerar()
desacelerar()
descender()
ascender()

ANTES
DESPUES
Vehiculo
maxFuel
maxNroDePasajeros
velocidad

acelerar()
desacelerar()

Avion
maxAltitud
nroDeMotores

descender()
ascender()

Auto
modelo

doblarAIzq()
doblarADcha()


superclase
subclases
Herencia: Creando Subclases
Vehiculo
Auto Avion
public class Vehiculo {

}

public class Auto extends Vehiculo{

}

public class Avion extends Vehiculo{

}
Java
UML
Tipos de Herencia
Simple:
Clase A herada de otra Clase B
Mltiple:
Clase A hereda de varias otras clases C, D,
etc
Herencia Multiple
Herencia Mltiple
Problema de ambigedad: unVehiculoAnfibio.Desplazarse();
Los lenguajes ofrecen mecanismos para deshacer la ambigedad (en
C++ => unVehiculoAnfibio.VehiculoTerrestre::Desplazarse()).
Tipos de Clases
Clases abstractas
Representan conceptos muy generales,
Describen la interfaz comun para el resto de subclaes
No pueden ser instanciadas
Pueden tener operaciones abstractas
Clases concretas o comunes
Representan conceptos especificos
Pueden ser instanciadas
Suelen implementar operaciones abstractas heredadas
Clases finales
Clases especiales que no pueden tener descendencia.
Permiten instanciar objetos.

TIPOS DE CLASES:
EJEMPLOS
Ejemplo de Clase Abstracta
Clases abstractas
Figura {Abstracto}
Circulo Rectangulo
public abstract class Figura {
...
}

public class Circulo extends Figura{
...
}

public class Rectangulo extends Figura{
...
}
Figura f = new Figura();
Polimorfismo
El polimorfismo est muy ligado a la herencia.
Una misma operacin
Puede ser ejecutada en forma diferente
Por objetos de distintas clases
Ejemplo:
A una figura se le puede calcular el area
Un circulo es una figura
Un rectangulo es una figura
A ambos se les puede calcular el area pero
Cada uno tiene una forma distinta de calcularlo
Ejemplo de Polimorfismo
Figura Geomtrica
Atributo:
area
Mtodo:
obtenerArea
Atributos:
longitud
ancho
Mtodos:
Rectangulo
obtenerArea
Atributo:
radio
Mtodos:
Circulo
obtenerArea
Rectangulo
Circulo
Ejemplo de Polimorfismo
mtodo concreto
Figura f = new Rectangulo();
int s = f.obtenerArea();
mtodo abstracto
Rectangulo
+ obtenerArea()
Figura {abstracto}
+ obtenerArea()
Circulo
+ obtenerArea()
Mtodo
abstracto
Redefinicion/Overriding
En ocasiones, una clase hija necesita redefinir las
implementaciones heredadas
Esto es debido a que
La implementacin de un mtodo heredado
No se aplica a la subclase
Ejemplo: Todos los items de una biblioteca se ingresan
de una forma dada, menos las tesis
O el mtodo heredado
No tiene an implementacion
Ejemplo:
calcArea de una Figura no se puede implementar
calcArea de un Cuadrado si
Mensajes
a:Articulo i:Item
f:Factura
obtenerPrecio()
calcularPrecio()
obtenerCosto()
public class Factura {
...
i.obtenerPrecio();
...
}
public class Item {
public obtenerPrecio(){
a.obtenerCosto();
this.calcularPrecio();
}
private calcularPrecio(){
...
}
}
Identificando objetos: JavaZoo
Los animales de un zoologico se encuentran ubicados en
jaulas. Los animales pertenecen a una especie dada,
tienen color, tamao y nombres.
Las jaulas tienen diferentes tamaos, dependiendo de
los animales que alberguen. Pueden tener una
proteccion para la lluvia. Las jaulas a veces estn
sucias.
El celador cuida de los animales, los alimenta y limpia
sus jaulas.

Ejercicios:
1. Implemente la clase Punto
2. Implemente las clases Figura, Rectangulo y Circulo

Ventajas de la Programacin Orientada
a Objetos
La reutilizacin de cdigo:
Esta ahorra tiempo en el desarrollo de
programas.
Se utiliza software que ya ha sido probado.
Fcil mantenimiento y depuracin de programas.
Extensibilidad: posibilidad de ampliar la
funcionalidad de la aplicacin de manera
sencilla.
Modularidad y encapsulacin: el sistema se
descompone en objetos con unas
responsabilidades claramente especificadas.

También podría gustarte