Crear ArrayList a partir de una clase

Iniciado por MrSimpatia, 1 Junio 2019, 14:41 PM

0 Miembros y 1 Visitante están viendo este tema.

MrSimpatia

Buenas, tengo un problema, tengo un ejercicio el cual me pide hace 3 clases diferentes (En este caso, electrodomestico - lavadora - television) , ademas de tener una clase constante (En este caso K ) , bueno mi problema radica en que tengo que crear una 4ta clase la cual contenga un ArrayList con los atributos de Electrodomesticos (Al menos, ya con saber hacer ese puedo hacer los demas).

Código (java) [Seleccionar]

public class Electrodomestico { //La ya mencionada clase "Electrodomestico"
protected static final int PrecioFinal = 0; //Sus atributos
static int precio = K.precio;
static String color = K.color;
static char consumo = K.consumo;
static int peso = K.peso;

public Electrodomestico () { //Constructor por defecto

}
public Electrodomestico (int precio, int peso) { //Constructor con atributo precio y
                                                                               peso
this.precio = precio;
this.peso = peso;
}
public Electrodomestico (int precio, String color, char consumo, int peso) {
                                                                         //Constructor con todos los atributos
this.precio = PrecioFinal(precio, consumo, peso);
this.color = color;
this.consumo = ConsultaConEng(consumo);
this.peso = peso;
}
public static int getPrecio() {  // Getters
return precio;
}
public static String getColor() {
return color;
}
public static char getConsumo() {
return consumo;
}
public static int getPeso() {
return peso;
}
public static char ConsultaConEng (char ConsumoEng) { //Metodos para comparar
if (ConsumoEng<'A' || ConsumoEng>'F') {
ConsumoEng = 'F';
}
return ConsumoEng;
}
public static int PrecioFinal (int ConsultaPrecio, char ConsumoEng, int Peso) {
int ValorLetra =0;
int ValorPeso =0;
if (ConsumoEng == 'A') {
ValorLetra = 100;
} if (ConsumoEng == 'B') {
ValorLetra = 80;
  } if (ConsumoEng == 'C') {
  ValorLetra = 60;
    } if (ConsumoEng == 'D') {
    ValorLetra = 50;
      } if (ConsumoEng == 'E') {
    ValorLetra = 30;
        } if (ConsumoEng == 'F') {
        ValorLetra = 10;
          }
if (Peso>0 && Peso<20) {
ValorPeso = 10;
} if (Peso>=20 && Peso<50) {
ValorPeso = 50;
  } if (Peso>=50 && Peso<80 ) {
  ValorPeso = 80;
    } if (Peso>=80) {
    ValorPeso= 100;
    }

   ConsultaPrecio = ValorPeso + ValorLetra;
   
return ConsultaPrecio;
}

}


Cito la letra del ejercicio  (ACLARO: NO QUIERO QUE ME RESUELVAN EL EJERCICIO, SINO QUE ME DEN UNA AYUDA DE COMO SEGUIR ESTO.) :
Ahora crea una clase ejecutable que realice lo siguiente:
 Crea un array de Electrodomesticos de 10 posiciones.
 Asigna a cada posición un objeto de las clases anteriores con los valores que desees.
 Ahora, recorre este array y ejecuta el método precioFinal().
Por ejemplo, si tenemos un Electrodomestico con un precio final de 300, una lavadora de 200 y una televisión
de 500, el resultado final será de 1000 (300+200+500) para electrodomésticos, 200 para lavadora y 500 para
televisión.

Código (java) [Seleccionar]

import java.util.ArrayList;  //Esto es lo que tengo hasta ahora sobre la clase ejecutable
public class Ejecutable {
static ArrayList <Electrodomestico> Electrodomesticos = new ArrayList <>();
public static void main (String [] args) {
Ejecutable E1 = new Ejecutable ();

}
}


Si me pudieran ayudar a como seguir se los agradeceria.

PD: lo vuelvo a repetir por las dudas  NO QUIERO QUE ME TERMINEN EL EJERCICIO SINO UN EMPUJON DE COMO SEGUIRLO O EN QUE ME PUDE HABER EQUIVOCADO, gracias

rub'n

#1
Hola que tal ?

Por lo que veo no nombras la parte de herencia aquí tanto  lavadora - televisión, son electrodomésticos también, que podrías heredar de una superClase llamada Electrodoméstico, de la cual crearas el ArrayList o mejor List<E> de 10 posiciones para procesarla de manera polimorfica debido a esto

* Asigna a cada posición un objeto de las clases anteriores con los valores que desees.

indicando que los electrodomesticos deberán sobreescribir al metodo precioFinal(), previamente implementando de una interface, o heredando una claseBase, y/o claseBaseAbstracta

Usa nomenclatura camelCase, para nombre de Clases, variables,parámetros, métodos.
* Nombre de clases primera letra en Mayúscula
* Variables, métodos, parametros primera letra en minúscula



rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

MrSimpatia

Aun no entiendo muy bien el tema de la superclase y subclases (Mi profesor enseña por la mitad todo y deja muchas cosas en duda) , lo que hice yo o por lo que pude entender y hice fue crear 2 clases aparte llamadas lavadora y television, las cuales tienen atributos de Electrodomestico.
Código (java) [Seleccionar]
public class Lavadora {
static int carga = K.carga;
static int precio = K.precio;
static String color = K.color;
static char consumo = K.consumo;
static int peso = K.peso;

public Lavadora () {

}
public Lavadora (int precio, int peso) {
this.precio = PrecioFinal(precio, peso);
this.peso = peso;
}
public Lavadora (int carga, int precio, String color, char consumo, int peso) {
this.precio = PrecioFinal(precio,peso);
this.carga = carga;
this.color = color;
this.consumo = Electrodomestico.ConsultaConEng (consumo);
this.peso = peso;
}
public static int getCarga() {
return carga;
}
public int PrecioFinal (int PrecioF, int carga) {
int ValorCarga =0;
int ValFin = 0;
if (carga>=30) {
ValorCarga = 30;
}
ValFin = ValorCarga + Electrodomestico.PrecioFinal;
return PrecioFinal(ValFin, ValorCarga);
}

}


Código (java) [Seleccionar]
public class Television {
static int resolucion = K.resolucion;
static boolean TDT = K.TDT;
static int precio = K.precio;
static String color = K.color;
static char consumo = K.consumo;
static int peso = K.peso;

public Television () {

}

public Television (int precio, int peso) {
this.precio = PrecioFinal(precio, resolucion, TDT);
this.peso = peso;

}
public Television (int resolucion, boolean TDT, int precio,
String color, char consumo, int peso) {
this.resolucion = resolucion;
this.TDT = TDT;
this.precio = PrecioFinal(precio, resolucion, TDT);
this.color = color;
this.consumo = consumo;
this.peso = peso;

}

public static int getResolucion() {
return resolucion;
}

public static boolean isTDT() {
return TDT;
}

public int PrecioFinal (int PrecioF, int resolucion, boolean TDT) {
boolean tiene = TDT;
int ValFin = 0;
int ValResol = precio;
int ValTDT = 50;
int Porcentaje = (ValResol/100) * 30;
if (resolucion>=40 && tiene == true ) {
ValFin = ValResol + Porcentaje + ValTDT;
} else {
      if (resolucion>=40) {
      ValFin= ValResol + Porcentaje;
      }
  }
return PrecioFinal (PrecioF, resolucion, TDT);

}
}


Estos dos son las clases que mencione.
Por otra parte entiendo lo de la nomenclatura a veces lo salteo un poco (Perdon por eso, despues lo corrijo) , lo que no comprendo muy bien es y cito : "ArrayList o mejor List<E> de 10 posiciones para procesarla de manera polimorfica"

No soy TAN nuevo en esto, pero si me resulta a veces un poco complicado entender ciertas cosas, si podes ser mas especifico y general te lo agradeceria un monton  ;D ;D

rub'n

#3
Te hablo de Herencia por casualidad tu profesor ? pasa el enunciado completo.

Tan simple como esto.

Código (java) [Seleccionar]

import java.util.List;
import java.util.ArrayList;

final List<Electrodomestico> electrodomentiscoList = new ArrayList<>();

electrodomentiscoList.add(new Televisor()); //setear configuracion
electrodomentiscoList.add(new Lavadora);  //setear configuracion



electrodomentiscoList, usar bucle for para invocar a precioFinal()  de cada electrodoméstico, pero para eso, lo mas correcto es herencia



rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

MrSimpatia

Por lo que el mismo dijo se supone que si, pero como te dije antes, el habla de dar temas y despues la clase entera no entiende nada.
La letra completa del ejercicio esta en PDF , si quieres podemos conversar por Discord.

PD: Que es "List" ? 

MrSimpatia

Crearemos una superclase llamada Electrodomestico con las siguientes características:
 Sus atributos son precio base, color, consumo energético (letras entre A y F) y peso. Indica que se
podrán heredar.
 Por defecto, el color será blanco, el consumo energético será F, el precioBase es de 100 € y el peso de 5
kg. Usa constantes para ello.
 Los constructores que se implementaran serán
o Un constructor por defecto.
o Un constructor con el precio y peso. El resto por defecto.
o Un constructor con todos los atributos.
 Los métodos que implementara serán:
o Métodos get de todos los atributos.
o comprobarConsumoEnergetico(char letra): comprueba que la letra es correcta, sino es correcta
usara la letra por defecto. Se invocara al crear el objeto y no será visible.
o precioFinal(): según el consumo energético, aumentara su precio, y según su tamaño, también.
Esta es la lista de precios:
Letra Precio
A 100 €
B 80 €
C 60 €
D 50 €
E 30 €
F 10 €
Crearemos una subclase llamada Lavadora con las siguientes características:
 Su atributo es carga, además de los atributos heredados.
Tamaño Precio
Entre 0 y 19 kg 10 €
Entre 20 y 49 kg 50 €
Entre 50 y 79 kg 80 €
Mayor que 80 kg 100 €
ESI – CETP PROGRAMACION II 2019
 Por defecto, la carga es de 5 kg. Usa una constante para ello.
 Los constructores que se implementaran serán:
o Un constructor por defecto.
o Un constructor con el precio y peso. El resto por defecto.
o Un constructor con la carga y el resto de atributos heredados. Recuerda que debes llamar al
constructor de la clase padre.
 Los métodos que se implementara serán:
o Método get de carga.
o precioFinal():, si tiene una carga mayor de 30 kg, aumentara el precio 50 €, sino es así no se
incrementara el precio. Llama al método padre y añade el código necesario. Recuerda que las
condiciones que hemos visto en la clase Electrodomestico también deben afectar al precio.
Crearemos una subclase llamada Television con las siguientes características:
 Sus atributos son resolución (en pulgadas) y sintonizador TDT (booleano), además de los atributos
heredados.
 Por defecto, la resolución será de 20 pulgadas y el sintonizador será false.
 Los constructores que se implementaran serán:
o Un constructor por defecto.
o Un constructor con el precio y peso. El resto por defecto.
o Un constructor con la resolución, sintonizador TDT y el resto de atributos heredados. Recuerda
que debes llamar al constructor de la clase padre.
 Los métodos que se implementara serán:
o Método get de resolución y sintonizador TDT.
o precioFinal(): si tiene una resolución 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 Electrodomestico también deben afectar al precio.
Ahora crea una clase ejecutable que realice lo siguiente:
 Crea un array de Electrodomesticos de 10 posiciones.
 Asigna a cada posición un objeto de las clases anteriores con los valores que desees.
 Ahora, recorre este array y ejecuta el método precioFinal().
Por ejemplo, si tenemos un Electrodomestico con un precio final de 300, una lavadora de 200 y una televisión
de 500, el resultado final será de 1000 (300+200+500) para electrodomésticos, 200 para lavadora y 500 para
televisión.


Este es el ejercicio completo, hasta donde se pude realizar las 3 primeras partes, no consigo hacer la ultima. PD: Aun sigue en pie la propuesta de Discord :xD

rub'n



rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

MrSimpatia

Si ahora mismo estoy leyendo sobre la herencia, y sobre la palabra "extends", espero poder comprender algo jajaja, gracias por la ayuda :D

rub'n

#8
Cita de: MrSimpatia en  1 Junio 2019, 16:17 PM
Si ahora mismo estoy leyendo sobre la herencia, y sobre la palabra "extends", espero poder comprender algo jajaja, gracias por la ayuda :D

el metodo precio final solo sumara los costos de dichos productos  y el resultado  deberas mostrarlo con un for y ya, por lo que veo. pero create un ArrayList<>,List<E> de la superclase


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen