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:
|
/*Für ein CAD-Programm sollen verschiedene Figuren programmiert werden
(Kreise, Rechtecke, Quadrate usw.). Alle Figuren haben eine Farbe
(bei uns nur ein String) und entsprechend eine setFarbe() und getFarbe()-Methode.
Darüber hinaus kann von allen Figuren der Umfang und die Fläche berechnet werden.
(getUmfang() und getFlaeche()). Die für die spezielle Figurenform nötigen Parameter
(z.B. Radius oder Kantenlänge) können pro Figurenform ebenfalls mittels geeigne-ter
set- und get-Funkionen gesetzt und gelesen werden. Mangels eines geeigneten
Zeichenpro-gramms gibt die print()-Funktion alle Merkmale einer Figur aus
(z.B. Typ, Farbe, Parameter, Um-fang, Fläche). Programmieren Sie eine
abstrakte Klasse Figur, in die Sie so viel, wie möglich ge-meinsame
Funktionalität aller Figuren packen. Die spezifische Information spezieller
Figuren wird in davon abgeleiteten Klassen implementiert. Programmieren Sie
die Klasse Kreis, Rechteck und Quadrat. Achten Sie auf guten Zugriffsschutz,
d.h. alle Elemente müssen private sein, Zugriff er-folgt ausschließlich über
Methoden. Konstruktoren sind vorhanden.
b) Realisieren Sie in Ihrer main()-Funktion Polymorphismus, indem Sie ein
Array mit verschiedenen Figuren anlegen und dann in einer Laufschleife Ihre
Figuren mittels print() ausgeben.*/
package klausurtest_for_schleife;
public class Klausurtest_for_Schleife
{
public static void main(String[] args)
{
Figur [] array = new Figur [3];
array[0] = new Kreis ("Rot",6.2F,"violett");
array[1] = new Rechteck ("Blau", 3.2F,9.1F);
array[2] = new Quadrat ("Grün",8.3F);
for (int i=0; i<array.length;i++)
{
System.out.println(array[i].toString());
}
}
}
abstract class Figur
{
private String farbe;
abstract public double getUmfang ();
abstract public double getFlaeche ();
public Figur (String farbe)
{
this.farbe = farbe;
}
public void setFarbe(String farbe)
{
this.farbe = farbe;
}
public String getFarbe ()
{
return farbe;
}
}
class Kreis extends Figur
{
private float radios;
private String typ;
private String kreisFarbe;
public Kreis (String farbe, float radius, String kreisFarbe)
{
super (farbe);
radios = radius;
this.kreisFarbe = kreisFarbe;
}
public void setRadius (float radius)
{
radios = radius;
}
public String getRadius()
{
return " " + radios;
}
public double getUmfang()
{
return (2*radios*Math.PI);
}
public double getFlaeche()
{
return (radios*radios*Math.PI);
}
public String toString ()
{
return "Umfang: \t" + String.valueOf(getUmfang()) + "\t Flaeche: \t" + String.valueOf(getFlaeche());
}
}
class Rechteck extends Figur
{
private float laenge;
private float breite;
public Rechteck (String farbe, float laenge, float breite)
{
super (farbe);
this.laenge = laenge;
this.breite = breite;
}
public void setLaengeundBreite (float laenge, float breite)
{
this.laenge = laenge;
this.breite = breite;
}
public String getLaengeundBreite()
{
return String.valueOf(laenge + " " + breite);
}
public double getUmfang()
{
return (2*laenge + 2*breite);
}
public double getFlaeche()
{
return (laenge*breite);
}
public String toString ()
{
return "Umfang: \t" + String.valueOf(getUmfang()) + "\t Flaeche: \t" + String.valueOf(getFlaeche());
}
}
class Quadrat extends Figur
{
private float laenge;
public Quadrat (String farbe, float laenge)
{
super (farbe);
this.laenge = laenge;
}
public void setLaenge (float laenge)
{
this.laenge = laenge;
}
public String getLaenge()
{
return " " + laenge;
}
public double getUmfang ()
{
return 4*laenge;
}
public double getFlaeche ()
{
return laenge*laenge;
}
public String toString ()
{
return "Umfang: \t" + String.valueOf(getUmfang()) + "\t Flaeche: \t" + String.valueOf(getFlaeche());
}
}
|