# Beziehungen aus Klassendiagramm abbilden



## erenion (28. Okt 2013)

Hi,

   Also jetzt muss ich ein ganz einfaches Programm schreiben, das kann ich aber leider nicht, und ich brauche dabei eure Hilfe. Ich zeige euch jetzt, was für ein Programm ich schreiben sollte. Es ist vielleicht komisch, dass ich mich seit 2 stunden damit beschäftige, aber konnte es leider nicht schreiben.


Hier ist das Programm.


Erstellen Sie ein Java Programm, welches die Beziehung zwischen Bäumen und Äpfel wie im nachfolgenden Klassendiagramm abbildet. In einer Beispielanwendung soll ein Baum mit 15 und ein zweiter mit 21 Äpfeln angelegt werden. Ernten Sie alle reifen Äpfel.
Hinweise:
Die Methode ernten() pflückt alle reifen Äpfel.
Ist oder wird der Durchmesser eines Apfels größer als 10 cm, kann dieser geerntet werden. Beim Erzeugen der Äpfel, wird eine Zufallszahl zwischen 5 und 15 cm als Durchmesser zugewiesen.
￼￼￼
￼Hier ist das Bild : http://s1.directupload.net/images/131028/zmzk6ef8.jpg


Ich wäre sehr dankbar, wenn Sie mir dabei helfen könnten.

Danke im Voraus


----------



## KSG9|sebastian (28. Okt 2013)

Ein wenig Eigeninitiative wäre gut! Im Klassendiagramm ist schon alles beschrieben - wo genau hängt es?


----------



## erenion (28. Okt 2013)

Also ich habe mir viel mühe gegeben aber hab s nicht geschafft , ich kann auch zeigen was ich geschrieben habe aber das macht keinen Sinn , glaube ich. Also was ich brauche ist nicht dass jemand dass Programm schreibt und mir zeigt, ich möchte verstehen wie man es schreibt damit ich Java weiter üben kann. Also ich lerne seit einigen Monaten und ich bin darin sehr schlecht.

Gruß Batu


----------



## Fab1 (28. Okt 2013)

Was verstehst du denn genau nicht. Die Aufgabe ist ganz verständlich gestellt wie ich finde.

Weißt du denn was ein Klassendiagramm ist? Erstelle doch einfach mal die Klassen, wie sie in dem Diagramm abgebildet sind, das lässt sich mit Wikipedia schonmal relativ leicht auch ohne großen Kenntnisse lösen.


----------



## ARadauer (28. Okt 2013)

erenion hat gesagt.:


> ich kann auch zeigen was ich geschrieben habe aber das macht keinen Sinn , glaube ich.


doch zeig... ohne eigen iniative keine hilfe...



> Also was ich brauche ist nicht dass jemand dass Programm schreibt und mir zeigt,



dann zeig uns deinen code..


----------



## erenion (28. Okt 2013)

Hier ist was ich geschrieben habe, also ich habe nur den ersten Baum erstellt, aber auch damit Probleme gehabt.


```
import java.util.Random;

public class RandomInteger {

	static boolean istReif = false;
	static int[] ernteApfelErstesBaums = new int[15];

	static int ersterBaum;
	static int randomInt;
	static int zahl = 0;

	public static void main(String args[]) {

		// note a single Random object is reused here
		Random randomGenerator = new Random();
		for (ersterBaum = 5; ersterBaum <= 20; ++ersterBaum) {

			randomInt = randomGenerator.nextInt(15);
			System.out.println("Erste Apfel wurde von " + randomInt
					+ " grosse erzeugt.");

			if (randomInt > 10) {
				zahl++;
				ernten();
			}

		}

	}

	private static void ernten() {
		ernteApfelErstesBaums[ersterBaum] = randomInt;
		System.out.println( zahl + ". geertnete Apfel "
				+ ernteApfelErstesBaums[ersterBaum]);
	}
}
```


----------



## eRaaaa (28. Okt 2013)

Also Java ist eine objektorientierte Sprache, dein Klassendiagramm zeigt zwei Klassen, meinst du nicht dass du evtl. anfangen solltest diese zu erstellen? Das solltet ihr ja anscheinend schon gelernt haben, auch wie man dann davon Objekte erstellt. Dann ist es deine Aufgabe die Beziehung zwischen den beiden Klassen herzustellen. 
Fange also an die beiden Klassen zu erstellen mit den im Klassendiagramm gezeigten Methoden und Variablen. Das wäre zunächst ein Anfang.

[OT]Bitte beim nächsten Mal einen aussagekräftigeren Titel wählen, "Ein Anfänger braucht Hilfe" o.ä. sagt nichts über das Thema aus![/OT]


----------



## erenion (28. Okt 2013)

Okay dank alle, also jetzt schaue ich ein paar Videos, um es besser zu lernen, und dann versuchte noch mal, es zu schreiben, und in ein paar stunden melde ich mich wieder bei euch


----------



## erenion (28. Okt 2013)

und es wäre sehr gut, wenn ihr mir ein Video empfehlen könnt, jetzt guck ich im Internet, aber ich hab keine Ahnung welche davon besser ist


----------



## erenion (28. Okt 2013)

Hallo wieder,
Ich versuche es wirklich, aber ich kann es nicht, ich hab die Klassen erstellt, und jetzt kann ich die Beziehungen nicht bauen, also das ist mir sehr wichtig, und brauch jetzt Hilfe, also es wäre perfekt, wenn ich eine Einführung bekomme, und ein bisschen Informationen, was ich tun soll. 

vielen Dank im Voraus


----------



## ARadauer (28. Okt 2013)

Eine klasse apfel und baum machen.


----------



## erenion (28. Okt 2013)

ja das habe ich schon gemacht, ich weiss nicht was ich weitermachen soll


----------



## KSG9|sebastian (28. Okt 2013)

Zeig mal die beiden Klassen...und woran es jetzt halt...


----------



## ARadauer (29. Okt 2013)

erenion hat gesagt.:


> ja das habe ich schon gemacht, ich weiss nicht was ich weitermachen soll



füg die Eigenschaften die die Klassen im Diagramm haben in deine Klassen ein.
Wie geht das: Galileo Computing :: Java ist auch eine Insel - 3 Klassen und Objekte

Füge die Methoden in die Klassen ein.
Dann zeige mal den Code..


----------



## geqoo (29. Okt 2013)

Also, fangen wir mal von vorn an zu überlegen.

Wir brauchen 2 Klassen (es ginge auch mit einer, aber der besseren Anschauung wegen machen wir es mit zweien):
- Baum
- Apfel
Dann brauchen wir 2 Bäume, also 2 Instanzen der Klasse "Baum". Der eine Baum wird also später mit 15 und der andere mit 21 Äpfeln instanziert. Die Klasse Baum bekommt noch folgende Methode:
+ ernten(): void (+ ist bei Klassendiagrammen public, - private)
Nun brauchen wir natürlich noch etwas, um die Äpfel zu speichern, ein privates Attribut (z.B. eine Liste):
- LinkedList<Apfel>

Dann ist da noch die Klasse Apfel, die einen int "durchmesser" bekommt.
- durchmesser: int
Und außerdem wollen wir wissen, ob man ihn ernten kann:
- ernten: boolean
Außerdem brauchen wir noch einen Getter für "ernten".

Ich gebe hier mal die Apfel Klasse vor 


```
import java.util.Random

class Apfel {
  private int durchmesser;
  private boolean ernten;

  public Apfel () {
    Random randomGenerator = new Random();
    this.durchmesser = randomGenerator.nextInt(10) + 5;
    // Mit Hilfe dieses Tricks erzeugen wir eine Zahl zwischen 15-5, also 10 und 0. 
    // Dann wird 5 drauf addiert und wir erhalten einen Bereich von 5 bis 15, statt 0 bis 10.

    if (this.durchmesser >= 10) {
      this.ernten = true;
    } else {
      this.ernten = false;
    }
  }

  public boolean getErnten() {
    return ernten;
  }
}
```


----------



## eRaaaa (29. Okt 2013)

geqoo hat gesagt.:


> Ich gebe hier mal die Apfel Klasse vor



Sei mir nicht böse, aber die Klasse sollte der TO besser nicht verwenden, denn du hältst dich nicht an das Klassendiagramm und ich würde die Entscheidung ob der Apfel nun reif ist oder nicht nicht im Konstruktor fällen, so etwas macht man eig. nicht - dafür war eig. auch die Methode istReif() gedacht....aber als Beispiel evtl. ok



geqoo hat gesagt.:


> Die Klasse Baum bekommt noch folgende Methode:
> + ernten(): void (+ ist bei Klassendiagrammen public, - private)



Ähm nein, die Methode hat sehr wohl einen Rückgabewert.


----------



## geqoo (30. Okt 2013)

Oh ja, da steht es. Ich war wohl gestern nicht so ganz bei der Sache ...

Dann könnte ma neinfach getErnten() zu ernten() umbenennen, dann den if-Block nehmen, den dort einfügen und dann einfach statt dem Setzen der Klassenvariable einfach je nach dem, ob man den Apfel ernten kann, ihn zur Liste der zurückgegebenen Äpfel (die nicht reif sind) hinzufügen, oder eben nicht :rtfm:


----------

