Unidad Didáctica 11 Reutilización Versión 1.0.0

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Lenguaje de programación Java
HERENCIA.
Herencia e Interfaces.
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
Jerarquía de Clases: Herencia, Composición y Polimorfismo
Informática II Interfaces zLas interfaces declaran un tipo que se componen sólo de métodos abstractos y constantes. zLa definición de una clase hace pensar.
Herramientas de polimorfismo y herencia en C++
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2008.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
PATRÓN ADAPTER (Adaptador) Elena Moreno Ramírez Laura Sánchez Romero Aroa Solana Ruiz.
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.
Detalles Generales sobre Java
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
HERENCIA.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
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.
Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento.
Diagrama de Clases SPI 2016.
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Nombre José Francisco Luna Jurado Matricula Asignatura
Herencia Multiple en Java
Clases y Objetos en Java
Taller de Java Universidad de los Andes
Ingeniería Directa. Generar código a través de modelos se le conoce como ingeniería directa.
Programación Avanzada
Diseño y Programación Orientada a Objetos
Herencia y Clases Abstractas
Diseño y Programación Orientada a Objetos
Herencia Implementación en Java.
Figura Rectangulo Elipse Cuadrado Circulo area (): double
Fundamentos de la programación orientada a objetos
REUTILIZACION DE CODIGO
Colecciones Carlos Fontela, 2008.
ELO329: Diseño y Programación Orientados a Objetos
Medio de tele-comunicación
Clases y Objetos en Java
Programación orientada a objetos
Diseño y Programación Orientada a Objetos
Sonia Rueda Herencia y Polimorfismo
Clases y Objetos en Java
Programación Orientada a Objetos I Unidad 4 Relaciones entre clases: herencia.
Herencia Agustín J. González ELO329.
Herencia en C#.
Desarrollo de Software
HERENCIA.
ELO329: Diseño y Programación Orientados a Objetos
Ingeniero en Computación José Alfredo Cobián Campos
Fundamentos básicos del lenguaje C#. Parte 1 Introducción a C#
Programación Orientada a Objetos
Programación orientada a objetos en Visual Basic .NET
Herencia en C++ Agustín J. González ELO329.
Diagrama de Clases Un diagrama de clases esta compuesto por los siguientes elementos: Clase: atributos, métodos y visibilidad. Relaciones: Herencia, Composición,
Clases en Java 1 Métodos de Programación II Profesor: M.C. Alfonso Miguel Uriarte Gálvez.
Herencia en C++ Agustín J. González ELO329.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
ELO329: Diseño y Programación Orientados a Objetos
Tema 5 H erencia. La herencia es una forma de reutilización de software en la que las clases se crean incorporando los datos (atributos) y el comportamiento.
Herencia Agustín J. González ELO329.
Herencia en C++ Agustín J. González ELO329.
Clases abstractas e interfaces
Clases y Objetos en Java
Transcripción de la presentación:

Unidad Didáctica 11 Reutilización Versión 1.0.0 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.0

Índice I. Reutilización I.1 Reutilización de código I.2 Herencia I.3 Composición

1.1 Reutilización de Código - Mecanismos Herencia de clases Implementamos una clase B heredando de otra clase A. Un objeto de tipo B será un objeto de tipo A Ejemplo: un píxel es un punto Composición Implementamos una clase B utilizando otra clase A como uno de sus atributos privados. Un objeto de tipo B contendrá a un objeto de tipo A Ejemplo: un círculo tiene un punto (centro) Algún método del tipo B delega su funcionalidad en un método del tipo A, invocado a través del objeto de tipo A (atributo)

1.2 Herencia Permite establecer relaciones tipo-subtipo Se representa en Java mediante la cláusula extends Herencia de Interfaces o Refinamiento de tipos Todos los métodos declarados en la interfaz padre son heredados por la interfaz hija Se permite la herencia múltiple de interfaces Herencia de Clases o Reutilización de código Todos los métodos y atributos de la clase padre son automáticamente heredados en la subclase Solamente se permite la herencia simple de clases

1.2 Herencia de Clases Si la clase B hereda de la clase A, solamente serán accesibles en la clase B aquellos atributos y métodos con visibilidad protected o public en la clase A public class A { public String atr1; protected Integer atr2; private Boolean atr3; public void metodo1(){…} private void metodo2(){…} protected void metodo3(){…} } public class B extends A{ private String atr4; public void metodo4(); } Atributos accesibles en la clase B: atr1, atr2 y atr4 Métodos accesibles en la clase B: metodo1(), metodo3() y metodo4()

1.2 Herencia de Clases Acceso a atributos y métodos de la superclase: super Invocación a constructores de la superclase: Se invocan con la palabra super y los parámetros reales correspondientes entre paréntesis Se invocan en los constructores de la clase hija y deberá hacerse siempre en la primera línea. Posteriormente se realizará la inicialización de los atributos propios public class A { public String atr1; protected Integer atr2; private Boolean atr3; public A(String a1, Integer a2, Boolean a3){…} … } public class B extends A{ private String atr4; public B(String a1, Integer a2, Boolean a3, String a4){ super(a1,a2,a3); atr4=a4; } …

1.2 Herencia de Clases Acceso a atributos e invocación a métodos de la superclase Acceso a atributos: con la palabra super seguida de un punto y el nombre del atributo Invocación a métodos: con la palabra super seguida de un punto, el nombre del método y los parámetros reales entre paréntesis Redefinición de métodos Cuando la definición de un método de la superclase no es la adecuada en la subclase Los métodos redefinidos poseen el mismo nombre, número y tipo de parámetros que un método de la clase padre Es común utilizar en la redefinición una llamada al método de la clase padre

1.2 Herencia - Ejemplo public interface Persona { String getNombre(); String getApellidos(); } public class EmpleadoImpl extends PersonaImpl implements Empleado{ private Integer añosDeServicio; private String departamento; public EmpleadoImpl(String nombre, String apellidos, Integer años, String dep){ super(nombre,apellidos); añosDeServicio=años; departamento=dep; } public Integer getAñosDeServicio(){ return añosDeServicio; public String getDepartamento(){ return departamento; public String toString(){ return super.toString() + “ ” +getAñosDeServicio() + “ ” + getDepartamento(); public class PersonaImpl implements Persona{ … public PersonaImpl(String nombre, String apellidos){ } public String toString(){ return getNombre()+ “ ” +getApellidos(); public interface Empleado extends Persona{ Integer getAñosDeServicio(); String getDepartamento(); }

1.2 Herencia – La clase Object En Java todas las clases heredan de la clase Object, aunque no se diga explícitamente con extends Todos los objetos en Java serán de tipo Object La clase Object contiene algunos métodos básicos, que podrán ser redefinidos por las clases hijas Object PixelImpl PuntoImpl CirculoImpl

1.3 Composición Implementación de una clase a partir de la funcionalidad ofrecida por otras Se declaran tantos atributos como clases a componer y se delegan los métodos a implementar de la nueva clase en alguno de los objetos declarados Es una buena costumbre usar la composición en lugar de la herencia si no es necesario hacer conversiones hacia arriba La composición se utiliza si se necesita un subconjunto de la parte pública de un tipo (delegación)

1.3 Composición – Ejemplo public interfaz Punto { Double getX(); Double getY(); } public class CirculoImpl implements Circulo{ private Punto centro; private Double radio; public CirculoImpl(Double xc, Double yc,Double r){ centro=new PuntoImpl(xc,yc); radio=r; } public Double getCentroX(){ return centro.getX(); public Double getCentroY(){ return centro.getY(); … public String toString(){ return “Centro:”+centro.toString() +”; Radio: “+radio; public class PuntoImpl implements Punto{ … public PuntoImpl(Double x,Double y){ } public String toString(){ return “(“+getX()+”,”+getY()+”)”; public interfaz Circulo { Double getCentroX(); Double getCentroY(); Double getRadio(); … }