Está en la página 1de 5

Metodologa y Tecnologa de la Programacin ESI-UCLM

Ejercicios Tema 8: Herencia

1. Qu tipos de relacin hay entre las siguientes clases?

Personal de la Universidad

1 n
PAS Profesor Estudiante

a) herencia y asociacin b) herencia y dependencia


c) dependencia y asociacin d) transposicin y bifuncionalismo

2. Cul es el resultado del siguiente programa?

class Programa {
public static void main(String [ ] args){
Clase1 obj1=new Clase1();
obj1.imprimir(4);
Clase2 obj2=new Clase2();
obj2.imprimir(3);
}
}
class Clase1 {
protected int prop1=10,prop2=4;
public void imprimir(int i){
prop1=prop1+i;
prop2=prop2+i;
System.out.print(prop1+" "+prop2+" ");
}
}
class Clase2 extends Clase1 {
public void imprimir(int i){
prop1=prop1-i;
prop2=prop2-i;
System.out.print(prop1+" "+prop2);
}
}

3. Qu modificador debo usar en los siguientes casos?


Para un atributo de una clase que va a tener hijas
Para un mtodo de soporte
Para un mtodo de servicio
Para una atributo de una clase que no va a tener hijas

4. Cul es el resultado del siguiente programa?

abstract class Uno {


protected int i=2;
abstract public void frase();

class Dos extends Uno {


public void frase() {
int i=3;
System.out.println("Estoy en un objeto de clase Dos con i:"+i);
}
}

class Tres extends Dos {


public void frase() {
System.out.println("Estoy en un objeto de clase Tres con i:"+i);
}
}

Ejercicios tema 8: Herencia Pgina: 1


Metodologa y Tecnologa de la Programacin ESI-UCLM

class Driver {
public static void main(String[] args) {
Uno [] lista =new Uno [2];
lista [0]= new Dos();
lista [1]= new Tres();
for (int i=0; i<2; i++){
lista[i].frase();
}
}
}

5. En una tienda se venden 2 tipos de ordenadores: porttiles y de sobremesa. Ambos tipos de


ordenadores se caracterizan por su cdigo y por su precio. Adems cada uno tiene un eslogan que es:
"Ideal para sus viajes" en el caso de los porttiles y "Es el que ms pesa, pero el que menos cuesta"
para el caso de los ordenadores de sobremesa. Adems los ordenadores porttiles tienen un atributo
peso, y los de sobremesa la descripcin del tipo de torre. Realice un diseo indicando las clases que hay
que tener en cuenta (incluyendo atributos y mtodos) y su relacin. Implemente en Java dichas clases.

6. En un banco tenemos varios tipos de cuentas bancarias en todas las cuales es posible retirar fondos y
hacer depsitos. Consideremos tres tipos de cuentas: cuenta corriente, libreta de ahorro y libreta 2000.
Las cuentas corrientes se usan para realizar pagos y no proporcionan ningn inters. La cuenta
corriente puede tener asociada una libreta de ahorro para cubrir descubiertos de la cuenta corriente. Por
otro lado, las libretas de ahorro proporcionan un inters del 4%. La libreta 2000 es un tipo de libreta de
ahorro que rinde un mayor inters (del 8%) pero la retirada de fondos est penalizada con un 2% de la
cantidad retirada. En estas condiciones:
a) Construir un diagrama de clases usando UML, incluyendo los atributos y mtodos en cada clase.
Incluya tambin las relaciones entre las distintas clases
b) Programar las clases resultantes
c) Construir un programa ejemplo que use las clases del apartado a). En el programa deben crearse
objetos de cada una de las clases, inicializando las cuentas con unos valores iniciales. Adems se
retiraran fondos de cada uno de los tipos de cuenta, se actualizarn los intereses de la libreta 2000 y
se depositar una determinada cantidad en la libreta 2000.

7. Cul es el resultado del siguiente programa?

class Padre {
protected int aa=0;
public int aa() {
return aa;
}
}
class Hija extends Padre {
public Hija (int bb) {
this.aa=bb+1;
}
}
class Nieta extends Hija {
public Nieta (int cc) {
super(cc+2);
}
}
class Familia {
public static void main(String [] args){
Hija h= new Hija(4);
h=f(h);
System.out.println (h.aa());
}
private static Nieta f (Padre h) {
Nieta n=new Nieta (h.aa());
return n;
}
}

Ejercicios tema 8: Herencia Pgina: 2


Metodologa y Tecnologa de la Programacin ESI-UCLM

8. Dada la siguiente relacin entre clases:

Publicacin

Tesis Revista

donde la clase publicacin tiene los mtodos: devuelve_autor y devuelve_editorial. La clase tesis tiene
adems el mtodo devuelve_departamento y la clase revista devuelve_nmero_de_revista. Qu
mtodos podran ser invocados usando una variable polimrfica de tipo publicacin?

a)devuelve_autor, devuelve_editorial y devuelve_nmero_de revista


b)devuelve_numero_de_revista y devuelve_departamento
c)devuelve_autor, devuelve_editorial, devuelve_departamento y devuelve_nmero_de_revista
d)devuelve_autor, devuelve_editorial

9. Dada la siguiente jerarqua de clases:

Naturaleza

Animal

Hervboro

Rinoceronte
Elefante

Con las siguientes declaraciones: Naturaleza n; Animal a; Herbvoro h; Elefante e; Rinoceronte r;


Cul de las siguientes sentencias son incorrectas y por qu?
a) a=n b)e=r c)h=e d) a=h

10. Cul es el resultado del siguiente programa?

class Ejercicio {
public static void main (String [] args) {
Vehiculo v= new Vehiculo("AAA", 1000);
Coche c = new Coche("BBB", 1000);
v.incrementar_precio(100);
System.out.print(v.devolver_marca()+ );
System.out.println(v.devolver_precio());
c.incrementar_precio(100);
System.out.print(c.devolver_marca()+ );
System.out.println(c.devolver_precio());
v=c;
v.incrementar_precio(100);
System.out.print(v.devolver_marca()+ );
System.out.println(v.devolver_precio());

}
}
class Vehiculo {
protected String marca;
protected double precio;
public Vehiculo (String marca, double precio) {
this.marca=marca;
this.precio=precio;
}
public void incrementar_precio(double p) {
precio=precio+p;
}

Ejercicios tema 8: Herencia Pgina: 3


Metodologa y Tecnologa de la Programacin ESI-UCLM

public double devolver_precio(){


return precio;
}
public String devolver_marca(){
return marca;
}
}

class Coche extends Vehiculo {


public Coche (String marca, double precio){
super (marca,precio);
}
public void incrementar_precio(double p) {
precio=precio+2*p;
}
}

11. Implemente el cdigo de una interfaz llamada Primera que contenga dos mtodos A y B. Defina otra
interfaz llamada Segunda que herede de la anterior y adems contenga un mtodo llamado C. Escriba el
cdigo de otra clase llamada Objetos que use la segunda interfaz. Cuntos mtodos debe implementar
esta clase? Implemente dichos mtodos de forma que cada mtodo imprima una lnea indicando el
nombre del mtodo. Cree un programa que utilice los mtodos definidos.

12. Construya un programa que calcule el volumen molar de una sustancia a una presin y temperatura
dadas usando la ecuacin de estado de un gas ideal: PV=nNakT, donde p es la presin, V el volumen, n
el nmero de moles, Na la constante de Avogadro, k la constante de Boltzmann y T la temperatura.
23
Sabiendo que la contante de Avogadro vale 6.023 10 partculas/mol y la constante de Boltzmann
1.38066 10-23 J/K, el programa debe hacer uso de dichas constantes definindolas a travs de una
interfaz.

13. Cul es el resultado del siguiente programa?

abstract class Alumno {


protected String nombre;
protected double nota;
public Alumno (String nombre, double nota) {
this.nombre=nombre;
this.nota=nota;
}//mtodo

abstract public double calcularnota ();

}//de clase Alumno

class Alumno_Ordinario extends Alumno {


private char curso;
public Alumno_Ordinario (String nombre, double nota, char curso) {
super (nombre, nota);
this.curso=curso;
}//fin mtodo

public double calcularnota () {


return nota;
}//fin mtodo

}// de clase Alumno_Ordinario

class Ejercicio {
public static void main (String [] args) {
Alumno alumno1;
alumno1=new Alumno("Felix", 5.0);
System.out.println (alumno1.calcularnota());
alumno1=new Alumno_Ordinario (Lucia, 7.0, 1);
System.out.println (alumno1.calcularnota());
}//fin mtodo
}//fin clase Ejercicio

Ejercicios tema 8: Herencia Pgina: 4


Metodologa y Tecnologa de la Programacin ESI-UCLM

14. Cul es el error del siguiente programa?

interface A {
double a=2.3;
void imprimeresultadoA () {
System.out.println ("valor de a"+ a);
}
}
interface B {
int b=435;
void imprimeresultadoB () ;
}
class AA implements A, B {
double aa=324.32;
public void imprimeresultadoA () {
System.out.println ("valor de a"+ a+ "valor de aa"+ aa);
}
public void imprimeresultadoB () {
System.out.println ("valor de b"+ b+ "valor de aa"+ aa);
}
}
class Principal {
public static void main (String [] args) {
AA ob1=new AA();
ob1.imprimeresultadoA();
ob1.imprimeresultadoB();
}
}
15. En un banco se tienen una serie de clientes caracterizados por su NIF, nmero de cuenta y saldo.
Dentro de estos clientes existe un cliente especial llamado Preferente. Dicho cliente se caracteriza
porque posee varios fondos de inversin. Cada fondo se caracteriza por su nmero y el saldo mensual.
Se pide:
a) Dibujar, usando UML, el diagrama de clases indicando qu clases hay y la relacin entre ellas.
b) Implementar en Java todas las clases resultantes del diagrama.
c) Escribir un programa principal en Java donde se creen un cliente y un cliente Preferente. Para cada
uno de ellos se debe poder consultar todos los atributos que contiene. Adems, para el caso del cliente
Preferente se debe poder consultar tambin los datos de cada uno de sus fondos (nmero y el saldo
mensual). El nmero de fondos que posee el cliente Preferente y las caractersticas de cada fondo deben
introducirse por teclado.

16. Una tienda de informtica vende dos tipos de artculos (software y hardware) ambos caracterizados
por su cdigo (de tipo char) y su descripcin. Adems, en los productos software hay que indicar el tipo
de producto (con una cadena), y en los hardware se debe indicar si es un perifrico o no. Para saber el
precio de un artculo utilice una interface que indique que para un artculo cuyo cdigo es A el precio es
100.0 euros, si el cdigo es B el precio es 50.3; para un artculo con cdigo C el precio es 150.50 euros.
En el caso de ser un producto hardware, los artculos slo sern A B y si es un perifrico el precio se
incrementar en un 10%. Los productos sofware sern exclusivamente B C incrementndose el precio
del artculo en un 5% si el sofware es de tipo ProgramaJuegos. Nota: la interface debe tener un mtodo
abstracto.
a) Dibuje en UML los diagramas de las clases y las relaciones entre ellas. Para cada clase debe
indicar los atributos y mtodos teniendo en cuenta que se puede consultar y modificar cada
atributo.
b) Implemente las clases y la interfaz.
c) Realice un programa principal donde cree un objeto software y otro hardware y muestre el
precio y dems caractersticas del objeto.

Ejercicios tema 8: Herencia Pgina: 5

También podría gustarte