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.

Slides:



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

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
POLIMORFISMO UNIDAD 4.
Herencia en C#.
Fundamentos de la programación orientada a objetos
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Arquitectura CLARO-TECNOTREE
Orientación a Objetos con Java SE
La Programación Orientado a Objetos
1.1 Concepto de Tipo de Datos Abstracto.
Conceptos más avanzados de Programación Orientada a Objetos Programación 2005 Licenciatura de Lingüística y Nuevas Tecnologías.
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Rosalía Laza Fidalgo Reyes Pavón Rial Curso
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.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Herencia e Interfaces.
Modificadores.
Introducción a Java II.
Lic. Rosemary Torrico Bascopé
Abstracción de los datos y Orientación a Objeto Clase 13.
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.
Tema 6: Clases Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Diseño de Sistemas. Patrones de Diseño. Geronimo Manso.
Jerarquía de Clases: Herencia, Composición y Polimorfismo
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Diplomado Desarrollo de Aplicaciones en Internet
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA DOS ORIENTACION A OBJETOS.
Módulo 7: Programación Orientada a Objetos en Visual Basic 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
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.
Interfaces ELO329: Diseño y Programación Orientados a Objetos.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Clases y Objetos en Java ELO329: 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
PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD
Interfaces y Clases Internas
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
CONCEPTOS.
HERENCIA.
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación CLASES DE JAVA Diciembre de 2008.
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
Clases “ Es una Abstracción de un elemento del mundo real ”
Herencias Conceptos básicos i
Tratamientos Secuenciales Generalizados II Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 19 Versión
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.
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.
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.
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.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
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.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
Unidad Didáctica 11 Reutilización Versión 1.0.0
Transcripción de la presentación:

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 1.0.0

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación Índice  1. Concepto de Tipo y Subtipo  2. Diseño e Implementación

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación Índice  1. Concepto de Tipo y Subtipo  1.1 Tipos y subtipos  1.2 Tipos definidos por el usuario  1.3 Subtipos por Herencia  1.4 Subtipos por Implementación  1.5 Grafo de tipos  2. Diseño e Implementación

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 1.1 Tipos y subtipos  Tipos:  Tipos definidos por el usuario:  Tipo asociado a interfaz y clase  Subtipado  Tipo Object  Grafo de diseño de tipo

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 1.1 Tipos y subtipos  Tipos:  Tipos primitivos o básicos  int, double, float, char…  Tipos de la API de Java  String, Integer…  Tipos definidos por el usuario  Ejemplos:  Punto, PuntoImpl, Persona, PersonaImpl  Cada tipo ofrece:  Los métodos que constituyen la parte pública  Las propiedades de ser clonados, comparados …

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 1.2 Tipo definido por el usuario  Tipo asociado:  A interfaz  A clase:  Parte pública de la clase, es decir, la parte pública vista desde fuera  Subtipos:  Interfaces y clases hijas  Clases que implementan a una interfaz B A BImpl AImpl CCImpl

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 1.3 Subtipos por Herencia  Clausula: extends  Sintaxis:  Semántica:  La interfaz o clase hija se lee como “es un/una” interfaz o clase padre  Ejemplo: Un pixel es un punto, un alumno es una persona, etc. public interface A extends B1, B2,…{…} public class CImpl extends DImpl{…}

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 1.3 Herencia  Herencia de interfaces (refinamiento)  Todos los métodos declarados en la interfaz padre son heredados por la interfaz hija  Restricciones:  Se permite la herencia múltiple PuntoMetricoPunto Pixel

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 1.3 Herencia  Herencia de clases  Todos los métodos y atributos de la clase padre son:  automáticamente heredados en la subclase  accesibles para el código de la misma clase  Restricciones:  Solo los métodos/atributos public y protected son accesibles para la clase hija  ¿protected solo es accesible desde clases hijas?  Solo se permite la herencia simple PixelImpl PuntoImpl AlumnoImpl PersonaImpl Object

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 1.4 Subtipos por Implementación  Clausula: implements  Sintaxis:  Semántica:  La clase AImpl proporciona el “cómo” es la interfaz A public class AImpl implements A {…} PuntoPuntoImpl

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 1.4 Implementación  Instanciación de tipo asociado a interfaz:  Instanciación de tipo asociado a clase:  Todos los tipos subtipan al tipo Object A obj = new AImpl(…); ClaseC obj = new ClaseC(…);

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 1.5 Grafo de tipos  Tipo ofrecido por un objeto (VISTAS DEL OBJETO):  Tipo de la clase según ha sido instanciado  Tipos superiores en la navegación del grafo de diseño de tipos  Posibilidades:  Conversión automática o implícita:  Se produce si un objeto de tipo A es subtipo de B  Ejemplo: parámetro de entrada en el método equals  Conversión explícita:  Mediante Casting

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 1.5 Grafo de tipos  Ejemplos de casting:  Analiza si es correcto este código: A obj1 = new EImpl(); E obj2; obj2 = (E) obj1; D obj3 = new Dimpl(); obj2 = (E) obj3; DImpl BImpl EImpl CImpl AImpl B D C E A

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 1.5 Grafo de tipos  Ejemplos de casting:  Analiza si es correcto este código: A obj1 = new EImpl(); E obj2; obj2 = (E) obj1; D obj3 = new Dimpl(); obj2 = (E) obj3; DImpl BImpl EImpl CImpl AImpl B D C E A

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación Índice  1. Subtipado  2. Diseño e Implementación  2.1 Definición del tipo  2.2 Relación con tipos existentes  2.3 Implementación como clase o interfaz y clase  2.4 Elección de atributos y métodos

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 2.1 Definición de un nuevo tipo  Definición de propiedades  Consultables / Modificables  Básicas / Calculadas  Describir las relaciones existentes entre las propiedades calculadas y las básicas  Individuales / Compartidas  Las propiedades compartidas son propiedades del tipo. Se definirán con la palabra static y solamente existirá una copia de ellas  Población de un tipo  Conjunto de los posibles individuos del tipo  Pueden existir propiedades compartidas por todos ellos

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 2.1 Definición de propiedades - Ejemplo  Tipo Alumno  Decidir de entre las siguientes propiedades individuales cuáles serán consultables, modificables, básicas o calculadas. Indicar asimismo el tipo de cada una de ellas  nombre, apellidos, dni, edad, fechaNacimiento, añoIngreso, cursoMasAlto, notas, notaMedia  Propiedades compartidas  edadMedia. Esta propiedad permitirá almacenar la edad media de todos los alumnos matriculados

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 2.1 Definición de propiedades - Ejemplo  Propiedades compartidas:  edadMedia María (Alumno) Gómez Lope S fechaNacimi notas (Fecha) (List) … Juan (Alumno) Lara Ruiz L fechaNacimi notas 2 6 (Fecha) (List) … Alfredo (Alumno) Martín Casas O fechaNacimi notas 14 9 (Fecha) 1991 (List) edadMedia

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 2.2 Relación con tipos existentes  Decidir si el nuevo tipo que estamos diseñando es un subtipo de otro ya existente  Relaciones tipo/subtipo  Entre clases (extends)  Entre interfaces (extends)  Entre clase e interfaz (implements)

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 2.2 Relación con tipos existentes  Pensar qué relaciones de subtipado podemos establecer para el nuevo tipo Alumno implements Alumno Comparable Copiable Persona PersonaImpl

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 2.3 Implementación del nuevo tipo  No siempre la implementación de un tipo se corresponde con la creación de una interfaz y una clase  Podemos elegir entre dos opciones de implementación:  Interfaz + clase (una o varias)  Organiza la programación  Permite establecer relaciones entre clases  Obliga a las clases que implementan la interfaz a utilizar los mismos métodos  La interfaz se llamará como el nombre del tipo y a las distintas clases las denominaremos además con los sufijos Impl1, Impl2, etc.  Solamente una clase  El nombre de la clase será el nombre del tipo

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 2.3 Implementación de Alumno  Interfaz Alumno y clase AlumnoImpl AlumnoImpl PersonaImpl Object Persona Alumno Comparable

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 2.4 Atributos y métodos  Atributos  Los nombres de los atributos coinciden con los de las propiedades básicas  Representación canónica: equivalencia entre objetos iguales  Ejemplo: Racional  Propiedades compartidas  Se implementan como atributos static  Inicialización. Solamente se inicializan una vez: cuando se crea el primer objeto  Se pueden inicializar en su declaración  O en los constructores teniendo en cuenta que no hayan sido ya creadas

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 2.4 Atributos y métodos  Constructores  Tienen el mismo nombre que la clase  Deben inicializar todos los atributos individuales  Se diferenciarán por el tipo y/o el número de parámetros de entrada  Constructor por defecto (sin parámetros)  El sistema solo lo crea si no se añade ningún otro constructor  Aún así es conveniente incluirlo explícitamente (si se va a usar)

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 2.4 Atributos y Constructores en AlumnoImpl public class AlumnoImpl extends PersonaImpl implements Alumno{ private Integer añoIngreso; private Integer cursoMasAlto; private List notas; private static Double sumaEdades = 0.0; private static Integer numAlumnos= 0; public AlumnoImpl() { super(); añoIngreso = 0; cursoMasAlto = 0; notas = new ArrayList (); numAlumnos ++; } //otros constructores … } public class AlumnoImpl extends PersonaImpl implements Alumno{ private Integer añoIngreso; private Integer cursoMasAlto; private List notas; private static Double sumaEdades = 0.0; private static Integer numAlumnos= 0; public AlumnoImpl() { super(); añoIngreso = 0; cursoMasAlto = 0; notas = new ArrayList (); numAlumnos ++; } //otros constructores … }

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 2.4 Atributos y métodos  Métodos  Propios del tipo  Consultores/Modificadores  get/set + nombre de la propiedad  Consultores/Modificadores de propiedades compartidas  Implementación como métodos static (solamente en la clase)  Acceso mediante el nombre de la clase  Implementación en la interfaz (si la hay) y en la clase (no son static)  Acceso mediante objetos  Auxiliares privados  Métodos de Object: equals,toString,hashCode  Métodos de supertipos: implementaciones y/o redefiniciones

UD10: Concepto de Tipo y Subtipo. Diseño e Implementación 2.4 Métodos en AlumnoImpl public class AlumnoImpl extends PersonaImpl implements Alumno{ … public Double getNotaMedia(){ return calculaMediaLista(notas); } //método privado auxiliar private static Double calculaMediaLista(List l){ … } //método consultor de una propiedad compartida public static Double getEdadMediaAlumnos(){ return sumaEdades/numAlumnos; } … } public class AlumnoImpl extends PersonaImpl implements Alumno{ … public Double getNotaMedia(){ return calculaMediaLista(notas); } //método privado auxiliar private static Double calculaMediaLista(List l){ … } //método consultor de una propiedad compartida public static Double getEdadMediaAlumnos(){ return sumaEdades/numAlumnos; } … }