Java - Duda constructor java

   
Vista:

Duda constructor java

Publicado por Jose (5 intervenciones) el 29/12/2015 18:45:42
Hola buenas.

Soy nuevo en esto de Java y tengo una duda a la hora de crear un constructor.

He creado la clase lector y he definido sus atributos. Después defino el constructor y hasta ahí todo bien.

El problema es cuando intento definir al lector con su nombre, apellidos, el año en el que obtuvo el carnet y su dni.
No se porque pero me da error. Segun eclipse pepe no puede ser asignado a una variable y garcia tampoco.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Lector {
String nombre;
String apellidos;
int AnoCarnet;
String dni;
 
//Ahora hago el constructor de la clase Lector
 
public Lector(String nombre, String apellidos, int AnoCarnet, String dni){
 
 
}
//Ahora pretendo definir un lector pero aqui es donde no me deja
Lector lector1=new Lector(pepe, garcia,true, 2003, 32056732);
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder

Duda constructor java

Publicado por Thanatos (69 intervenciones) el 29/12/2015 19:20:07
Los parámetros del constructor (nombre, apellidos y dni), son de tipo String, por eso, los argumentos: pepe, garcia, y 32056732 deben pasarse entre comillas dobles, para que Java los reconozca como literales de tipo String.

La llamada al constructor que pusiste en el ejemplo, le está pasando 5 argumentos, pero tu constructor está definido para aceptar sólo 4.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Lector {
    String nombre;
    String apellidos;
    int anoCarnet;
    String dni;
 
    //Ahora hago el constructor de la clase Lector
    public Lector(String nombre, String apellidos, int anoCarnet, String dni){
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.anoCarnet = anoCarnet;
        this.dni = dni;
    }
 
    public static void main(String[] args) {
        // Instancia de la clase Lector
        Lector lector1 = new Lector("pepe", "garcia", 2003, "32056732");
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Duda constructor java

Publicado por Jose (5 intervenciones) el 29/12/2015 19:26:01
De acurdo, ya está solucionado.

Ahora me gustaria saber que hay que hacer para utilizar el lector1, por ejemplo en otra clase que se llame biblioteca para, simplemente, poder hacer un System.out.print y obtener los datos de ese lector1 en consola (su nombre apellidos...)

Muchas gracias de antemano y un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Duda constructor java

Publicado por Thanatos (69 intervenciones) el 29/12/2015 19:54:18
Podrías utilizar "getters" para obtener los datos individualmente, o un método que muestre todos al mismo tiempo, así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class Lector {
    String nombre;
    String apellidos;
    int anoCarnet;
    String dni;
 
    //Ahora hago el constructor de la clase Lector
    public Lector(String nombre, String apellidos, int anoCarnet, String dni){
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.anoCarnet = anoCarnet;
        this.dni = dni;
    }
 
    // Puedes definir "getters" para los campos de la clase, de esta forma
    // se pueden obtener los datos individualmente.
    public String getNombre() {
        return nombre;
    }
 
    public String getApellidos() {
        return apellidos;
    }
 
    public int getAnoCarnet() {
        return anoCarnet;
    }
 
    public String getDNI() {
        return dni;
    }
 
    // O mostrar todos los datos al mismo tiempo
    public void mostrarDatosLector() {
        System.out.println(
            "Nombre = " + nombre + '\n' +
            "Apellidos = " + apellidos + '\n' +
            "Anio Carnet = " + anoCarnet + '\n' +
            "DNI = " + dni
        );
    }
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Biblioteca {
 
    public static void main(String[] args) {
        Lector lector1 = new Lector("pepe", "garcia", 2003, "32056732");
 
        // Uso de los "getters" para mostrar los campos individualmente.
        System.out.println("Nombre = " + lector1.getNombre());
        System.out.println("DNI = " + lector1.getDNI());
 
        System.out.println();
 
        // Mostrando todos los datos al mismo tiempo.
        lector1.mostrarDatosLector();
    }
 
}

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Duda constructor java

Publicado por Marcelo (47 intervenciones) el 29/12/2015 20:01:41
Una respuesta muy completa.

Sin embargo debo agregar un acotacion sobre el método mostrarDatosLector().

Lo que se debe hacer en este caso es redefinir el método toString() del objeto lector para devolver un string que contenga todos sus datos concatenados y poder mostrarlos desde fuera.

Quedaría algo así

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
public class Lector {
    private String nombre; //Siempre es buena practica dejar los atributos de una clase privados(encapsulamiento)
    private String apellidos;
    private int anoCarnet;
    private String dni;
 
    //Ahora hago el constructor de la clase Lector
    public Lector(String nombre, String apellidos, int anoCarnet, String dni){
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.anoCarnet = anoCarnet;
        this.dni = dni;
    }
 
    // Puedes definir "getters" para los campos de la clase, de esta forma
    // se pueden obtener los datos individualmente.
    public String getNombre() {
        return nombre;
    }
 
    public String getApellidos() {
        return apellidos;
    }
 
    public int getAnoCarnet() {
        return anoCarnet;
    }
 
    public String getDNI() {
        return dni;
    }
 
    // O mostrar todos los datos al mismo tiempo
    public String toString() {
           return  "Nombre = " + nombre + '\n' +
            "Apellidos = " + apellidos + '\n' +
            "Anio Carnet = " + anoCarnet + '\n' +
            "DNI = " + dni;
    }
}
 
 
public class Biblioteca {
 
    public static void main(String[] args) {
        Lector lector1 = new Lector("pepe", "garcia", 2003, "32056732");
 
        // Uso de los "getters" para mostrar los campos individualmente.
        System.out.println("Nombre = " + lector1.getNombre());
        System.out.println("DNI = " + lector1.getDNI());
 
        System.out.println();
 
        // Mostrando todos los datos al mismo tiempo.
        System.out.println(lector1);
    }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Duda constructor java

Publicado por Jose (5 intervenciones) el 30/12/2015 10:38:01
Hola buenas. Os comento mas a fondo:

Tengo que hacer un programa en java que sea capaz de gestionar una biblioteca.

La información que se debe almacenar es la siguiente:

Lectores: Nombre, Apellidos, si es mayor de edad, año cuando se sacaron el carnet y dni.

Revistas: Titulo, signatura, temática, año de publicación, periodicidad de la revista, número de ejemplar

Libro: Titulo, signatura, temática, año de publicación, edición, editorial.

CD: Titulo, signatura, temática, año de publicación.

Se deberá llevar el listado de libros que se ha llevado cada lector (asociado a dicho lector).
En el programa principal se deben crear dos lectores, 5 libros y 5 revistas, 5 CDs, así como el préstamo de 3 libros y tres revistas.

El programa principal debe llevar la lista de CDs y poder listar los cds que sean de una determinada temática.

Ahora tengo dos problemas (con las partes que están en negrita):

La primera es como hago para hacer el listado de libros que se ha llevado cada lector. Entiendo que lo mejor será crear dentro de la clase Lector y del constructor Lector una variable de tipo String para definir esos libros.

Mi segunda duda es como creo los lectores concretos en el programa principal, así como también los libros, revistas y Cds.

De momento gracias a vuestras indicaciones he conseguido crear las clases Libro, Revista, Cd y Lector con sus respectivos constructores para después crear objetos concretos. También he creado los getter para poder acceder a esas variables desde el programa principal. Ajunto el código que tengo hasta ahora:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class Lector {
	String nombreLector;
	String apellidosLector;
	int AnoCarnetLector;
	String dniLector;
 
	// Ahora hago el constructor de la clase Lector
 
	public Lector(String nombreLector, String apellidosLector, int AnoCarnetLector, String dniLector) {
		this.nombreLector = nombreLector;
		this.apellidosLector = apellidosLector;
		this.AnoCarnetLector = AnoCarnetLector;
		this.dniLector = dniLector;
	}
 
	public String getNombreLector() {
		return nombreLector;
	}
 
	public String getApellidosLector() {
		return apellidosLector;
	}
 
	public int getAnoCarnetLector() {
		return AnoCarnetLector;
	}
 
	public String getDniLector() {
		return dniLector;
	}
 
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Libro {
	String tituloLibro;
	String signaturaLibro;
	int AnoPublicacionLibro;
	String edicionLibro;
	String editorialLibro;
 
	public Libro(String tituloLibro, String signaturaLibro, int AnoPublicacionLibro, String edicionLibro, String editorialLibro){
		this.tituloLibro=tituloLibro;
		this.signaturaLibro=signaturaLibro;
		this.AnoPublicacionLibro=AnoPublicacionLibro;
		this.edicionLibro=edicionLibro;
		this.editorialLibro=editorialLibro;
	}
	public String getTituloLibro(){
		return tituloLibro;
	}
	public String getSignaturaLibro(){
		return signaturaLibro;
	}
	public int getAnoPublicacionLibro(){
		return AnoPublicacionLibro;
	}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Cd {
String tituloCd;
String signaturaCd;
String tematicaCd;
int AnoPublicacionCd;
 
public Cd(String tituloCd, String signaturaCd, String tematicaCd, int AnoPublicacionCd){
	this.tituloCd=tituloCd;
	this.signaturaCd=signaturaCd;
	this.tematicaCd=tematicaCd;
	this.AnoPublicacionCd=AnoPublicacionCd;
}
public String getTituloCd(){
	return tituloCd;
}
public String getSignatuaCd(){
	return signaturaCd;
}
public String getTematicaCd(){
	return tematicaCd;
}
public int AnoPublicacionCd(){
	return AnoPublicacionCd;
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class Revista {
String tituloRevista;
String signaturaRevista;
String tematicaRevista;
int AnoPublicacionRevista;
String periodicidadRevista;
int NumeroEjemplarRevista;
 
public Revista(String tituloRevista, String signaturaRevista, String tematicaRevista, int AnoPublicacionRevista, String periodicidadRevista, int NumeroEjemplarRevista){
this.tituloRevista=tituloRevista;
this.signaturaRevista=signaturaRevista;
this.tematicaRevista=tematicaRevista;
this.AnoPublicacionRevista=AnoPublicacionRevista;
this.periodicidadRevista=periodicidadRevista;
this.NumeroEjemplarRevista=NumeroEjemplarRevista;
 
}
public String getTituloRevista(){
	return tituloRevista;
}
public String getSignaturaRevista(){
	return signaturaRevista;
}
public String getTematicaRevista(){
	return tematicaRevista;
}
public int getAnoPublicacionRevista(){
	return AnoPublicacionRevista;
}
public String getperiodicidadRevista(){
	return periodicidadRevista;
}
public int getNumeroEjemplarRevista(){
	return NumeroEjemplarRevista;
}
}

Espero que sea de ayuda lo que llevo hasta ahora y podáis ayudarme un poco vosotros ya que yo ando un poco perdido...

Muchas gracias de antemano y un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda constructor java

Publicado por Marcelo (47 intervenciones) el 30/12/2015 12:51:50
Por el tipo de letra que se plantea, asumo que aun no sabes utilizar ningún tipo de lista o estructura similar(te suena los arrays o ArrayList?)

Veo que en todas tus clases definiste solo los get... sin embargo deberías agregar los set también, te permitirán modificar de forma correcta, según el principio de encapsulamiento, los atributos de un objeto (dado que la idea de los atributos es que tengan una visibilidad privada [no puedan ser accedidos por nadie al instancia el objeto dueño de los atributos ]).

Cuando dice que el lector se puede llevar un libro, deberías interpretarlo como que la clase Lector tiene un atributo del tipo Libro (de poder llevarse revistas o cd seria la misma historia), así tu puedes asignar el objeto libro creado y no tienes que duplicar información.

Cualquier duda, quedo a las ordenes.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Duda constructor java

Publicado por Jose (5 intervenciones) el 30/12/2015 17:46:11
Hola Marcelo.

Se lo que son los arrays y para que sirven pero solo teóricamente, es decir, nunca he trabajado con ellos.

Creo que los atributos no tendrán problema al ser públicos porque he diferenciado el titulo del libro del titulo de la revista y del titulo del cd al crearlos.

Ahora lo que mas me cuesta es definir el programa de verdad, es decir, el programa gestor de la biblioteca. Del cual no se todavía por donde empezar

Era simplemente por si podíais darme algo de luz en el asunto. Alguna idea inicial o algo sobre lo que yo pueda continuar, no se si me explico muy bien.

Gracias y un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda constructor java

Publicado por Jose (5 intervenciones) el 30/12/2015 18:30:45
He avanzado algo mas y he creado los objetos concretos que me piden en la clase pricipal (la clase biblioteca). Os adjunto el codigo por si puede servir de algo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Biblioteca {
public static void main(String[]args){
	//Creamos los dos lectores
	Lector lector1=new Lector("Jose","Perez",2003,"34593275C");
	Lector lector2=new Lector("Juan","Garcia",2014,"73655432G");
	//Creamos las cinco revistas
	Revista revista1=new Revista("Auto Bild","Editorial Castillo","Automoción",2014,"Cada tres meses",53);
	Revista revista2=new Revista("Motor 16","Editorial Norzex","Automocion",2013,"Cada dos semanas",4);
	Revista revista3=new Revista("8000 vueltas","Editorial Navteq","Automocion",2009,"Cada semana", 75);
	Revista revista4=new Revista("Jara y sedal","Editorial RTVE","Caza y pesca", 2015, "Cada tres dias",200);
	Revista revista5=new Revista("Autopista","Editorial Sx","Automocion",2007,"Cada ocho dias", 450);
	//Creamos los cinco cds
	Cd cd1=new Cd("Grandes éxitos","Michael Jackson","hip-hop",1990);
	Cd cd2=new Cd("T.O.T.E","Tote King","hip-hop",2006);
	Cd cd3=new Cd("Leitmotiv","Leitmotiv","hip-hop",2012);
	Cd cd4=new Cd("Inertia","Soukin","hip-hop",2015);
	Cd cd5=new Cd("Parker","Jotandjota","hip-hop",2015);
	//Creamos los tres libros
	Libro libro1=new Libro("Territorio Comanche","Perez Reverte",2000,"Segunda edicion","Editorial Alfaguara");
	Libro libro2=new Libro("El padrino","Mario Puzo",1980,"Cuarta edicion","Editorial Paidos");
	Libro libro3=new Libro("Matematicas1","Juan Herrera",2007,"Quinta edicion","Editorial Santillana");
 
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar