Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Bitte um Überprüfung :-) » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Bitte um Überprüfung :-)
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Java_Beginner
unregistriert
Bitte um Überprüfung :-) Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hallo, ich würde euch mal bitten meinen Code zu überprüfen, vielen Dank.

Meine Ideen:
code:
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());
    }
}
19.01.2016 11:56
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Sieht insgesamt ok aus.
So, wie du toString() geschrieben hast, kannst du es auch gleich in Figur. Du solltest noch formspezifische Dinge wie den Kreisradius ausgeben. Warum hast du den eigentlich radios genannt?
Und fürs Rechteck würde ich getrennte getter/setter für breite und hoehe schreiben. Und ein Rückgabetyp String würde mich ziemlich aufregen, müsste ich damit arbeiten.

__________________
Syntax Highlighting fürs Board (Link)
19.01.2016 20:23 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Java_Beginner
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank für die Rückmeldung. Das mit dem String als Rückgabewert ändere ich noch ab :-)

radios habe ich gewählt, weil ich sonst im Konstruktor Kreis mit this.radius = radius; und in der setRadius()-Methode auch mit this.radius = radius hätte arbeiten müssen und die this-Funktion greift doch nur auf das darüberliegende Attribut?
19.01.2016 22:37
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Mit this kommst du auf die Attribute der aktuellen Klasse. Für darüberliegendes gibt es super.

__________________
Syntax Highlighting fürs Board (Link)
20.01.2016 05:54 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Java_Beginner
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank.

Weil wir gerade beim Thema "super" sind. Warum muss ich bei einer vererbten Klasse im Konstruktor super() nur die Variablennamen schreiben, jedoch nicht mehr die Deklaration durchführen?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
public Kreis (String farbe, float radius, String kreisFarbe)
    {
       super (farbe);    //Diese Codezeile meine ich :-)
       radios = radius;  
       this.kreisFarbe = kreisFarbe; 
    }

20.01.2016 09:11
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Da kann ich nicht viel mehr sagen als "ist halt so, schau in die Sprachspezifikation".

__________________
Syntax Highlighting fürs Board (Link)
20.01.2016 16:58 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Java_Beginner
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Dankeschön Wink
20.01.2016 17:30
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Bitte um Überprüfung :-)