La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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.

Presentaciones similares


Presentación del tema: "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."— Transcripción de la presentación:

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; } … }


Descargar ppt "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."

Presentaciones similares


Anuncios Google