Java - Paradigma orientado a objetos.

 
Vista:
sin imagen de perfil

Paradigma orientado a objetos.

Publicado por Ubaldo Jesús (3 intervenciones) el 23/03/2022 21:56:03
Amigos! me gustaría que alguien me ayudara con este programa, la verdad es que estoy cursando esta carrera para no decepcionar a mis padres, pero a mi no me agrada del todo. Les agradecería mucho si me ayudan.

Instrucciones:
1. Resuelve el problema que se plantea mediante el lenguaje de programación Java y
aplicando los conceptos estudiados en el Módulo.
2. Utiliza el entorno Netbeans para la creación del proyecto.
Problema:
En la escuela de informática Río Grande desea mejorar la eficiencia el sistema escolar, al
cual 3 tipos de usuario tienen acceso: Maestro, Alumno y Tutor, cada uno de ellos tiene las
siguientes características:
Maestro
 Id
 nombre
 apellido
 correoElectronico
 imprimirPerfil() el cual mostrará los datos básicos de la cuenta (Id, nombre,
apellido, correo electrónico
Alumno
 Id
 nombre
 apellido
 calificacion
 correoElectronico
 imprimirPerfil() el cual mostrará los datos básicos de la cuenta (Id, nombre,
apellido, correo electrónico)
 mostrarCalificaciones(), mostrará su calificación
 guardarCalificacion(calificacion)
Tutor
 Id
 nombre
 apellido
 correoElectronico
 alumno
 imprimirPerfil() el cual mostrará los datos básicos de la cuenta (Id, nombre,
apellido, correo electrónico)
 mostrarCalificaciones(), mostrará la calificación del alumno

También deberás simular las acciones de base de datos y mostrar los datos con impresión
en consola.

Entregables:
 Entregarás una carpeta Zip, la cual contendrá la carpeta del proyecto generado en
Netbeans.

Requerimientos:
 El proyecto debe de contener: herencia, métodos, uso de variables, uso de
modificadores de acceso, paso de variables, encapsulamiento, retorno de valores,
clase abstracta e interfaz.
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Paradigma orientado a objetos.

Publicado por Kabuto (1381 intervenciones) el 24/03/2022 14:47:22
Hola.
Se pide que haya herencia y clases abstractas. Para valorar esto, hay que ver cuáles son las entidades que intervienen.
Tenemos Alumno, Maestro y Tutor.
¿Tienen algo en común?

Bueno, todos ellos son "personas", y si nos fijamos en sus atributos vemos que todo tienen id, nombre, apellido y correo electrónico. Así que podemos escribir una clase abstracta que concentre todos estos atributos.
Estas entidades, además, tienen en común un método llamado imprimirPerfil(), así que lo escribiremos también en esta clase abstracta.
Por supuesto, pondremos todos los getters y setters para los atributos.

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
public abstract class Persona {
 
	protected String id;
	protected String nombre;
	protected String apellido;
	protected String correoE;
 
	public Persona(String id, String nombre, String apellido, String correoE) {
		this.id = id;
		this.nombre = nombre;
		this.apellido = apellido;
		this.correoE = correoE;
	}
 
	public void imprimirPerfil() {
		System.out.println("ID: " + id);
		System.out.print("Nombre: " + nombre);
		System.out.println("\tApellido: " + apellido);
		System.out.println("Correo-E: " + correoE);
	}
 
	public String getId() {
		return id;
	}
 
	public void setId(String id) {
		this.id = id;
	}
 
	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 String getCorreoE() {
		return correoE;
	}
 
	public void setCorreoE(String correoE) {
		this.correoE = correoE;
	}
 
}

Fíjate que el modificador de acceso de los atributos los he puesto como protected. Lo normal es ponerlos como private, pero al ser una clase abstracta y que por tanto está destinada a que otras clases hereden de ella, ponerlos como protected luego puede facilitar las cosas.
Protected significa que las clases hijas que vayan a heredar de Persona, podrán acceder directamente a esos atributos. Si estuvieran como private, no podrían acceder directamente, aunque si mediante getters y setters.

Bien, vamos a ver las clases hijas.
Tenemos la clase Maestro, que parece ser que no tiene ningún atributo ni método a parte de los que ya aporta la clase abstracta Persona. Así que el código de esta clase es simplemente esto:
1
2
3
4
5
6
7
public class Maestro extends Persona {
 
	public Maestro(String id, String nombre, String apellido, String correoE) {
		super(id, nombre, apellido, correoE);
	}
 
}

Vamos a ver la clase Alumno. Aquí sí vemos que hay un nuevo atributo llamado calificacion que además nos piden dos métodos para mostrar y modificar su valor.
Subrayo lo de mostrar, porque el método que nos piden es para mostrar la calificación en pantalla. Pero mostrarla no es retornarla, es decir, si en algún momento nos pidieran calcular la calificación media de todos los alumnos, no nos va a servir un método que "muestre" la calificación en pantalla. Necesitaremos uno que "retorne" el valor de la calificación, para poder computar con él.

Matizo esto porque, aunque no lo pida el enunciado, voy a poner además un método que retorne (get) el valor del atributo. Porque es buena costumbre más que nada, porque lo cierto es que en este ejercicio parece que no lo vamos a necesitar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Alumno extends Persona {
 
	private double calificacion;
 
	public Alumno(String id, String nombre, String apellido, String correoE, double calificacion) {
		super(id, nombre, apellido, correoE);
		this.calificacion = calificacion;
	}
 
	public double getCalificacion() {
		return calificacion;
	}
 
	public void guardarCalificacion(double calificacion) {
		this.calificacion = calificacion;
	}
 
	public void mostrarCalificacion() {
		System.out.println("Calificacion: " + calificacion);
	}
 
}


Y nos falta la clase Tutor, la cuál también añade atributos y métodos a los que le va a dar la herencia de Persona.
En este caso, tendrá un atributo que será un objeto Alumno.
Esto nos ha de hacer pensar en los siguiente: Si un Tutor tiene como atributo un Alumno, ¿durante el programa podemos crear un Tutor si no hemos creado antes al menos un Alumno?
Deberíamos poder garantizar el poder crear tutores sin que existan previamente alumnos. Así que en el constructor de Tutor, no pediremos un Alumno. Dejaremos que se pueda crear el tutor sin que tenga un alumno asignado, ya se le asignará después mediante un método setter

Y hay otra cosa sobre la que reflexionar:
Un Tutor, es una Persona. No hay duda,
Pero un Tutor, también es un Maestro.
Esta relación entre entidades puede convenir que quede modelada en el programa, por tanto, parece lógico hacer que Tutor herede de Maestro (que a su vez le hace heredar de Persona)
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
public class Tutor extends Maestro {
 
	private Alumno alumno;
 
	public Tutor(String id, String nombre, String apellido, String correoE) {
		super(id, nombre, apellido, correoE);
		alumno = null; //El tutor se construye sin ningún alumno asignado
	}
 
	public void mostrarCalificacion() {
		//Si no tenemos alumno asignado, no hay calificacion que mostrar
		if (alumno == null)
			System.out.println("Este tutor no tiene ningún alumnos asignado");
		else {
			System.out.println("Alumno asignado: " + alumno.getId());
			alumno.mostrarCalificacion();
		}
	}
 
	public Alumno getAlumno() {
		return alumno;
	}
 
	public void setAlumno(Alumno alumno) {
		this.alumno = alumno;
	}
 
}

Ok, tenemos las clases modeladas.
Ahora se no pide simular las acciones de una base de datos. Es decir, un programa que permita crear alumnos, maestros, tutores, consultar sus datos, modificar, eliminar...
Puedes hacerlo tan simple o complejo como quieras, pero se entiende que al menos debería ser posible ver en acción los métodos solicitados, como mostrar la calificación del alumno asignado a un tutor.

En cualquier caso, recomiendo hacer una nueva clase con algún tipo de colección, por ejemplo ArrayList, que simule ser la base de datos y tenga todos los métodos necesarios para añadir, modificar, borrar, listar....
Puedes usar tres ArrayList, uno para cada clase: Alumno, Maestro y Tutor.

O puedes usar dos, uno para Alumnos y otro para Maestros y Tutores, que vienen a ser casi lo mismo.

O puedes usar solo un ArrayList, de tipo Persona, donde se pueden guardar todos juntos alumnos, tutores y maestros, pues todos son personas.

Elige tu, no hay un modo mejor o peor.

Yo te pongo un ejemplo sin terminar, en que solamente utilizo un ArrayList de Persona.
He escrito los métodos para gestionar Alumnos y otro más para registrar Maestros. Durante el registro, pregunto si este Maestro será Tutor o no.

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
public class GestionEscuela {
 
	private ArrayList<Persona> baseDatos = new ArrayList<Persona>();
	private Scanner teclado = new Scanner(System.in);
 
	public void registrarAlumno() {
		System.out.println("\n\tNuevo Alumno");
		System.out.print("ID: ");
		String id = teclado.nextLine();
		System.out.print("Nombre: ");
		String nombre = teclado.nextLine();
		System.out.print("Apellido: ");
		String apell = teclado.nextLine();
		System.out.print("Correo-E: ");
		String correo = teclado.nextLine();
		System.out.print("Calificacion: ");
		double cal = Double.parseDouble(teclado.nextLine());
 
		baseDatos.add(new Alumno(id, nombre, apell, correo, cal));
	}
 
	public void modificarAlumno() {
		if (baseDatos.isEmpty())
			System.out.println("Base de datos esta vacia");
		else {
			System.out.println("\n\tModificar Alumno");
			System.out.print("Indique el ID: ");
			String id = teclado.nextLine();
			//Buscamos Alumno
			Alumno buscar = null;
			for (Persona per: baseDatos)
				if (per.getId().equals(id)) {
					buscar = (Alumno) per; //De Persona casteamos a Alumno
					break; //Finalizamos la búsqueda
				}
			//Comprobamos qué hemos encontrado
			if (buscar == null)
				System.out.println("No hay ningun Alumno con el ID: " + id);
			else {
				System.out.print("Nuevo Nombre: ");
				buscar.setNombre(teclado.nextLine());
				System.out.print("Nuevo Apellido: ");
				buscar.setApellido(teclado.nextLine());
				System.out.print("Nuevo Correo-E: ");
				buscar.setCorreoE(teclado.nextLine());
				System.out.print("Nueva calificacion: ");
				buscar.guardarCalificacion(Double.parseDouble(teclado.nextLine()));
 
				System.out.println("\n\t--Alumno modificado--\n");
			}
		}
	}
 
	public void borrarAlumno() {
		if (baseDatos.isEmpty())
			System.out.println("Base de datos esta vacia");
		else {
			System.out.println("\n\tEliminar Alumno");
			System.out.print("Indique el ID: ");
			String id = teclado.nextLine();
			//Buscamos alumno y guardamos su posicion en el array
			int posicion = -1;
			for (int i = 0; i < baseDatos.size(); i++)
				if (baseDatos.get(i).getId().equals(id)) {
					posicion = i; //Guardamos posicion
					break;//Fin de búsqueda
				}
			//Comprobamos que tenemos
			if (posicion == -1)
				System.out.println("No hay ningun Alumno con el ID: " + id);
			else {
				baseDatos.remove(posicion);
				System.out.println("\n\t--Alumno Eliminado--");
			}
		}
	}
 
	public void listarAlumnos() {
		if (baseDatos.isEmpty())
			System.out.println("Base de datos esta vacia");
		else {
			boolean hayAlumnos = false; //Puede que hayan maestros pero no alumnos para listar
			System.out.println("\n\tListado Alumnos");
			for (Persona per: baseDatos)
				if (per instanceof Alumno) { //Seleccionamos solo las personas que son Alumnos
					hayAlumnos = true; //Se ha encontrado al menos un alumno
					Alumno alu = (Alumno)per;
					alu.imprimirPerfil();
					alu.mostrarCalificacion();
					System.out.println("\t\t----------");
				}
			//Si no se han encontrado alumnos para listar, hay que informar
			if (!hayAlumnos)
				System.out.println("\nNo hay Alumnos registrados");
		}
	}
 
	public void registrarMaestro() {
		System.out.println("\n\tNuevo Maestro");
		System.out.print("ID: ");
		String id = teclado.nextLine();
		System.out.print("Nombre: ");
		String nombre = teclado.nextLine();
		System.out.print("Apellido: ");
		String apell = teclado.nextLine();
		System.out.print("Correo-E: ");
		String correo = teclado.nextLine();
 
		System.out.print("Este Maestro sera un Tutor?(s/n): ");
		char esTutor = teclado.nextLine().toLowerCase().charAt(0);
 
		if (esTutor == 's')
			baseDatos.add(new Tutor(id, nombre, apell, correo));
		else
			baseDatos.add(new Maestro(id, nombre, apell, correo));
	}
}

Luego en una clase principal, ofrecemos un menú y usamos un objeto de la clase que gestiona la "base de datos" para llamar a sus métodos según lo que se elija en el menú.
De nuevo, esto solo es un ejemplo. Puedes crear tu propio menú con más opciones, menos o distintas.

O puedes intentar completar las opciones que yo no he escrito, siguiendo de ejemplo los métodos que sí escribí.

Inténtalo y cuando te atasques, o veas algo que no entiendes y necesita más explicación, pregúntalo aquí. Un saludo.

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
import java.util.Scanner;
 
public class EscuelaRioGrande {
 
	private static GestionEscuela gestion = new GestionEscuela();
	private static Scanner teclado = new Scanner(System.in);
 
	public static void main(String[] args) {
		int opcion = 0;
 
		do {
			System.out.println("\n\n\t\tMENU DE GESTION");
			System.out.println("\t\t---- -- -------\n");
			System.out.println("\tALUMNOS");
			System.out.println("\t-------");
			System.out.println("[1] -- Registrar nuevo Alumno");
			System.out.println("[2] -- Modificar Alumno");
			System.out.println("[3] -- Eliminar Alumno");
			System.out.println("[4] -- Listar todos los Alumnos");
			System.out.println("\tMAESTROS");
			System.out.println("\t--------");
			System.out.println("[5] -- Registrar nuevo Maestro");
			System.out.println("[6] -- Modificar Maestro");
			System.out.println("[7] -- Eliminar Maestro");
			System.out.println("[8] -- Listar todos los Maestros");
			System.out.println("\tTUTORES");
			System.out.println("\t-------");
			System.out.println("[9] -- Asignar Alumno a Tutor");
			System.out.println("[10] - Listar calificaciones de Alumnos de los Tutores");
			System.out.println("\n[0] -- TERMINAR PROGRAMA");
			System.out.print("Elija opcion: ");
			opcion = Integer.parseInt(teclado.nextLine());
 
			switch(opcion) {
			case 0:
				System.out.println("\n\n\t\tFIN DE PROGRAMA");
				break;
			case 1:
				gestion.registrarAlumno();
				break;
			case 2:
				gestion.modificarAlumno();
				break;
			case 3:
				gestion.borrarAlumno();
				break;
			case 4:
				gestion.listarAlumnos();
				break;
			case 5:
				gestion.registrarMaestro();
				break;
			case 6:
				break;
			case 7:
				break;
			case 8:
				break;
			case 9:
				break;
			case 10:
				break;
			default:
				System.out.println("Opcion equivocada");
			}
		}while(opcion != 0);
 
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
5
Comentar
sin imagen de perfil

Paradigma orientado a objetos.

Publicado por Ubaldo Jesús (3 intervenciones) el 24/03/2022 18:09:41
Muchísimas gracias, brother, me salvaste la vida!
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
Imágen de perfil de Cristian Daniel

Paradigma orientado a objetos.

Publicado por Cristian Daniel (1 intervención) el 27/07/2022 23:49:42
Muchas gracias amigo me salvaste, nunca habia entrado a este sitio y es muy util la verdad

Hasta me cree una cuenta para agradecerte con un voto positivo
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
Imágen de perfil de Cesar

Paradigma orientado a objetos.

Publicado por Cesar (1 intervención) el 16/11/2022 01:08:24
Que tal amigo buenas noches la verdad me ayudo bastante tu código te comento que tengo un inconveniente con el método Asignaralumno simplemente no se me ocurre como mandar a llamar el método ( cabe resaltar que estoy aprendiendo)
hice el menú mas grande agregando lo que me pareció conveniente en la clase Gestión, la verdad soy bastante novato pero me gustaria entender mejor esto, el problema es que ya voy contra reloj :(

este es mi codigo en la clase Gestion


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
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
import java.util.ArrayList;
import java.util.Scanner;
 
public class SimGestion{
 
private ArrayList<Sujeto> baseDatos = new ArrayList();
private Scanner teclado = new Scanner(System.in);
 
	public void registrarAlumno() {
		System.out.println("\n\tNuevo Alumno");
		System.out.print("ID: ");
		String id = teclado.nextLine();
		System.out.print("Nombre: ");
		String nombre = teclado.nextLine();
		System.out.print("Apellido: ");
		String apell = teclado.nextLine();
		System.out.print("Correo-E: ");
		String correo = teclado.nextLine();
		System.out.print("Calificacion: ");
		double cal = Double.parseDouble(teclado.nextLine());
 
		baseDatos.add(new Alumno(id, nombre, apell, correo, cal));
 
	}
 
	public void modificarAlumno() {
	if (baseDatos.isEmpty())
		System.out.println("Base de datos esta vacia");
	else {
		System.out.println("\n\tModificar Alumno");
		System.out.print("Indique el ID: ");
		String id = teclado.nextLine();
		//Buscamos Alumno
		Alumno buscar = null;
		for (Sujeto per: baseDatos)
		if (per.getId().equals(id)) {
		buscar = (Alumno) per;
		break;
				}
 
	if (buscar == null)
		System.out.println("No hay ningun Alumno con el ID: " + id);
	else {
		System.out.print("Nuevo Nombre: ");
		buscar.setNombre(teclado.nextLine());
		System.out.print("Nuevo Apellido: ");
		buscar.setApellido(teclado.nextLine());
		System.out.print("Nuevo Correo-Electronico: ");
		buscar.setCorreoElectronico(teclado.nextLine());
		System.out.print("Nueva calificacion: ");
		buscar.guardarCalificacion(Double.parseDouble(teclado.nextLine()));
 
		System.out.println("\n\t--Alumno modificado--\n");
			}
		}
	}
 
	public void borrarAlumno() {
	if (baseDatos.isEmpty())
 
	System.out.println("Base de datos esta vacia");
 
	else {
		System.out.println("\n\tEliminar Alumno");
		System.out.print("Indique el ID: ");
		String id = teclado.nextLine();
 
		int posicion = -1;
		for (int i = 0; i < baseDatos.size(); i++)
		if (baseDatos.get(i).getId().equals(id)) {
                    posicion = i;
		break;
				}
 
	if (posicion == -1)
            System.out.println("No hay ningun Alumno con el ID: " + id);
	else {
	         baseDatos.remove(posicion);
                 System.out.println("\n\t--Alumno Eliminado--");
			}
		}
	}
 
	public void listarAlumnos() {
	if (baseDatos.isEmpty())
		System.out.println("Base de datos esta vacia");
	else {
		boolean hayAlumnos = false;
		System.out.println("\n\tListado Alumnos");
		for (Sujeto per: baseDatos)
		if (per instanceof Alumno) {
		hayAlumnos = true;
		Alumno alu = (Alumno)per;
		alu.imprimirPerfil();
		alu.mostrarCalificacion();
		System.out.println("\t\t----------");
				}
 
	if (!hayAlumnos)
		System.out.println("\nNo hay Alumnos registrados");
		}
	}
 
	public void registrarMaestro() {
		System.out.println("\n\tNuevo Maestro");
		System.out.print("ID: ");
		String id = teclado.nextLine();
		System.out.print("Nombre: ");
		String nombre = teclado.nextLine();
		System.out.print("Apellido: ");
		String apell = teclado.nextLine();
		System.out.print("Correo-E: ");
		String correo = teclado.nextLine();
 
		System.out.print("Este Maestro sera un Tutor?(s/n): ");
		char esTutor = teclado.nextLine().toLowerCase().charAt(0);
 
		if (esTutor == 's')
			baseDatos.add(new Tutor(id, nombre, apell, correo));
		else
			baseDatos.add(new Maestro(id, nombre, apell, correo));
	}
 
    public void modificarMaestro() {
	if (baseDatos.isEmpty())
		System.out.println("Base de datos esta vacia");
	else {
		System.out.println("\n\tModificar Maestro");
		System.out.print("Indique el ID del Maestro: ");
		String id = teclado.nextLine();
 
		Maestro buscar = null;
		for (Sujeto per: baseDatos)
		if (per.getId().equals(id)) {
		buscar = (Maestro) per;
		break;
				}
 
	if (buscar == null)
		System.out.println("No hay ningun Maestro con el ID ingresado: " + id);
	else {
		System.out.print("Modifica con un nuevo Nombre: ");
		buscar.setNombre(teclado.nextLine());
		System.out.print("Modifica con un Apellido: ");
		buscar.setApellido(teclado.nextLine());
		System.out.print("Modifica con un nuevo Correo-Electronico: ");
		buscar.setCorreoElectronico(teclado.nextLine());
 
		System.out.println("\n\t--El Maestro fue modificado con exito--\n");
			}
		}
	}
 
	public void borrarMaestro() {
	if (baseDatos.isEmpty())
 
	System.out.println("Base de datos esta vacia");
 
	else {
		System.out.println("\n\tEliminacion de Maesto");
		System.out.print("Indique el ID del Maestro a Eliminar: ");
		String id = teclado.nextLine();
		int posicion = -1;
		for (int i = 0; i < baseDatos.size(); i++)
		if (baseDatos.get(i).getId().equals(id)) {
                    posicion = i; //Guardamos posicion
		break;//Fin de búsqueda
				}
	if (posicion == -1)
            System.out.println("No hay ningun Maestro registrado con el ID: " + id);
	else {
	         baseDatos.remove(posicion);
                 System.out.println("\n\t--Maestro Eliminado con exito--");
			}
		}
	}
 
	public void listarMaestro() {
	if (baseDatos.isEmpty())
		System.out.println("Base de datos esta vacia");
	else {
		boolean hayMaestros = false;
		System.out.println("\n\tLista de Maestros");
		for (Sujeto per: baseDatos)
		if (per instanceof Maestro) {
		hayMaestros = true;
		Maestro mae = (Maestro)per;
		mae.imprimirPerfil();
 
		System.out.println("\t\t----------");
				}
	if (!hayMaestros)
		System.out.println("\nNo hay Maestros registrados");
		}}
 
    public void registrarTutor() {
 
		System.out.println("\n\tCreacion de Tutor");
		System.out.print("ID: ");
		String id = teclado.nextLine();
		System.out.print("Nombre: ");
		String nombre = teclado.nextLine();
		System.out.print("Apellido: ");
		String apell = teclado.nextLine();
		System.out.print("Correo-Electronico: ");
		String correo = teclado.nextLine();
 
		baseDatos.add(new Tutor(id, nombre, apell, correo));
 
	}
 
    public void modificarTutor() {
	if (baseDatos.isEmpty())
		System.out.println("Base de datos esta vacia");
	else {
		System.out.println("\n\tActualizar TUTOR");
		System.out.print("Indique el ID del TUTOR: ");
		String id = teclado.nextLine();
 
		Tutor buscar = null;
		for (Sujeto per: baseDatos)
		if (per.getId().equals(id)) {
		buscar = (Tutor) per;
		break;
				}
 
	if (buscar == null)
		System.out.println("No hay ningun TUTOR con el ID ingresado: " + id);
	else {
		System.out.print("Modifica con un nuevo Nombre: ");
		buscar.setNombre(teclado.nextLine());
		System.out.print("Modifica con un Apellido: ");
		buscar.setApellido(teclado.nextLine());
		System.out.print("Modifica con un nuevo Correo-Electronico: ");
		buscar.setCorreoElectronico(teclado.nextLine());
 
		System.out.println("\n\t--El TUTOR fue modificado con exito--\n");
			}
		}
	}
 
	public void borrarTutor() {
	if (baseDatos.isEmpty())
 
	System.out.println("Base de datos esta vacia");
 
	else {
		System.out.println("\n\tEliminacion de TUTOR");
		System.out.print("Indique el ID del TUTOR a Eliminar: ");
		String id = teclado.nextLine();
		int posicion = -1;
		for (int i = 0; i < baseDatos.size(); i++)
		if (baseDatos.get(i).getId().equals(id)) {
                    posicion = i; //Guardamos posicion
		break;//Fin de búsqueda
				}
	if (posicion == -1)
            System.out.println("No hay ningun TUTOR registrado con el ID: " + id);
	else {
	         baseDatos.remove(posicion);
                 System.out.println("\n\t--TUTOR Eliminado con exito--");
			}
		}
        }
 
	public void listarTutor() {
	if (baseDatos.isEmpty())
		System.out.println("Base de datos esta vacia");
	else {
		boolean hayTutores = false;
		System.out.println("\n\tLista de TUTORES");
		for (Sujeto per: baseDatos)
		if (per instanceof Tutor) {
		hayTutores = true;
		Tutor tut = (Tutor)per;
		tut.imprimirPerfil();
 
		System.out.println("\t\t----------");
				}
	if (!hayTutores)
		System.out.println("\nNo hay TUTORES registrados");
		}
        //METODO PARA AGREGAR ALUMNO
	}
        public void AsignarAlumno() {
                System.out.println("\n\tAsignar alumno a tutor");
		System.out.print("ID del alumno a asignar: ");
		String id = teclado.nextLine();
 
    }
}
/code]
 
y en mi menú tengo lo siguiente:
 
[code]ublic class mainReto5 {
 
 private static SimGestion gestion = new SimGestion();
private static Scanner teclado = new Scanner(System.in);
 
 
 public static void main(String[] args) {
     int opcion;
 
    do {
	System.out.println("\n\n **MENU DE GESTION**");
	System.out.println("---- -- -----------\n");
	System.out.println("\tALUMNOS");
	System.out.println("\t-------");
	System.out.println("[1] -- Registrar nuevo Alumno");
	System.out.println("[2] -- Modificar Alumno");
	System.out.println("[3] -- Eliminar Alumno");
	System.out.println("[4] -- Listar todos los Alumnos");
	System.out.println("\tMAESTROS");
	System.out.println("\t--------");
	System.out.println("[5] -- Registrar nuevo Maestro");
	System.out.println("[6] -- Modificar Maestro");
	System.out.println("[7] -- Eliminar Maestro");
	System.out.println("[8] -- Listar todos los Maestros");
	System.out.println("\tTUTORES");
	System.out.println("\t-------");
	System.out.println("[9] -- Registrar nuevo Tutor");
	System.out.println("[10] - Modificar Tutor");
        System.out.println("[11] - Eliminar Tutor");
        System.out.println("[12] -- Asignar Alumno a Tutor");
	System.out.println("[13] - Listar tutores y calificaciones de Alumnos asignados");
 
	System.out.println("\n[0] -- TERMINAR PROGRAMA");
	System.out.print("Elija opcion: ");
	opcion = Integer.parseInt(teclado.nextLine());
 
	switch(opcion) {
		case 0 -> System.out.println("\n\n\t\tFIN DE PROGRAMA");
		case 1 -> gestion.registrarAlumno();
		case 2 -> gestion.modificarAlumno();
		case 3 -> gestion.borrarAlumno();
		case 4 -> gestion.listarAlumnos();
		case 5 -> gestion.registrarMaestro();
		case 6 -> {gestion.modificarMaestro();}
		case 7 -> {gestion.borrarMaestro();}
		case 8 -> {gestion.listarMaestro();}
		case 9 -> {gestion.registrarTutor();}
		case 10 -> {gestion.modificarTutor();}
                case 11 -> {gestion.borrarTutor();}
                case 12 ->{} // LLAMAR A METODO PARA ASIGNAR UN ALUMNO
                case 13 -> {gestion.listarTutor();}
		default -> System.out.println("Opcion equivocada");
			}
		}while(opcion != 0);
}}

Me podrias ayudar a terminar el codigo? o explicarme como debo hacerlo? te lo agradeceria infinitamente.
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Paradigma orientado a objetos.

Publicado por Kabuto (1381 intervenciones) el 16/11/2022 12:35:42
Entiendo que lo que te falta es completar este método:
1
2
3
4
5
6
public void AsignarAlumno() {
                System.out.println("\n\tAsignar alumno a tutor");
		System.out.print("ID del alumno a asignar: ");
		String id = teclado.nextLine();
 
    }

Vale.
Pues tras pedir el ID de alumno, con este ID necesitaríamos encontrar el Alumno correspondiente, si es que existe..

Para esto, podríamos incluir un nuevo método en tu clase SimGestion, uno al que dándole un ID, nos busque y retorne el objeto Alumno que corresponde.
1
2
3
public Alumno getAlumno(String id) {
 
}

Pero fíjate que luego vamos a tener que pedir también el ID del tutor, y también buscarlo:
1
2
3
public Tutor getTutor(String id) {
 
}

Esos dos métodos van a hacer prácticamente lo mismo. Así que en lugar de escribirlo dos veces, mejor escribir solo uno que busque y retorne un Sujeto.
Y ya luego a ese sujeto le haremos casting a Tutor o Alumno, según lo que necesitemos.

1
2
3
4
5
6
7
8
9
10
public Sujeto getSujeto(String id) {
	Sujeto buscar = null;
	for (Sujeto suj: baseDatos)
		if (suj.getId().equals(id)) {
			buscar = suj;
			break;
		}
 
	return buscar;
}
Este método nos busca y retorna un Sujeto mediante el ID. Y si no existe, pues retornará null.

Ahora, volvemos al método AsignarAlumno(), y ya podemos buscar un Alumno, un Tutor, y asociarlos.

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 void AsignarAlumno() {
		Alumno alum = null;
		Tutor tuto = null;
		System.out.println("\n\tAsignar alumno a tutor");
		System.out.print("ID del alumno a asignar: ");
		String id = teclado.nextLine();
		Sujeto buscar = getSujeto(id);
		id (buscar == null)
			System.out.println("No existe Alumno con ese ID");
		else {
			alum = (Alumno) buscar; //Casting a Alumno
			//Ahora buscamos un Tutor
			System.out.print("ID del Tutor: ");
			id = teclado.nextLine();
			buscar = getSujeto(id);
			if (buscar == null)
				System.out.println("No existe Tutor con ese ID");
			else {
				tuto = (Tutor) buscar; //Casting a Tutor
				//Tenemos Alumno y Tutor, los asociamos
				tuto.setAlumno(alum);
			}
		}
 
    }

Y creo que eso es todo.
Pruébalo y nos cuentas.

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
sin imagen de perfil

Paradigma orientado a objetos.

Publicado por Carlos (1 intervención) el 16/11/2022 04:59:02
Hermano, no sabes como me ayudo, en la uni en linea no se tomaron la molestia de siquiera decirnos "tienes que cursar X antes de Y" y me dejaron seleccionar OOP antes de Fundamentos de programacion, y realmente no estoy entendiendo casi nada, ya tengo yo un curso de Java en Udemy y lo estoy haciendo, pero todavia no llego a POO y estos desgraciados no me dieron oportunidad de posponer, querian que hiciera POO inmediatamente despues de reporbarla, y si reprobaba esta vez, perdia mi progreso en la carrera(40%) y tenia que empezar de 0, y no se me hace justo

Tu llegaste como caido del cielo, te juro que voy a tomar tu ejemplo y cuando ya este bien metido en Java voy a ayudar gente como tu nos has ayudado, mandame IM, si asi gustas, con tu paypal, me gustaria mandarte algo, no soy rico, pero quiero hacerlo, porque me ahorraste un año de mi vida por algo de lo que ni siquiera tenia yo la culpa!
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Paradigma orientado a objetos.

Publicado por Kabuto (1381 intervenciones) el 16/11/2022 12:45:31
Gracias por tu buena intención, pero no soy un profesional de esto así que no admito pagos ni nada similar.

A mi también me ayudaron otros (y aún me ayudan, pues sigo siendo un aprendiz) y soy consciente de que la programación puede ser difícil al principio si no hay alguien que ayude dando explicaciones didácticas, y no solo se limite a recitar textos teóricos y documentación de API's.

Así que intento allanar el camino a otros siempre que esté en mi mano.
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

Paradigma orientado a objetos.

Publicado por karu Mendi (1 intervención) el 28/02/2023 02:48:49
Hola en la linea buscar.guardarCalificacion(Double.parseDouble(teclado.nextLine())); me marca error, dice que no se encuentra el metodo guardarCalificación. y tambien en el Array ; private ArrayList<Persona> baseDatos = new ArrayList<Persona>(); que no puede ser encontrado.
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Paradigma orientado a objetos.

Publicado por Kabuto (1381 intervenciones) el 28/02/2023 17:18:37
El método guardarCalificacion() ha de estar escrito en la clase Alumno

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Alumno extends Persona {
 
	private double calificacion;
 
	public Alumno(String id, String nombre, String apellido, String correoE, double calificacion) {
		super(id, nombre, apellido, correoE);
		this.calificacion = calificacion;
	}
 
	public double getCalificacion() {
		return calificacion;
	}
 
	public void guardarCalificacion(double calificacion) {
		this.calificacion = calificacion;
	}
 
	public void mostrarCalificacion() {
		System.out.println("Calificacion: " + calificacion);
	}
 
}


Sobre la línea:
1
private ArrayList<Persona> baseDatos = new ArrayList<Persona>();

Es la declaración de un ArrayList.
Para que funcione hay que importar la clase ArrayList:
1
import java.util.ArrayList;

Y que la clase Persona este en el mismo package, o bien hacerle un import si se encuentra en otra ubicación.
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