HOJA DE EJERCICIOS 4 INTERFACES Y CLASES ABSTRACTAS EN JAVA Y C++

Documentos relacionados
HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

PRÁCTICA 6 REPASO TEMAS 1 Y 2

HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS

Herencia y Polimorfismo

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

CLASE 9 -HERENCIA Y POLIMORFISMO

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C)

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

Tema 1. Herencia y Polimorfismo

Estructuras de control selectivas

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Examen Teórico. Convocatoria de Febrero de 2016

Examen Teórico. Convocatoria de Febrero de 2018

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

Herencia. Implementación en Java

Código: Salida. Circulo>>(1,2,2.45) Punto >>(1,1)

18. Interfaces Declaración de una interfaz

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

POLIMORFISMO "una interfaz, múltiples métodos".

12. Tipos de atributos

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

Examen Teórico. Convocatoria de Julio de 2015

Problema 1 (2 puntos)

Universidad de Cantabria

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Curso de Java POO: Programación orientada a objetos

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

Práctica 5a. Práctica 5a. José M. Ordax

PROYECTO FIGURAS DIAGRAMA DE FLUJO

Unidad 2. Elementos Intermedios del Lenguaje

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

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

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

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

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

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

Programación orientada a objetos

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

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

Guía práctica de estudio 08: Polimorfismo

Arquitecturas cliente/servidor

IMPORTAR Y USAR CLASES DEL API DE JAVA. EJEMPLO CLASE MATH Y MÉTODO POW. CONSTRUCTORES PRIVADOS. (CU00647B)

Tema 2: Objetos y Clases de Objetos Martes Jueves Dpto. de Ingeniería de Sistemas Telemáticos

Ejercicios del tema 7: Clases y objetos

2. Tratamiento de objetos con JAVA

Clases abstractas e interfaces en Java

Clases y herencia. FJP Unidad 8. Diseño de clases

Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED)

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

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

LA PALABRA CLAVE THIS EN JAVA. CONTENIDO NULL POR DEFECTO DE UN OBJETO. SOBRECARGA DE NOMBRES. EJEMPLOS (CU00654B)

UNIDAD 4 IMPLEMENTACION DE PROPIEDADES DE LOS OBJETOS JAVA

Ejercicio 1 (proyecto prlistas, paquete listas)

IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA

Examen Teórico Convocatoria de Junio de 2012

LEA ATENTAMENTE ESTAS INSTRUCCIONES ANTES DE COMENZAR LA PRUEBA

Práctica 10a. Práctica 10a. José M. Ordax

2ª Parte: Problemas (5 puntos sobre 10)

Derechos de Acceso: COMPOSICION

b) Basta con definir una variable de tipo Alumno (a) y otra de tipo CursoExtraescolar (curso) antes de hacer la llamada al método mediante el

Federico Peinado

INSTITUTO TECNOLOGICO DE VILLAHERMOSA

Unidad Didáctica 1. Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos

Diseño de tipos Igualdad, representación, código, copia y relación de orden

Programación II Objetos en Java

Pasos requeridos para establecer el manejo de eventos para un componente de GUI.

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

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

Java interface y extensibilidad

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

Examen Teórico. Convocatoria de Febrero de 2015

1. Qué tipos de relación hay entre las siguientes clases?

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

Bloque II. Elementos del lenguaje de programación Java

Los Constructores(1)

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Polimorfismo Java y Servicios Web I Master en Ingeniería Matemática

CONCEPTO DE INTERFACE Y HERENCIA MÚLTIPLE EN JAVA. IMPLEMENTS. EJEMPLOS Y DIAGRAMAS DE CLASES. (CU00696B)

A3F. Polimorfismo. Carlos Fontela

15. Parámetros o argumentos

A3F. Polimorfismo. Carlos Fontela

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 con Java

Práctica 5. Fecha límite de entrega: viernes, 14 de diciembre

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

PROGRAMACIÓN ORIENTADA A OBJETOS

Introducción a la Programación Orientada a Objetos

INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

EXAMEN PARA ALUMNOS PRESENTADOS A LA ASIGNATURA COMPLETA

POO: Clases y objetos

Práctica 2 Gráficos Vectoriales con SVG (versión )

Transcripción:

Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2009/2010 Nombre:... Fecha: / 12 / 2009 HOJA DE EJERCICIOS 4 INTERFACES Y CLASES ABSTRACTAS EN JAVA Y C++ Esta hoja de ejercicios nos servirá para repasar las nociones más importantes del Tema 4. 1. Cuál es la definición de clase abstracta? 2. Una clase abstracta puede contener constructores? 3. Una clase abstracta puede contener atributos? 4. Realiza el diagrama UML de una interface ShapeInt que contenga los métodos (públicos) computearea(): double, computeperimeter(): double y readshapedata(): void. 5. Realiza el diagrama UML de una clase abstracta Drawable en Java que contenga atributos (privados) pos: Point, bordercolor: Color, interiorcolor: Color, así como métodos (públicos, no abstractos) Drawable(Point, Color, Color), setbordercolor(color): void, setinteriorcolor(color): void, setpos(point): void y un método abstracto drawme (Graphics): void. Además, dicha clase redefine el método tostring(): String. 6. Recupera el diagrama UML del ejercicio 4 y añádele una clase (no abstracta) Rectangle que implemente ShapeInt y contenga atributos width: double, height: double, y defina los métodos de la interface. La clase contendrá un único constructor (público) Rectangle (double, double). Además, redefinirá el método tostring(): String. 1-4

7. Escribe la definición en Java de la interface ShapeInt de acuerdo con la especificación que de la misma hemos hecho en el ejercicio 4. 8. Escribe la definición en Java de la clase Rectangle de acuerdo con la especificación de la misma que hemos hecho en el ejercicio 6 (incluidas las relaciones de la misma). La especificación de sus métodos será la siguiente: Rectangle (double, double) : inicia los atributos width: double y height: double con los parámetros recibidos; computearea (): double : calcula el área del rectángulo (base x altura); computeperimeter (): double : calcula el perímetro del rectángulo (2 x base + 2 x altura); readshapedata (): void : método que lee la base y altura del rectángulo, y las asigna a los atributos de la clase (puedes hacer uso de la clase Scanner para leer los mismos). tostring(): String : método que devuelve una cadena de texto que contenga los dos atributos de la clase. 9. Define en C++ una clase completamente abstracta que represente la interface ShapeInt de acuerdo con la especificación que de la misma hemos hecho en el ejercicio 4. 2-6

10. Escribe la declaración y definición en C++ de la clase Rectangle de acuerdo con la especificación de la misma que hemos hecho en el ejercicio 8 (incluidas las relaciones de la misma). El método tostring(): String sustitúyelo por un método tostring(): void que tenga el siguiente comportamiento: tostring(): void : método que muestra una cadena de texto que contenga los dos atributos de la clase. Rectangle.h Rectangle.cpp 11. Observa la siguiente cabecera en Java, dada la interface ShapeInt previa Es correcta? public class Circle extends ShapeInt { 12. Observa la siguiente cabecera en C++, dada la clase completamente abstracta ShapeInt Es correcta? class Circle: public ShapeInt { 13. Las dos cabeceras a continuación, son equivalentes en Java y C++? public class Circle implements ShapeInt { class Circle: ShapeInt { 3-6

14. Escribe (sólo) la cabecera de una clase pública DrawableRectangle en Java que herede de la clase abstracta Drawable e implemente la interface ShapeInt. 15. Escribe la lista de métodos que debe contener la clase DrawableRectangle para no ser abstracta con respecto a la declaración de la misma que has hecho en el ejercicio 14 (incluye entre los mismos, al menos, un constructor). 16. Escribe la definición en Java de una clase Circle que implemente ShapeInt, contenga un atributo radio: double y defina los métodos de la interface. La clase contendrá un único constructor (público) Circle (double). Además, redefinirá el método tostring(): String. La especificación de sus métodos será la siguiente (puedes obtener la constante Pi de la clase Math de la API de Java, por medio de Math.PI ): Circle (double) : inicia el atributo radio: double con los parámetros recibidos; computearea (): double : calcula el área del círculo (Pi x radio x radio); computeperimeter (): double : calcula el perímetro del círculo (2 x Pi x radio); readshapedata (): void : método que lee el radio del círculo, y lo asigna al atributo de la clase (puedes hacer uso de la clase Scanner para leer el mismo). tostring(): String : método que devuelve una cadena de texto que contenga el atributo de la clase. 4-6

17. Tras las modificaciones anteriores, deberías tener ahora el siguiente sistema de información: «interface» ShapeInt +computearea() : double +computeperimeter() : double +readshapedata() : void Rectangle -width : double -height : double +Rectangle(entrada : double, entrada : double) +tostring() : string Circle -radio : double +Circle(entrada : double) +tostring() : string Vamos a definir ahora una clase auxiliar, cuyo único propósito va a ser el de construir objetos de las clases Rectangle o Circle a petición del usuario. Llama a la clase Factory. Esta clase sólo va a contener un método, create(): ShapeInt. Este método debe ser estático, ya que no construiremos ninguna instancia (u objeto) de la clase Factory 1. El método tendrá el siguiente comportamiento: - Muestra un mensaje de cortesía por pantalla; - declara un objeto aux de la interface ShapeInt; - si el usuario introduce un 1, el método construye el objeto aux de la clase Circle (recuerda que contiene un único constructor), y luego invoca sobre dicho objeto al método readshapedata(): void para que el usuario modifique el objeto con el valor de los parámetros deseado; - si el usuario introduce un 2, el método construye el objeto aux de la clase Rectangle, y luego invoca sobre dicho objeto al método readshapedata(): void para que el usuario modifique el objeto con el valor de los parámetros deseado; - si el usuario introduce cualquier otra cadena, asigna a aux el valor por defecto null ; - el método devuelve el objeto aux (que, recordemos, ha sido declarado ShapeInt ). 1 Factory es un conocido Patrón de Diseño que estudiarás más en profundidad en otras asignaturas. 5-6

18. Crea un cliente del anterior sistema de información en la forma de un método main(string [] args): void. Construye objetos ( de qué tipo deberás declararlos?) figura1, figura2 por medio del método estático create(): ShapeInt. Qué métodos puedes invocar sobre dichos objetos? Enuméralos. 19. Enumera las modificaciones que deberías hacer en tu sistema de información si ahora añadieras nuevas clases Triangle, Square,.... 20. Replica en C++ el sistema de información creado en los ejercicios 16, 17 y 18. 6-6