Unidad Didctica 10 Concepto de Tipo y Subtipo
Unidad Didáctica 10 Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1. 0. 0
Índice � 1. Concepto de Tipo y Subtipo � 2. Diseño e Implementación UD 10: 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 UD 10: 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 � Grafo Object de diseño de tipo UD 10: Concepto de Tipo y Subtipo. Diseño e Implementación
1. 1 Tipos y subtipos � Tipos: � Tipos � int, primitivos o básicos double, float, char… � Tipos de la API de Java � String, � Tipos Integer… definidos por el usuario � Ejemplos: Punto, Punto. Impl, Persona. Impl � Cada tipo ofrece: Los métodos que constituyen la parte pública Las propiedades de ser clonados, comparados … UD 10: 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 A AImpl C B BImpl UD 10: Concepto de Tipo y Subtipo. Diseño e Implementación CImpl
1. 3 Subtipos por Herencia � Clausula: extends � Sintaxis: public interface A extends B 1, B 2, …{…} public class CImpl extends DImpl{…} � 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. UD 10: 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 Punto. Metrico Pixel UD 10: Concepto de Tipo y Subtipo. Diseño e Implementación
1. 3 Herencia � Todos de clases 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 Object � ¿protected solo es accesible desde clases hijas? � Solo se permite la herencia simple Punto. Impl Persona. Impl Pixel. Impl Alumno. Impl UD 10: Concepto de Tipo y Subtipo. Diseño e Implementación
1. 4 Subtipos por Implementación � Clausula: implements � Sintaxis: public class AImpl implements A {…} � Semántica: � La clase AImpl proporciona el “cómo” es la interfaz A Punto. Impl UD 10: Concepto de Tipo y Subtipo. Diseño e Implementación
1. 4 Implementación � Instanciación de tipo asociado a interfaz: A obj = new AImpl(…); � Instanciación de tipo asociado a clase: Clase. C obj = new Clase. C(…); � Todos los tipos subtipan al tipo Object UD 10: 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 � Mediante explícita: Casting UD 10: Concepto de Tipo y Subtipo. Diseño e Implementación
1. 5 Grafo de tipos � Ejemplos � Analiza de casting: si es correcto este código: A obj 1 = new EImpl(); E obj 2; obj 2 = (E) obj 1; A D obj 3 = new Dimpl(); obj 2 = (E) obj 3; AImpl B BImpl C D DImpl E UD 10: Concepto de Tipo y Subtipo. Diseño e Implementación
1. 5 Grafo de tipos � Ejemplos � Analiza de casting: si es correcto este código: A obj 1 = new EImpl(); E obj 2; obj 2 = (E) obj 1; A D obj 3 = new Dimpl(); obj 2 = (E) obj 3; AImpl B BImpl C D DImpl E UD 10: 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 UD 10: Concepto de Tipo y Subtipo. Diseño e Implementación
2. 1 Definición de un nuevo tipo � Población de un tipo � Conjunto de los posibles individuos del tipo � Pueden existir propiedades compartidas por todos ellos � 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 UD 10: 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, fecha. Nacimiento, año. Ingreso, curso. Mas. Alto, notas, nota. Media � Propiedades compartidas � edad. Media. Esta propiedad permitirá almacenar la edad media de todos los alumnos matriculados UD 10: Concepto de Tipo y Subtipo. Diseño e Implementación
2. 1 Definición de propiedades - Ejemplo � Propiedades compartidas: � edad. Media (Fecha) 23 12 1990 (List) 7. 3 5. 0 … (Alumno) María Gómez Lope 77456321 S fecha. Nacim i 2009 2 notas (Alumno) Juan (Fecha) 2 6 1985 Lara Ruiz 26598551 L fecha. Nacim i 2007 (List) 5. 1 5. 4 … 4 notas edad. Media 21. 333 3 (Fecha) 14 9 1991 (List) (Alumno) Alfredo Martín Casas 24771256 O fecha. Nacim i 2010 1 notas UD 10: 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) UD 10: 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 Persona Copiable<Alumno> implements Comparable<Alumno> Persona. Impl Alumno UD 10: 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 Impl 1, Impl 2, etc. � Solamente una clase UD 10: Concepto de Tipo y Subtipo. Diseño e Implementación El nombre de la clase será el nombre del tipo
2. 3 Implementación de Alumno � Interfaz Alumno y clase Alumno. Impl Comparable<Persona> Object Persona. Impl Alumno. Impl UD 10: 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 UD 10: 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) UD 10: Concepto de Tipo y Subtipo. Diseño e Implementación
2. 4 Atributos y Constructores en Alumno. Impl public class Alumno. Impl extends Persona. Impl implements Alumno{ private Integer año. Ingreso; private Integer curso. Mas. Alto; private List<Double> notas; private static Double suma. Edades = 0. 0; private static Integer num. Alumnos= 0; public Alumno. Impl() { super(); año. Ingreso = 0; curso. Mas. Alto = 0; notas = new Array. List<Double>(); num. Alumnos ++; } //otros constructores … } UD 10: 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 Implementación como métodos static (solamente en la clase) de propiedades compartidas 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, to. String, hash. Code � Métodos de supertipos: implementaciones y/o redefiniciones UD 10: Concepto de Tipo y Subtipo. Diseño e Implementación
2. 4 Métodos en Alumno. Impl public class Alumno. Impl extends Persona. Impl implements Alumno{ … public Double get. Nota. Media(){ return calcula. Media. Lista(notas); } //método privado auxiliar private static Double calcula. Media. Lista(List<Double> l){ … } //método consultor de una propiedad compartida public static Double get. Edad. Media. Alumnos(){ return suma. Edades/num. Alumnos; } … } UD 10: Concepto de Tipo y Subtipo. Diseño e Implementación
- Slides: 27