Java - Herencia y Polimorfismo (Resolucion del test)

 
Vista:

Herencia y Polimorfismo (Resolucion del test)

Publicado por mau (4 intervenciones) el 17/06/2011 16:14:20
Bueno tengo esto,no se asusten mi pregunta es corta pero el ejercicio es largo.........

Aplicando los conceptos de herencia,
polimorfismo y aserciones , implementar en Java la clase Vehículo y sus clases
derivadas Camión y Moto. Nota: Vehículo debe tener un método abstracto aCadena, que debe
ser implementado únicamente en las clases derivadas. Implementar también una clase
TestVehiculo que contenga un programa que:



a) Defina un arreglo que contenga información de todos los vehículos exhibidos en la
exposición, sean camiones, motos u otros.

b)

Provea al usuario un menú con las siguientes opciones:

* Carga de Datos: generar el arreglo con tantos datos como el usuario desee, controlando
que no existan vehículos repetidos.

* Búsqueda especial: Se debe solicitar al usuario el nombre de un vehículo y en caso de
ser un camión Scania de 12 ruedas sin remolque, se deben listar por pantalla todos los
datos correspondientes a ese camión.

* Contabilizar vehículos: Se debe recorrer el arreglo, contando el total de vehículos
rojos con año de fabricación 2004.

* Listado de motos: listar los datos de todas las motos de tipo cross que alcanzan 150
km/h.


public abstract class Vehiculo {
private String patente;
private String marca;
private int anioFab;
private int cantidadRuedas;
private String tipoTraccion;
private String color;
private int capacidad;
private int peso;

public Vehiculo(String patente) {
this.patente = patente;
this.marca="";
this.anioFab=2012;
this.cantidadRuedas=4;
this.tipoTraccion="";
this.color="";
this.capacidad=4;
this.peso=1000;
}



//Mi clase vehiculo ********************

public Vehiculo(String patente, String marca,
int anioFab, int cantidadRuedas, String tipoTraccion,
String color, int capacidad, int peso) {
this.patente = patente;
this.marca = marca;
this.anioFab = anioFab;
this.cantidadRuedas = cantidadRuedas;
this.tipoTraccion = tipoTraccion;
this.color = color;
this.capacidad = capacidad;
this.peso = peso;
}

public int getAnioFab() {
return anioFab;
}

public int getCantidadRuedas() {
return cantidadRuedas;
}

public int getCapacidad() {
return capacidad;
}

public String getColor() {
return color;
}

public String getMarca() {
return marca;
}

public String getPatente() {
return patente;
}

public int getPeso() {
return peso;
}

public String getTipoTraccion() {
return tipoTraccion;
}

public void setAnioFab(int anioFab) {
this.anioFab = anioFab;
}

public void setCantidadRuedas(int cantidadRuedas) {
this.cantidadRuedas = cantidadRuedas;
}

public void setCapacidad(int capacidad) {
this.capacidad = capacidad;
}

public void setColor(String color) {
this.color = color;
}

public void setMarca(String marca) {
this.marca = marca;
}

public void setPeso(int peso) {
this.peso = peso;
}

public void setTipoTraccion(String tipoTraccion) {
this.tipoTraccion = tipoTraccion;
}

public boolean esCamion(){
return true;
}

public abstract String aCadena();

}

// Mi clase Moto************************

public class Moto extends Vehiculo
{
private String tipo;
private String cilindrada;
private int velocidadMaxima;

public Moto(String patente, String tipo, String cilindrada, int velocidadMaxima) {
super(patente);
this.tipo = tipo;
this.cilindrada = cilindrada;
this.velocidadMaxima = velocidadMaxima;
}

public Moto(String patente) {
super(patente);
this.tipo="";
this.cilindrada="";
this.velocidadMaxima=200;
}


public Moto(String patente, String marca, int anioFab,
int cantidadRuedas, String tipoTraccion, String color,
int capacidad, int peso, String tipo, String cilindrada,
int velocidadMaxima) {
super(patente,marca,anioFab,cantidadRuedas,tipoTraccion,color,capacidad,peso);
this.tipo = tipo;
this.cilindrada = cilindrada;
this.velocidadMaxima = velocidadMaxima;
}

public String getCilindrada() {
return cilindrada;
}

public String getTipo() {
return tipo;
}

public int getVelocidadMaxima() {
return velocidadMaxima;
}

public void setCilindrada(String cilindrada) {
this.cilindrada = cilindrada;
}

public void setTipo(String tipo) {
this.tipo = tipo;
}

public void setVelocidadMaxima(int velocidadMaxima) {
this.velocidadMaxima = velocidadMaxima;
}

@Override
public String aCadena(){


return "La patente es"+" "+this.getPatente()+"\n"
+"La marca es"+" "+this.getMarca()+"\n"
+"El año de fabricacion es"+" "+this.getAnioFab()+"\n"
+"La cantidad de ruedas es"+" "+this.getCantidadRuedas()+"\n"
+"El tipo traccion es"+" "+this.getTipoTraccion()+"\n"
+"El color es"+" "+this.getColor()+"\n"
+"La capacidad del vehiculo es"+" "+this.getCapacidad()+"\n"
+"El peso del vehiculo es"+" "+this.getPeso()+"\n"
+"El tipo de la moto es"+ " "+this.tipo+"\n"
+"El tipo de cilindrada es"+" "+this.cilindrada+"\n "
+"La velocidad máxima de la moto es"+" "+this.velocidadMaxima;
}
@Override
public boolean esCamion(){
return false;
}
}

// Mi clase Camion ****************************
public class Camion extends Vehiculo{
private String modelo;
private int volumenTransportable;
private boolean remolque;//Si tienen o no remolque

public Camion(String patente,
String modelo, int volumenTransportable, boolean remolque) {

super(patente);
this.modelo = modelo;
this.volumenTransportable = volumenTransportable;
this.remolque = remolque;
}

public Camion(String patente, String marca,
int anioFab, int cantidadRuedas,
String tipoTraccion, String color,
int capacidad, int peso, String modelo,
int volumenTransportable, boolean remolque) {


super(patente,marca,anioFab,cantidadRuedas,tipoTraccion,color,capacidad,peso);
this.modelo = modelo;
this.volumenTransportable = volumenTransportable;
this.remolque = remolque;
}

public Camion(String patente,
String modelo) {
super(patente);
this.modelo = modelo;
this.volumenTransportable=1000;
this.remolque=false;
}

public Camion(String patente, String marca,
int anioFab, int cantidadRuedas,
String tipoTraccion, String color,
int capacidad, int peso, String modelo) {
super(patente,marca,anioFab,cantidadRuedas,tipoTraccion,color,capacidad,peso);
this.modelo = modelo;
}

public String getModelo() {
return modelo;
}

public boolean isRemolque() {
return remolque;
}

public int getVolumenTransportable() {
return volumenTransportable;
}

public void setRemolque(boolean remolque) {
this.remolque = remolque;
}

public void setVolumenTransportable(int volumenTransportable) {
this.volumenTransportable = volumenTransportable;
}

@Override
public String aCadena(){

return
"La patente es"+" "+this.getPatente()+"\n"
+"La marca es"+" "+this.getMarca()+"\n"
+"El año de fabricacion es"+" "+this.getAnioFab()+"\n"
+"La cantidad de ruedas es"+" "+this.getCantidadRuedas()+"\n"
+"El tipo traccion es"+" "+this.getTipoTraccion()+"\n"
+"El color es"+" "+this.getColor()+"\n"
+"La capacidad del vehiculo es"+" "+this.getCapacidad()+"\n"
+"El peso del vehiculo es"+" "+this.getPeso()+"\n"
+"El modelo del camion es"+" "+this.getModelo()+"\n"
+"El volumen trasportable del camion es"+" "+this.getVolumenTransportable()+"\n"
+"El Camion tiene remolque"+" "+" "+this.isRemolque();


}
@Override
public boolean esCamion(){
return true;
}
}

//Clase Test ********************
public class TestVehiculo {

public static void main(String[]args){
int cant,opcion;
boolean salir=false;
int devolucion;




System.out.println("Ingrese la cantidad de vehiculos de su exposicion");
cant=TecladoIn.readLineInt();
Vehiculo[]myCar=new Vehiculo[cant];

while(!salir){
mostrarMenu();
opcion=TecladoIn.readLineInt();
switch(opcion){
case 1:

while(cargarDatos(myCar,cant)<cant){

cargarDatos(myCar,cant);
}


}





}}





public static int cargarDatos(Vehiculo []miVehiculo,int tam){
int i=0;

String patente,marca,tipoTraccion,color;//Variables de Lectura
int anioFab, cantidadRuedas,capacidad,peso;//Variables de Lectura
String tipoVehiculo;//Si es camion o moto

String tipo;//Variable Moto
String cilindrada;//Variable Moto
int velocidad;//Variable Moto

String modelo;//Variable camion
int volumenTransportable;//Variable camion
String remolque;//Variable camion
boolean remolq;//Variable camion

Vehiculo aux=null;

System.out.println("Ingrese su patente");
patente=TecladoIn.readLine();

System.out.println("Ingrese su marca");
marca=TecladoIn.readLine();

System.out.println("Ingrese el año de Fabricacion");
anioFab=TecladoIn.readLineInt();

System.out.println("Ingrese la cantidad de ruedas");
cantidadRuedas=TecladoIn.readLineInt();

System.out.println("Ingrese tipo traccion");
tipoTraccion=TecladoIn.readLine();

System.out.println("Ingrese el color");
color=TecladoIn.readLine();

System.out.println("Ingrese capacidad");
capacidad=TecladoIn.readLineInt();

System.out.println("Ingrese peso");
peso=TecladoIn.readLineInt();

System.out.println("Si es moto Ingrese ' m ' o si es Camion ingrese ' c ' ");
tipoVehiculo=TecladoIn.readLine();

if(tipoVehiculo.equalsIgnoreCase("m")){
System.out.println("Ingrese tipo : ciclomotor, urbanas,cross, ruta o competición");
tipo=TecladoIn.readLine();

System.out.println("Ingrese tipo cilindrada");
cilindrada=TecladoIn.readLine();

System.out.println("Ingrese velocidad maxima");
velocidad=TecladoIn.readLineInt();

Moto miMoto=new Moto( patente, marca, anioFab, cantidadRuedas,tipoTraccion, color,capacidad,
peso,tipo,cilindrada,velocidad);

miVehiculo[i]=miMoto;

}
else
if(tipoVehiculo.equalsIgnoreCase("c")){
System.out.println("Ingrese el modelo del camion");
modelo=TecladoIn.readLine();

System.out.println("Ingrese el volumen transportable");
volumenTransportable=TecladoIn.readLineInt();

System.out.println("Ingrese si tiene remolque ingrese 's ' en caso afirmativo ");
remolque=TecladoIn.readLine();

if(remolque.equalsIgnoreCase("s")){

remolq=true;
Camion miCamion=new Camion( patente, marca, anioFab, cantidadRuedas,tipoTraccion, color,capacidad,
peso, modelo, volumenTransportable, remolq);
}

remolq=true;
Camion miCamion=new Camion( patente, marca, anioFab, cantidadRuedas,tipoTraccion, color,capacidad,
peso, modelo, volumenTransportable, remolq);

}

return i+1;


}


private static void mostrarMenu(){
System.out.println("*****************************************************************");
System.out.println("Cargar Datos (Ingrese 1)");
System.out.println("Mostrar datos camión Scania de 12 ruedas sin remolque (Ingrese 2)");
System.out.println("Vehículos rojos con año de fabricación 2004 . (Ingrese 3)");
System.out.println("Motos de tipo cross que alcanzan 150 km/h. (Ingrese 4)");
System.out.println("Salir(Ingrese 4)");
System.out.println("*****************************************************************");
}
}

Mi pregunta es como controlo que el arreglo este lleno en el Test?¿Mi metodo cargar devuelve un numero indicando cuantas veces se cargó,pero donde lo utilizo?

Cualquier comentario se agradece.
Muchas Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder