Klassen Methoden und Attribute implementieren - Hilfe!

kilopack15

Aktives Mitglied
Hallo,
ich bin gerade dabei mein erstes Java Programm zu schreiben und stehe vor der folgenden Aufgabe (Anhang). Könnt ihr mir dabei helfen, wie ich die Attribute, Methoden und Konstruktoren von Rad und Fahrrad gestalten soll. Vielleicht zeigt ihr mir die ersten Schritte, das wäre nett :)
20161028_173950[1].jpg

Gegeben sind drei Klassen (Rahmen, Reifen, Felge), die alle nach dem folgenden Schema aufgebaut sind:

public class Rahmen {
private int kosten;
public Rahmen(int kosten){
this.kosten=kosten;
}

public int getKosten(){
return kosten;
}
}
 
X

Xyz1

Gast
Aufgabenstellung: Rad und Rahmen
Wo kommt Reifen, Felge auf einmal her?
TODO: Klassendiagramm ;)

Edit: Hab nicht alles gelesen... Hälfte meines Kommentars ist hinfällig.
 

kaporalix

Mitglied
ein beispiel für die klasse Fahrrad
Java:
public class Fahrrad
{
    private Rad vorderrad;
    private Rad hinterrad;
    private Rahmen rahmen;
   
    public Fahrrad(Rad vorderrad, Rad hinterrad, Rahmen rahmen)
    {
        setVorderrad(vorderrad);
        setHinterRad(hinterrad);
        setRahmen(rahmen);
    }
   
    public int getKosten()
    {
        return this.vorderrad + this.hinterrad + this.rahmen; //
    }
   
    public void setVorderrad(Rad vorderrad)
    {
        this.vorderrad = vorderrad;
    }
   
    public Rad getVorderrad()
    {
        return this.vorderrad;
    }
   
    public void setHinterRad(Rad hinterrad)
    {
        this.hinterrad = hinterrad;
    }
   
    public Rad getHinterRad()
    {
        return this.hinterrad;
    }
   
    public void setRahmen(Rahmen rahmen)
    {
        this.rahmen = rahmen;
    }
   
    public Rahmen getRahmen()
    {
        return this.rahmen;
    }
   
}
 

kilopack15

Aktives Mitglied
Super danke kaporalix. Ich versuche mal den Code zu verstehen und stelle im Zweifel Fragen :) Vielen, vielen Dank. Du hast mir echt geholfen!
 

sascha-sphw

Top Contributor
dafür müssen aber die getKosten() methoden als static definiert sein , oder ?

Nein. Und sollten sie auch nicht, sonst verlangst Du in deinem Fahrradgeschäft für alle Fahrräder den selben Preis. Versuchs mit:
Java:
public int getKosten()
{
    return vorderrad.getKosten() + hinterrad.getKosten() + rahmen.getKosten(); //
}
 
X

Xyz1

Gast
stimmt, alternativ: return 2 * Rad.getkosten() + Rahmen.getKosten(); dafür müssen aber die getKosten() methoden als static definiert sein , oder ?
Naja, um Redundanzen zu vermeiden wäre das eine Möglichkeit. Es soll aber nicht nur genau 2 Räder mit gleichen Kosten geben, sondern vielleicht 4 Räder, wobei alle Elemente disjunkter Teilmengen gleicher Räder nicht denselben Preis haben.
 

kaporalix

Mitglied
Nein. Und sollten sie auch nicht, sonst verlangst Du in deinem Fahrradgeschäft für alle Fahrräder den selben Preis. Versuchs mit:
Java:
public int getKosten()
{
    return vorderrad.getKosten() + hinterrad.getKosten() + rahmen.getKosten(); //
}
ohh mann :rolleyes: du hast recht, ich habe komplett übersehen, dass die Attribute eigentlich referenzen zu der Classen Rad und Fahrrad und keine primitive datentypen sind :oops:
danke für den Hinweis :)
 

kilopack15

Aktives Mitglied
Okay habe mal eure Diskussion verfolgt und die Klasse Fahrrad so abgeändert
Code:
  public int getKosten()
    {
        return vorderrad.getKosten() + hinterrad.getKosten() + rahmen.getKosten(); //
    }
Analog dazu in Klasse Rad:
Code:
    public int getKosten(){
        return felge.getKosten() + reifen.getKosten();
    }

In Eclipse ist in der Zeile aber ein kleines Kreuz mit der Notiz: "The operator + is undefined for the argument type(s) Felge, Reifen" . Hat das etwas zu bedeuten?
 
X

Xyz1

Gast
Nein, eigentlich nicht; wenn du immer brav .getKosten() angefügt hast, sonst ist es halt Eclipse...
 

sascha-sphw

Top Contributor
In Eclipse ist in der Zeile aber ein kleines Kreuz mit der Notiz: "The operator + is undefined for the argument type(s) Felge, Reifen" . Hat das etwas zu bedeuten?

Oder Deine Methoden getKosten geben keinen int zurück... Die implementierung sollte in etwa so aussehen. Also auch die in den Klassen Felge und Reifen.
Java:
public int getKosten() {
    return 125;
}
 

kilopack15

Aktives Mitglied
Habt ihr eine Idee, wie ich das Programm mal testen könnte? Ich dachte daran für Felge, reifen und Rahmen Kosten einzusetzen (also in deren Klassen) und dann ein neues Objekt Fahrrad erstellen mit dem Konstruktor in Klasse Fahrrad, aber was muss ich dann in die Klammer vom Konstruktor einsetzen? Habt ihr da eine Idee?
 

Neue Themen


Oben