Para que funcione el cambio de precio, se deben realizar modificaciones en las clases Auto y Camioneta, si no, no funciona por la "visibilidad" de los objetos.
Dejo aquí la tarea resuelta :-)
Suerte!
// ************************************************* //
public class Auto {
private String marca;
private int anho;
private String color;
private Registro registroAuto;
/** constructor por defecto */
public Auto() {
this.marca = "desconcida";
this.anho = 0;
this.color = "desconocido";
/** por defecto se tomara que el precio es CERO y
* que NO es usado */
registroAuto = new Registro(0,false);
}
/** constructor por paso de parametros */
public Auto(String marca, int año, String color, double precio, boolean esUsado) {
this.marca = marca;
this.anho = anho;
this.color = color;
registroAuto = new Registro(precio,esUsado);
}
public int getAnho() {
return anho;
}
public void setAnho(int año) {
this.anho = anho;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
//-----------------------
// -- Esto es necesario para la tarea
public void setPrecio(double precio) {
this.registroAuto.setPrecio(precio);
}
public double getPrecio() {
return this.registroAuto.getPrecio();
}
public boolean getEsUsado() {
return this.registroAuto.getEsUsado();
}
}
// ************************************************* //
/**
*
*/
public class Camioneta {
private String marca;
private int año;
private double capacidadKilos;
private Registro registroCamioneta;
public Camioneta(String marca, int año, double capacidadKilos, double precio, boolean esUsado) {
this.marca = marca;
this.año = año;
this.capacidadKilos = capacidadKilos;
registroCamioneta = new Registro(precio,esUsado);
}
public Registro getRegistroCamioneta() {
return registroCamioneta;
}
public void setRegistroCamioneta(Registro registroCamioneta) {
this.registroCamioneta = registroCamioneta;
}
public double getCapacidadKilos() {
return capacidadKilos;
}
public void setCapacidadKilos(double capacidadKilos) {
this.capacidadKilos = capacidadKilos;
}
public int getAño() {
return año;
}
public void setAño(int año) {
this.año = año;
}
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
//-----------------------
// -- Esto es necesario para la tarea
public void setPrecio(double precio) {
this.registroCamioneta.setPrecio(precio);
}
public double getPrecio() {
return this.registroCamioneta.getPrecio();
}
public boolean getEsUsado() {
return this.registroCamioneta.getEsUsado();
}
}
// ************************************************* //
/**
*/
public class Registro {
private double precio;
private boolean esUsado;
public Registro(double precio, boolean esUsado) {
this.precio = precio;
this.esUsado = esUsado;
}
public double getPrecio() {
return precio;
}
public void setPrecio(double precio) {
this.precio = precio;
}
public boolean getEsUsado() {
return esUsado;
}
public void setEsUsado(boolean esUsado) {
this.esUsado = esUsado;
}
}
// ************************************************* //
/**
*
*/
public class Automotora
{
// instance variables - replace the example below with your own
private static int maxAutos = 10;
private static int maxCamionetas = 5;
private static Auto[] coleccionAutos;
private static Camioneta[] coleccionCamionetas;
private static int numAutos;
private static int numCamionetas;
/**
* Constructor for objects of class Automotora
*/
public void Automotora()
{
// inicializa arreglos
} // Constructor
//-------------------------------------------------------------
/**
*
*/
public static boolean agregaAuto( Auto car)
{
boolean retorno;
if( numAutos < coleccionAutos.length ) {
coleccionAutos[numAutos++] = car;
retorno = true;
} else {
// Excede el numero de autos que soporta
Tipicas.mensaje("No se puede agregar más autos!");
retorno = false;
}
return retorno;
}
//-------------------------------------------------------------
/**
*
*/
public static boolean agregaCamioneta( Camioneta car)
{
boolean retorno;
if( numCamionetas < coleccionCamionetas.length ) {
coleccionCamionetas[numCamionetas++] = car;
retorno = true;
} else {
// Excede el numero de Camionetas que soporta
Tipicas.mensaje("No se puede agregar más Camionetas!");
retorno = false;
}
return retorno;
}
//-------------------------------------------------------------
/**
*
*/
public static void buscaAutoColor( String paramColor )
{
for (int i=0; i < numAutos; i++) {
if ( coleccionAutos[i].getColor() == paramColor) {
Tipicas.mensaje( "\nAuto en posición: " + i);
Tipicas.mensaje( " marca : "+ coleccionAutos[i].getMarca());
Tipicas.mensaje( " es de color " + paramColor + "\n");
} // endif
} // for
} // fin de buscaAutoColor
//-------------------------------------------------------------
/**
*
*/
public static void reducePrecio( Auto[] paramLista, double paramRebaja )
{
int x=0;
double nuevoPrecio;
while ( paramLista[x] != null ) {
nuevoPrecio = paramLista[x].getPrecio() - paramRebaja;
paramLista[x].setPrecio( nuevoPrecio );
x++;
} // wend
} // fin de reducePrecio
//--------//
/**
*
*/
public static void reducePrecio( Camioneta[] paramLista, double paramRebaja )
{
int x=0;
double nuevoPrecio;
while ( paramLista[x] != null ) {
nuevoPrecio = paramLista[x].getPrecio() - paramRebaja;
paramLista[x].setPrecio( nuevoPrecio );
x++;
} // wend
} // fin de reducePrecio
//-------------------------------------------------------------
/**
*
*/
public static void imprimeUsados()
{
int x=0;
Tipicas.mensaje("Lista de autos usados");
while ( coleccionAutos[x] != null ) {
if ( coleccionAutos[x].getEsUsado() )
{
Tipicas.mensaje( coleccionAutos[x].getMarca()+":");
Tipicas.mensaje( "año: " +coleccionAutos[x].getAnho()+"\n");
}
x++;
} // wend
x=0;
Tipicas.mensaje("Lista de camionetas usadas");
while ( coleccionCamionetas[x] != null ) {
if ( coleccionCamionetas[x].getEsUsado() )
{
Tipicas.mensaje( coleccionCamionetas[x].getMarca()+":");
Tipicas.mensaje( " año: "+ coleccionCamionetas[x].getAño()+"\n");
}
x++;
} // wend
} // fin de reducePrecio
//----------------------------------------------------
/**
*
*/
public static void main(String[] args)
{
Auto miAuto;
Auto miCamioneta;
//------ inicializo -------//
coleccionAutos = new Auto[maxAutos];
coleccionCamionetas = new Camioneta[maxCamionetas];
numAutos = 0;
numCamionetas = 0;
miAuto = new Auto( "Yaris", 2002, "Azul", 4123123, true);
agregaAuto( miAuto );
buscaAutoColor( "Azul" );
reducePrecio( coleccionCamionetas, 100000 );
} // main
}
// ************************************************* //
/**
* Funciones utiles que es bueno tener tener siempre a mano
*
* @author Mauricio Latorre
*/
import java.io.*;
public class Tipicas
{
//------------------------------------------
public static String ingresaString( String mensaje ) {
String retorno="";
System.out.print(mensaje);
try {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
// resultado
retorno = in.readLine();
}
catch (Exception e) {
System.out.print("Error al leer teclado");
} // fin del try
return retorno;
} // Fin de metodo
//------------------------------------------
public static void mensaje( String mensaje ) {
System.out.print(mensaje);
} // Fin de metodo
}