Autor Tema: Java clase hereda de otra y tiene atributos adicionales entorno BlueJ CU00690B  (Leído 2308 veces)

Luis Fdo Carvajal

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Ejercicio CU00690B del taller de fundamentos de programación orientada a objetos con Java y BlueJ

Responde a las siguientes preguntas:

Supongamos la superclase Vehiculo que representa a cualquier tipo de vehículo y la subclase Taxi que representa a un tipo de vehículo concreto.

a)  ¿Un objeto de tipo estático declarado Taxi puede contener a un objeto Vehiculo en tiempo de ejecución?

Rta: El objeto Vehiculo es de la superclase y el objeto Taxi es de una subclase, durante la ejecución la máquina virtual Java es capaz de identificar el tipo dinámico de las variables que apuntan a objetos y asignar un método u otro en función de ese tipo dinámico.


b) Escribe el código de una clase Vehiculo con los atributos matricula (String) y numeroDeRuedas (int), constructor, métodos getters y setters y método toString() para mostrar la información de un vehículo.

c) Escribe el código de una clase Taxi que herede de vehículo y que además de los atributos de Vehiculo lleve un atributo adicional nombreDelConductor (String) y numeroDePlazas (int), constructor, métodos getters y setters y método toString() para mostrar la información de un Taxi.

d) Escribe el código de una clase test con el método main que cree un objeto cuyo tipo es Vehiculo, instanciado como Taxi. Establece valores para sus atributos y usa el método toString(). ¿Qué método toString() resulta de aplicación, el propio de la clase Vehiculo o el propio de la clase Taxi? ¿Por qué?

Rta: Cualquiera de los dos, por que el método toString nos permite mostrar la información completa de un objeto, es decir, el valor de sus atributos.
Código: [Seleccionar]
package vehiculo;

import java.util.ArrayList;
import java.util.Scanner;

/**
 *
 * @author ITCO1724
 */
public class Taxi extends Vehiculo {

    //Se crea un ArrayList para guardar objetos de tipo Taxi.
    static ArrayList<Taxi> taxi = new ArrayList<Taxi>();
    static Scanner sc = new Scanner(System.in);

     //método main
    public static void main(String[] args) {
        leerTaxi();
        System.out.println("\nTaxis introducidos:");
        mostrarTaxis();
       
    } //fin método main   
   
    //Método para leer taxis e introducirlos en el array
public static void leerTaxi(){
        //Declaración de variables para leer los datos de los coches

        String matricula;
        String nombreDelConductor;
        int numeroDePlazas;
        int numeroDeRuedas;
        Taxi aux; //Variable auxiliar que contendrá la referencia a cada nuevo taxi introducido.
        int i, N ;
        //se pide por teclado el número de coches a leer

        do {
            System.out.print("Número de Taxis? ");
            N = sc.nextInt();
        } while (N < 0);
        sc.nextLine(); //limpiar el intro

        //lectura de N Taxis

        for (i = 1; i <= N; i++) {
            //leer datos de cada Taxi

            System.out.println("Taxi " + i);
            System.out.print("Matrícula: ");
            matricula = sc.nextLine();           
            System.out.print("NombreDelConductor: ");
            nombreDelConductor = sc.nextLine();
            System.out.print("numero de asientos: ");
            numeroDePlazas = sc.nextInt();
            System.out.print("Número de Ruedas: ");
            numeroDeRuedas = sc.nextInt();
            sc.nextLine(); //limpiar el intro
            aux = new Taxi(); //Se crea un objeto Taxi y se asigna su referencia a aux

            //se asignan valores a los atributos del nuevo objeto
            aux.setMatricula(matricula);
            aux.setnombreDelConductor(nombreDelConductor);
            aux.setnumeroDePlazas(numeroDePlazas);
            aux.setnumeroDeRuedas(numeroDeRuedas);
                   
           //se añade el objeto al final del array

            taxi.add(aux);}

    } //fin método leerTaxis()

//Método para mostrar todos los Taxis   
    public static void mostrarTaxis(){       
        for(int i = 0; i< taxi.size(); i++)
            System.out.println(taxi.get(i));  //se invoca el método toString de la clase Taxi
    }
} //fin de la clase principal
   


Código: [Seleccionar]
package vehiculo;




/**
 *
 * @author ITCO1724
 */
public class Vehiculo {
    private String matricula;
    private int numeroDeRuedas;
    private String nombreDelConductor;
    private int numeroDePlazas;

//Métodos
public String getMatricula() { return matricula;  }
public void setMatricula(String matricula) { this.matricula = matricula;  }
public int getnumeroDeRuedas () { return numeroDeRuedas; } //Método función para retornar el numero de ruedas
public void setnumeroDeRuedas (int numeroDeRuedas) { this. numeroDeRuedas = numeroDeRuedas; } //Método procedimiento para fijar el numeroDeRuedas
public int getnumeroDePlazas (){return numeroDePlazas;}
public void setnumeroDePlazas (int numeroDePlazas) { this. numeroDePlazas = numeroDePlazas; }
public String getnombreDelConductor() { return nombreDelConductor;  }
public void setnombreDelConductor(String nombreDelConductor) { this.nombreDelConductor = nombreDelConductor;  }

public String toString() { StringBuilder sb = new StringBuilder();
        sb.append("\nMatrícula: ");
        sb.append(matricula);     
        sb.append("\nnumeroDeRuedas: ");
        sb.append(numeroDeRuedas);     
        sb.append("\nNombreDelConductor: ");
        sb.append(nombreDelConductor);   
        sb.append("\nnumero de asientos: ");
        sb.append(numeroDePlazas);   
        return sb.toString();
    }   
}
« Última modificación: 18 de Junio 2017, 12:10 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Luis Fdo Carvajal. En la respuesta a) no has indicado si es posible o no que un objeto declarado Taxi puede contener a un objeto Vehiculo en tiempo de ejecución

En la clase Taxi que has escrito no cumples con lo que pide el enunciado: "que además de los atributos de Vehiculo lleve un atributo adicional nombreDelConductor (String) y numeroDePlazas (int)..."

Este ejercicio debería rehacerse pues no cumple con lo que se pedía

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".