elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Toma de contacto. Clases.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Toma de contacto. Clases.  (Leído 2,977 veces)
kaotik90

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Toma de contacto. Clases.
« en: 30 Octubre 2012, 17:52 pm »

Hola, soy nuevo aquí.

Estoy haciendo un trabajo para el curso que estoy estudiando y ha llegado un punto en que no se como continuar. Le he preguntado varias veces al profesor y cada vez me dice una cosa distinta como escurriendo el bulto, asi que acudo a la comunidad, que es sabia y curtida en programación.

He aqui los ejercicios:

1. Hacer en Java la definición de una classe llamada Vehiculo. Hace falta escoger correctamente el modificador de accesibilidad y visibilidad de todos los datos y operaciones.

Atributos:

- Marca y modelo (cadena de carácteres)
- Fecha de compra (fecha)
- Matrícula (cadena de carácteres)
- Consumo, en litros por quilómetre (real)
- nombreVehiculos (entero)

Operaciones:

- Firma del constructor de la clase:
Vehiculo ( fabricante:Cadena, mod:Cadena, cad_matr:Cadena, num_matr:entero, consumo:real, fechaCompra:Fecha)
- Para cada atributo nos hará falta un método para la obtención de su valor.
- Un método que permita calcular la autonomia del vehiculo, és decir, devuelve los kilometros que se pueden hacer con una cantidad de carburante.
- Un método que devuelve los dias que hace que se compró el vehiculo.
- Un método que nos devuelve el numero total de objetos de la clase Vehiculo creados.


2. Definir por herencia la clase Coche (un Vehiculo que lleva gente).

- Los nuevos atributos son:

- Número de plazas (entero)
- Extras de confort (cadena de carácteres)
- Numero total de coches creados

Los métodos seran:

- Constructor con la firma siguiente,
Coche ( fabricante:Cadena, mod:Cadena, año:entero, cad_matr:entero, num_matr:entero, consumo:real, plazas:entero, extras:Cadena)
- Por cada nuevo atributo nos haran falta los métodos accesores correspondientes
- Un método que permita añadir un extra, a los que ya tiene el coche
- Un método que nos dice el numero total de coches creados.



Pues bien, el caso es que no se que hacer con los atributos del ejercicio 2 en negrita, ya que no se como obtener un tipo de datos que no es el que le paso. No se si me explico. Me piden año:entero, cad_matr:entero, cuando en el ejercicio anterior era fechaCompra:Fecha , cad_matr:Cadena... No se muy bien que hacer.



Esta es la situación:

SuperClase Vehiculo:

Código:
public class Vehiculo {
    private String marca;
    private String modelo;
    private Date fecha;
    private String matricula;
    private double cons; // (L/km)
    private int nombreVehiculos;
   
    private static double autonomia;
    private static String diasDeCompra;
    private static int numeroDeVehiculos; // variable contadora de objeto vehiculo
   
   
    //Operaciones
    public Vehiculo(String fabricante, String mod, Date fechaCompra,
    String cad_matr, double consumo, int num_matr){
       
        marca = fabricante;
        modelo = mod;
        fecha = fechaCompra;
        matricula = cad_matr;
        cons = consumo;
        nombreVehiculos = num_matr;
       
        numeroDeVehiculos++; //incremento de la variable contadora de objeto vehiculo
    }


SubClase Coche:

Código:
public class Coche extends Vehiculo {

    private int numPlazas;
    private String extra_confort;
    private int numCoches;
    private static int numeroDeCoches;
    private static String extrasCoches;
    private static int anyo;
   
    public Coche(String fabricante, String mod, Date fechaCompra, String cad_matr, double consumo, int num_matr, int plazas, String extras) {
        super(fabricante, mod, fechaCompra, cad_matr, consumo, num_matr);
       
        numPlazas = plazas;
        extra_confort = extras;

        numeroDeCoches++;
    }



EL PROBLEMA LO TENGO QUE AL USAR super NO PUEDO TOCAR EL ATRIBUTO cad_matr PARA QUE PASE A integer... O al menos no se como.

ESPERO QUE CON EL CODIGO SEA COMPRENSIBLE Y ALGUIEN SEPA AYUDARME.

Gracias de antemano!


En línea

kasiko

Desconectado Desconectado

Mensajes: 218



Ver Perfil
Re: Toma de contacto. Clases.
« Respuesta #1 en: 30 Octubre 2012, 22:37 pm »

prueba a que esos atributos sean protected, y no ¿prodrias desglosar fecha(dd/mm/aaaa(? asi creo que es mas facil


En línea

Nos vemos...

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Toma de contacto. Clases.
« Respuesta #2 en: 1 Noviembre 2012, 20:40 pm »

tu problema es o que el profesor es un imbécil (todo el tiempo)
o que solo fue un imbécil mientras hizo la pregunta (solo un momento).
o copiaste mal la pregunta
debido a que es difícil cometer tantos errores sutiles en tan poco tiempo me parece que es un imbécil todo el tiempo, o copiaste mal la pregunta
(no estoy molesto contigo)

bueno de todas manera te explico como se puede hacer siguiendo al pie de la letra el enunciado(tengo nausea)


Código
  1. import java.util.Date;
  2.  
  3. public class Vehiculo {
  4. private String marca;
  5. private String modelo;
  6. private Date fecha;
  7. private String matricula;
  8. private double cons; // (L/km)
  9. private int nombreVehiculos;
  10.  
  11. private static double autonomia;
  12. private static String diasDeCompra;
  13. private static int numeroDeVehiculos; // variable contadora de objeto
  14. // vehiculo
  15.  
  16. // Operaciones
  17. public Vehiculo(String fabricante, String mod, Date fechaCompra,
  18. String cad_matr, double consumo, int num_matr) {
  19.  
  20. marca = fabricante;
  21. modelo = mod;
  22. fecha = fechaCompra;
  23. matricula = cad_matr;
  24. cons = consumo;
  25. nombreVehiculos = num_matr;
  26.  
  27. numeroDeVehiculos++; // incremento de la variable contadora de objeto
  28. // vehiculo
  29. }
  30. }
  31.  

Código
  1. import java.util.Calendar;
  2. import java.util.Date;
  3.  
  4. public class Coche extends Vehiculo {
  5.  
  6. private int numPlazas;
  7. private String extra_confort;
  8. private int numCoches;
  9. private static int numeroDeCoches;
  10. private static String extrasCoches;
  11. private static int anyo;
  12.  
  13. public Coche(String fabricante, String mod, int año, int cad_matr,
  14. double consumo, int num_matr, int plazas, String extras) {
  15.  
  16. super(fabricante, mod, createCalendar(año), "" + cad_matr, consumo,
  17. num_matr);
  18.  
  19. numPlazas = plazas;
  20. extra_confort = extras;
  21.  
  22. numeroDeCoches++;
  23. }
  24.  
  25. private static Date createCalendar(int año) {
  26. Calendar calendar = Calendar.getInstance();
  27. calendar.set(Calendar.YEAR, año);
  28. calendar.set(Calendar.MONTH, 1);
  29. calendar.set(Calendar.DATE, 1);
  30. return calendar.getTime();
  31. }
  32. }
« Última modificación: 1 Noviembre 2012, 20:42 pm por sapito169 » En línea

kaotik90

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Toma de contacto. Clases.
« Respuesta #3 en: 2 Noviembre 2012, 19:23 pm »

tu problema es o que el profesor es un imbécil (todo el tiempo)
o que solo fue un imbécil mientras hizo la pregunta (solo un momento).
o copiaste mal la pregunta
debido a que es difícil cometer tantos errores sutiles en tan poco tiempo me parece que es un imbécil todo el tiempo, o copiaste mal la pregunta
(no estoy molesto contigo)

bueno de todas manera te explico como se puede hacer siguiendo al pie de la letra el enunciado(tengo nausea)


Código
  1. import java.util.Date;
  2.  
  3. public class Vehiculo {
  4. private String marca;
  5. private String modelo;
  6. private Date fecha;
  7. private String matricula;
  8. private double cons; // (L/km)
  9. private int nombreVehiculos;
  10.  
  11. private static double autonomia;
  12. private static String diasDeCompra;
  13. private static int numeroDeVehiculos; // variable contadora de objeto
  14. // vehiculo
  15.  
  16. // Operaciones
  17. public Vehiculo(String fabricante, String mod, Date fechaCompra,
  18. String cad_matr, double consumo, int num_matr) {
  19.  
  20. marca = fabricante;
  21. modelo = mod;
  22. fecha = fechaCompra;
  23. matricula = cad_matr;
  24. cons = consumo;
  25. nombreVehiculos = num_matr;
  26.  
  27. numeroDeVehiculos++; // incremento de la variable contadora de objeto
  28. // vehiculo
  29. }
  30. }
  31.  

Código
  1. import java.util.Calendar;
  2. import java.util.Date;
  3.  
  4. public class Coche extends Vehiculo {
  5.  
  6. private int numPlazas;
  7. private String extra_confort;
  8. private int numCoches;
  9. private static int numeroDeCoches;
  10. private static String extrasCoches;
  11. private static int anyo;
  12.  
  13. public Coche(String fabricante, String mod, int año, int cad_matr,
  14. double consumo, int num_matr, int plazas, String extras) {
  15.  
  16. super(fabricante, mod, createCalendar(año), "" + cad_matr, consumo,
  17. num_matr);
  18.  
  19. numPlazas = plazas;
  20. extra_confort = extras;
  21.  
  22. numeroDeCoches++;
  23. }
  24.  
  25. private static Date createCalendar(int año) {
  26. Calendar calendar = Calendar.getInstance();
  27. calendar.set(Calendar.YEAR, año);
  28. calendar.set(Calendar.MONTH, 1);
  29. calendar.set(Calendar.DATE, 1);
  30. return calendar.getTime();
  31. }
  32. }

Gracias por contestar. Creo que me has metido en la senda correcta y te lo agradezco de veras, pero ahora me surge un pequeño problema:

Tenía el siguiente objeto definido:

Coche c1 = new Coche("Seat", "Ibiza", new Date(), "7390JDT", 66.30, 250, 5, "");

Entonces, se me queja en el campo de la fecha, porque es de tipo Date, y el que hemos establecido en el constructor de la clase Coche era tipo Int. Alguna sugerencia? La idea seria que utilizara solo el año de la fecha y lo pasara a entero supongo.. pero que yo sepa no existe conversiones de tipo Fecha a otro tipo.

Lo siento, mi nivel teórico no da para mucho más, y el práctico aún menos.. Este sistema educativo es un desastre, pretende enseñar Java en tiempo récord.
En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Toma de contacto. Clases.
« Respuesta #4 en: 3 Noviembre 2012, 01:04 am »

la forma "correcta"

Coche c1 = new Coche("Seat", "Ibiza",1988, "7390JDT", 66.30, 250, 5, "");

mira el constructor de coche
Código
  1. public Coche(String fabricante, String mod, int año, int cad_matr,
  2. double consumo, int num_matr, int plazas, String extras)
el tercer parametro es un int para representar el año

yo lo hice de esa manera para cumplir con el enunciado pero no estoy de-acuerdo con eso, es mas no me gusta para nada





En línea

kaotik90

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Toma de contacto. Clases.
« Respuesta #5 en: 3 Noviembre 2012, 19:10 pm »

Vale, pues ya esta, asunto resuelto. Muchas gracias por todo crack!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
instalacion TDT y SAT en la misma toma
Electrónica
Info_nfo 0 2,032 Último mensaje 16 Octubre 2006, 22:06 pm
por Info_nfo
Ubuntu 12.04 LTS Precise Pangolin. Primera toma de contacto y calendario de ...
Noticias
wolfbcn 3 3,723 Último mensaje 8 Diciembre 2011, 20:26 pm
por cronos426
Viber llega a Linux. Toma de contacto con la aplicación
Noticias
wolfbcn 2 1,874 Último mensaje 29 Agosto 2013, 11:45 am
por Viber
Opera basado en Blink llega a Linux. Toma de contacto con el navegador
Noticias
wolfbcn 0 1,455 Último mensaje 24 Junio 2014, 21:58 pm
por wolfbcn
Mi pc no toma teclas en Excel.
Software
DonPilin 0 2,462 Último mensaje 1 Mayo 2022, 11:42 am
por DonPilin
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines