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

Anuncio
Metodología y Tecnología de la Programación
ESI-UCLM
Ejercicios Tema 8: Herencia
1.
¿Qué tipos de relación hay entre las siguientes clases?
Personal de la Universidad
1
PAS
Profesor
a) herencia y asociación
c) dependencia y asociación
n
Estudiante
b) herencia y dependencia
d) transposición y bifuncionalismo
2. ¿Cuál 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 método de soporte
Para un método de servicio
Para una atributo de una clase que no va a tener hijas
4. ¿Cuál 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
Página: 1
Metodología y Tecnología de la Programación
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: portátiles y de sobremesa. Ambos tipos de
ordenadores se caracterizan por su código y por su precio. Además cada uno tiene un eslogan que es:
"Ideal para sus viajes" en el caso de los portátiles y "Es el que más pesa, pero el que menos cuesta"
para el caso de los ordenadores de sobremesa. Además los ordenadores portátiles tienen un atributo
peso, y los de sobremesa la descripción del tipo de torre. Realice un diseño indicando las clases que hay
que tener en cuenta (incluyendo atributos y métodos) y su relación. 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 depósitos. Consideremos tres tipos de cuentas: cuenta corriente, libreta de ahorro y libreta 2000.
Las cuentas corrientes se usan para realizar pagos y no proporcionan ningún interés. 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 interés del 4%. La libreta 2000 es un tipo de libreta de
ahorro que rinde un mayor interés (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 métodos en cada clase.
Incluya también 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. Además se
retiraran fondos de cada uno de los tipos de cuenta, se actualizarán los intereses de la libreta 2000 y
se depositará una determinada cantidad en la libreta 2000.
7. ¿Cuál 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
Página: 2
Metodología y Tecnología de la Programación
ESI-UCLM
8. Dada la siguiente relación entre clases:
Publicación
Tesis
Revista
donde la clase publicación tiene los métodos: devuelve_autor y devuelve_editorial. La clase tesis tiene
además el método devuelve_departamento y la clase revista devuelve_número_de_revista. ¿Qué
métodos podrían ser invocados usando una variable polimórfica de tipo publicación?
a)devuelve_autor, devuelve_editorial y devuelve_número_de revista
b)devuelve_numero_de_revista y devuelve_departamento
c)devuelve_autor, devuelve_editorial, devuelve_departamento y devuelve_número_de_revista
d)devuelve_autor, devuelve_editorial
9. Dada la siguiente jerarquía de clases:
Naturaleza
Animal
Hervíboro
Elefante
Rinoceronte
Con las siguientes declaraciones: Naturaleza n; Animal a; Herbívoro h; Elefante e; Rinoceronte r;
¿Cuál de las siguientes sentencias son incorrectas y por qué?
a) a=n
b)e=r
c)h=e
d) a=h
10. ¿Cuál 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
Página: 3
Metodología y Tecnología de la Programación
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 código de una interfaz llamada Primera que contenga dos métodos A y B. Defina otra
interfaz llamada Segunda que herede de la anterior y además contenga un método llamado C. Escriba el
código de otra clase llamada Objetos que use la segunda interfaz. ¿Cuántos métodos debe implementar
esta clase? Implemente dichos métodos de forma que cada método imprima una línea indicando el
nombre del método. Cree un programa que utilice los métodos definidos.
12. Construya un programa que calcule el volumen molar de una sustancia a una presión y temperatura
dadas usando la ecuación de estado de un gas ideal: PV=nNakT, donde p es la presión, V el volumen, n
el número 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 partículas/mol y la constante de Boltzmann
1.38066 10-23 J/K, el programa debe hacer uso de dichas constantes definiéndolas a través de una
interfaz.
13. ¿Cuál 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;
}//método
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 método
public double calcularnota () {
return nota;
}//fin método
}// 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 método
}//fin clase Ejercicio
Ejercicios tema 8: Herencia
Página: 4
Metodología y Tecnología de la Programación
ESI-UCLM
14. ¿Cuál 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, número de cuenta y saldo.
Dentro de estos clientes existe un cliente especial llamado Preferente. Dicho cliente se caracteriza
porque posee varios fondos de inversión. Cada fondo se caracteriza por su número y el saldo mensual.
Se pide:
a) Dibujar, usando UML, el diagrama de clases indicando qué clases hay y la relación 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. Además, para el caso del cliente
Preferente se debe poder consultar también los datos de cada uno de sus fondos (número y el saldo
mensual). El número de fondos que posee el cliente Preferente y las características de cada fondo deben
introducirse por teclado.
16. Una tienda de informática vende dos tipos de artículos (software y hardware) ambos caracterizados
por su código (de tipo char) y su descripción. Además, en los productos software hay que indicar el tipo
de producto (con una cadena), y en los hardware se debe indicar si es un periférico o no. Para saber el
precio de un artículo utilice una interface que indique que para un artículo cuyo código es A el precio es
100.0 euros, si el código es B el precio es 50.3; para un artículo con código C el precio es 150.50 euros.
En el caso de ser un producto hardware, los artículos sólo serán A ó B y si es un periférico el precio se
incrementará en un 10%. Los productos sofware serán exclusivamente B ó C incrementándose el precio
del artículo en un 5% si el sofware es de tipo ProgramaJuegos. Nota: la interface debe tener un método
abstracto.
a) Dibuje en UML los diagramas de las clases y las relaciones entre ellas. Para cada clase debe
indicar los atributos y métodos 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 demás características del objeto.
Ejercicios tema 8: Herencia
Página: 5
Descargar