View Full Version : [Frage] übung 4 aufgabe 2
Da Charli
18-12-2003, 00:32
hat dieses bsp schon jemand gemacht? ich habe leider nur c++ gelernt und nicht java. drumm wäre ich dankbar, wenn jemand seine ideen posten würde.
ich bin grad dabei und hab eine Frage:
sollte bei Abbildung 3 bei new Durchfuehrung(Flug f, Flugzeug z) nicht auch das Datum im Konstruktor vorkommen?
ich hab mal was gemacht:
public class Flug {
// Eigene Variablen
private long flugnr;
// Klassenvariablen
Vector wirdDurchgefuehrt; // Durchfuehrung
}
public class Durchfuehrung {
// Eigene Variablen
private Date datum;
// Klassenvariablen
Flug f;
Vector personal; // Typ: Bodenpersonal
Vector platz; // Typ: Sitzplatz
Vector z; // Typ: Flugzeug
Vector reservierung // Typ: Reservierung
long status; // meiner Meinung nach reicht ein long, koennte aber auch String sein (siehe leseStatus())
// geplant = 0, durchfuehrend = 1, fertig = 2, abgesagt = 3
// Konstruktor
public Durchfuehrung(Flug f, Flugzeug z); // + evtl. Datum?
// Klassenmethoden
public void Personalzuweisen(Bordpersonal personal);
public void Absagen() {
status = 3;
}
public void Starten() {
status = 1;
}
public void Landen() {
status = 2;
}
public void Verschieben(Date neuesDatum);
public String leseStatus();
public void Reservieren(Sitzplatz s) {
reservierung.add(new Reservierung(this, s);
}
}
public class Bordpersonal {
// Eigene Variablen
private String svnr;
private String vorname;
private String zuname;
private long anzFlugstunden;
// Konstruktor, = einstellen
public Bordpersonal(...);
// Klassenmethoden
public void Erhoehe_Stunden(long stunden);
public void Kuendigen();
}
public class Flugzeug {
// Eigene Variablen
private long seriennr;
private String typ;
Vector platz; // Typ: Sitzplatz
}
public class Sitzplatz {
// Eigene Variablen
private long reihe;
private long sitz;
}
public class Reservierung {
// Eigene Variablen
private long resnr;
private Durchfuehrung durchf;
private Sitzplatz platz;
// Konstruktor, = neue Reservierung
public Reservierung(Durchfuehrung durchf, Sitzplatz s);
// Klassenmethoden
public void Stornieren();
}
Hallo,
also meins sieht eigentlich aus wie das von wescht (aber nicht erst jetzt :-) ).
Aber beim Konstruktor von Durchführung, könnte man den status eventuell noch
auf "geplant" setzen.
Dass die Methode Reservierungen stornieren in absagen, nicht aufscheint, das stimmt doch?
Weil es wird ja nicht verlangt.
MfG
SJP
Da Charli
18-12-2003, 19:25
macht ihr das gar nicht so genau?
laut folien wäre die assoziation von durchführung nach flugzeug:
class Durchfuehrung{
private Date datum;
private Flugzeug flugz;
public Durchfuehrung( Flugzeug fz){
wirdDurchgeführtMit(fz);...}
public void wirdDurchgeführtMit(Flugzeug fz ){
flugz = fz;}
public Flugzeug wirdDurchgeführtMit(){
return flugz;}
}
ich hoffe, wir müssen das nicht so genau machen!!!!!
wenns schon vorher so ausgesehen hat, warum hast du's dann nicht gepostet?
ja, das beim konstruktor von durchfuehrung koennnte man machen, war aber nicht verlangt. sollte in dem kostruktor nicht auch das datum uebergeben werden, sonst machts ja wenig sinn, oder?
@charli
ich hab das gemacht, was auf dem angabezettel stand. punkt.
warum wird bei deinem code-enviroment die schriftart manuell veraendert? macht doch nicht wirklich sinn, oder?
Da Charli
18-12-2003, 19:32
ja, ich habe zur zeit nur diese eine assoziation berücksichtigt. habe die anderen sachen noch nicht berücksichtigt.
auf den folien ist leider auch nur diese art von assozitaion drinnen.
ich wollte es posten, wenn ich die klasse fertig habe.
@charli
war an sjp gerichtet. deinen post hab ich erst in der reply-ansicht gelesen.
Da Charli
18-12-2003, 22:48
hier ist einmal meine klasse durchführung:
class Durchfuehrung{
private Date datum;
private Flug flug;
private Flugzeug flugz;
privateBordpersonal[] pers = new Bordpersonal[k];
private int npers = 0;
private Hashtable sitzplatz = new Hashtable();
public Durchfuehrung( Flugzeug fz, Flug fl){...}
public void wirdDurchgeführt(Flug fl){...}
public Flug wirdDurchgeführt(){...}
public void wirdDurchgeführtMit(Flugzeug fz ){...}
public Flugzeug wirdDurchgeführtMit(){...}
public void wirdDurchgeführtvon(Bordpersonal bp){...}
public void rmwirdDurchgeführtvon(Bordpersonal bp){...}
public int nwirdDurchgeführtvon(){}
public Bordpersonal wirdDurchgeführtvon(int i){...}
public int findwirdDurchgeführtvon(Bordpersonal bp){}
public void Reservierung(Sitzplatz sp, Reservierung r){...}
public void rmReservierung(Sitzplatz sp){...}
public int nSitzplatz(){...}
public Reservierung findReservierung(Sitzplatz sp){}
public Enumeration Reservierung(){...}
}
ich habe es 1:1 von den folien übernommen
ich hab mal was gemacht:
public class Flug {
// Eigene Variablen
private long flugnr;
// Klassenvariablen
Vector wirdDurchgefuehrt; // Durchfuehrung
}
public class Durchfuehrung {
// Eigene Variablen
private Date datum;
// Klassenvariablen
Flug f;
Vector personal; // Typ: Bodenpersonal
Vector platz; // Typ: Sitzplatz
Vector z; // Typ: Flugzeug
Vector reservierung // Typ: Reservierung
long status; // meiner Meinung nach reicht ein long, koennte aber auch String sein (siehe leseStatus())
// geplant = 0, durchfuehrend = 1, fertig = 2, abgesagt = 3
// Konstruktor
public Durchfuehrung(Flug f, Flugzeug z); // + evtl. Datum?
// Klassenmethoden
public void Personalzuweisen(Bordpersonal personal);
public void Absagen() {
status = 3;
}
public void Starten() {
status = 1;
}
public void Landen() {
status = 2;
}
public void Verschieben(Date neuesDatum);
public String leseStatus();
public void Reservieren(Sitzplatz s) {
reservierung.add(new Reservierung(this, s);
}
}
public class Bordpersonal {
// Eigene Variablen
private String svnr;
private String vorname;
private String zuname;
private long anzFlugstunden;
// Konstruktor, = einstellen
public Bordpersonal(...);
// Klassenmethoden
public void Erhoehe_Stunden(long stunden);
public void Kuendigen();
}
public class Flugzeug {
// Eigene Variablen
private long seriennr;
private String typ;
Vector platz; // Typ: Sitzplatz
}
public class Sitzplatz {
// Eigene Variablen
private long reihe;
private long sitz;
}
public class Reservierung {
// Eigene Variablen
private long resnr;
private Durchfuehrung durchf;
private Sitzplatz platz;
// Konstruktor, = neue Reservierung
public Reservierung(Durchfuehrung durchf, Sitzplatz s);
// Klassenmethoden
public void Stornieren();
}
Frage: Sollte man nicht bei der Klasse Flug die Instanzvariable "Vector durchf " nennen, denn man sollte ja normal (laut dem Buch) immer die Rollennamen exakt nehmen oder lieg ich da falsch ?
L.g fips
kann sein, das hab ich mir nicht so genau durchgelesen.
sumpfgottheit
20-12-2003, 22:12
Sollen wir die Assoziationen anhand der auf den Folien gegebenen Vorgehensweise modellieren oder nicht?
Ich meine damit das lustige herummurksen mit Vector, Hashtable und anderen Dingen
lg,
sumpfgottheit
michi204
21-12-2003, 16:03
also vielleicht bin ich ja nur zu blöd, aber ich kann nirgends in den folien das wort 'vector' finden, ebensowenig wie mein acrobat über die find-funktion. warum also nicht einfach arrays verwenden?
lg michi
supporter
21-12-2003, 16:30
also vielleicht bin ich ja nur zu blöd, aber ich kann nirgends in den folien das wort 'vector' finden, ebensowenig wie mein acrobat über die find-funktion. warum also nicht einfach arrays verwenden?
lg michi
bez. Vector -> siehe Buch
In den Folien wird immer nur auf Assoziationen eingegangen, bei denen beide Multiplizitätsangaben über eine Obergrenze verfügen (k). *:* Assoziationen treten nur bei der Erklärung von Assoziationsklassen auf, und dort wird sowieso eine Hashtable verwendet (also eine "typ-unsichere" Container-Klasse wie Vector). Im Buch werden jedoch auch *-Multiplizitäten angesprochen - dort wird dann Vector verwendet!
man muss die Objekte nicht extra in einem *Vector* Objekt verwalten.
Es reicht auch ein Array in dem Fall.
buechsengustel
21-12-2003, 17:37
naja, damit nimmst du an, dass du eine sinnvolle obergrenze festlegen kannst, und das dann schon gehen wird. dadurch geht aber doch information verloren, wenn du eine 1:* assoziation immer so übersetzt. oder?
Andere Frage:
"...Hinweis: es kann notwendig sein, auch bei anderen Klassen ... Methoden zu spezifizieren."
Heißt das jetzt, dass auch alle Methoden, die nur irgendwie für die Realisierung des im Zustandsdiagramm spezifizierten Verhaltens notwendig sein werden (also auch diverse get()-Methoden) spezifiziert werden sollen??
michi204
21-12-2003, 18:32
Andere Frage:
"...Hinweis: es kann notwendig sein, auch bei anderen Klassen ... Methoden zu spezifizieren."
Heißt das jetzt, dass auch alle Methoden, die nur irgendwie für die Realisierung des im Zustandsdiagramm spezifizierten Verhaltens notwendig sein werden (also auch diverse get()-Methoden) spezifiziert werden sollen??
ich nehme mal an dabei handelt es sich um die assoziations-management-methoden wie assoc() oder?
lg michi
Andere Frage:
"...Hinweis: es kann notwendig sein, auch bei anderen Klassen ... Methoden zu spezifizieren."
Heißt das jetzt, dass auch alle Methoden, die nur irgendwie für die Realisierung des im Zustandsdiagramm spezifizierten Verhaltens notwendig sein werden (also auch diverse get()-Methoden) spezifiziert werden sollen??
ich glaube auch, dass damit nur die assoc methoden etc. gemeint sind.
Da wir ja die Methoden die das Verhalten im Zusandsdiagramm umsetzen nicht "ausprogrammieren" müssen, können wir auch kaum wissen was für Methoden in denen alles aufgerufen wird.
sebi
OBen(sum)Wahn
21-12-2003, 22:47
Hi!
Zum 1ten, ich bin kein Java-Spezialist... allerdings was haltet Ihr von folgendem:
public class Flug {
private string flugNr;
wirdDurchgefuehrt; //noch editieren!
}
public class Bordpersonal {
private long svnr;
private String vorname;
private String zuname;
private long anzFlugstunden;
public Bordpersonal(...);
public void Erhoehe_Flugstunden(long stunden);
public void Kuendigen();
}
public class Flugzeug {
private long seriennr;
private String typ;
private istAusgestattetMit Sitzplatz[] sitze; // noch zu editieren!!!
}
public class Sitzplatz {
private long reihe;
private long sitz;
}
public class Reservierung {
private long resNr;
private Durchfuehrung dfg;
private Sitzplatz sitz;
public Reservierung(Durchfuehrung dfg, Sitzplatz sitz);
public void Stornieren(Durchfuehrung dfg, Sitzplatz sitz);
}
class Durchfuehrung{
private Date datum;
Flug flug;
Flugzeug fzg;
Bordpersonal[] pers;
Sitzplatz[] sitz;
string status; //Ist geschmacksache, ob man es mit Int oder String macht..., wobei String wahrscheinlich lesbarer & flexibler sind
// {p, s, l, st} = {in P_lanung, ges_tartet, gel_anded, st_orniert}
public Durchf( Flugzeug fzg, Flug flug)
public PersZuweisung(Bordpersonal pers)
public Stornieren(){
status = 'st';
}
public void Starten() {
status = 's';
}
public void Landen() {
status = 'l';
}
mfg...
public class Durchfuehrung {
// Eigene Variablen
private Date datum;
// Klassenvariablen
Flug f;
Vector personal; // Typ: Bodenpersonal
Vector platz; // Typ: Sitzplatz
Vector z; // Typ: Flugzeug
Vector reservierung // Typ: Reservierung
@wescht:
Warum sind Flug f, Vector personal, usw. Klassenvariablen ?!?
Hat nicht jede Durchführung seinen bestimmten Flug, sein bestimmtes Personal usw. ?
Und warum ist Flugzeug ein Vector? Gibt's pro Durchführung nicht nur ein Flugzeug?
Sorry, kann durchaus sein, dass es eh so passt, aber ich frag' weil ich mich nicht so gut auskenn', also nicht bös' sein, wenn ich da jetzt die total dummen Fragen stelle ...
mit Dank für jede Antwort,
derSeb
und gleich noch ne Frage:
Warum implementiert wescht die Methode
public void Reservieren(Sitzplatz s) {
reservierung.add(new Reservierung(this, s);
}
aus, nicht aber die Methode Personalzuweisen ?
@OBen(Sum)Wahn:
kleine frage:
In class Reservierung steht als Attribut private Durchfuehrung dfg; drin - das muss drin stehen, da eine Reservierung storniert werden kann, und man deshalb die zur Reservierung gehörenden Durchführung kennen muss, richtig?
merci,
derSeb
OBen(sum)Wahn
21-12-2003, 23:39
yepp, allerdings benoetigt man immer die Zuordnung (also nicht nur wegen dem Stornieren)
Hoffe, dass es ansonsten passt... (hab nicht sonderlich darueber nachgedacht - also sind Kritiken mehr als erwuenscht!)
OBen(sum)Wahn
21-12-2003, 23:42
apropos...
hab zum Sitzplatz noch das Attribut "Flugzeug" hinzugefuegt, ... denke es gehört noch dor hin...
altferdi
22-12-2003, 01:51
warum verwendet ihr alle long und nicht int?
die flugbegleiterin, die mehr als 2 147 483 647 stunden (über 245 000 jahre) fliegt, gibt es wohl nicht?!
und bis eine einzelne fluggesellschaft 2 147 483 648 reservierungen hat, ist sie wohl entweder pleite oder die ersten 100 000 000 reservierungsdatensätze sind irgendwo verloren gegangen. (hab nachgeschaut, mit den fluggesellschaften der star alliance fliegen jährlich 314 millionen passagiere. american airlines schafft schlappe 75 mio/jahr)
die Zeit könnte in msec angegeben werden;)
vBulletin® v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.