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

Objetos: Caracteristicas
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.

Identidad

Una bicicleta roja

Doris

caballo

Variable
unCredito unDebito unaCuenta unaCuentadeAhorros

Direccin
10001324 54647875 87896545 87020486

antena parablica

Mi Computadora

Una tabla de smbolos

Residencia de Doris

cuenta bancaria

Clasificacin
Vehculo

Animal

Punto Figura (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

Clase Bicicleta
Atributos Tamao de frame Tamao de llanta Material ... Mtodos Cambio Mover Frenar...

Abstrados en

Objetos bicicletas

Ejemplo de Clase
Java UML
Quebrado - numerador: int : - denominador int : +Quebrado (int, int) +setNumerador (n:int):void +getNumeradore () :int

public class Quebrado { private int numerador; private int denominador;


public Quebrado(int n, int d) {} public void setNumerador(int n) {} public int getNumerador() {}

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 - numerador: int : - denominador int :

+Quebrado (int, int) +setNumerador (n:int):void +getNumeradore () :int

q1: Quebrado numerador 9 = denominador 7 b: Quebrado numerador 1 = denominador 2 b: Quebrado numerador 3 = denominador 19 =

Creacin de instancias u objetos a partir de la clase Alumno:


Quebrado q1 = new Quebrado (9,7); Quebrado a = new Quebrado (1,2); Quebrado b = new Quebrado (3, 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, { numerador = n; denominador = d; } public Quebrado() { numerador = 1; denominador = 0; } //...


};

int d)

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


ANTES
Auto maxFuel maxNroDePasajeros modelo velocidad acelerar() desacelerar() doblarAIzq() doblarADcha() Avion maxAltitud maxFuel maxNroDePasajeros velocidad nroDeMotores

DESPUES
Vehiculo maxFuel maxNroDePasajeros velocidad acelerar() desacelerar() superclase

Auto modelo doblarAIzq() doblarADcha()

Avion maxAltitud nroDeMotores descender() ascender()

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

subclases

Herencia: Creando Subclases


UML
Vehiculo

Java
public class Vehiculo { } public class Auto extends Vehiculo{ }

Auto

Avion

public class Avion extends Vehiculo{ }

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}

public abstract class Figura { ... }


Circulo Rectangulo

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
Atributo: Figura Geomtrica area Mtodo: obtenerArea

Rectangulo

Circulo

Atributo: radio

Atributos:
longitud ancho Mtodos: Rectangulo obtenerArea

Mtodos:
Circulo obtenerArea

Ejemplo de Polimorfismo
Mtodo abstracto
mtodo abstracto

Figura {abstracto} +obtenerArea()

Figura f = new Rectangulo(); int s = f.obtenerArea();

Circulo +obtenerArea()

Rectangulo +obtenerArea()

mtodo concreto

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
f:Factura i:Item a:Articulo obtenerPrecio() obtenerCosto()

calcularPrecio()

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.