programacion orientada a objetos
Transcript of programacion orientada a objetos
![Page 1: programacion orientada a objetos](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/1.jpg)
Programacion Orientado a Objetos
![Page 2: programacion orientada a objetos](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/2.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/4.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/5.jpg)
Lenguajes Orientados a Objetos
Simula Smalltalk C++ Object Pascal JavaC#
![Page 6: programacion orientada a objetos](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/6.jpg)
Conceptos de Orientación a Objetos
![Page 7: programacion orientada a objetos](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/7.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/8.jpg)
Abstracción
![Page 9: programacion orientada a objetos](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/9.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/10.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/11.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/12.jpg)
Clasificación
Vehículo
Punto
Figura
Animal
(1,3)
(2,2)
(2,1)
(5,2.5)
![Page 13: programacion orientada a objetos](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/13.jpg)
Clases y Objetos
Class Template
Objetos
![Page 14: programacion orientada a objetos](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/14.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/15.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/16.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/18.jpg)
Estructura de una Clase
![Page 19: programacion orientada a objetos](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/19.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/20.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/21.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/22.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/23.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/24.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/25.jpg)
EJEMPLO
![Page 26: programacion orientada a objetos](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/26.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/27.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/28.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/29.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/30.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/31.jpg)
Ejemplo
![Page 32: programacion orientada a objetos](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/32.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/33.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/34.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/35.jpg)
Herencia Multiple
![Page 36: programacion orientada a objetos](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/36.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/37.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/38.jpg)
TIPOS DE CLASES: EJEMPLOS
![Page 39: programacion orientada a objetos](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/39.jpg)
Ejemplo de Clase Abstracta
![Page 40: programacion orientada a objetos](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/40.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/41.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/42.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/43.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/44.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/45.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/46.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022050723/5572124c497959fc0b9063b2/html5/thumbnails/47.jpg)
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.