Hallo,
Ich bin neu - sowohl in der Community als auch in Java.
Ich lerne gerade Java und schau mir schonmal die Sachen von nächstem Semester an.
Ich wollte die gerade die Probeklausur lösen und bin rasch durchgekommen (4 von 5 Aufgaben).
Allerdings machen mir den ganzen Tag schon die Threads zu schaffen.
Im Prinzip verstehe ich was ein Thread ist und wie er funktioniert, verstehe aber nicht was hier von mir verlangt wird , bzw ich ich es umsetzte.
Hier die Aufgabe :
a) Entwickeln Sie im Package de.fh_lu.o2spruef.huehner als Unterklasse von Henne eine
Runnable-Klasse RennHenne. Diese soll ein Attribut pos (Datentyp int), ein Attribut appl (Datentyp
Object) und ein Attribut thr (Datentyp Thread) besitzen.
b) Bei der Erzeugung einer RennHenne soll ein Objekt mitgegeben werden, das im Attribut appl
gespeichert wird. Außerdem soll pos auf 0 gesetzt werden. Nachträglich muss es möglich sein, das
Attribut thr zu setzen.
c) Die run()-Methode der RennHenne soll in einer Endlosschleife solange erst pos erhöhen und dann
die Methode info(pos, <Name der Henne>) an das Objekt appl schicken, bis thr interrupted wird.
d) Entwickeln Sie eine Applikation HennenRennen, die
10 RennHennen in je einem Thread startet,
bei jeder RennHenne den Thread einträgt und
eine Methode synchronized info(int pos, String name) bereitstellt, die folgendes tut:
- Wenn pos >= 100000 ist, dann werden alle Threads interrupted und
- es erfolgt die Ausgabe „HennenRennen Beendet, RennHenne <name> hat gewonnen.“
Hier den Teil den ich in der Aufgabe vorher schon implementiert habe :
vorallem Teilaufgabe c) verwirrt mich, an dem ich eine Methode an ein Objekt schicken soll.
schonmal danke im vorraus
Mfg Biobauer
Ich bin neu - sowohl in der Community als auch in Java.
Ich lerne gerade Java und schau mir schonmal die Sachen von nächstem Semester an.
Ich wollte die gerade die Probeklausur lösen und bin rasch durchgekommen (4 von 5 Aufgaben).
Allerdings machen mir den ganzen Tag schon die Threads zu schaffen.
Im Prinzip verstehe ich was ein Thread ist und wie er funktioniert, verstehe aber nicht was hier von mir verlangt wird , bzw ich ich es umsetzte.
Hier die Aufgabe :
a) Entwickeln Sie im Package de.fh_lu.o2spruef.huehner als Unterklasse von Henne eine
Runnable-Klasse RennHenne. Diese soll ein Attribut pos (Datentyp int), ein Attribut appl (Datentyp
Object) und ein Attribut thr (Datentyp Thread) besitzen.
b) Bei der Erzeugung einer RennHenne soll ein Objekt mitgegeben werden, das im Attribut appl
gespeichert wird. Außerdem soll pos auf 0 gesetzt werden. Nachträglich muss es möglich sein, das
Attribut thr zu setzen.
c) Die run()-Methode der RennHenne soll in einer Endlosschleife solange erst pos erhöhen und dann
die Methode info(pos, <Name der Henne>) an das Objekt appl schicken, bis thr interrupted wird.
d) Entwickeln Sie eine Applikation HennenRennen, die
10 RennHennen in je einem Thread startet,
bei jeder RennHenne den Thread einträgt und
eine Methode synchronized info(int pos, String name) bereitstellt, die folgendes tut:
- Wenn pos >= 100000 ist, dann werden alle Threads interrupted und
- es erfolgt die Ausgabe „HennenRennen Beendet, RennHenne <name> hat gewonnen.“
Hier den Teil den ich in der Aufgabe vorher schon implementiert habe :
Java:
public class Henne {
String name;
Ei ei;
public Henne(String name,Ei ei) {
this.ei = ei;
this.name = name;
}
public void checkEi(){
KeinEiException e = new KeinEiException();
if (this.ei == null){throw e;}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Ei getEi() {
return ei;
}
public void setEi(Ei ei) {
this.ei = ei;
}
public String toString(){
String string = "Die Henne heißt " + this.name + " ";
try {this.checkEi();
return string + this.ei.toString();
} catch(Exception e) { return string+e.getMessage();}
}
}
public class Ei {
String farbe;
double groesse;
public Ei(String farbe, double groesse){
this.farbe=farbe;
this.groesse = groesse;
}
public String getFarbe() {
return farbe;
}
public void setFarbe(String farbe) {
this.farbe = farbe;
}
public double getGroesse() {
return groesse;
}
public void setGroesse(double groesse) {
this.groesse = groesse;
}
public String toString(){
return "Das Ei hat die Farbe " + this.farbe + " und ist " + this.groesse + "cm groß. "; }
}
public class KeinEiException extends ArithmeticException {
public KeinEiException (){
super("Diese Henne hat kein Ei. ");
}
}
public class RennHenn extends Henne implements Runnable {
int pos;
static Object appl = new Object();
Thread thr;
public RennHenn(String name, Ei ei, Object obj) {
super(name, ei);
this.appl = obj;
this.pos = 0;
// TODO Auto-generated constructor stub
}
@Override
public void run() {
while(!this.thr.isInterrupted()){
this.pos++;
}
}
// TODO Auto-generated method stub
public void setThr(Thread thr) {
this.thr = thr;
}
/**
* @param args
*/
}
vorallem Teilaufgabe c) verwirrt mich, an dem ich eine Methode an ein Objekt schicken soll.
schonmal danke im vorraus
Mfg Biobauer
Zuletzt bearbeitet von einem Moderator: