PROGRAMACIÓN EN JAVA

Documentos relacionados
Derechos de Acceso: COMPOSICION

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Diseño Basado en Componentes. Curso 2008 / 09

PROGRAMACION ORIENTADA A OBJETOS EN C++

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas

Tema 7: Polimorfismo. Índice

Curso Fundamentos de Informática Lección 7. Programación Orientada a Objetos

La sintaxis básica para definir una clase es la que a continuación se muestra:

Tema: Introducción al IDE de Microsoft Visual C#.

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Por ejemplo, considerando la jerarquía de herencia de Figuras Geométricas de la siguiente figura, es posible hacer uso del concepto de polimorfismo.

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Relación entre clases. Ejemplo de Clase: Punto !

Bloque práctico 2: Java

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

Polimorfismo. Métodos virtuales

Normalmente, los programas son ejecutados de forma secuencial. Único flujo de control

Tema 7.- Fundamentos de la Programación Orientada a Objetos

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

Programación Orientada a Objetos (POO)

Aplicaciones de Escritorio

Tema 9: Paquetes. Índice

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

5. Sentencias selectivas o condicionales

La Herencia: Teoría (1)

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Taller de Programación I. Tema 06: Orientación al Objeto en Java (parte 2)

Escuela Politécnica Superior de Elche

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

Curso de Java POO: Programación orientada a objetos

EXAMEN PROGRAMACIÓN 21 de Septiembre de 2007 INGENIERÍA INFORMÁTICA Primera parte: Cuestiones 1,5 horas

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote METODOS CONSTRUCTORES Y LA REFERENCIA THIS

Tema: Clases y Objetos en C#. Parte II.

Conversión entre Tipos

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Programación orientada a objetos. Resumen de Temas Unidad 6: Polimorfismo y reutilización

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro

Elabore el diagrama de clases en UML y la codificación de un programa para resolver los siguientes problemas:

Guía práctica de estudio 04: Clases y objetos

b) Qué tipo de variable son las de la línea 6? Cuál es su visibilidad? Explique su

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

MASTER EN MODELIZACIÓN MATEMÁTICA, ESTADÍSTICA Y COMPUTACIÓN Curso: Bases de datos y programación orientada a objetos Parte POO.

Java en 2 horas. Rodrigo Santamaría

Conceptos más avanzados de Programación Orientada a Objetos

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

15. Parámetros o argumentos

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

PATRONES DE DISEÑO DE CREACIÓN. Abstract Factory Builder Factory Method Prototype

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

Ficheros y streams. Desde el punto de vista de Java, cada fichero no es más que una secuencia o flujo de bytes [stream].

Guía - Taller # 2 (JAVA)

4.1 - OBJETOS Y CLASES

Clase adicional 2. Estructuras básicas de control. Temas

20483 Programación en C#

Principios de Computadoras II

Guía del Curso Certificación It en Microsoft Excel VBA para Excel: Macros and Graphics Expert

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Boletín 7 Herencia. String Titular; Nombre del dueño de la cuenta double Saldo: Dinero disponible en la cuenta

LABORATORIO ARQUITECTURAS SOFTWARE DE VARIOS NIVELES EN JAVA (I)

Destrucción de objetos (I)

Arrays. Programación. Licenciatura de Lingüística y Nuevas Tecnologías

Herencia. Hay clases que comparten gran parte de sus características.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

FUNDAMENTOS DE INFORMÁTICA

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

LABORATORIO ARQUITECTURAS SOFTWARE DE VARIOS NIVELES EN JAVA (I)

Ejercicios de Programación Tema 7. Programación Orientada a Objetos

Ejercicio 1. Ejercicio 2

Modulo 11. Clases y Objetos en Java

Unidad Nº V Listas Enlazadas

CONTENIDOS. La herencia permite: - Adoptar automáticamente características ya implementadas. Ahorro de tiempo y esfuerzo

FUNDAMENTOS DE INFORMÁTICA

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Programación Orientada a Objetos

1

Prof. Dr. Paul Bustamante

Introducción a OOP LSUB, GSYC, URJC. Wednesday, January 16, 13

PRÁCTICA No 4 POO Encapsulación. El alumno conocerá los principios de la encapsulación, y el uso de constructores para la inicialización de datos

Introducción al lenguaje Java

Computación Avanzada Clase 3. Mauricio Hidalgo Barrientos

Interfaces y Clases Internas. ELO329: Diseño y Programación Orientados a Objetos

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Forma Básica Clase Java

Serialización de datos en C# en Binario, Soap y Xml

Programación. Práctica Final

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

PROYECTO FIGURAS DIAGRAMA DE FLUJO

Clases en Java. Declaración de clases en Java 02/09/16. Ing. Roberto Martínez Román - public class Alumno { private int matricula;

Modelo de Objetos Distribuidos

Agenda..NET C# Laboratorio #1

PARA QUÉ SIRVEN LAS INTERFACES JAVA. IMPLEMENTAR UNA INTERFAZ DEL API. VENTAJAS. EJEMPLOS BÁSICOS. (CU00697B)

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Pruebas de escritorio

Transcripción:

SISTEMAS INFORMÁTICOS INDUSTRIALES curso 2007-2008 PROGRAMACIÓN EN JAVA PRÁCTICA 2: Jerarquía de clases en Java Objetivos Implementar una jerarquía de clases para crear una aplicación en Java Comprender los mecanismos de herencia en Java Comprobar la utilidad del polimorfismo Descripción Se va a diseñar un programa que permita almacenar datos relativos a libros y revistas de una biblioteca y, a continuación, proporcionar un listado de los mismos. Tanto los libros como las revistas comparten dos características comunes: el código de referencia y el título. Los libros, además, poseen dos características adicionales: el autor y la editorial. Por otra parte, las revistas también tienen dos características más: el número de la revista y el año de publicación. Por último, hay que tener en cuenta que existen libros que están compuestos por varios volúmenes, por lo que en este caso será necesario saber también el número de volumen. A continuación se muestra un ejemplo de fichas de una biblioteca conteniendo datos de libros y revistas: Libro Revista Referencia I.062 Referencia R.001 Título Java 2 Título Linux Autor Ceballos Número 23 Editorial rama Año 1999 Libro en volúmenes Referencia F.135 Título Física aplicada Autor R.J.M. Editorial Servicio Publicaciones Nº Volumen 2 Página 1 de 6

Diseño Una manera de diseñar el programa sería escribir una clase para cada tipo de objeto de la biblioteca, definiendo para cada clase los datos asociados a cada ficha, así como los métodos necesarios para manejar esos datos. Es decir, se definirían las tres clases siguientes: - FichaLibro: En esta clase se definirían como datos miembro la referencia, el título, el autor y la editorial del libro; así como los métodos necesarios para manipular estos datos. - FichaRevista: En esta clase se definirían como datos miembro la referencia, el título, el número y el año de publicación de la revista; así como los métodos necesarios para manipular estos datos. - FichaLibroVol: En esta clase se definirían como datos miembro la referencia, el título, el autor, la editorial y el número de volumen del libro; así como los métodos necesarios para manipular estos datos. Como puede apreciarse, si se definieran las clases de la forma especificada, se estaría derrochando tiempo y esfuerzo, ya que se duplica código. Se sabe que una clase derivada hereda los datos y métodos de su clase base, por lo tanto, lo más adecuado para diseñar el programa sería definir una clase base con los datos comunes de los distintos objetos y los métodos para manipular dichos datos. A partir de la clase base se definirían clases derivadas de esta clase, con los datos específicos de cada objeto y los métodos para manipular esos datos. Por lo tanto se definirán las siguientes clases: - Ficha. Es la clase base. Contiene los datos comunes de los distintos objetos: la referencia y el título; así como los métodos para manipular estos datos. - FichaLibro. Clase derivada de la clase Ficha. Incluirá los datos específicos de un libro: el autor y la editorial, así como los métodos necesarios para manipular estos datos. Nótese que puesto la clase FichaLibro es una clase derivada de Ficha, cualquier objeto de la clase FichaLibro heredará los datos y métodos de la clase Ficha. - FichaLibroVol. Clase derivada de la clase FichaLibro. Aportará el número de volumen y la funcionalidad necesaria para manipularlo. - FichaRevista. Clase derivada de la clase Ficha. Contendrá los datos específicos de una revista: el número y el año; y los métodos necesarios para manipular estos datos. Como puede apreciarse, la clase FichaLibro es una clase derivada de Ficha, pero a su vez es una clase base para la clase FichaLibroVol. La jerarquía de las clases definidas es la siguiente: Página 2 de 6

Ficha FichaLibro FichaRevista FichaLibroVol Además de las clases anteriores, se definirá una clase más: Biblioteca. Esta clase contendrá un array de objetos de tipo Ficha (Ficha []volumenes), así como los métodos necesarios para manipular dicho array. En el array se almacenará una referencia a los datos de cada libro o revista. Ejemplo: volumenes[0] volumenes[1] volumenes[2]... Libro Revista Libro en volúmenes Referencia I.062 Referencia R.001 Referencia F.135 Título Java 2 Título Linux Título Física aplicada Autor Ceballos Número 23 Autor R.J.M. Editorial rama Año 1999 Editorial S. Publicaciones Nº Volumen 2 Detalles de implementación Clase Ficha clase abstract (fichero Ficha.java) - protected String referencia: Cadena para almacenar la referencia asociada a la ficha. - protected String titulo: Cadena para guardar el título asociado a la ficha Métodos: - public Ficha(): Constructor por defecto. Inicializará las variables miembro. - public Ficha(String ref, String tit): Constructor con argumentos. Se encargará de asignar la referencia y el título pasados como argumentos a las variables miembro referencia y titulo respectivamente. Página 3 de 6

- public void asignarreferencia(string ref): Asignará la referencia pasada como argumento a la variable miembro referencia. - public void asignartitulo(string tit): Asignará el título pasado como argumento a la variable miembro titulo. - public abstract void mostrarficha(): Esta método mostrará los datos asociados a una ficha. Como se puede observar, se ha definido abstract, ya que sólo tiene sentido invocarla desde objetos de clases derivadas. Este método no se definirá en la clase base, sino que se definirá en las clases derivadas. Clase FichaLibro clase derivada de Ficha (fichero FichaLibro.java) - private String autor: Cadena para almacenar el autor asociado al libro. - private String editorial: Cadena para guardar la editorial asociada al libro. - public FichaLibro(): Constructor por defecto. Inicializará las variables miembro autor y editorial. - public FichaLibro(String ref, String tit, String aut, String edit): Constructor con argumentos. Se encargará de asignar la referencia y el título pasados como argumentos a las variables miembro referencia y titulo utilizando el constructor con argumentos de la clase Ficha. Además, asignará el autor y la editorial pasados como argumentos a las variables miembro autor y editorial. - public void asignarautor(string aut): Asignará el autor pasado como parámetro a la variable miembro autor. - public void asignareditorial(string edit): Asignará la editorial pasada como parámetro a la variable miembro editorial. - public void mostrarficha(): Este método mostrará los datos asociados a la ficha del libro. Clase FichaLibroVol clase derivada de FichaLibro (fichero FichaLibroVol.java) - private int numvolumen: Almacenará el número de volumen del libro. - public FichaLibroVol(): Constructor por defecto. - public FichaLibroVol(String ref, String tit,string aut, String edit, int nv): Constructor con argumentos. Se encargará de asignar la referencia, el título, el autor y la editorial pasados como argumentos a las Página 4 de 6

variables miembro referencia, titulo, autor y editorial utilizando el constructor con argumentos de la clase FichaLibro. Además, asignará el número de volumen pasado como argumento a la variable miembro numvolumen. - public void asignarnumvolumen(int nv): Asignará el número de volumen pasado como parámetro a la variable miembro numvolumen. - public void mostrarficha(): Este método mostrará los datos asociados a la ficha de un libro con varios volúmenes. Usará el método mostrarficha() de la clase FichaLibro. Clase FichaRevista clase derivada de Ficha (fichero FichaRevista.java) - private int numrevista: Almacenará el número de la revista. - private int anyo: Guardará el año de publicación de la revista. - public FichaRevista(): Constructor por defecto. - public FichaRevista(String ref, String tit, int nr, int an): Constructor con argumentos. Se encargará de asignar la referencia y el título pasados como argumentos a las variables miembro referencia y titulo utilizando el constructor con argumentos de la clase Ficha. Además, asignará el número de revista y el año de publicación pasados como argumentos a las variables miembro numrevista y anyo. - public void asignarnumrevista(int nr): Asignará el número de revista pasado como parámetro a la variable miembro numrevista. - public void asignaranyo(int an): Asignará el año de publicación pasado como parámetro a la variable miembro anyo. - public void mostrarficha(): Este método mostrará los datos asociados a la ficha de la revista. Clase Biblioteca (fichero Biblioteca.java) - private int nummaxvols: Guardará el número máximo de volúmenes que se pueden almacenar. - private int numvols: Guardará el número actual de volúmenes almacenados. - private Ficha []volumenes: Array de objetos de tipo Ficha para almacenar las referencias a los libros y a las revistas. Página 5 de 6

- public Biblioteca(int vm): Constructor. Asignará a nummaxvols el número máximo de volúmenes pasado como parámetro e inicializará la variable miembro numvols. Además reservará la memoria necesaria del array de objetos volumenes. - public void asignarvolumen(ficha fich): Asignará la ficha pasada como parámetro a una posición libre del array volumenes. - public void mostrarvolumenes(): Este método mostrará los datos asociados a todos los volúmenes. Utilizará el método mostrarficha() de la clase Ficha. Clase Practica2 (fichero Practica2.java) Esta clase contendrá el main() y debe permitir comprobar el funcionamiento de las clases implementadas. Por ejemplo, una posible implementación de esta clase sería la siguiente: // fichero Practica2.java public class Practica2 { public static void main(string[] args) { Biblioteca biblio = new Biblioteca(3); FichaLibro fl = new FichaLibro("I.062","Java 2","Ceballos","rama"); FichaLibroVol flv = new FichaLibroVol("F.135","Fisica aplicada","r.j.m.","s. publicaciones",2); FichaRevista fr = new FichaRevista("R.001","Linux",23,1999); biblio.asignarvolumen(fl); biblio.asignarvolumen(flv); biblio.asignarvolumen(fr); biblio.mostrarvolumenes(); } } Página 6 de 6