Programación Orientada a Objetos

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Continuación Poo Profesor:
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
POLIMORFISMO UNIDAD 4.
Herencia en C#.
Lenguaje de programación Java
Arquitectura CLARO-TECNOTREE
Introducción Abdelahad, Corina Natalia Abdelahad, Yanina Zoraida
Lección 1 Introducción a la POO
Herencia y Polimorfismo
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
PROGRAMACION ORIENTADA A OBJETOS
Programación Orientada a Objetos en Java
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
HERENCIA.
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos UML: Lenguaje de Modelamiento Unificado Toma de Requerimientos.
Herencia e Interfaces.
Medio de tele-comunicación
Modificadores.
Herencia y Polimorfismo en JAVA
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Introducción a Java II.
Lic. Rosemary Torrico Bascopé
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Clase Teórica No. 4 Programación IV
Jerarquía de Clases: Herencia, Composición y Polimorfismo
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Diplomado Desarrollo de Aplicaciones en Internet
Programación Orientada a Objetos
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA DOS ORIENTACION A OBJETOS.
Programación Orientada Objetos
Programación avanzada en Java Miguel Ángel Corella 23 de Septiembre de 2005.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2008.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Programanción I Ing. Cristhian Garita Fonseca
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Informatica II1 Clases Extendidas La clase extendida hereda los campos y métodos de la clase que ha sido extendida. La clase original se conoce como superclase.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Detalles Generales sobre Java
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Herencia y Clases Abstractas
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
CONCEPTOS.
Conceptos. -Programación orientada a eventos. -Instancias de clase. -Atributo de los objetos. -Método main, get y set. -Ejemplo de la declaración de.
HERENCIA.
Prof. Víctor Aquino Urrutia
LENGUAJE DE PROGRAMACIÓN
Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera.
Clases “ Es una Abstracción de un elemento del mundo real ”
TALLER POO JAVA ERNESTO GOMEZ VARGAS. OBJETIVOS REALIZAR UNA APLICACIÓN SENCILLA DE P.O.O FAMILIARIZARSE CON LA HERRAMETA NETBEANS APLICAR EL CONCEPTO.
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
RELACIONES ENTRE CLASES M.C. YOLANDA MOYAO MARTINEZ.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
Crear Aplicación Cliente para Conectarse a una Base de Datos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Programación Orientada a Objetos Temario Herencia Concepto Tipo de Herencia Herencia en java simple Sintaxis Sobre escritura de métodos Constructores con herencia y uso de super Jerarquía de llamada en constructores

He aquí ejemplos prácticos de HERENCIA Introducción Cuando unos padres tienen un hijo, ese hijo HEREDARA muchos de los atributos que tenían sus padres. Cuando un abuelo fallece, todos sus hijos y nietos HEREDAN sus riquezas. Uno como chileno, HEREDA muchos derechos, deberes y beneficios por el simple hecho de ser chilenos. He aquí ejemplos prácticos de HERENCIA

Herencia Concepto La idea de la herencia es permitir la creación de  nuevas clases basadas en clases existentes. Cuando heredamos de una clase existente, reusamos  (o heredamos) métodos y campos, y agregamos nuevos campos y métodos para cumplir con la situación nueva. Cada vez que encontremos la relación "es-un" entre dos clases, estamos ante la presencia de herencia. La clase ya existente es llamada superclass, o clase base, o clase padre. La clase nueva es llamada subclase, clase derivada, o clase hija. A través de la herencia podemos agregar nuevos campos, y podemos agregar o sobre montar métodos (override).

Tipos de Herencia: Herencia - Principalmente existen dos tipos de herencia. Herencia simple: una clase solo puede tener un padre, por lo tanto la estructura de clases será en forma de árbol. Herencia múltiple: Una clase puede tener uno o varios padres. La estructura de clases es un grafo

Tipos de Herencia: Herencia Herencia simple: Muy fácil de entender y manejar tanto por el lenguaje como por el programador. Limitada puesto que en el mundo real un objeto puede pertenecer a varias clases y sin embargo aquí esta situación no se puede modelar.

Tipos de Herencia: Herencia Herencia múltiple: Es mas realista y da al programador más libertad y mas posibilidades de reutilización de código. Es mucho más difícil de utilizar por la posibilidad de ciclos y para los lenguajes de programación es muy costoso el permitirlo.

Herencia en Java Simple En la creación de Java se estableció que la forma de abordar la herencia sería la simple, en donde las facilidades de Herencia multiple serían implementadas en parte por otras estructuras como Interface. Características Estructura jerárquica en árbol en donde en la raiz podemos encontrar la clase Object, de las que heredan todas las clases. Todas las clases tienen un padre Todos los objetos son “Object” Java no permite que una subclase elimine un método o una variable de instancia aunque esta no la necesite

Sintaxis Herencia Uso de extends Uso de super La palabra reservada extends ser refiere que «hereda de» Uso de super La palabra reservada super se refiera a los atributos, constructores y metodos de la clase padre. Public class ClaseHija extends ClasePadre { }

Ejercicio Resuelto Herencia Crear un objeto de la clase alumno en donde: la clase Persona tiene los atributos rut,nombre,edad y luego la clase alumno herede de persona y agregue los atributos carrera y escuela. Crear Clase Persona. Crear Clase Alumno y agregar la clausula extends Persona. Crear un Objeto Alumno y agregar todos los atributos que posee.

Herencia public int getRut() { return rut; } public void setRut(int rut) { this.rut = rut; public String getNombre() { return nombre; public void setNombre(String nombre) { this.nombre = nombre; public int getEdad() { return edad; public void setEdad(int edad) { this.edad = edad; Crear Clase Persona package herencia01; public class Persona { // Atributos private int rut; private String nombre; private int edad; // Constructores public Persona() { } public Persona(int rut, String nombre, int edad) this.rut = rut; this.nombre = nombre; this.edad = edad;

Herencia public Alumno(String carrera, String escuela) { this.carrera = carrera; this.escuela = escuela; } public Alumno(int rut, String nombre, int edad, String carrera, String escuela) super.setRut(rut); super.setNombre(nombre); super.setEdad(edad); public String getCarrera() return carrera; Crear Clase Alumno y agregar la clausula extends Persona package herencia01; public class Alumno extends Persona { // Atributos private String carrera; private String escuela; // Constructores public Alumno() } public void setCarrera(String carrera) { this.carrera = carrera; } public String getEscuela() return escuela; public void setEscuela(String escuela) this.escuela = escuela;

Herencia Crear un Objeto Alumno y agregar todos los atributos que posee. package herencia01; public class Main { public static void main(String[] args) Alumno al = new Alumno(); al.setRut(1); al.setNombre("Federico"); al.setEdad(20); al.setCarrera("Ingeniería Informática"); al.setEscuela("Informática y Telecomunicaciones"); }

Ejercicio Resuelto Herencia Conclusiones Al heredar de Persona alumno adquiere los atributos de tener rut, nombre y edad Este principio facilita la reutilización de código considerablemente para alumno. La palabra reservada super sirve para cambiar los atributos del padre a traves de los metodos públicos get y set.

Ejercicio Resuelto Herencia Crear una aplicación que permita calcular el área y perímetro de un cuadrado, rectángulo y circulo utilizando herencia. Crear la clase Figuras que represente la agrupación de las formulas de cálculos de AREA y PERIMETRO de todas las figuras (cuadrado, rectángulo y circulo) . Crea la clase Circulo en donde: Herede las formulas de FIGURAS tenga el atributo RADIO, y use los métodos que calculen el area y el perimetro que vienen de la clase padre (Figuras). Crea la clase Rectángulo en donde: Crea la clase Cuadrado en donde: Cree la clase Main en donde use la clase Circulo, Rectangulo y Cuadrado, y muestre un informe final de todas las Areas Y Perimetros de todas las figuras

Herencia package javaapplication16; package javaapplication16; public class Circulo extends Figuras { private int radio; public Circulo() this.radio = 0; } public void setRadio(int radio) { this.radio = radio; public double calcularArea() double resultado = 0; resultado = super.calcularAreaCirculo(this.radio); return resultado; public double calcularPerimetro() { resultado = super.calcularPerimetroCirculo(this.radio); package javaapplication16; public class Cuadrado extends Figuras { private int lado; Cuadrado() } public void setLado(int lado) { this.lado = lado; public double calcularArea() double resultado = 0; resultado = super.calcularAreaCuadrado(lado); return resultado; public double calcularPerimetro() { resultado = super.calcularPerimetroCuadrado(this.lado);

Herencia package javaapplication16; public class Rectangulo extends Figuras { private int ladoA; private int ladoB; public Rectangulo() this.ladoA = 0; this.ladoB = 0; } public void setLadoA(int ladoA) { this.ladoA = ladoA; public void setLadoB(int ladoB) { this.ladoB = ladoB; public double calcularArea() { double resultado = 0; resultado = super.calcularAreaRectangulo(this.ladoA, this.ladoB); return resultado; public double calcularPerimetro() { resultado = super.calcularPerimetroRectangulo(this.ladoA, this.ladoB);

package javaapplication16; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) JOptionPane.showMessageDialog(null,"Bienvenido a aplicacion FIGURAS"); int numero1, numero2; numero1 = numero2 = 0; Circulo cir = new Circulo(); Rectangulo rec = new Rectangulo(); Cuadrado cua = new Cuadrado(); String tmp; // Variable Temporal tmp = JOptionPane.showInputDialog("Ingrese lado del cuadrado"); numero1 = Integer.parseInt(tmp); cua.setLado(numero1); tmp = JOptionPane.showInputDialog("Ingrese 1er lado del Rectangulo"); rec.setLadoA(numero1); tmp = JOptionPane.showInputDialog("Ingrese 2do lado del Rectangulo"); numero2 = Integer.parseInt(tmp); rec.setLadoB(numero2); tmp = JOptionPane.showInputDialog("Ingrese Radio del CIRCULO"); cir.setRadio(numero1); String mensaje_final = ""; mensaje_final = mensaje_final + "\n [Cuadrado] \n Perimetro: "+ cua.calcularPerimetro() +" \n Area: "+cua.calcularArea(); mensaje_final = mensaje_final + "\n [Rectangulo] \n Perimetro: "+ rec.calcularPerimetro() +" \n Area: "+rec.calcularArea(); mensaje_final = mensaje_final + "\n [Circulo] \n Perimetro: "+ cir.calcularPerimetro() +" \n Area: "+cir.calcularArea(); JOptionPane.showMessageDialog(null," -- Informe Final -- \n" + mensaje_final); }

Sobre-escritura de métodos: ¿Qué pasa si al heredar un método de una clase padre no cumple con lo que yo quiero hacer en la clase? ¿Puedo personalizar métodos que ya han sido heredados? SI Es aquí donde usamos el comando @Override (del ingles ‘Anular’ o ‘No hacer caso de’) que hace que ignore el método heredado, y cree uno totalmente nuevo(sobre-escritura) OJO: @Override no sobre-escribe el método en la clase padre, sino solo en la clase donde ha sido heredada(hijo)

Sobre-escritura de métodos Ejercicios Resueltos: Crea la clase ‘Calculadora’ en donde tenga solo un atributo (numero1) con su respectivo accesador y mutador. Tambien crear el metodo ‘sumar()’ en cual simplemente sume al atributo +1. Crea la clase ‘Maquina’ el cual herede los componentes de ‘Calculadora’, pero sobre-escriba el método sumar() para que este sume le sume +10 al atributo de calculadora. En la clase ‘Main’ has que un usuario ingrese un numero, y llama los metodos ‘sumar()’ de Calculadora y Maquina POR SEPARADO. Muestre los resultados.

Sobre-escritura de métodos package sobreescritura_metodos1; public class Calculadora { private int numero1; public Calculadora() } public int getNumero1() return numero1; public void setNumero1(int numero1) this.numero1 = numero1; public void sumar() this.numero1 = this.numero1 + 1; Sobre-escritura de métodos package sobreescritura_metodos1; public class Maquina extends Calculadora { @Override public void sumar() // Metodo NUEVO super.setNumero1( super.getNumero1() + 10 ); }

Sobre-escritura de métodos package sobreescritura_metodos1; import java.util.Scanner; public class Main { public static void main(String[] args) Scanner teclado = new Scanner(System.in); Calculadora c = new Calculadora(); Maquina m = new Maquina(); System.out.println("Ingrese numero"); int n = teclado.nextInt(); c.setNumero1(n); m.setNumero1(n); // sumar de CALCULADORA (+1) c.sumar(); System.out.println("Metodo sumar (Calculadora) -> "+c.getNumero1()); // sumar de MAQUINA (+10) m.sumar(); System.out.println("Metodo sumar (Maquina) -> "+m.getNumero1()); } Sobre-escritura de métodos Archivo ->

Jerarquía de llamada en constructores: Si tu quiere llegar a hacer un tramite en la comuna de ‘Estación Central’, primero deberías haber llegado a la ‘Región Metropolitana’. Pero antes de llegar a esta región, deberías haber llegado a ‘Chile’. Pero antes de llegar a este país, deberías haber llegado a ‘América del sur’ ……. [Aquí se aplica la ‘Jerarquía de llamada en constructores’ para solucionar esta situacion].

[super.] Jerarquía de llamada en constructores Orden de llamada Mi Abuelo [super.] Orden de llamada Mi Padre YO Orden de ejecución de constructores Mi Hijo

Código Pantalla Jerarquía de llamada en constructores Orden de llamada Mi Abuelo Mi Padre YO Mi Hijo Public class MiAbuelo { MiAbuelo() System.out.println( “Aquí esta Mi Abuelo !!”); } Public class MiPadre extend MiAbuelo { MiPadre() System.out.println( “Aquí esta mi padre ”); } Public class yo extend MiPadre { Yo() System.out.println( “Aquí estoy YO ”); } Public class MiHijo extend Yo { MiHijo() System.out.println( “Aquí esta mi Hijo ”); } Código Pantalla public static void main(String[] args) { Yo x = new Yo(); } Aquí esta Mi Abuelo !! Aquí esta mi padre Aquí estoy YO Orden de ejecución de constructores

Ejercicios Resueltos: Jerarquía de llamada en constructores Ejercicios Resueltos: Analiza esta código: public class Uno{ Uno(){ System.out.println("UNO”); } public class Dos extends Uno{ Dos(){ System.out.println("DOS”); } public class Tres extends Dos{ Tres(){ System.out.println("TRES”); } public class Ejemplo{ public static void main(String[] args) { Tres hola = new Tres(); } ¿¿ Que es lo que saldrá en la pantalla al ejecutar ‘Ejemplo’??

Jerarquía de llamada en constructores Ejercicios Resueltos: A) Tres D) Tres Dos Uno B) Uno C) Uno Dos Tres E) ‘Error de compilación’

Jerarquía de llamada en constructores Ejercicios Resueltos: Respuesta: Es cierto que la primera clase que se llama es ‘Tres’, pero antes de hacer lo que esta dentro del constructor, se heredan las clases padres … y después de heredar todos sus componentes, empieza a ejecutarse la clase [en el dibujo, se empieza en el punto 3] C) Uno Dos Tres 1 2 public class Uno{ Uno(){ System.out.println("UNO”); } } public class Dos extends Uno{ Dos(){ System.out.println("DOS”); } } public class Tres extends Dos{ Tres(){ System.out.println("TRES”); } } 3 4 5

Sobre-escritura de métodos Ejercicios Propuestos: Crea el proyecto ‘empresa’, en donde tenga las siguientes clases: Crea la clase ‘Gerente’, en donde tenga 2 atributos, que son ‘Riquezas’(int) [cantidad de dinero que maneja la empresa] y ‘sueldoG’ (int) [sueldo del gerente (60% de las riquezas)]. Crea el método ‘calcularSueldo()’ donde calcule el sueldo del gerente dependiendo las riquezas que administra el gerente. Crea la clase ‘Supervisor’, en donde herede las características de ‘Gerente’, y tenga un atributo llamado ‘sueldoS’ (int) [sueldo del supervisor (30% de las riquezas)]. Reemplaza el método ‘calcularSueldo()’ para que calcule el sueldo del supervisor, dependiendo las riquezas que administra el gerente. Crea la clase ‘Empleado’, en donde herede las características de ‘Supervisor’, y tenga un atributo llamado ‘sueldoE’ (int) [sueldo del Empleado (10% de las riquezas)]. Reemplaza el método ‘calcularSueldo()’ para que calcule el sueldo del empleado, dependiendo las riquezas que administra el gerente. En la clase ‘Main’, Has un objeto de ‘Empleado’, y con ella asigna las riquezas que tiene la empresa. Muestra los sueldos del Gerente, Supervisor y del Empleado.