programacion orientada a objetos

10,757 views
10,378 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
10,757
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
394
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

programacion orientada a objetos

  1. 1. Programacion Orientado a Objetos
  2. 2. Programacion Procedimiental <ul><li>Programa: </li></ul><ul><ul><li>Secuencia de instrucciones que describen la solucion </li></ul></ul><ul><ul><li>Conjunto de llamadas a funciones </li></ul></ul><ul><li>Codigo y datos: separados, sin ninguna conección formal </li></ul><ul><ul><li>Codigo --> funciones </li></ul></ul><ul><ul><li>Datos --> estructuras </li></ul></ul>
  3. 3. Programacion Orientada a Objetos <ul><li>Todo es un objeto, descrito por caracteristicas y acciones. </li></ul><ul><ul><li>Caracteristicas --> datos </li></ul></ul><ul><ul><li>Acciones --> funciones que operan sobre los datos </li></ul></ul><ul><li>Programa: </li></ul><ul><ul><li>Conjunto de objetos que se relacionan entre si, </li></ul></ul><ul><ul><li>“ Comunicandose&quot; a traves de mensajes. </li></ul></ul>
  4. 4. 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);
  5. 5. Lenguajes Orientados a Objetos <ul><li>Simula </li></ul><ul><li>Smalltalk </li></ul><ul><li>C++ </li></ul><ul><li>Object Pascal </li></ul><ul><li>Java </li></ul><ul><li>C# </li></ul>
  6. 6. Conceptos de Orientación a Objetos
  7. 7. Abstracción <ul><li>Visión simplificada de una realidad </li></ul><ul><ul><li>Enfocarse en lo esencial. </li></ul></ul><ul><li>POO intenta abstraer lo mas importante de un objeto: </li></ul><ul><ul><li>Estado del objeto (Atributos). </li></ul></ul><ul><ul><li>Comportamiento del objeto (Métodos). </li></ul></ul><ul><ul><li>Comportamientos comunes entre objetos relacionados. </li></ul></ul>
  8. 8. Abstracción
  9. 9. Qué es un objeto? <ul><li>Un objeto es una abstracción de un conjunto de cosas del mundo real de tal forma que: </li></ul><ul><ul><li>Todos los elementos del conjunto (las instancias) tienen las mismas características. </li></ul></ul><ul><ul><li>Todas las instancias están sujetas a y conforman las mismas reglas. </li></ul></ul>Mundo Real Software Abstracción
  10. 10. <ul><li>Características de los objetos: </li></ul><ul><ul><li>Clasificación </li></ul></ul><ul><ul><li>Identidad </li></ul></ul><ul><ul><li>Relacion entre ellos </li></ul></ul><ul><ul><ul><li>Tiene un </li></ul></ul></ul><ul><ul><ul><li>Conoce un </li></ul></ul></ul><ul><ul><ul><li>Es un </li></ul></ul></ul><ul><ul><li>Polimorfismo </li></ul></ul><ul><li>Estas características pueden ser usadas en forma independiente, pero juntas se complementan. </li></ul>Objetos: Caracteristicas
  11. 11. Identidad cuenta bancaria antena parabólica Variable Dirección unCredito 10001324 unDebito 54647875 unaCuenta 87896545 unaCuentadeAhorros 87020486 Una tabla de símbolos caballo Doris Residencia de Doris Mi Computadora Una bicicleta roja
  12. 12. Clasificación Vehículo Punto Figura Animal (1,3) (2,2) (2,1) (5,2.5)
  13. 13. Clases y Objetos Class Template Objetos
  14. 14. Clase <ul><li>Es la plantillas que describe a un conjunto de objeto, con los mismos </li></ul><ul><ul><li>atributos (variables) </li></ul></ul><ul><ul><li>metodos (funciones) </li></ul></ul><ul><ul><li>relaciones </li></ul></ul><ul><li>Un objeto es una instancia de una clase. </li></ul><ul><li>Los objetos creados a partir de una clase, </li></ul><ul><ul><li>Tienen una estructura idéntica, </li></ul></ul><ul><ul><li>Pero identidad propia </li></ul></ul>
  15. 15. Clase <ul><li>Clase --> TDA </li></ul><ul><ul><li>Tipo de Dato Abstracto </li></ul></ul><ul><li>Es la definicion de un nuevo tipo de dato </li></ul><ul><li>Un objeto es la variable de dicho tipo </li></ul><ul><li>Ejemplo: </li></ul><ul><ul><li>Clase: Perro </li></ul></ul><ul><ul><li>Objetos: Balto, Firulais, etc </li></ul></ul>
  16. 16. Ejemplo de Clase Objetos bicicletas Abstraídos en Clase Bicicleta Atributos Tamaño de frame Tamaño de llanta Material ... Métodos Cambio Mover Frenar...
  17. 17. 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
  18. 18. Estructura de una Clase
  19. 19. Instancia <ul><li>Una instancia es un objeto creado a partir de una clase. </li></ul><ul><li>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. </li></ul>
  20. 20. Instancia Quebrado b = new Quebrado (3, 19); Creación de instancias u objetos a partir de la clase Alumno: Quebrado q1 = new Quebrado (9,7); Quebrado a = new Quebrado (1,2); q1: Quebrado numerador = 9 denominador 7 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
  21. 21. Constructor <ul><li>Método especial </li></ul><ul><ul><li>Con el mismo nombre de la clase. </li></ul></ul><ul><li>Es llamado automáticamente </li></ul><ul><ul><li>Cuando un objeto de una clase es creado. </li></ul></ul><ul><li>Inicializa las variables del objeto. </li></ul><ul><li>Puede tomar argumentos </li></ul><ul><ul><li>Pero no pueden retornar un valor. </li></ul></ul><ul><li>Una clase puede tener mas de 1 constructor </li></ul>
  22. 22. Creando objetos: new y constructor <ul><li>new: operador para crear objetos de una clase </li></ul><ul><ul><li>Utiliza o llama al constructor de la clase </li></ul></ul><ul><li>Si no se define un constructor, </li></ul><ul><ul><li>La clase ofrece uno por defecto </li></ul></ul><ul><ul><li>El cual no recibe parametros y no hace nada </li></ul></ul><ul><li>Si se define </li></ul><ul><ul><li>El constructor por defecto se pierde </li></ul></ul>
  23. 23. Ejemplo de Constructor <ul><li>public class Quebrado </li></ul><ul><li>{ </li></ul><ul><li>private int numerador; </li></ul><ul><li>private int denominador; </li></ul><ul><li>public Quebrado(int n, int d) </li></ul><ul><li>{ numerador = n; </li></ul><ul><ul><li>denominador = d; </li></ul></ul><ul><li>} </li></ul><ul><li>public Quebrado() </li></ul><ul><li>{ numerador = 1; </li></ul><ul><ul><li>denominador = 0; </li></ul></ul><ul><li>} </li></ul><ul><li>//... </li></ul><ul><li>} ; </li></ul>
  24. 24. Encapsulamiento <ul><li>Consiste en separar </li></ul><ul><ul><li>Los aspectos externos de un objeto </li></ul></ul><ul><ul><li>De los detalles internos de implementación del mismo. </li></ul></ul><ul><li>Se protegen los datos(caracteristicas) de un objeto </li></ul><ul><li>Se exhibe solo el comportamiento del mismo </li></ul><ul><ul><li>Haciendo enfasis en lo que se puede hacer </li></ul></ul><ul><ul><li>No como se puede hacerlo </li></ul></ul>
  25. 25. EJEMPLO
  26. 26. Encapsulamiento: ¿Como implementarlo? <ul><li>En JAVA se usan modificadores de acceso </li></ul><ul><ul><li>Palabras claves antes de cada miembro de la clase </li></ul></ul><ul><ul><li>Private: Solo los miembros de la clase los pueden ver </li></ul></ul><ul><ul><li>Public: Todos los objetos los pueden ver </li></ul></ul><ul><ul><li>Protected: solo los objetos de las subclases los pueden ver </li></ul></ul><ul><li>Para acceder a los datos privados fuera de la clase </li></ul><ul><ul><li>Debe hacerse a través de métodos </li></ul></ul><ul><ul><li>Get y Set </li></ul></ul>
  27. 27. Ejemplo de Encapsulamiento <ul><li>public class Quebrado </li></ul><ul><li>{ </li></ul><ul><li>private int numerador, denominador; </li></ul><ul><li>public Quebrado(int n, int d) </li></ul><ul><li>{ numerador = n; </li></ul><ul><ul><li>denominador = d; </li></ul></ul><ul><li>} </li></ul><ul><li>public int getNumerador(){ </li></ul><ul><ul><li>return numerador; </li></ul></ul><ul><li>} </li></ul><ul><li>public void setNumerador(int n){ </li></ul><ul><ul><li>numerador = n; </li></ul></ul><ul><li>} </li></ul><ul><li>} ; </li></ul>
  28. 28. Overloading o Sobrecarga <ul><li>Permite definir varios métodos con el mismo nombre, </li></ul><ul><ul><li>Pero con diferentes parámetros (cantidad y/o tipo). </li></ul></ul><ul><li>Ejmplo: </li></ul><ul><ul><li>public void setFecha(int anio, int dia, int mes ); </li></ul></ul><ul><ul><li>public void setFecha(String strFecha); </li></ul></ul><ul><ul><li>public void setFecha(float segundos); </li></ul></ul>
  29. 29. Relaciones entre objetos <ul><li>Tiene: a un objeto “pertenecen” objetos de otras clases </li></ul><ul><ul><li>Ejemplo: Un computador tiene un teclado </li></ul></ul><ul><li>Conoce: un objeto conoce datos sobre objetos de otra clase </li></ul><ul><ul><li>Ejemplo: un estudiante conoce en que curso se registro </li></ul></ul><ul><li>Es un: un objeto comparte caracteristicas con otra clase </li></ul><ul><ul><li>Ejemplo: un estudiante es una persona </li></ul></ul>
  30. 30. ES UN: Herencia <ul><li>Es un mecanismo para compartir atributos y métodos entre clases. </li></ul><ul><li>Por la herencia se forman jerarquías de clases (superclases y subclases). </li></ul><ul><li>Las subclases heredan los atributos y métodos de las superclases. </li></ul><ul><li>Permite la reutilización de código. </li></ul>Superclase Subclase
  31. 31. Ejemplo
  32. 32. Herencia: Reusando el código ANTES DESPUES superclase subclases Auto maxFuel maxNroDePasajeros modelo velocidad acelerar() desacelerar() doblarAIzq() doblarADcha() Avion maxAltitud maxFuel maxNroDePasajeros velocidad nroDeMotores acelerar() desacelerar() descender() ascender() Vehiculo maxFuel maxNroDePasajeros velocidad acelerar() desacelerar() Avion maxAltitud nroDeMotores descender() ascender() Auto modelo doblarAIzq() doblarADcha()
  33. 33. Herencia: Creando Subclases public class Vehiculo { } public class Auto extends Vehiculo{ } public class Avion extends Vehiculo{ } Java UML Vehiculo Auto Avion
  34. 34. Tipos de Herencia <ul><li>Simple: </li></ul><ul><ul><li>Clase A herada de otra Clase B </li></ul></ul><ul><li>M ú ltiple: </li></ul><ul><ul><li>Clase A hereda de varias otras clases C, D, etc </li></ul></ul>
  35. 35. Herencia Multiple
  36. 36. Herencia Múltiple Problema de ambigüedad: unVehiculoAnfibio.Desplazarse(); Los lenguajes ofrecen mecanismos para deshacer la ambigüedad (en C++ => unVehiculoAnfibio.VehiculoTerrestre::Desplazarse()).
  37. 37. Tipos de Clases <ul><li>Clases abstractas </li></ul><ul><ul><li>Representan conceptos muy generales, </li></ul></ul><ul><ul><li>Describen la interfaz comun para el resto de subclaes </li></ul></ul><ul><ul><li>No pueden ser instanciadas </li></ul></ul><ul><ul><li>Pueden tener operaciones abstractas </li></ul></ul><ul><li>Clases concretas o comunes </li></ul><ul><ul><li>Representan conceptos especificos </li></ul></ul><ul><ul><li>Pueden ser instanciadas </li></ul></ul><ul><ul><li>Suelen implementar operaciones abstractas heredadas </li></ul></ul><ul><li>Clases finales </li></ul><ul><ul><li>Clases especiales que no pueden tener descendencia. </li></ul></ul><ul><ul><li>Permiten instanciar objetos. </li></ul></ul>
  38. 38. TIPOS DE CLASES: EJEMPLOS
  39. 39. Ejemplo de Clase Abstracta
  40. 40. Clases abstractas public abstract class Figura { ... } public class Circulo extends Figura{ ... } public class Rectangulo extends Figura{ ... } Figura f = new Figura(); Figura {Abstracto} Circulo Rectangulo
  41. 41. Polimorfismo <ul><li>El polimorfismo está muy ligado a la herencia. </li></ul><ul><li>Una misma operación </li></ul><ul><ul><li>Puede ser ejecutada en forma diferente </li></ul></ul><ul><ul><li>Por objetos de distintas clases </li></ul></ul><ul><li>Ejemplo: </li></ul><ul><ul><li>A una figura se le puede calcular el area </li></ul></ul><ul><ul><li>Un circulo es una figura </li></ul></ul><ul><ul><li>Un rectangulo es una figura </li></ul></ul><ul><ul><li>A ambos se les puede calcular el area pero </li></ul></ul><ul><ul><ul><li>Cada uno tiene una forma distinta de calcularlo </li></ul></ul></ul>
  42. 42. 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
  43. 43. 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
  44. 44. Redefinicion/Overriding <ul><li>En ocasiones, una clase hija necesita redefinir las implementaciones heredadas </li></ul><ul><li>Esto es debido a que </li></ul><ul><ul><li>La implementación de un método heredado </li></ul></ul><ul><ul><ul><li>No se aplica a la subclase </li></ul></ul></ul><ul><ul><ul><li>Ejemplo: Todos los items de una biblioteca se ingresan de una forma dada, menos las tesis </li></ul></ul></ul><ul><ul><li>O el método heredado </li></ul></ul><ul><ul><ul><li>No tiene aún implementacion </li></ul></ul></ul><ul><ul><ul><li>Ejemplo: </li></ul></ul></ul><ul><ul><ul><ul><li>calcArea de una Figura no se puede implementar </li></ul></ul></ul></ul><ul><ul><ul><ul><li>calcArea de un Cuadrado si </li></ul></ul></ul></ul>
  45. 45. Mensajes public class Factura { ... i.obtenerPrecio(); ... } public class Item { public obtenerPrecio(){ a.obtenerCosto(); this.calcularPrecio(); } private calcularPrecio(){ ... } }
  46. 46. <ul><li>Identificando objetos: JavaZoo </li></ul><ul><ul><li>Los animales de un zoologico se encuentran ubicados en jaulas. Los animales pertenecen a una especie dada, tienen color, tamaño y nombres. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>El celador cuida de los animales, los alimenta y limpia sus jaulas. </li></ul></ul><ul><li>Ejercicios: </li></ul><ul><ul><li>1. Implemente la clase Punto </li></ul></ul><ul><ul><li>2. Implemente las clases Figura, Rectangulo y Circulo </li></ul></ul>
  47. 47. Ventajas de la Programación Orientada a Objetos <ul><li>La reutilización de código: </li></ul><ul><ul><li>Esta ahorra tiempo en el desarrollo de programas. </li></ul></ul><ul><ul><li>Se utiliza software que ya ha sido probado. </li></ul></ul><ul><li>Fácil mantenimiento y depuración de programas. </li></ul><ul><li>Extensibilidad: posibilidad de ampliar la funcionalidad de la aplicación de manera sencilla. </li></ul><ul><li>Modularidad y encapsulaci ó n: el sistema se descompone en objetos con unas responsabilidades claramente especificadas. </li></ul>

×