Instituto Tecnológico de Cd.

Madero Ingeniería en Sistemas Computacionales Tareas de la materia: Programación Orientada a Objetos Polimorfismo
Fecha de entrega: viernes 20 de Abril 2012 18. Realice la siguiente práctica, de acuerdo al código que se envía: Código Fuente Musica.java

import java.util.*; class Instrumento { public void tocar ( ) { System.out.println ( "Instrumento.tocar ( )" ); } public String tipo ( ) { return "Instrumento"; } public void afinar ( ) { } } class Guitarra extends Instrumento { public void tocar ( ) { System.out.println ( "Guitarra.tocar ( )" ); } public String tipo ( ) { return "Guitarra"; } public void afinar ( ) { } } class Piano extends Instrumento { public void tocar ( ) { System.out.println( "Piano.tocar ( )" ); } public String tipo ( ) { return "Piano"; } public void afinar ( ) {} } class Saxofon extends Instrumento { public void tocar ( ) { System.out.println ( "Saxofon.tocar ( )" );

1

} public String tipo ( ) { return "Saxofon"; } public void afinar ( ) { } } // Un tipo de Guitarra class Guzla extends Guitarra { public void tocar ( ) { System.out.println ( "Guzla.tocar ( )" ); } public void afinar ( ) { System.out.println ( "Guzla.afinar ( )" ); } } // Un tipo de Guitarra class Ukelele extends Guitarra { public void tocar ( ) { System.out.println ( "Ukelele.tocar ( )" ); } public String tipo ( ) { return "Ukelele"; } } public class Musica { // No importa el tipo de Instrumento, seguirá funcionando debido a Polimorfismo: static void afinar ( Instrumento i ) { // ... i.tocar ( ); } static void afinarTodo ( Instrumento [] e ) { for ( int i = 0; i < e.length; i++ ) afinar ( e[i] ); } public static void main ( String [] args ) { Instrumento [ ] orquesta = new Instrumento[5]; int i = 0; // Up-casting al asignarse el Arreglo orquesta[i++] = new Guitarra ( ); orquesta[i++] = new Piano ( ); orquesta[i++] = new Saxofon ( ); orquesta[i++] = new Guzla ( ); orquesta[i++] = new Ukelele ( ); afinarTodo ( orquesta ); } } Clase Musica

2

En el código fuente de Musica.java son diseñadas diversas Clases que demuestran el uso de Polimorfismo.
• • • •

Realice el diagrama de clases en UML Comente qué métodos son heredados a sus clases derivadas. Comente métodos están redefinidos en la clase. Al ejecutar este programa indique qué resultados se obtienen. Redacte con sus

propias palabras cómo se lleva a cabo la ejecución de éste indicando que métodos y de qué clase son los que se ejecutan y por qué.

19. Hacer

una librería de clases que represente figuras tridimensionales

y

bidimensionales, y su respectiva jerarquía de clases. Las clases deben ser capaces de tener funcionamiento bastante básico, como obtener áreas, volúmenes y perímetros de la figura correspondiente. La representación de la jerarquía sería como ésta:

La

superclase

de

dicha

jerarquía

podría

ser

muy

parecida

a

ésta:

public abstract class figura { protected String nombre; protected int color; protected int grosorBorde; public String getNombre ( ){ 3

return this.nombre; } public void setNombre ( String n ){ this.nombre=n; } public int getColor ( ){ return this.color; } public void setColor ( int c ){ this.color = c; } public int getGrosorBorde ( ){ return this.grosorBorde; } public void setGrosorBorde ( int g ){ this.grosorBorde = g; } public abstract void dibujar ( ); } Las siguientes clases en el nivel de la jerarquía podrían quedar muy parecidas a éstas: public abstract class figura2D extends figura { public abstract int calcularArea ( ); public abstract int calcularPerimetro ( ); } public abstract class figura3D extends figura { public abstract int calcularVolumen ( ); } Se le pide que forme las clases de la parte inferior de la jerarquía y que representarían los objetos a instanciarse. Además, debe de realizar una implementación de esta librería, en donde el usuario pueda crear nuevas figuras y que éstas se almacenen en un arreglo de figuras. Ejecute su programa. Realice los comentarios pertinentes para este programa.

4

Sign up to vote on this title
UsefulNot useful