You are on page 1of 28

FACULTAD DE INGENIERA

ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS

EJERCICIOS RESUELTOS
1) Haz una clase llamada Persona que siga las siguientes condiciones:
Sus atributos son: nombre, edad, DNI, sexo (H hombre, M mujer),
peso y altura. No queremos que se accedan directamente a ellos.
Piensa que modificador de acceso es el ms adecuado, tambin su tipo.
Si quieres aadir algn atributo puedes hacerlo.
Por defecto, todos los atributos menos el DNI sern valores por defecto
segn su tipo (0 nmeros, cadena vaca para String, etc.). Sexo ser
hombre por defecto, usa una constante para ello.
Se implantarn varios constructores:
Un constructor por defecto.
Un constructor con el nombre, edad y sexo, el resto por defecto.
Un constructor con todos los atributos como parmetro.
Los mtodos que se implementaran son:
calcularIMC(): Calculara si la persona est en su peso ideal (peso
en kg/(altura^2 en m)), devuelve un -1 si est por debajo de su peso
ideal, un 0 si est en su peso ideal y un 1 si tiene sobrepeso .Te
recomiendo que uses constantes para devolver estos valores.
esMayorDeEdad(): Indica si es mayor de edad, devuelve un
booleano.
comprobarSexo(char sexo): Comprueba que el sexo introducido es
correcto. Si no es correcto, ser H. No ser visible al exterior.
toString(): Devuelve toda la informacin del objeto.
generaDNI(): Genera un numero aleatorio de 8 cifras, genera a
partir de este su nmero su letra correspondiente. Este mtodo ser
invocado cuando se construya el objeto. Puedes dividir el mtodo
para que te sea ms fcil. No ser visible al exterior.
Mtodos set de cada parmetro, excepto de DNI.
Ahora, crea una clase ejecutable que haga lo siguiente:
Pide por teclado el nombre, la edad, sexo, peso y altura.
Crea 3 objetos de la clase anterior, el primer objeto obtendr las anteriores
variables pedidas por teclado, el segundo objeto obtendr todos los
anteriores menos el peso y la altura y el ltimo por defecto, para este
ltimo utiliza los mtodos set para darle a los atributos un valor.
Para cada objeto, deber comprobar si est en su peso ideal, tiene
sobrepeso o por debajo de su peso ideal con un mensaje.
Indicar para cada objeto si es mayor de edad.
Por ltimo, mostrar la informacin de cada objeto.
Puedes usar mtodos en la clase ejecutable, para que sea ms fcil.
SOLUCIN:
/**
* Clase Persona
*
* Contiene informacin de una persona
*

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
* @author Krrish
* @version 1.0
*/
public class Persona {
//Constantes
/**
* Sexo por defecto
*/
private final static char SEXO_DEF='H';
/**
* El peso de la persona est por debajo del peso ideal
*/
public final int INFRAPESO=-1;
/**
* El peso de la persona est en su peso ideal
*/
public final int PESO_IDEAL=0;
/**
* El peso de la persona est por encima del peso ideal
*/
private final int SOBREPESO=1;
//Atributos
/**
* Nombre de la persona
*/
private String nombre;
/**
* Edad de la persona
*/
private int edad;
/**
* DNI de la persona, se genera al construir el objeto
*/
private String DNI;
/**
* Sexo de la persona, H hombre M mujer
*/
private char sexo;
/**
* Peso de la persona
*/
private double peso;
/**
* Altura de la persona
*/
private double altura;
//Mtodos privados
private void comprobarSexo(char sexo){
//Si el sexo no es una H o una M, por defecto es H
if(sexo!='H' && sexo!='M'){
this.sexo='H';

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
}else{
this.sexo=sexo;
}
}
private void generarDni(){
final int divisor=23;
//Generamos un nmero de 8 dgitos
int numDNI=((int)Math.floor(Math.random()*(10000000010000000)+10000000));
int res=numDNI-(numDNI/divisor*divisor);
//Calculamos la letra del DNI
char letraDNI=generaLetraDNI(res);
//Pasamos el DNI a String
DNI=Integer.toString(numDNI)+letraDNI;
}
private char generaLetraDNI(int res){
char letras[]={'T', 'R', 'W', 'A', 'G', 'M', 'Y',
'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z',
'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'};
return letras[res];
}
//Mtodos pblicos
/**
* Modifica el nombre de la persona
* @param nombre a cambiar
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}
/**
* Modifica la edad de la persona
* @param edad a cambiar
*/
public void setEdad(int edad) {
this.edad = edad;
}
/**
* Modifica el sexo de la persona, comprueba que es correcto
* @param sexo a cambiar
*/
public void setSexo(char sexo) {
this.sexo = sexo;
}
/**
* Modifica el peso de la persona
* @param peso a cambiar
*/
public void setPeso(double peso) {
this.peso = peso;
}
/**

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
* Modifica la altura de la persona
* @param altura a cambiar
*/
public void setAltura(double altura) {
this.altura = altura;
}
/**
* Calcula el ndice de masa corporal
* @return cdigo numrico
*<ul><li>-1: la persona est por debajo de su peso ideal</li>
*<li>0: la persona est en su peso ideal</li>
*<li>1: la persona est por encima de su peso ideal</li></ul>
*/
public int calcularIMC(){
//Calculamos el peso de la persona
double pesoActual=peso/(Math.pow(altura, 2));
//Segn el peso, devuelve un codigo
if (pesoActual>=20 && pesoActual<=25){
return PESO_IDEAL;
}else if(pesoActual<20){
return INFRAPESO;
}else{
return SOBREPESO;
}
}
/**
* Indica si la persona es mayor de edad
* @return true si es mayor de edad y false es menor de edad
*/
public boolean esMayorDeEdad(){
boolean mayor=false;
if (edad>=18){
mayor=true;
}
return mayor;
}
/**
* Devuelve informacin del objeto
* @return cadena con toda la informacin
*/
public String toString(){
String sexo="";
if(this.sexo=='H'){
sexo="hombre";
}else{
sexo="mujer";
}
return "Informacin de la persona:\n" +
"Nombre: "+nombre+"\n" +
"Sexo: "+sexo+"\n" +
"Edad: "+edad+" aos\n" +
"DNI: "+DNI+"\n" +
"Peso: "+peso+" kg\n" +
"Altura: "+altura+" metros\n";
}
/**
* Constructor por defecto
*/
public Persona(){
this("", 0, SEXO_DEF, 0, 0);

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
}
/**
* Constructor con 3 parametroe
* @param nombre de la persona
* @param edad de la persona
* @param sexo de la persona
*/
public Persona(String nombre, int edad, char sexo){
this(nombre, edad, sexo, 0, 0);
}
/**
* Constructor con 5 parametros
* @param nombre de la persona
* @param edad de la persona
* @param sexo de la persona
* @param peso de la persona
* @param altura de la persona
*/
public Persona(String nombre, int edad, char sexo, double peso, double
altura){
this.nombre=nombre;
this.edad=edad;
this.peso=peso;
this.altura=altura;
generarDni();
comprobarSexo(sexo);
}
}
/**
* Clase Ejecutable
*
* Ejecuta la clase persona
*
* @author Krrish
* @version 1.0
*/
import javax.swing.JOptionPane;
public class PersonaApp {
public static void main(String[] args) {
//Introducimos los datos
String nombre=JOptionPane.showInputDialog("Introduce el nombre");
String texto=JOptionPane.showInputDialog("Introduce la edad");
int edad=Integer.parseInt(texto);
texto=JOptionPane.showInputDialog("Introduce el sexo");
char sexo=texto.charAt(0);
texto=JOptionPane.showInputDialog("Introduce el peso");
double peso=Double.parseDouble(texto);
texto=JOptionPane.showInputDialog("Introduce la altura");
double altura=Double.parseDouble(texto);
//Creamos objetos con cada constructor
Persona persona1=new Persona();
Persona persona2=new Persona(nombre, edad, sexo);
Persona persona3=new Persona(nombre, edad, sexo, peso, altura);

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
//Los datos que no estn completos los insertamos con los mtodos set
persona1.setNombre("Laura");
persona1.setEdad(30);
persona1.setSexo('M');
persona1.setPeso(60);
persona1.setAltura(1.60);
persona2.setPeso(90.5);
persona2.setAltura(1.80);
//Usamos mtodos para realizar la misma accin para cada objeto
System.out.println("Persona1");
MuestraMensajePeso(persona1);
MuestraMayorDeEdad(persona1);
MuestraInformacion(persona1);
System.out.println("Persona2");
MuestraMensajePeso(persona2);
MuestraMayorDeEdad(persona2);
MuestraInformacion(persona2);
System.out.println("Persona3");
MuestraMensajePeso(persona3);
MuestraMayorDeEdad(persona3);
MuestraInformacion(persona3);
}
public static void MuestraMensajePeso(Persona p){
int IMC=p.calcularIMC();
if(IMC==p.PESO_IDEAL){
System.out.println("La persona est en su peso ideal");
}else if (IMC==p.INFRAPESO){
System.out.println("La persona est por debajo de su peso ideal");
}else{
System.out.println("La persona est por encima de su peso ideal");
}
}
public static void MuestraMayorDeEdad(Persona p){
boolean mayor=p.esMayorDeEdad();
if(mayor){
System.out.println("La persona es mayor de edad");
}else{
System.out.println("La persona no es mayor de edad");
}
}
public static void MuestraInformacion(Persona p){
//Invoca el metodo toString
System.out.println(p);
}
}

2) Haz una clase llamada Password que siga las siguientes condiciones:
Que tenga los atributos longitud y contrasea. Por defecto, la
longitud ser de 8.
Los constructores sern los siguiente:
Un constructor por defecto.

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
Un constructor con la longitud que nosotros le pasemos. Generar una
contrasea aleatoria con esa longitud.
Los mtodos que implementa sern:
esFuerte(): Devuelve un booleano si es fuerte o no, para que sea
fuerte debe tener ms de 2 maysculas, ms de 1 minscula y ms de
5 nmeros.
generarPassword(): Genera la contrasea del objeto con la longitud
que tenga.
Mtodo get para contrasea y longitud.
Mtodo set para longitud.
Ahora, crea una clase clase ejecutable:
Crea un array de Passwords con el tamao que t le indiques por teclado.
Crea un bucle que cree un objeto para cada posicin del array.
Indica tambin por teclado la longitud de los Passwords (antes de bucle).
Crea otro array de booleanos donde se almacene si el password del array
de Password es o no fuerte (usa el bucle anterior).
Al final, muestra la contrasea y si es o no fuerte (usa el bucle anterior).
Usa este simple formato:
contrasea1 valor_booleano1.
contrasea2 valor_bololeano2.

SOLUCIN:
/**
* Clase Password
*
* Contiene una contrasea y una longitud
*
* @author Krrish
* @version 1.0
*/
public class Password {
//Constantes
/**
* Longitud por defecto
*/
private final static int LONG_DEF=8;
//Atributos
/**
* Longitud de la contrasea
*/
private int longitud;
/**
* Caracteres de la contrasea
*/
private String contrasea;
//Mtodos pblicos
/**
* Devuelve la longitud
* @return longitud de la contrasea
*/
public int getLongitud() {

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
return longitud;
}
/**
* Modifica la longitud de la contrasea
* @param longitud a cambiar
*/
public void setLongitud(int longitud) {
this.longitud = longitud;
}
/**
* Devuelve la contrasea
* @return contrasea
*/
public String getContrasea() {
return contrasea;
}
/**
* Genera una contrasea al azar con la longitud que este definida
* @return contrasea
*/
public String generaPassword (){
String password="";
for (int i=0;i<longitud;i++){
//Generamos un numero aleatorio, segn este elige si aadir una
minuscula, mayuscula o numero
int eleccion=((int)Math.floor(Math.random()*3+1));
if (eleccion==1){
char minusculas=(char)((int)Math.floor(Math.random()*(12397)+97));
password+=minusculas;
}else{
if(eleccion==2){
char mayusculas=(char)((int)Math.floor(Math.random()*(9165)+65));
password+=mayusculas;
}else{
char numeros=(char)((int)Math.floor(Math.random()*(5848)+48));
password+=numeros;
}
}
}
return password;
}
/**
* Comprueba la fortaleza de la contrasea
* @return
*/
public boolean esFuerte(){
int cuentanumeros=0;
int cuentaminusculas=0;
int cuentamayusculas=0;
//Vamos caracter a caracter y comprobamos que tipo de caracter es
for (int i=0;i<contrasea.length();i++){
if (contrasea.charAt(i)>=97 && contrasea.charAt(i)<=122){
cuentaminusculas+=1;
}else{
if (contrasea.charAt(i)>=65 && contrasea.charAt(i)<=90){

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
cuentamayusculas+=1;
}else{
cuentanumeros+=1;
}
}
}
//Si la constrasea tiene ms de 5 numeros, ms de 1 minuscula y ms
de 2 mayusculas
if (cuentanumeros>=5 && cuentaminusculas>=1 && cuentamayusculas>=2){
return true;
}else{
return false;
}
}
//Constructores
/**
* Crea una contrasea al azar
*/
public Password (){
this(LONG_DEF);
}
/**
* La contrasea sera la pasada por parametro
* @param password
*/
public Password (int longitud){
this.longitud=longitud;
contrasea=generaPassword();
}
}
/**
* Clase Ejecutable
*
* Ejecuta la clase password
*
* @author Krrish
* @version 1.0
*/
import javax.swing.JOptionPane;
public class PasswordApp {
public static void main(String[] args) {
//Introducimos el tamao del array y la longitud del password
String texto=JOptionPane.showInputDialog("Introduce un tamao para el
array");
int tamanio=Integer.parseInt(texto);
texto=JOptionPane.showInputDialog("Introduce la longitud del password");
int longitud=Integer.parseInt(texto);
//Creamos los arrays
Password listaPassword[]=new Password[tamanio];
boolean fortalezaPassword[]=new boolean[tamanio];
//Creamos objetos, indicamos si es fuerte y mostramos la contrasea y su
fortaleza.
for(int i=0;i<listaPassword.length;i++){
listaPassword[i]=new Password(longitud);
fortalezaPassword[i]=listaPassword[i].esFuerte();

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
System.out.println(listaPassword[i].getContrasea()+"
"+fortalezaPassword[i]);
}
}
}

3) Crearemos una superclase llamada Electrodomstico con las siguientes


caractersticas:
Sus atributos son precio base, color, consumo energtico (letras
entre A y F) y peso. Indica que se podrn heredar.
Por defecto, el color ser blanco, el consumo energtico ser F, el
precioBase es de 100 y el peso de 5 kg. Usa constantes para ello.
Los colores disponibles son blanco, negro, rojo, azul y gris. No importa
si el nombre est en maysculas o en minsculas.
Los constructores que se implementaran sern
Un constructor por defecto.
Un constructor con el precio y peso. El resto por defecto.
Un constructor con todos los atributos.
Los mtodos que implementara sern:
Mtodos get de todos los atributos.
comprobarConsumoEnergetico(char letra): Comprueba que la
letra es correcta, sino es correcta usar la letra por defecto. Se
invocar al crear el objeto y no ser visible.
comprobarColor(String color): Comprueba que el color es
correcto, sino lo es usa el color por defecto. Se invocara al crear el
objeto y no ser visible.
precioFinal(): Segn el consumo energtico, aumentara su precio, y
segn su tamao, tambin. Esta es la lista de precios:
LETRA
A
B
C
D
E
F
TAMAO
Entre 0 y 19 kg.
Entre 20 y 49 kg.
Entre 50 y 79 kg.
Mayor que 80 kg.

PRECIO
100
80
60
50
30
10
PRECIO
10
50
80
100

Crearemos una subclase llamada Lavadora con las siguientes caractersticas:


Su atributo es carga, adems de los atributos heredados.
Por defecto, la carga es de 5 kg. Usa una constante para ello.
Los constructores que se implementaran sern:
Un constructor por defecto.
Un constructor con el precio y peso. El resto por defecto.
ING. DICK DAZ DELGADO
TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
Un constructor con la carga y el resto de atributos heredados.
Recuerda que debes llamar al constructor de la clase padre.
Los mtodos que se implementara sern:
Mtodo get de carga.
precioFinal(): Si tiene una carga mayor de 30 kg, aumentara el
precio 50 , sino es as no se incrementara el precio. Llama al mtodo
padre y aade el cdigo necesario. Recuerda que las condiciones que
hemos visto en la clase Electrodomstico tambin deben afectar al
precio.
Crearemos una subclase llamada Televisin con las siguientes
caractersticas:
Sus atributos son resolucin (en pulgadas) y sintonizador TDT
(booleano), adems de los atributos heredados.
Por defecto, la resolucin ser de 20 pulgadas y el sintonizador ser
false.
Los constructores que se implementaran sern:
Un constructor por defecto.
Un constructor con el precio y peso. El resto por defecto.
Un constructor con la resolucin, sintonizador TDT y el resto de
atributos heredados. Recuerda que debes llamar al constructor de la
clase padre.
Los mtodos que se implementara sern:
Mtodo get de resolucin y sintonizador TDT.
precioFinal(): Si tiene una resolucin mayor de 40 pulgadas, se
incrementara el precio un 30% y si tiene un sintonizador TDT
incorporado, aumentara 50 . Recuerda que las condiciones que
hemos visto en la clase Electrodomstico tambin deben afectar al
precio.
Ahora crea una clase ejecutable que realice lo siguiente:
Crea un array de Electrodomesticos de 10 posiciones.
Asigna a cada posicin un objeto de las clases anteriores con los valores
que desees.
Ahora, recorre este array y ejecuta el mtodo precioFinal().
Debers mostrar el precio de cada clase, es decir, el precio de todas las
televisiones por un lado, el de las lavadoras por otro y la suma de los
Electrodomesticos (puedes crear objetos Electrodomestico, pero
recuerda que Television y Lavadora tambin son electrodomsticos).
Recuerda el uso operador instanceof.
Por ejemplo, si tenemos un Electrodomestico con un precio final de 300, una
lavadora de 200 y una televisin de 500, el resultado final sera de 1000
(300+200+500) para electrodomsticos, 200 para lavadora y 500 para
televisin.
SOLUCIN:
/**
* Clase Electrodomestico
*
* Contiene informacin de los electrodomsticos
* @author Krrish
* @version 1.0

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
*/
public class Electrodomestico {
//Constantes
/**
* Color por defecto
*/
protected final static String COLOR_DEF="blanco";
/**
* Consumo energtico por defecto
*/
protected final static char CONSUMO_ENERGETICO_DEF='F';
/**
* Precio base por defecto
*/
protected final static double PRECIO_BASE_DEF=100;
/**
* Peso por defecto
*/
protected final static double PESO_DEF=5;
//Atributos
/**
* El precio base del electrodomstico
*/
protected double precioBase;
/**
* Color del electrodomstico
*/
protected String color;
/**
* Indica el consumo energtico del electrodomstico
*/
protected char consumoEnergetico;
/**
* Peso del electrodomstico
*/
protected double peso;
//Mtodos privados
private void comprobarColor(String color){
//Colores disponibles
String colores[]={"blanco", "negro", "rojo", "azul", "gris"};
boolean encontrado=false;
for(int i=0;i<colores.length && !encontrado;i++){
if(colores[i].equals(color)){
encontrado=true;
}
}
if(encontrado){
this.color=color;
}else{

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
this.color=COLOR_DEF;
}
}
/**
* Comprueba el consumo energtico
* Solo maysculas, si es una 'a' no lo detecta como una 'A'
* @param consumoEnergetico
*/
public void comprobarConsumoEnergetico(char consumoEnergetico){
if(consumoEnergetico>=65 && consumoEnergetico<=70){
this.consumoEnergetico=consumoEnergetico;
}else{
this.consumoEnergetico=CONSUMO_ENERGETICO_DEF;
}
}
//Mtodos pblicos
/**
* Devuelve el precio base del electrodomstico
* @return precio base del electrodomstico
*/
public double getPrecioBase() {
return precioBase;
}
/**
* Devuelve el color del electrodomestico
* @return color del elesctrodomestico
*/
public String getColor() {
return color;
}
/**
* Devuelve el consumo energtico del electrodomstico
* @return consumo energtico del electrodomstico
*/
public char getConsumoEnergetico() {
return consumoEnergetico;
}
/**
* Devuelve el peso del electrodomstico
* @return peso del electrodomstico
*/
public double getPeso() {
return peso;
}
/**
* Precio final del electrodomstico
* @return precio final del electrodomstico
*/
public double precioFinal(){
double plus=0;
switch(consumoEnergetico){
case 'A':
plus+=100;
break;
case 'B':
plus+=80;
break;

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
case 'C':
plus+=60;
break;
case 'D':
plus+=50;
break;
case 'E':
plus+=30;
break;
case 'F':
plus+=10;
break;
}
if(peso>=0 && peso<19){
plus+=10;
}else if(peso>=20 && peso<49){
plus+=50;
}else if(peso>=50 && peso<=79){
plus+=80;
}else if(peso>=80){
plus+=100;
}
return precioBase+plus;
}
//Constructores
/**
* Contructor por defecto
*/
public Electrodomestico(){
this(PRECIO_BASE_DEF, PESO_DEF, CONSUMO_ENERGETICO_DEF, COLOR_DEF);
}
/**
* Contructor con 2 parametros
* @param precioBase del electrodomestico
* @param peso del electrodomestico
*/
public Electrodomestico(double precioBase, double peso){
this(precioBase, peso, CONSUMO_ENERGETICO_DEF, COLOR_DEF);
}
/**
* Constructor con 4 parametros
* @param precioBase
* @param peso
* @param consumoEnergetico
* @param color
*/
public Electrodomestico(double precioBase, double peso, char
consumoEnergetico, String color){
this.precioBase=precioBase;
this.peso=peso;
comprobarConsumoEnergetico(consumoEnergetico);
comprobarColor(color);
}
}
* Clase Ejecutable
*

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
* Ejecuta la clase persona
/**
* Clase Lavadora
*
* Contiene informacion de lavador
*
* @author Fernando
* @version 1.0
*/
public class Lavadora extends Electrodomestico{
//Constantes
/**
* Carga por defecto
*/
private final static int CARGA_DEF=5;
//Atributos
/**
* Carga de la lavadora
*/
private int carga;
//Mtodos publicos
/**
* Devuelve la carga de la lavadora
* @return
*/
public int getCarga() {
return carga;
}
/**
* Precio final de la lavadora
* @return precio final de la lavadora
*/
public double precioFinal(){
//Invocamos el mtodo precioFinal del mtodo padre
double plus=super.precioFinal();
//aadimos el cdigo necesario
if (carga>30){
plus+=50;
}
return plus;
}
//Constructor
/**
* Contructor por defecto
*/
public Lavadora(){
this(PRECIO_BASE_DEF, PESO_DEF, CONSUMO_ENERGETICO_DEF, COLOR_DEF,
CARGA_DEF);
}
/**
* Constructor con 2 parametros

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
* @param precioBase
* @param peso
*/
public Lavadora(double precioBase, double peso){
this(precioBase, peso, CONSUMO_ENERGETICO_DEF, COLOR_DEF, CARGA_DEF);
}
/**
* Constructor con 5 parametros
* @param precioBase
* @param peso
* @param consumoEnergetico
* @param color
* @param carga
*/
public Lavadora(double precioBase, double peso, char consumoEnergetico,
String color, int carga){
super(precioBase,peso, consumoEnergetico,color);
this.carga=carga;
}
}
/**
* Clase Television
*
* Contiene informacion de una television
*
* @author Fernando
* @version 1.0
*/
public class Television extends Electrodomestico{
//Constantes
/**
* Resolucion por defecto
*/
private final static int RESOLUCION_DEF=20;
//Atributos
/**
* Resolucion del televisor
*/
private int resolucion;
/**
* Indica si tiene o no sintonizadorTDT
*/
private boolean sintonizadorTDT;
//Mtodos publicos
/**
* Precio final de la television
* @return precio final de la television
*/
public double precioFinal(){
//Invocamos el mtodo precioFinal del mtodo padre
double plus=super.precioFinal();
//Aadimos el codigo necesario
if (resolucion>40){

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
plus+=precioBase*0.3;
}
if (sintonizadorTDT){
plus+=50;
}
return plus;
}
//Constructor
/**
* Constructor por defecto
*/
public Television(){
this(PRECIO_BASE_DEF, PESO_DEF, CONSUMO_ENERGETICO_DEF, COLOR_DEF,
RESOLUCION_DEF, false);
}
/**
* Constructor con 2 parametros
* @param precioBase
* @param peso
*/
public Television(double precioBase, double peso){
this(precioBase, peso, CONSUMO_ENERGETICO_DEF, COLOR_DEF, RESOLUCION_DEF,
false);
}
/**
* Contructor con 6 parametros
* @param precioBase
* @param peso
* @param consumoEnergetico
* @param color
* @param resolucion
* @param sintonizadorTDT
*/
public Television(double precioBase, double peso, char consumoEnergetico,
String color, int resolucion, boolean sintonizadorTDT){
super(precioBase, peso, consumoEnergetico, color);
this.resolucion=resolucion;
this.sintonizadorTDT=sintonizadorTDT;
}
}
public static void main(String[] args) {
//Creamos un array de Electrodomesticos
Electrodomestico listaElectrodomesticos[]=new Electrodomestico[10];
//Asignamos cada una de las posiciones como queramos
listaElectrodomesticos[0]=new Electrodomestico(200, 60, 'C', "Verde");
listaElectrodomesticos[1]=new Lavadora(150, 30);
listaElectrodomesticos[2]=new Television(500, 80, 'E', "negro", 42,
false);
listaElectrodomesticos[3]=new
listaElectrodomesticos[4]=new
listaElectrodomesticos[5]=new
listaElectrodomesticos[6]=new
listaElectrodomesticos[7]=new
listaElectrodomesticos[8]=new

Electrodomestico();
Electrodomestico(600, 20, 'D', "gris");
Lavadora(300, 40, 'Z', "blanco", 40);
Television(250, 70);
Lavadora(400, 100, 'A', "verde", 15);
Television(200, 60, 'C', "naranja", 30,

true);

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
listaElectrodomesticos[9]=new Electrodomestico(50, 10);
//Creamos las variables que usaremos para almacenar la suma de los
precios
double sumaElectrodomesticos=0;
double sumaTelevisiones=0;
double sumaLavadoras=0;
//Recorremos el array invocando el metodo precioFinal
for(int i=0;i<listaElectrodomesticos.length;i++){
/*
* Cunado una Television o una Lavadora este en la posicion del array
actual,
* pasara por su clase y por la de electrodomestico, ya que una
television es un electrodomestico.
* Ejecutamos en cada uno su propia version del metodo precioFinal
*/
if(listaElectrodomesticos[i] instanceof Electrodomestico){
sumaElectrodomesticos+=listaElectrodomesticos[i].precioFinal();
}
if(listaElectrodomesticos[i] instanceof Lavadora){
sumaLavadoras+=listaElectrodomesticos[i].precioFinal();
}
if(listaElectrodomesticos[i] instanceof Television){
sumaTelevisiones+=listaElectrodomesticos[i].precioFinal();
}
}
//Mostramos los resultados
System.out.println("La suma del precio de los electrodomesticos es de
"+sumaElectrodomesticos);
System.out.println("La suma del precio de las lavadoras es de
"+sumaLavadoras);
System.out.println("La suma del precio de las televisiones es de
"+sumaTelevisiones);
}
}

4) Crearemos una clase llamada Serie con las siguientes caractersticas:


Sus atributos son titulo, numero de temporadas, entregado, genero
y creador.
Por defecto, el nmero de temporadas es de 3 temporadas y entregado
false. El resto de atributos sern valores por defecto segn el tipo del
atributo.
Los constructores que se implementaran sern:
Un constructor por defecto.
Un constructor con el ttulo y creador. El resto por defecto.
Un constructor con todos los atributos, excepto de entregado.
Los mtodos que se implementara sern:
Mtodos get de todos los atributos, excepto de entregado.
Mtodos set de todos los atributos, excepto de entregado.
Sobrescribe los mtodos toString.
Crearemos una clase Videojuego con las siguientes caractersticas:
Sus atributos son titulo, horas estimadas, entregado, genero y
compaia.

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
Por defecto, las horas estimadas sern de 10 horas y entregado false. El
resto de atributos sern valores por defecto segn el tipo del atributo.
Los constructores que se implementaran sern:
Un constructor por defecto.
Un constructor con el ttulo y horas estimadas. El resto por defecto.
Un constructor con todos los atributos, excepto de entregado.
Los mtodos que se implementara sern:
Mtodos get de todos los atributos, excepto de entregado.
Mtodos set de todos los atributos, excepto de entregado.
Sobrescribe los mtodos toString.
Como vemos, en principio, las clases anteriores no son padre-hija, pero si
tienen en comn, por eso vamos a hacer una interfaz llamada Entregable con
los siguientes mtodos:
entregar(): Cambia el atributo prestado a true.
devolver(): Cambia el atributo prestado a false.
isEntregado(): Devuelve el estado del atributo prestado.
Mtodo compareTo(Object a), compara las horas estimadas en los
videojuegos y en las series el nmero de temporadas. Como parmetro que
tenga un objeto, no es necesario que implementes la interfaz Comparable.
Recuerda el uso de los casting de objetos.
Implementa los anteriores mtodos en las clases Videojuego y Serie. Ahora
crea una aplicacin ejecutable y realiza lo siguiente:
Crea dos arrays, uno de Series y otro de Videojuegos, de 5 posiciones
cada uno.
Crea un objeto en cada posicin del array, con los valores que desees,
puedes usar distintos constructores.
Entrega algunos Videojuegos y Series con el mtodo entregar().
Cuenta cuantos Series y Videojuegos hay entregados. Al contarlos,
devulvelos.
Por ltimo, indica el Videojuego tiene ms horas estimadas y la serie con
ms temporadas. Mustralos en pantalla con toda su informacin (usa el
mtodo toString()).

SOLUCIN:
/**
* Clase Serie
*
* Contiene informacion sobre una serie (en general)
* @author Fernando
* @version 1.0
*
*/
public class Serie implements Entregable{
//Constantes
/**
* Numero de temporadas por defecto
*/
private final static int NUM_TEMPORADAS_DEF=3;
/**

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
* Constante que indica que un objeto es mayor que otro
*/
public final static int MAYOR=1;
/**
* Constante que indica que un objeto es menor que otro
*/
public final static int MENOR=-1;
/**
* Constante que indica que un objeto es igual que otro
*/
public final static int IGUAL=0;
//Atributos
/**
* Titulo de la serie
*/
private String titulo;
/**
* Numero de temporadas de la serie
*/
private int numeroTemporadas;
/**
* Indica si esta entregado la serie
*/
private boolean entregado;
/**
* Genero de la serie
*/
private String genero;
/**
* Creador de la serie
*/
private String creador;
//Mtodos publicos
/**
* Devuelve el titulo de la serie
* @return titulo de la serie
*/
public String getTitulo() {
return titulo;
}
/**
* Modifica el titulo de la serie
* @param titulo a cambiar
*/
public void setTitulo(String titulo) {
this.titulo = titulo;
}
/**
* Devuelve la numeroTemporadas de la serie
* @return numeroTemporadas de la serie
*/

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
public int getnumeroTemporadas() {
return numeroTemporadas;
}
/**
* Modifica la numeroTemporadas de la serie
* @param numeroTemporadas a cambiar
*/
public void setnumeroTemporadas(int numeroTemporadas) {
this.numeroTemporadas = numeroTemporadas;
}
/**
* Devuelve el genero de la serie
* @return genero de la serie
*/
public String getGenero() {
return genero;
}
/**
* Modifica el genero de la serie
* @param genero a cambiar
*/
public void setGenero(String genero) {
this.genero = genero;
}
/**
* Devuelve el creador de la serie
* @return creador de la serie
*/
public String getcreador() {
return creador;
}
/**
* Modifica el creador de la serie
* @param creador a cambiar
*/
public void setcreador(String creador) {
this.creador = creador;
}
/**
* Cambia el estado de entregado a true
*/
public void entregar() {
entregado=true;
}
/**
* Cambia el estado de entregado a false
*/
public void devolver() {
entregado=false;
}
/**
* Indica el estado de entregado
*/
public boolean isEntregado() {
if(entregado){

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
return true;
}
return false;
}
/**
* Compara dos series segun su numero de temporadas
* @param objeto a comparar
* @return codigo numerico
* <ul>
* <li>1: La Serie 1 es mayor que la Serie 2</li>
* <li>0: Las Series son iguales</li>
* <li>-1: La Serie 1 es menor que la Serie 2</li></ul>
*/
public int compareTo(Object a) {
int estado=MENOR;
//Hacemos un casting de objetos para usar el metodo get
Serie ref=(Serie)a;
if (numeroTemporadas>ref.getnumeroTemporadas()){
estado=MAYOR;
}else if(numeroTemporadas==ref.getnumeroTemporadas()){
estado=IGUAL;
}
return estado;
}
/**
* Muestra informacion de la Serie
* @return cadena con toda la informacion de la Serie
*/
public String toString(){
return "Informacion de la Serie: n" +
"tTitulo: "+titulo+"n" +
"tNumero de temporadas: "+numeroTemporadas+"n" +
"tGenero: "+genero+"n" +
"tCreador: "+creador;
}
/**
* Indica si dos Series son iguales, siendo el titulo y creador iguales
* @param a Serie a comparar
* @return true si son iguales y false si son distintos
*/
public boolean equals(Serie a){
if (titulo.equalsIgnoreCase(a.getTitulo()) &&
creador.equalsIgnoreCase(a.getcreador())){
return true;
}
return false;
}
//Constructor
/**
* Constructor por defecto
*/
public Serie(){
this("",NUM_TEMPORADAS_DEF, "", "");
}
/**

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
* Contructor con 2 parametros
* @param titulo de la Serie
* @param creador de la Serie
*/
public Serie(String titulo, String creador){
this(titulo,NUM_TEMPORADAS_DEF, "", creador);
}
/**
* Constructor con 4 parametros
* @param titulo de la Serie
* @param numeroTemporadas de la Serie
* @param genero de la Serie
* @param creador de la Serie
*/
public Serie(String titulo, int numeroTemporadas, String genero, String
creador){
this.titulo=titulo;
this.numeroTemporadas=numeroTemporadas;
this.genero=genero;
this.creador=creador;
this.entregado=false;
}
}
/**
*
* Clase videojuego
*
* Contiene la informacion sobre un videojuego
*
* @author Fernando
* @version 1.0
*/
public class Videojuego implements Entregable{
//Constantes
/**
* Horas estimadas por defecto
*/
private final static int HORAS_ESTIMADAS_DEF=100;
/**
* Constante que indica que un objeto es mayor que otro
*/
public final static int MAYOR=1;
/**
* Constante que indica que un objeto es menor que otro
*/
public final static int MENOR=-1;
/**
* Constante que indica que un objeto es igual que otro
*/
public final static int IGUAL=0;
//Atributos
/**
* Titulo del videojuego

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
*/
private String titulo;
/**
* Horas estimadas del videojuego
*/
private int horasEstimadas;
/**
* Indica si esta o no entregado el videojuego
*/
private boolean entregado;
/**
* Genero del videojuego
*/
private String genero;
/**
* Compaia del videojuego
*/
private String compaia;
//Mtodos publicos
/**
* Devuelve el titulo del videojuego
* @return titulo del videojuego
*/
public String getTitulo() {
return titulo;
}
/**
* Modifica el titulo del videojuego
* @param titulo a cambiar
*/
public void setTitulo(String titulo) {
this.titulo = titulo;
}
/**
* Devuelve el numero de paginas del videojuego
* @return numero de paginas del videojuego
*/
public int getHorasEstimadas() {
return horasEstimadas;
}
/**
* Modifica el numero de paginas del videojuego
* @param numero de paginas a cambiar
*/
public void setHorasEstimadas(int horasEstimadas) {
this.horasEstimadas = horasEstimadas;
}
/**
* Devuelve el genero del videojuego
* @return genero del videojuego
*/
public String getGenero() {
return genero;

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
}
/**
* Modifica el genero del videojuego
* @param genero a cambiar
*/
public void setGenero(String genero) {
this.genero = genero;
}
/**
* Devuelve el compaia del videojuego
* @return compaia del videojuego
*/
public String getcompaia() {
return compaia;
}
/**
* Modifica el compaia del videojuego
* @param compaia a cambiar
*/
public void setcompaia(String compaia) {
this.compaia = compaia;
}
/**
* Cambia el estado de entregado a true
*/
public void entregar() {
entregado=true;
}
/**
* Cambia el estado de entregado a false
*/
public void devolver() {
entregado=false;
}
/**
* Indica el estado de entregado
*/
public boolean isEntregado() {
if(entregado){
return true;
}
return false;
}
/**
* Compara dos videojuegos segun el numero de paginas
* @param objeto a comparar
* @return codigo numerico
* <ul>
* <li>1: El videojuego 1 es mayor que el videojuego 2</li>
* <li>0: Los videojuegos son iguales</li>
* <li>-1: El videojuego 1 es menor que el videojuego 2</li></ul>
*/
public int compareTo(Object a) {
int estado=MENOR;
//Hacemos un casting de objetos para usar el metodo get

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
Videojuego ref=(Videojuego)a;
if (horasEstimadas>ref.getHorasEstimadas()){
estado=MAYOR;
}else if(horasEstimadas==ref.getHorasEstimadas()){
estado=IGUAL;
}
return estado;
}
/**
* Muestra informacion del videojuego
* @return cadena con toda la informacion del videojuego
*/
public String toString(){
return "Informacion del videojuego: n" +
"tTitulo: "+titulo+"n" +
"tHoras estimadas: "+horasEstimadas+"n" +
"tGenero: "+genero+"n" +
"tcompaia: "+compaia;
}
/**
* Indica si dos videojuegos son iguales, siendo el titulo y compaia iguales
* @param a videojuego a comparar
* @return true si son iguales y false si son distintos
*/
public boolean equals(Videojuego a){
if (titulo.equalsIgnoreCase(a.getTitulo()) &&
compaia.equalsIgnoreCase(a.getcompaia())){
return true;
}
return false;
}
//Constructor
/**
* Constructo por defecto
*/
public Videojuego(){
this("",HORAS_ESTIMADAS_DEF, "", "");
}
/**
* Constructor con 2 parametros
* @param titulo del videojuego
* @param compaia del videojuego
*/
public Videojuego(String titulo, String compaia){
this(titulo,HORAS_ESTIMADAS_DEF, "", compaia);
}
/**
* Constructor con 4 parametros
* @param titulo del videojuego
* @param horas estimadas del videojuego
* @param genero del videojuego
* @param compaia del videojuego
*/
public Videojuego(String titulo, int horasEstimadas, String genero, String
compaia){
this.titulo=titulo;

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
this.horasEstimadas=horasEstimadas;
this.genero=genero;
this.compaia=compaia;
this.entregado=false;
}
}
/**
*
* Interface Entregable
*
* Contiene la informacion sobre un videojuego
*
* @author Fernando
* @version 1.0
*/
public interface Entregable {
public void entregar();
public void devolver();
public boolean isEntregado();
public int compareTo(Object a);
}
/**
*
* Clase Ejecutable
*
* Contiene la informacion sobre un videojuego
*
* @author Fernando
* @version 1.0
*/
public class EntregablesApp {
public static void main(String[] args) {
//Creamos dos arrays de cada tipo de objeto
Serie listaSeries[]=new Serie[5];
Videojuego listaVideojuegos[]=new Videojuego[5];
//Creamos un objeto en cada posicion del array
listaSeries[0]=new Serie();
listaSeries[1]=new Serie("Juego de tronos", "George R. R. Martin ");
listaSeries[2]=new Serie("Los Simpsons", 25, "Humor", "Matt Groening");
listaSeries[3]=new Serie("Padre de familia", 12 ,"Humor", "Seth
MacFarlane");
listaSeries[4]=new Serie("Breaking Bad", 5, "Thriller", "Vince
Gilligan");
listaVideojuegos[0]=new Videojuego();
listaVideojuegos[1]=new Videojuego("Assasin creed 2", 30, "Aventura",
"EA");
listaVideojuegos[2]=new Videojuego("God of war 3", "Santa Monica");
listaVideojuegos[3]=new Videojuego("Super Mario 3DS", 30, "Plataforma",
"Nintendo");
listaVideojuegos[4]=new Videojuego("Final fantasy X", 200, "Rol", "Square
Enix");
//entregamos algunos videojuegos y series
listaSeries[1].entregar();
listaSeries[4].entregar();

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA DE SISTEMAS
listaVideojuegos[0].entregar();
listaVideojuegos[3].entregar();
//Recorremos los arrays para contar cuantos entregados hay, tambien los
devolvemos
int entregados=0;
for(int i=0;i<listaSeries.length;i++){
if(listaSeries[i].isEntregado()){
entregados+=1;
listaSeries[i].devolver();
}
if(listaVideojuegos[i].isEntregado()){
entregados+=1;
listaVideojuegos[i].devolver();
}
}
System.out.println("Hay "+entregados+" articulos entregados");
//Creamos dos objetos con la primera posicion de cada array
Serie serieMayor=listaSeries[0];
Videojuego videojuegoMayor=listaVideojuegos[0];
//Recorremos el array desde la posicion 1 (no 0), comparando el mayor con
las posiciones del array
for(int i=1;i<listaSeries.length;i++){
if(listaSeries[i].compareTo(serieMayor)==Serie.MAYOR){
serieMayor=listaSeries[i];
}
if(listaVideojuegos[i].compareTo(videojuegoMayor)==Videojuego.MAYOR){
videojuegoMayor=listaVideojuegos[i];
}
}
//Mostramos toda la informacion del videojuego y serie mayor
System.out.println(videojuegoMayor);
System.out.println(serieMayor);
}
}

ING. DICK DAZ DELGADO


TARAPOTO

UNIVERSIDAD CSAR VALLEJO -

You might also like