Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porMonica Velázquez Pérez Modificado hace 8 años
1
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
2
UD10: Concepto de Tipo y Subtipo. Diseño e Implementación Índice 1. Concepto de Tipo y Subtipo 2. Diseño e Implementación
3
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
4
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
5
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 …
6
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
7
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{…}
8
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
9
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
10
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
11
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(…);
12
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
13
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
14
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
15
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
16
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
17
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
18
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 77456321S fechaNacimi 2009 2 notas 23 12 (Fecha) 1990 7.3 5.0 (List) … Juan (Alumno) Lara Ruiz 26598551L fechaNacimi 2007 4 notas 2 6 (Fecha) 1985 5.1 5.4 (List) … Alfredo (Alumno) Martín Casas 24771256O fechaNacimi 2010 1 notas 14 9 (Fecha) 1991 (List) edadMedia 21.3333
19
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)
20
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
21
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
22
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
23
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
24
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)
25
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 … }
26
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
27
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; } … }
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.