Páginas

Clase Coche en Java

Ejercicio básico de programación orientada a Objetos Java. Crear una clase Coche.

1. Crea una clase llamada Coche que contenga los siguientes atributos: matrícula (String), marca (String), año de matriculación (int), eléctrico (boolean).

Escribe en la clase los constructores y los métodos get/set de forma que el siguiente método main se pueda ejecutar sin errores.

public static void main(String[] args) {
       Coche coche1 = new Coche();
       coche1.setMatricula("1234JMV");
       coche1.setMarca("Renault");
       coche1.setAñoMatriculacion(2022);
       coche1.setElectrico(true);
	   
       Coche coche2 = new Coche("5472KMG");
       coche2.setAñoMatriculacion(2023);
       coche2.setMarca("Hyundai");
       coche2.setElectrico(true);
	   
       Coche coche3 = new Coche("1904JNP", "Nissan", 2017, false);                                                
}

2. Añade en el método main las instrucciones necesarias para que el contenido de los objetos se muestre de la siguiente forma:

1234JMV Renault 2022 Eléctrico: SI
5472KMG Hyundai 2023 Eléctrico: SI
1904JNP Nissan 2017 Eléctrico: NO          

3. Crea en la clase Coche el método toString para que los objetos se muestren de la siguiente forma:

1234JMV Renault Año: 2022 eléctrico
5472KMG Hyundai Año: 2023 eléctrico
1904JNP Nissan Año: 2017 No eléctrico      

Utiliza el método toString en el main para mostrar los tres objetos.

4. Crea un nuevo objeto Coche. Los valores para los atributos de este objeto se introducirán por teclado. Muestra los datos del objeto por pantalla utilizando el método toString.

5. Crea un nuevo coche como copia del coche creado en el punto anterior. Después de crearlo modifica su matrícula introduciendo una nueva matrícula por teclado y asignándosela al coche. Muestra los datos del objeto por pantalla.

SOLUCIÓN

Apartado 1. Crea la clase Coche con los atributos, constructores, métodos getters y setters para que el método main proporcionado funcione.

Observando el método main vemos que se crean objetos de tres formas distintas:

Coche coche1 = new Coche();
Coche coche2 = new Coche("5472KMG");
Coche coche3 = new Coche("1904JNP", "Nissan", 2017, false);           

El objeto coche1 se crea con el constructor por defecto.

El objeto coche2 se crea con un constructor al que le enviamos la matrícula del coche.

El objeto coche3 se crea con el constructor con todos los parámetros.

Por lo tanto para que el main no de errores debemos tener en la clase Coche tres constructores: el constructor por defecto, un constructor con un parámetro que es la matrícula y el constructor con todos los parámetros.

La clase Coche que nos piden en este apartado sería esta:

public class Coche {
    private String matricula;
    private String marca;
    private int añoMatriculacion;
    private boolean electrico;

    //constructor por defecto
    public Coche() {
    }

    //constructor con todos los parámetros
    public Coche(String matricula, String marca, int añoMatriculacion, boolean electrico) {                       
        this.matricula = matricula;
        this.marca = marca;
        this.añoMatriculacion = añoMatriculacion;
        this.electrico = electrico;
    }
    
    //constructor con el parámetro matrícula
    public Coche(String matricula) {
        this.matricula = matricula;
    }
    
    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public String getMarca() {
        return marca;
    }

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

    public int getAñoMatriculacion() {
        return añoMatriculacion;
    }

    public void setAñoMatriculacion(int añoMatriculacion) {
        this.añoMatriculacion = añoMatriculacion;
    }

    public boolean isElectrico() {
        return electrico;
    }

    public void setElectrico(boolean electrico) {
        this.electrico = electrico;
    }
      
}

Apartado 2. Añadir en el método main las instrucciones para mostrar los objetos de esta forma:

matricula marca año de matriculación Eléctrico: SI/NO

public static void main(String[] args) {
        Coche coche1 = new Coche();
        coche1.setMatricula("1234JMV");
        coche1.setMarca("Renault");
        coche1.setAñoMatriculacion(2022);
        coche1.setElectrico(true);
        Coche coche2 = new Coche("5472KMG");
        coche2.setAñoMatriculacion(2023);
        coche2.setMarca("Hyundai");
        coche2.setElectrico(true);
        Coche coche3 = new Coche("1904JNP", "Nissan", 2017, false);
        
        //Solución al apartado 2 del ejercicio
        System.out.println(coche1.getMatricula() + " " + coche1.getMarca() + " " + coche1.getAñoMatriculacion()   
                                                 + " Electrico: " + (coche1.isElectrico() ? "SI" : "NO"));
        System.out.println(coche2.getMatricula() + " " + coche2.getMarca() + " " + coche2.getAñoMatriculacion() 
                                                 + " Electrico: " + (coche2.isElectrico() ? "SI" : "NO"));
        System.out.println(coche3.getMatricula() + " " + coche3.getMarca() + " " + coche3.getAñoMatriculacion() 
                                                 + " Electrico: " + (coche3.isElectrico() ? "SI" : "NO"));
}

Apartado 3. Crear en la clase Coche el método toString para que los objetos se muestren por pantalla de esta forma:

matricula marca Año: año matriculación eléctrico/NO eléctrico.

La clase Coche con el método toString queda así:

public class Coche {
    private String matricula;
    private String marca;
    private int añoMatriculacion;
    private boolean electrico;

    //constructor por defecto
    public Coche() {
    }

    //constructor con todos los parámetros
    public Coche(String matricula, String marca, int añoMatriculacion, boolean electrico) {                       
        this.matricula = matricula;
        this.marca = marca;
        this.añoMatriculacion = añoMatriculacion;
        this.electrico = electrico;
    }
    
    //constructor con el parámetro matrícula
    public Coche(String matricula) {
        this.matricula = matricula;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public String getMarca() {
        return marca;
    }

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

    public int getAñoMatriculacion() {
        return añoMatriculacion;
    }

    public void setAñoMatriculacion(int añoMatriculacion) {
        this.añoMatriculacion = añoMatriculacion;
    }

    public boolean isElectrico() {
        return electrico;
    }

    public void setElectrico(boolean electrico) {
        this.electrico = electrico;
    }
    
    //Solución al Apartado 3 del ejercicio. Crear método toString en la clase Coche
    @Override
    public String toString() {
        return matricula + " " + marca + " Año: " + añoMatriculacion 
                         + (this.isElectrico() ? " electrico" : " No electrico");
    }
}

El método main utilizando el método toString para mostrar por pantalla los objetos queda así:

public static void main(String[] args) {
        Coche coche1 = new Coche();
        coche1.setMatricula("1234JMV");
        coche1.setMarca("Renault");
        coche1.setAñoMatriculacion(2022);
        coche1.setElectrico(true);
        Coche coche2 = new Coche("5472KMG");
        coche2.setAñoMatriculacion(2023);
        coche2.setMarca("Hyundai");
        coche2.setElectrico(true);
        Coche coche3 = new Coche("1904JNP", "Nissan", 2017, false);
        
        //Solución al apartado 2 del ejercicio
        System.out.println(coche1.getMatricula() + " " + coche1.getMarca() + " " + coche1.getAñoMatriculacion()   
                                                 + " Electrico: " + (coche1.isElectrico() ? "SI" : "NO"));
        System.out.println(coche2.getMatricula() + " " + coche2.getMarca() + " " + coche2.getAñoMatriculacion() 
                                                 + " Electrico: " + (coche2.isElectrico() ? "SI" : "NO"));
        System.out.println(coche3.getMatricula() + " " + coche3.getMarca() + " " + coche3.getAñoMatriculacion() 
                                                 + " Electrico: " + (coche3.isElectrico() ? "SI" : "NO"));

        //Solución al Apartadoo 3: utilizar el método toString para mostrar los objetos
        System.out.println(coche1);
        System.out.println(coche2);
        System.out.println(coche3);
}

Apartado 4. Crear un nuevo objeto Coche. Sus datos se introducen por teclado. Mostrar por pantalla los datos del objeto creado utilizando el método toString.

public static void main(String[] args) {
        Coche coche1 = new Coche();
        coche1.setMatricula("1234JMV");
        coche1.setMarca("Renault");
        coche1.setAñoMatriculacion(2022);
        coche1.setElectrico(true);
        Coche coche2 = new Coche("5472KMG");
        coche2.setAñoMatriculacion(2023);
        coche2.setMarca("Hyundai");
        coche2.setElectrico(true);
        Coche coche3 = new Coche("1904JNP", "Nissan", 2017, false);
        
        //Solución al apartado 2 del ejercicio
        System.out.println(coche1.getMatricula() + " " + coche1.getMarca() + " " + coche1.getAñoMatriculacion()   
                                                 + " Electrico: " + (coche1.isElectrico() ? "SI" : "NO"));
        System.out.println(coche2.getMatricula() + " " + coche2.getMarca() + " " + coche2.getAñoMatriculacion() 
                                                 + " Electrico: " + (coche2.isElectrico() ? "SI" : "NO"));
        System.out.println(coche3.getMatricula() + " " + coche3.getMarca() + " " + coche3.getAñoMatriculacion() 
                                                 + " Electrico: " + (coche3.isElectrico() ? "SI" : "NO"));

        //Solución al Apartadoo 3: utilizar el método toString para mostrar los objetos
        System.out.println(coche1);
        System.out.println(coche2);
        System.out.println(coche3);
        
        //Solución al Apartado 4. Crear un nuevo coche. Los datos se introducen por teclado
        
        //se introducen los datos del coche por teclado
        String matricula, marca;
        int año, tipo;
        boolean electrico;
        Scanner sc = new Scanner(System.in);
        System.out.print("Matricula: ");
        matricula = sc.nextLine();
        System.out.print("Marca: ");
        marca = sc.nextLine();
        System.out.print("Año de matriculación: ");
        año = sc.nextInt();
        do {
            System.out.print("Electrico? 1-> SI 2-> NO: ");
            tipo = sc.nextInt();
        } while (tipo != 1 && tipo != 2);
        if (tipo == 1) {
            electrico = true;
        } else {
            electrico = false;
        }
        sc.nextLine(); //limpiar buffer de teclado
        //se crea un nuevo coche con el constructor con parámetros
        Coche coche4 = new Coche(matricula, marca, año, electrico);
        //se muestra el coche utilizando el método toString
        System.out.println(coche4);
}

Apartado 5. Crear un nuevo Coche como copia del que se ha creado en el apartado 4. Modificar su matrícula y mostrar los datos del objeto por pantalla.

public static void main(String[] args) {
        Coche coche1 = new Coche();
        coche1.setMatricula("1234JMV");
        coche1.setMarca("Renault");
        coche1.setAñoMatriculacion(2022);
        coche1.setElectrico(true);
        Coche coche2 = new Coche("5472KMG");
        coche2.setAñoMatriculacion(2023);
        coche2.setMarca("Hyundai");
        coche2.setElectrico(true);
        Coche coche3 = new Coche("1904JNP", "Nissan", 2017, false);
        
        //Solución al apartado 2 del ejercicio
        System.out.println(coche1.getMatricula() + " " + coche1.getMarca() + " " + coche1.getAñoMatriculacion()   
                                                 + " Electrico: " + (coche1.isElectrico() ? "SI" : "NO"));
        System.out.println(coche2.getMatricula() + " " + coche2.getMarca() + " " + coche2.getAñoMatriculacion() 
                                                 + " Electrico: " + (coche2.isElectrico() ? "SI" : "NO"));
        System.out.println(coche3.getMatricula() + " " + coche3.getMarca() + " " + coche3.getAñoMatriculacion() 
                                                 + " Electrico: " + (coche3.isElectrico() ? "SI" : "NO"));

        //Solución al Apartadoo 3: utilizar el método toString para mostrar los objetos
        System.out.println(coche1);
        System.out.println(coche2);
        System.out.println(coche3);
        
        //Solución al Apartado 4. Crear un nuevo coche. Los datos se introducen por teclado
        
        //se introducen los datos del coche por teclado
        String matricula, marca;
        int año, tipo;
        boolean electrico;
        Scanner sc = new Scanner(System.in);
        System.out.print("Matricula: ");
        matricula = sc.nextLine();
        System.out.print("Marca: ");
        marca = sc.nextLine();
        System.out.print("Año de matriculación: ");
        año = sc.nextInt();
        do {
            System.out.print("Electrico? 1-> SI 2-> NO: ");
            tipo = sc.nextInt();
        } while (tipo != 1 && tipo != 2);
        if (tipo == 1) {
            electrico = true;
        } else {
            electrico = false;
        }
        sc.nextLine(); //limpiar buffer de teclado
        //se crea un nuevo coche con el constructor con parámetros
        Coche coche4 = new Coche(matricula, marca, año, electrico);
        //se muestra el coche utilizando el método toString
        System.out.println(coche4);
        
        //Solución al Apartado 5.
        //se crea un nuevo coche con el constructor copia
        Coche coche5 = new Coche(coche4);
        //se introduce una matrícula por teclado
        System.out.print("Matricula: ");
        matricula = sc.nextLine();
        //se asigna la matrícula introducida por teclado al coche
        coche5.setMatricula(matricula);
        //se muestran los datos del coche utilizando el método toString
        System.out.println(coche5);
        
}

No hay comentarios:

Publicar un comentario