47
Programacion Orientado a Objetos

programacion orientada a objetos

  • Upload
    navaeli

  • View
    52

  • Download
    0

Embed Size (px)

Citation preview

Page 1: programacion orientada a objetos

Programacion Orientado a Objetos

Page 2: programacion orientada a objetos

Programacion Procedimiental

Programa: – Secuencia de instrucciones que describen

la solucion– Conjunto de llamadas a funciones

Codigo y datos: separados, sin ninguna conección formal– Codigo --> funciones– Datos --> estructuras

Page 3: programacion orientada a objetos

Programacion Orientada a Objetos

Todo es un objeto, descrito por caracteristicas y acciones.– Caracteristicas --> datos– Acciones --> funciones que operan sobre los

datosPrograma:

– Conjunto de objetos que se relacionan entre si,

– “Comunicandose" a traves de mensajes.

Page 4: programacion orientada a objetos

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);

Page 5: programacion orientada a objetos

Lenguajes Orientados a Objetos

Simula Smalltalk C++ Object Pascal JavaC#

Page 6: programacion orientada a objetos

Conceptos de Orientación a Objetos

Page 7: programacion orientada a objetos

AbstracciónVisión simplificada de una realidad

– Enfocarse en lo esencial.

POO intenta abstraer lo mas importante de un objeto:Estado del objeto (Atributos).

Comportamiento del objeto (Métodos).

Comportamientos comunes entre objetos relacionados.

Page 8: programacion orientada a objetos

Abstracción

Page 9: programacion orientada a objetos

Qué es un objeto?

Un objeto es una abstracción de un conjunto de cosas del mundo real de tal forma que: Todos los elementos del conjunto (las instancias)

tienen las mismas características. Todas las instancias están sujetas a y conforman

las mismas reglas.

Mundo Real Software

Abstracción

Page 10: programacion orientada a objetos

Características de los objetos: Clasificación Identidad Relacion entre ellos

• Tiene un• Conoce un• Es un

Polimorfismo

Estas características pueden ser usadas en forma independiente, pero juntas se complementan.

Objetos: Caracteristicas

Page 11: programacion orientada a objetos

Identidad

Variable DirecciónunCredito 10001324unDebito 54647875unaCuenta 87896545unaCuentadeAhorros 87020486

Una tabla de símbolos

caballoDoris

Residencia de Doris

Mi Computadora

Una bicicleta roja

cuenta bancaria

antena parabólica

Page 12: programacion orientada a objetos

Clasificación

Vehículo

Punto

Figura

Animal

(1,3)

(2,2)

(2,1)

(5,2.5)

Page 13: programacion orientada a objetos

Clases y Objetos

Class Template

Objetos

Page 14: programacion orientada a objetos

ClaseEs 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 idéntica, – Pero identidad propia

Page 15: programacion orientada a objetos

Clase

Clase --> TDA– Tipo de Dato Abstracto

Es la definicion de un nuevo tipo de datoUn objeto es la variable de dicho tipoEjemplo:

– Clase: Perro– Objetos: Balto, Firulais, etc

Page 16: programacion orientada a objetos

Ejemplo de Clase

Objetos bicicletas

Abstraídos en

Clase Bicicleta

Atributos

Tamaño de frameTamaño de llantaMaterial ...

Métodos

CambioMoverFrenar...

Page 17: programacion orientada a objetos

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

Page 18: programacion orientada a objetos

Estructura de una Clase

Page 19: programacion orientada a objetos

Instancia

Una instancia es un objeto creado a partir de una clase.

La clase describe la estructura de la instancia (información y comportamiento), mientras que el estado actual de la instancia es definido por las operaciones ejecutadas.

Page 20: programacion orientada a objetos

Instancia

Quebrado b = new Quebrado (3, 19);

q1: Quebrado

numerador = 9denominador 7

Creación 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 = 1denominador 2

b: Quebrado

numerador = 3denominador = 19

Page 21: programacion orientada a objetos

Constructor

Método especial

– Con el mismo nombre de la clase. Es llamado automáticamente

– 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

Page 22: programacion orientada a objetos

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

Page 23: programacion orientada a objetos

Ejemplo de Constructorpublic class Quebrado

{

private int numerador;

private int denominador;

public Quebrado(int n, int d)

{ numerador = n;

denominador = d;

}

public Quebrado()

{ numerador = 1;

denominador = 0;

}

//...

};

Page 24: programacion orientada a objetos

Encapsulamiento Consiste en separar

– Los aspectos externos de un objeto – De los detalles internos de implementación 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

Page 25: programacion orientada a objetos

EJEMPLO

Page 26: programacion orientada a objetos

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 través de métodos

– Get y Set

Page 27: programacion orientada a objetos

Ejemplo de Encapsulamientopublic 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;

}

};

Page 28: programacion orientada a objetos

Overloading o Sobrecarga

Permite definir varios métodos con el mismo nombre,

– Pero con diferentes parámetros (cantidad y/o tipo).

Ejmplo: public void setFecha(int anio, int dia, int mes );

public void setFecha(String strFecha);

public void setFecha(float segundos);

Page 29: programacion orientada a objetos

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

Page 30: programacion orientada a objetos

ES UN: Herencia

Es un mecanismo para compartir atributos y métodos entre clases.

Por la herencia se forman jerarquías de clases (superclases y subclases).

Las subclases heredan los atributos y métodos de las superclases.

Permite la reutilización de código.

Superclase

Subclase

Page 31: programacion orientada a objetos

Ejemplo

Page 32: programacion orientada a objetos

Herencia: Reusando el código

AutomaxFuelmaxNroDePasajerosmodelovelocidad

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

Avion

maxAltitudmaxFuelmaxNroDePasajerosvelocidadnroDeMotores

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

ANTES DESPUES

VehiculomaxFuelmaxNroDePasajerosvelocidad

acelerar()desacelerar()

Avion

maxAltitudnroDeMotores

descender()ascender()

Auto

modelo

doblarAIzq()doblarADcha()

superclase

subclases

Page 33: programacion orientada a objetos

Herencia: Creando Subclases

Vehiculo

Auto Avion

public class Vehiculo { }

public class Auto extends Vehiculo{

}

public class Avion extends Vehiculo{

}

JavaUML

Page 34: programacion orientada a objetos

Tipos de Herencia

Simple: – Clase A herada de otra Clase B

Múltiple: – Clase A hereda de varias otras clases C, D,

etc

Page 35: programacion orientada a objetos

Herencia Multiple

Page 36: programacion orientada a objetos

Herencia Múltiple

Problema de ambigüedad: unVehiculoAnfibio.Desplazarse();

Los lenguajes ofrecen mecanismos para deshacer la ambigüedad (en C++ => unVehiculoAnfibio.VehiculoTerrestre::Desplazarse()).

Page 37: programacion orientada a objetos

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.

Page 38: programacion orientada a objetos

TIPOS DE CLASES: EJEMPLOS

Page 39: programacion orientada a objetos

Ejemplo de Clase Abstracta

Page 40: programacion orientada a objetos

Clases abstractas

Figura {Abstracto}

Circulo Rectangulo

public abstract class Figura { ...}

public class Circulo extends Figura{ ...}

public class Rectangulo extends Figura{ ...}

Figura f = new Figura();

Page 41: programacion orientada a objetos

Polimorfismo

El polimorfismo está muy ligado a la herencia. Una misma operación

– 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

Page 42: programacion orientada a objetos

Ejemplo de Polimorfismo

Figura Geométrica

Atributo:

area

Método:

obtenerArea

Atributos:

longitud

ancho

Métodos:

Rectangulo

obtenerArea

Atributo:

radio

Métodos:

Circulo

obtenerArea

Rectangulo Circulo

Page 43: programacion orientada a objetos

Ejemplo de Polimorfismo

método concreto

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

método abstracto

Rectangulo

+obtenerArea()

Figura {abstracto}

+obtenerArea()

Circulo

+obtenerArea()

Método abstracto

Page 44: programacion orientada a objetos

Redefinicion/Overriding

En ocasiones, una clase hija necesita redefinir las implementaciones heredadas

Esto es debido a que

– La implementación de un método 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 método heredado

• No tiene aún implementacion

• Ejemplo:

– calcArea de una Figura no se puede implementar

– calcArea de un Cuadrado si

Page 45: programacion orientada a objetos

Mensajes

a:Articuloi:Itemf:Factura

obtenerPrecio()

calcularPrecio()

obtenerCosto()

public class Factura { ... i.obtenerPrecio(); ...}

public class Item { public obtenerPrecio(){ a.obtenerCosto(); this.calcularPrecio(); } private calcularPrecio(){ ... }}

Page 46: programacion orientada a objetos

Identificando objetos: JavaZoo

Los animales de un zoologico se encuentran ubicados en jaulas. Los animales pertenecen a una especie dada, tienen color, tamaño y nombres.

Las jaulas tienen diferentes tamaños, dependiendo de los animales que alberguen. Pueden tener una proteccion para la lluvia. Las jaulas a veces están 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

Page 47: programacion orientada a objetos

Ventajas de la Programación Orientada a Objetos

La reutilización de código: Esta ahorra tiempo en el desarrollo de

programas. Se utiliza software que ya ha sido probado.

Fácil mantenimiento y depuración de programas.Extensibilidad: posibilidad de ampliar la

funcionalidad de la aplicación de manera sencilla.

Modularidad y encapsulación: el sistema se descompone en objetos con unas responsabilidades claramente especificadas.