# klassendiagramm in javacode übersetzen :S



## bistdujohnwayne (18. Dez 2012)

guten tag, ich bin ein java anfänger und bin grad auf eine aufgabe gestoßen, wo ich ein klassendiagramm in javacode übersetzen soll nun hab ich die pakete und die klassen erstellt und weiß leider nicht wie ich weiter vorgehen soll, könnte mir bitte jemand zur hand gehen und mir eine klasse in java aus dem klassendiagramm erstellen mit methoden und attributen..., dass ich weiß wie ich vorgehen muss ?

wäre sehr dankbar


----------



## Trolllllll (18. Dez 2012)

Ist das jetzt ernst deine Frage?

aber ok, also um eine Klasse zu erstellen benutzt man das keyword 
	
	
	
	





```
public class
```
 und dann schreibt man den namen hin

also z.B.


```
public class Student{

}
```

Nun hat die Klasse ja Atribute die einen Typ haben, die erstellt man nun auch


```
public class Student{
   private String studiengang;
}
```

Nun schaut man sich die Methoden an und erstellt diese auch


```
public class Student{
   private String studiengang;
   public Student(String vorname, String nachname, int alter, int id, String studienganf{
      //Ein Komentar hier muss jetzt die Logik stehen was hier passiert, da es ein Konstruktor ist würde ich sowas schreiben
      this.studiengang=studiengang;
   }
   public String zeigeBildung(){
      //Ein Komentar hier muss jetzt die Logik stehen was hier passiert, z.B. sowas (es muss ein String returnt werden)
      return studiengang;
   }
}
```

Und Fertig ist diese Klasse, war es schwer?


----------



## Trolllllll (18. Dez 2012)

[EDIT]
Sorry Tippfehler


Trolllllll hat gesagt.:


> ```
> public class Student{
> private String studiengang;
> public Student(String vorname, String nachname, int alter, int id, String studiengang){
> ...


[/EDIT]


----------



## bistdujohnwayne (18. Dez 2012)

ne so schwer war das nicht, die klasse konnte ich anlegen aber der inhalt :S... muss da noch extends Person hin weil die klasse student ja die attribute von der klasse person erbt oder :S ?

aber vielen dank


----------



## Trolllllll (18. Dez 2012)

Upps, ja muss


----------



## bistdujohnwayne (18. Dez 2012)

könnte ich die anderen klassen im laufe des tages erstellen und du könntest wenn du lust und zeit hast bitte mal nen blick drauf werfen :S ? 
wäre sehr nett


----------



## Trolllllll (18. Dez 2012)

Wenn ich dann noch Online bin und Lust habe, ja


----------



## bistdujohnwayne (18. Dez 2012)

```
package personen;

//uniAngestellter klasse mit erbung der Person klasse
public class UniAngestellter extends Person {
    private String uniAbschluss;
    private boolean istDoktor;
    private boolean istProfessor;
    
    public UniAngestellter(String vorname, String nachname, int alter, int id, String uniAbschluss) {
        this.uniAbschluss=uniAbschluss;
        this.istDoktor=istDoktor;
        this.istProfessor=istProfessor;       
    }
    public String zeigeBildung() {
        
        return studiengang;
    }
    public boolean setDoktor() {
        
        return uniAbschluss;
    }
    public boolean istProfessor() {
        
        return uniAbschluss;
    }
}
```


----------



## bistdujohnwayne (18. Dez 2012)

ich weiß jetzt nich ob das richtig ist aber ich habe mal versucht die UniAngestellter klasse zu erstellen :S könntest du das bitte korrigieren :S wäre dir sehr dankbar


----------



## Tomate_Salat (18. Dez 2012)

Nein, setter-Methode ändern (i.d.R) einen Wert:

```
public void setName(String name)
{
     this.name=name;
}
```

entweder bin ich blind (ich hoffs doch nicht ) oder ich sehe es nicht, aber:

```
public String zeigeBildung() {
        
        return studiengang;
    }
```
wo ist studiengang hier definiert ;-)? Hast du das von Student abgeschaut?(Falls ja, dann ist das falsch). Ich denke hier sollte eher der Uniabschluss zurückgegeben werden. Zudem wird die Methode zeigeBildung in der UniAngestellte die von Person überschreiben, weswegen die Methode etwa so aussehen sollte:

```
@Override
public String zeigeBildung() {
   // ... deine Implementierung
}
```


----------



## bistdujohnwayne (18. Dez 2012)

ich blicke da gar nicht mehr durch :S kannst du die falschen qullcodestellen bitte mal ersetzen damit ich das so in einem quellcode sehe und mit dem falschen vergleichen kann :S ?

danke


----------



## bistdujohnwayne (18. Dez 2012)

wie gehe ich denn allgeim bei so einem klassendiagramm vor ? fange ich oben an oder unten bei denen die erben :S ?


----------



## Trolllllll (18. Dez 2012)

wie schon Tomate_Salat gesagt hat.

Ich würde Normalerweiße bei der Root-Klasse, also in deinem Fall Mensch beginnen, da alles von Mensch erbt und mich dann langsam nach unten hangeln.


```
package personen;
 
//uniAngestellter klasse mit erbung der Person klasse
public class UniAngestellter extends Person {
    private String uniAbschluss;
    private boolean istDoktor;
    private boolean istProfessor;
    
    public UniAngestellter(String vorname, String nachname, int alter, int id, String uniAbschluss) {
        //hier wahrscheinlich auch aufruf des Konstruktors der geerbten Classe mit übergebenen Parametern (vorname, nachname, alter und id)
        this.uniAbschluss=uniAbschluss;
        // die beiden werden nicht übergeben
        // somit raus --this.istDoktor=istDoktor;--
        // somit raus --this.istProfessor=istProfessor;--       
    }
    public String zeigeBildung() {
        // kann nicht richtig sein, ein angestelter hat keinen studiengang
        // somit raus --return studiengang;-- und statdessen
        return uniAbschluss;
    }

    // hat keinen Rückgabewert, aber einen boolean übergabewert, also
    public void setDoktor(boolean istDoktor) {
        //somit raus --return uniAbschluss;--
        // setzt den Wert;
        this.istDoktor=istDoktor;
    }
    //das selbe wie bei doktor
    public void istProfessor(istProfessor) {
        this.istProfessor=istProfessor;
    }
}
```


----------



## Trolllllll (18. Dez 2012)

steht bei einer Methode in deinem Model


```
name () : Typ
```

heißt das


```
public Typ name(){
   return (objekt mit dem Typ)
}
```


```
name (objekt : Typ)
```

heißt es


```
public void name(Typ objekt){
   kein return
}
```

und bei


```
name (objekt : Typ) : Typ2
```

heißt es


```
public Typ2 name(Typ objekt){
   return  (objekt mit dem Typ2)
}
```


----------



## bistdujohnwayne (18. Dez 2012)

vielen dank hast mir echt geholfen


----------

