LENGUAJE PROGRAMACION Ejercicios Herencia Simple. EJERCICIO 1
Se plantea desarrollar un programa Java que permita la gestión de una empresa agroalimentaria que trabaja con tres tipos de productos: productos frescos, productos refrigerados y productos congelados. Todos los productos llevan esta información común común:: fecha de caducidad y nmero de lote. ! su ve", cada tipo de producto lleva alguna información especíca especíca.. #os productos frescos deben llevar la fecha de envasado y el pa$ s de origen. #os productos refrigerados deben llevar el código del organismo de supervisión alimentaria, la fecha de envasado, la temperatura de mantenimiento recomendada y el pa$s de origen. #os productos congelados deben llevar la fecha de envasado, el pa$ s de origen y la temperatura de mantenimiento recomendada.
Hay tres tipos de productos congelados: congelados por aire, congelados por agua y congelados por nitrógeno. #os productos congelados por aire deben llevar la información de la composición del aire con que fue congelado %& de nitrógeno, & de o'$ geno, nitrógeno, geno, & de dió'ido de car carbono bono y & de vapor de agua(. #os productos congelados por agua deben llevar la información de la salinidad del agua con que se reali"ó la congelación en gramos de sal por litro de agua. #os productos congelados por nitrógeno deben llevar la información del m)todo de congelación empleado y del tiempo de e'posición al nitrógeno e'presada en segundos.
*rear el diagrama de clases y el código de las clases Java implementando una relación de herencia . *ada clase debe disponer de constructor y permitir establecer %set( y recuperar %get( el valor de sus atributos y tener un m)todo que permita mostrar la información del objeto cuando sea procedente. *rear una clase testHerencia+ con el m)todo main donde se creen: dos productos frescos, tres productos refrigerados y cinco productos congelados % de ellos congelados por agua, otros por agua y - por nitrógeno(. ostrar la información de cada producto por pantalla.
EJERCICIO 2 Haz una clase llamada Persona que siga las siguientes condiciones: Sus atributos atributos son: nombre, edad, DNI, sexo (H hombre, M mujer), mujer) , peso y altura. No queremos que se accedan directamente a ellos. Piensa que modificador de acceso es el ms adecuado, tambi!n su ti"o. Si quieres a#adir alg$n atributo "uedes hacerlo.
Por defecto, todos los atributos menos el %N& sern 'alores "or defecto seg$n su ti"o ( n$meros, cadena 'aca "ara String, etc.). Se*o sera hombre "or defecto, usa una constante "ara ello. Se im"lantaran 'arios constructores:
o
+n constructor "or defecto.
o
+n constructor con el nombre, edad se*o, el resto "or defecto.
o
+n constructor con todos los atributos como "armetro.
-os m!todos que se im"lementaran son:
o
o o o o
o
calcularIMC(): calculara si la "ersona esta en su "eso ideal ("eso en g/(altura01 en m)), de'uel'e un 23 si esta "or debajo de su "eso ideal, un si esta en su "eso ideal un 3 si tiene sobre"eso .4e recomiendo que uses constantes "ara de'ol'er estos 'alores. esMayorDeEdad(): indica si es maor de edad, de'uel'e un booleano. comprobarSexo(char sexo): com"rueba que el se*o introducido es correcto. Si no es correcto, sera H. No sera 'isible al e*terior. toStrin(): de'uel'e toda la informaci5n del objeto. eneraDNI(): genera un numero aleatorio de 6 cifras, genera a "artir de este su n$mero su letra corres"ondiente. 7ste m!todo sera in'ocado cuando se construa el objeto. Puedes di'idir el m!todo "ara que te sea ms fcil. No ser 'isible al e*terior. M!todos set de cada "armetro, e*ce"to de %N&.
8hora, crea una clase ejecutable que haga lo siguiente: Pide "or teclado el nombre, la edad, se*o, "eso altura. 9rea objetos de la clase anterior, el "rimer objeto obtendr las anteriores 'ariables "edidas "or teclado, el segundo objeto obtendr todos los anteriores menos el "eso la altura el $ltimo "or defecto, "ara este $ltimo utiliza los m!todos set "ara darle a los atributos un 'alor. Para cada objeto, deber com"robar si esta en su "eso ideal, tiene sobre"eso o "or debajo de su "eso ideal con un mensaje. &ndicar "ara cada objeto si es maor de edad. Por $ltimo, mostrar la informaci5n de cada objeto. 9rear el diagrama de clases.
/0T!: /o necesariamente se debe aplicar herencia, en este ejercicio practicaran varios conceptos mencionados en clase.
EJERCICIO 3 9rearemos una su"er clase llamada Electrodomestico con las siguientes caractersticas: Sus atributos son precio base, color, consumo ener!tico (letras entre 8 ;) peso. &ndica que se "odrn heredar. Por defecto, el color sera blanco, el consumo energ!tico sera ;, el "recio
g. +sa constantes "ara ello. -os colores dis"onibles son blanco, negro, rojo, azul gris. No im"orta si el nombre esta en ma$sculas o en min$sculas. -os constructores que se im"lementaran sern
o
+n constructor "or defecto.
o
+n constructor con el "recio "eso. 7l resto "or defecto.
o
+n constructor con todos los atributos.
-os m!todos que im"lementara sern:
o
M!todos get de todos los a tributos.
o o o
comprobarConsumoEneretico(char letra): com"rueba que la letra es correcta, sino es correcta usara la letra "or defecto. Se in'ocara al crear el objeto no sera 'isible. comprobarColor(Strin color): com"rueba que el color es correcto, sino lo es usa el color "or defecto. Se in'ocara al crear el objeto no sera 'isible. precio"inal(): seg$n el consumo energ!tico, aumentara su "recio, seg$n su tama#o, tambi!n. 7sta es la lista de "recios:
#etra
Precio
8
3 =
<
6 =
9
@ =
%
> =
7
=
;
3 =
%amao
Precio
7ntre 3A g
3 =
7ntre 1 BA g
> =
7ntre > CA g
6 =
Maor que 6 g
3 =
9rearemos una subclase llamada #a$adora con las siguientes caractersticas: Su atributo es cara, ademas de los atributos heredados. Por defecto, la carga es de > g. +sa una constante "ara ello. -os constructores que se im"lementaran sern:
o
+n constructor "or defecto.
o
+n constructor con el "recio "eso. 7l resto "or defecto.
o
+n constructor con la carga el resto de atributos heredados. ?ecuerda que debes llamar al constructor de la clase "adre.
-os m!todos que se im"lementara sern:
o
M!todo get de carga.
o
precio"inal():, si tiene una carga maor de g, aumentara el "recio > =, sino es as no se incrementara el "recio. -lama al m!todo "adre a#ade el c5digo necesario. ?ecuerda que las condiciones que hemos 'isto en la clase 7lectrodomestico tambi!n deben afectar al "recio.
9rearemos una subclase llamada %ele$ision con las siguientes caractersticas: Sus atributos son resoluci&n (en "ulgadas) sintoni'ador %D% (booleano), ademas de los atributos heredados. Por defecto, la resoluci5n sera de 1 "ulgadas el sintonizador sera false. -os constructores que se im"lementaran sern:
o
+n constructor "or defecto.
o
+n constructor con el "recio "eso. 7l resto "or defecto.
o
+n constructor con la resoluci5n, sintonizador 4%4 el resto de atributos heredados. ?ecuerda que debes llamar al constructor de la clase "adre.
-os m!todos que se im"lementara sern:
o
M!todo get de resoluci5n sintonizador 4%4.
o
precio"inal(): si tiene una resoluci5n maor de B "ulgadas, se incrementara el "recio un D si tiene un sintonizador 4%4 incor"orado, aumentara > =. ?ecuerda que las condiciones que hemos 'isto en la clase 7lectrodomestico tambi!n deben afectar al "recio.
8hora crea una clase ejecutable que realice lo siguiente: 9rea un arra de 7lectrodomesticos de 3 " osiciones. 8signa a cada "osici5n un objeto de las clases anteriores con los 'alores que desees. 8hora, recorre este arra ejecuta el m!todo "recio;inal(). %ebers mostrar el "recio de cada clase, es decir, el "recio de todas las tele'isiones "or un lado, el de las la'adoras "or otro la suma de los 7lectrodomesticos ("uedes crear objetos 7lectrodomestico, "ero recuerda que 4ele'ision -a'adora tambi!n son electrodom!sticos). &n'estigar el uso o"erador instanceof. Por ejem"lo, si tenemos un 7lectrodomestico con un "recio final de , una la'adora de 1 una tele'isi5n de >, el resultado final sera de 3 (E1E>) "ara electrodom!sticos, 1 "ara la'adora > "ara tele'isi5n.
EJERCICIO Sean las siguientes clases class Animal { public void sonido(){ System. out.println("Grunt"); }
} class Muflon extends Animal { public void sonido(){ System. out.println("MOOOO!"); } public void salto() { System. out.println("hop!"); }
} class Armadillo extends Animal {} class Guepardo extends Animal { public void sonido(){ System. out.println("Groar!"); }
}
1ado el siguiente programa 2qu) instrucciones /0 provocan un error de compilación y porque3 class TestAnimal { public static void main(Strin# ars){ adoptaAnimal(new Armadillo());
O$%e&t o ' new Armadillo(); Armadillo a ' new Animal(); Armadillo a ' new Muflon(); } private static void adoptaAnimal(Animal a){
System.out.println("en* &a&horrito!"); } }
a( 1ado el siguiente programa ubicado al principio del código class TestAnimal{ public static void main(Strin# ars){
Animal a ' new Armadillo(); a.sonido(); a ' new Muflon(); a.sonido(); a ' new Guepardo(); a.sonido(); } } +. ++.
+++.
},-ual es el resultado de la e%e&u&in/ Siuiendo las relas de la heren&ia* ,0ue m1todos2&lases de$e implementar y2o modifi&ar para 0ue &ada animal dia G345T/ ,-mo o$liar a 0ue &ada Animal tena un salto propio/ ,-omo afe&ta la modifi&a&in propuesta a las &lases deri6adas/
EJERCICIO !
-. Ejecute paso a paso el siguiente codigo y 4nalmente indique cual es la salida en consola. class TestMilpies{ public static void main(Strin# ars){
Milpies7s0uiador m ' new Milpies7s0uiador(); } }
class Milpies{ protected int numero8e9ies; public Milpies(){
numero8e9ies ' :::; es&ri$e9ies(); } public void es&ri$e9ies(){
System.out.println("4n Milpi1s o -o&hinilla tiene " numero8e9ies " pies"); } } class Milpies7s0uiador extends Milpies{ protected int numero8e9ies3otos; public Milpies7s0uiador(){ numero8e9ies3otos ' ::;} public void es&ri$e9ies(){
System.out.println("A un Milpi1s es0uiador le 0uedan " (numero8e9ies < numero8e9ies3otos)" pies"); } }