Java - Ayuda con herencia

   
Vista:

Ayuda con herencia

Publicado por luis guerrón (1 intervención) el 10/04/2016 06:32:35
Buenas noches, estoy tratando de aprende java y he llegado a la parte de herencia:

Quiero solicitar los datos de un estudiante, el numero de materias que el estudiante cursa, solicitar la nota de cada una de las materias y calcular el promedio de estas.

Pero no entiendo como hacer los métodos para calcular el promedio; con los que tengo nunca genera mas de una materia y siempre retorna el promedio en 0.

Mi clase padre es

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
package herencia;
 
import javax.swing.JOptionPane;
/**
* Clase Java para implementar una superclase padre
* que maneja los datos de un objeto de tipo persona
* de forma genérica
*/
public class Persona {
 
	/************************************/
	/************************************/
 
	//Atributos de la clase
	protected String nombre;
	protected String apellido;
	protected int edad;
	protected double peso;
 
	/************************************/
	/************************************/
	/************************************/
 
	//Constructor de la clase
	public Persona() {
 
		// TODO Auto-generated constructor stub
 
	}
 
	/************************************/
	/************************************/
	/************************************/
 
	//Constructor sobrecargado
	public Persona (String nombre, String apellido, int edad, double peso){
 
		this.nombre = nombre;
		this.apellido = apellido;
		this.edad = edad;
		this.peso = peso;
 
	}
 
	/************************************/
	/************************************/
	/************************************/
 
	//Métodos de Encapsulamiento
 
	public String getNombre() {
 
		return nombre;
 
	}
 
	public void setNombre(String nombre) {
 
		this.nombre = nombre;
 
	}
 
	public String getApellido() {
 
		return apellido;
 
	}
 
	public void setApellido(String apellido) {
 
		this.apellido = apellido;
 
	}
 
	public int getEdad() {
 
		return edad;
 
	}
 
	public void setEdad(int edad) {
 
		this.edad = edad;
 
	}
 
	public double getPeso() {
 
		return peso;
 
	}
 
	public void setPeso(double peso) {
 
		this.peso = peso;
 
	}
 
	/************************************/
	/************************************/
	/************************************/
 
	//Métodos genéricos para un objeto de tipo persona
	//Método para mostrar los datos de identificación de la persona
 
	public void imprimirDatosPersona () {
 
		String datosPersona = "";
		datosPersona = "Nombre " + nombre + "\n" + "Apellido: " + apellido + "\n" +
		"Edad: " + edad + "\n" + "Peso: " + peso;
 
		JOptionPane.showMessageDialog(null,datosPersona);
		definirEstadoPersona(edad);
 
	}
 
	//Método para definir el estado de la persona
 
	public void definirEstadoPersona (int edad) {
 
		String estado = "";
 
		if (edad < 18) {
 
			estado = "Menor de edad";
 
		} else {
 
			estado = "Mayor de edad";
 
		}
 
		JOptionPane.showMessageDialog(null,"La persona" + nombre + " " + apellido +
				" es " + estado);
 
	}
 
	//Método para leer un entero (int)
 
	public int leerDatoTipoEntero (String mensaje) {
 
		int valor = 0;
 
		try {
 
			valor = Integer.parseInt(JOptionPane.showInputDialog(null,mensaje));
 
			return (valor);
 
		} catch (Exception errorIngreso) {
 
			errorIngreso.printStackTrace();
 
			return (0);
 
		}
 
	}
 
	//Método para leer un double
 
	public double leerDatoTipoReal (String mensaje) {
 
		double valor = 0.0;
 
		valor = Double.parseDouble(JOptionPane.showInputDialog(null,mensaje));
 
		return (valor);
 
	}
 
	//Método para leer un booleano
 
	public boolean leerDatoTipoBooleano (String mensaje) {
 
		boolean valor = false;
 
		valor = Boolean.parseBoolean(JOptionPane.showInputDialog(null,mensaje));
 
		return (valor);
 
	}
 
	public String leerDatoTipoCadena (String mensaje) {
 
		String valor = "";
 
		valor = JOptionPane.showInputDialog(null,mensaje);
 
		return (valor);
 
	}
 
	/************************************/
 
}

y la clase hija seria esta:

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package herencia;
 
import javax.swing.JOptionPane;
 
public class Estudiante extends Persona {
 
	private String carnet;
	private double promedioNotas;
	private int numeroMaterias;
 
	public Estudiante() {
 
	}
 
	public Estudiante(String nombre, String apellido, int edad, int peso, String carnet,
			int numeroMaterias, double promedioNotas) {
 
		super(nombre, apellido, edad, peso);
 
		this.carnet = carnet;
		this.promedioNotas = promedioNotas;
		this.numeroMaterias = numeroMaterias;
 
	}
 
	public String getCarnet() {
		return carnet;
	}
 
	public void setCarnet(String carnet) {
 
		this.carnet = carnet;
 
	}
 
	public double getPromedioNotas() {
 
		return promedioNotas;
 
	}
 
	public void setPromedioNotas(double promedioNotas) {
 
		this.promedioNotas = promedioNotas;
 
	}
 
	public int getNumeroMaterias() {
 
		return numeroMaterias;
 
	}
 
	public void setNumeroMaterias(int numeroMaterias) {
 
		this.numeroMaterias = numeroMaterias;
 
	}
 
	public double calcularPromedio(int numeroMaterias, double promedioNotas) {
 
		promedioNotas += promedioNotas / numeroMaterias;
 
		return promedioNotas;
	}
 
	public double leerNotasEstudiante(double promedio, double numeroMaterias) {
 
		for (int i = 0; i == numeroMaterias ; i++) {
 
			promedio += Double.parseDouble(JOptionPane.showInputDialog("Ingrese la nota del "
					+ "estudiante:"));
 
		}
 
		return promedio;
 
	}
 
	public Estudiante ingresarDatosEstudiante() {
 
		Estudiante nuevoEstudiante = new Estudiante();
		String nombre = "";
		String apellido = "";
		int edad = 0;
		double peso = 0.0;
		int numeroMaterias = 0;
		double promedioNotas = 0.0;
		double promedio = 0.0;
		String carnet = "";
 
		carnet = leerDatoTipoCadena("Ingrese el código del carnet del estudiante: ");
		nombre = leerDatoTipoCadena("Ingrese el nombre del estudiante: ");
		apellido = leerDatoTipoCadena("Ingrese el apellido del estudiante: ");
		edad = leerDatoTipoEntero("Ingrese la edad del estudiante: ");
		peso = leerDatoTipoReal("Ingrese el peso del estudiante: ");
 
		numeroMaterias = leerDatoTipoEntero("Ingrese el número de materias vista por "
				+ "el estudiante: ");
		promedio = leerDatoTipoReal("Ingrese la nota de la materia: ");
 
		promedioNotas = calcularPromedio(numeroMaterias, promedioNotas);
 
		nuevoEstudiante.setNombre(nombre);
		nuevoEstudiante.setApellido(apellido);
		nuevoEstudiante.setCarnet(carnet);
		nuevoEstudiante.setEdad(edad);
		nuevoEstudiante.setPeso(peso);
		nuevoEstudiante.setPromedioNotas(promedioNotas);
 
		return nuevoEstudiante;
 
	}
 
	public void imprimirReporteNotasEstudiante() {
 
		imprimirDatosPersona();
 
		JOptionPane.showMessageDialog(null,"El código del estudiante es: " + carnet);
 
		calcularPromedio(numeroMaterias, promedioNotas);
 
		JOptionPane.showMessageDialog(null, "El promedio del estudiante es:" +
		promedioNotas);
	}
 
}

La clase principal donde ejecutaria;

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package herencia;
import javax.swing.JOptionPane;
 
/**
* Clase Java para implementar un cliente
* que emplea la jerarquía de herencia de la persona,
* el empleado y el estudiante para mostrar los cálculos
* de cada uno de los respectivos procesos implementados
* por cada clase
*/
 
public class SistemaInformacion {
 
	/********************************/
	/********************************/
	/********************************/
 
	//Constructor de la clase
	public SistemaInformacion() {
 
		// TODO Auto-generated constructor stub
 
	}
 
	/**
	 * * @param args
	 * */
 
	public static void main(String[] args) {
 
		/********************************/
		/********************************/
		/********************************/
		// TODO Auto-generated method stub
		int opcion = 0;
 
		Persona sistemaInformacion = new Persona();
 
		try {
 
			//Usamos la herencia de la superclase para acceder a los
			//métodos de lectura de datos
 
			do {
 
				opcion = sistemaInformacion.leerDatoTipoEntero("Ingrese la opción 1 para "
						+ "procesar los datos del empleado, ingrese la opción 2 para procesar los datos del estudiante, "
						+ "3 para salir: ");
 
				if (opcion == 1) {
 
					JOptionPane.showMessageDialog(null,"Procesando datos del empleado");
					Empleado manejadorEmpleado = new Empleado();
 
					//Leemos los datos
					manejadorEmpleado = manejadorEmpleado.ingresarDatosEmpleado();
 
					//Mostramos el reporte de datos
					manejadorEmpleado.imprimirReporteEstadoEmpleado();
 
				} else {
 
					if (opcion == 2) {
 
						JOptionPane.showMessageDialog(null, "Procesando los datos "
								+ "del estudiante");
						Estudiante manejadorEst = new Estudiante();
 
						manejadorEst = manejadorEst.ingresarDatosEstudiante();
 
						manejadorEst.imprimirReporteNotasEstudiante();
 
					} else {
 
					if (opcion == 3) {
 
						JOptionPane.showMessageDialog(null,"Saliendo del Sistema");
						break;
 
					} else {
 
						JOptionPane.showMessageDialog(null,"Opción inválida");
 
						}
					}
				}
 
			} while (opcion <= 1 || opcion >= 3);//fin del do-while
 
		}//Fin del try	
 
 
		catch (Exception errorMain) {
 
			JOptionPane.showMessageDialog(null,"Error en la digitación: ");
			errorMain.printStackTrace();
 
		}
 
		/********************************/
 
	}
 
	/********************************/
	/********************************/
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder