Java - Problema con Clases Abstractas.

   
Vista:

Problema con Clases Abstractas.

Publicado por Alejandro (7 intervenciones) el 26/11/2017 03:14:07
Hola muy buenas comunidad, soy un estudiante de programador y pues aun me falta mucho por aprender pero en eso estoy, me surgen muchas dudas como una que es la que me trajo hasta aquí.
Mi problema es con clases abstractas y lo que quiero hacer es pedir datos para calcular el área de un circulo, cuadrado y triangulo pero pidiéndolo desde el teclado osea que el usuario ingrese los datos, ya se que debe haber una clase padre donde se declara un método abstracto por ejemplo public void Pedir_Datos(); pero quiero que ese mismo datos este en las clases de circulo, triangulo y cuadrado pero pidiendo datos diferentes un ejemplo seria que en triangulo me pida la base y la altura y en cuadrado el lado, quiero pedir todo esto en el main y no se como hacerlo, si alguien es tan amable de ayudarme se lo agradeseria infinitamente.
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

Problema con Clases Abstractas.

Publicado por Andrés (339 intervenciones) el 26/11/2017 18:27:14
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
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
 
abstract class FiguraGeometrica {
 
	protected Map<String, Double> variablesMap;
 
	abstract double calcularArea();
 
	void pedirDatos(Scanner scanner) {
 
		Set<String> variables = variablesMap.keySet();
		Iterator<String> iterator = variables.iterator();
 
		double value = 0d;
 
		while (iterator.hasNext()) {
			String key = iterator.next();
			System.out.print("Ingresa el valor para " + key+": ");
			value = scanner.nextDouble();
			variablesMap.put(key, value);
		}
 
	}
 
}
 
class Circulo extends FiguraGeometrica {
 
	private final String RADIO = "radio";
 
	public Circulo() {
		variablesMap = new HashMap<String, Double>();
		variablesMap.put(RADIO, null);
	}
 
	@Override
	double calcularArea() {
		double radio = this.variablesMap.get(RADIO);
		return Math.PI * radio * radio;
	}
 
}
 
class Cuadrado extends FiguraGeometrica {
 
	private final String LADO = "lado";
 
	public Cuadrado() {
		variablesMap = new HashMap<String, Double>();
		variablesMap.put(LADO, null);
	}
 
	@Override
	double calcularArea() {
		double lado = this.variablesMap.get(LADO);
		return lado * lado;
	}
 
}
 
class Triangulo extends FiguraGeometrica {
 
	private final String BASE = "base";
	private final String ALTURA = "altura";
 
	public Triangulo() {
		variablesMap = new HashMap<String, Double>();
		variablesMap.put(BASE, null);
		variablesMap.put(ALTURA, null);
	}
 
	@Override
	double calcularArea() {
		double base = this.variablesMap.get(BASE);
		double altura = this.variablesMap.get(ALTURA);
		return base * altura / 2;
	}
 
}
 
public class FugurasGeometricasApp {
 
	static void menuFigura() {
 
		int opcion = 0;
		final int SALIR = 4;
 
		Scanner scanner = null;
		FiguraGeometrica figuraGeometrica = null;
		try {
 
			scanner = new Scanner(System.in);
 
			do {
				System.out.println("\nSelecciona el tipo de figura:\n");
				System.out.println("1.-Circulo");
				System.out.println("2.-Cuadrado");
				System.out.println("3.-Triangulo");
				System.out.println("4.-Terminar");
				System.out.print("? ");
 
				opcion = scanner.nextInt();
				switch(opcion) {
 
					case 1:
						figuraGeometrica = new Circulo();
						figuraGeometrica.pedirDatos(scanner);
						System.out.println("El area es: "+figuraGeometrica.calcularArea());
						break;
					case 2:
						figuraGeometrica = new Cuadrado();
						figuraGeometrica.pedirDatos(scanner);
						System.out.println("El area es: "+figuraGeometrica.calcularArea());
						break;
					case 3:
						figuraGeometrica = new Triangulo();
						figuraGeometrica.pedirDatos(scanner);
						System.out.println("El area es: "+figuraGeometrica.calcularArea());
						break;
					case 4:
						break;
					default:
						System.out.println("Opcion no valida!\n");
 
				}
 
			} while(SALIR != opcion);
 
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (null != scanner) {
				scanner.close();
			}
		}
 
	}
 
	public static void main(String[] args) {
		menuFigura();
 
	}
 
}
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

Problema con Clases Abstractas.

Publicado por Alejandro (7 intervenciones) el 26/11/2017 19:10:46
Muchas gracias por su ayuda, me ha servido!
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
Revisar política de publicidad