Schulprojekt Java -- Deal or no Deal

Prinz Brand

Neuling
Thread Starter
Mitglied seit
26.12.2006
Beiträge
40
Ort
Sinsheim
Guten Tag,

mein Informatiklehrer hat mir die Aufgabe gegeben, die Quizsendungl Deal or no Deal in Java objektorientiert abzubilden.
Da das Fach nicht zu meinen Stärken gehört und ich bisher nach mehreren Wochen wirklich keine Fortschritte mache, bzw. nichts funktioniert, hoffe ich, dass ihr mir weiterhelfen könnt.
Ich habe mir einen Plan gemacht, wie das ganze aussehen könnte, allerdings scheiter ich an der Umsetzung:

- 26x Koffer werden erstellt (mit Hilfer einer Arraylist); dazu 26 Geldbeträge, die den Koffer zufällig zugeordnet werden (hierfür will ich die random()-Funtkion verwenden)

- Über einen Eingabedialog (java.util.Scanner) wird dann zuerst der Spielkoffer ausgewählt und abgespeichert

- im weiteren Verlauf des Eingabedialogs werden dann zuerst 6,5,4,... Koffer rausgewählt, deren Betrag dann angeben werden, wobei die restlichen Koffer in jeder neuen Runde angezeigt werden

- Nach den ersten 6 (dann 5,4,...) Koffern erscheint im Eingabedialog ein Angebot des "Bankers" (Mittelwert), welche zum Spielende führen kann, falls man das Angebot annimmt (while-Schleife)

- Falls man das Angebot ausschlägt, wird das Spiel bis zu Ende fortgesetzt, d.h. bis nur noch der Spielkoffer übrig ist

- Am Spielende erscheint der Betrag, welchen man gewonnen hat; bei Annahme das Angebots noch zusätzlich der Betrag der im Koffer vorhanden ist.

Ich bin für jede Hilfe dankbar, falls Lust und überhaupt Zeit eurerseits vorhanden ist.
Ich bedanke mich im Voraus.

Mit freundlichen Grüßen

Prinz Brand
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
und was ist jetzt deine frage?
 
"Wer unterstützt meine Faulheit und programmiert das für mich" ;)
 
mein Informatiklehrer hat mir die Aufgabe gegeben, die Quizsendungl Deal or no Deal in Java objektorientiert abzubilden.

- 26x Koffer werden erstellt (mit Hilfer einer Arraylist); dazu 26 Geldbeträge, die den Koffer zufällig zugeordnet werden (hierfür will ich die random()-Funtkion verwenden)

- Über einen Eingabedialog (java.util.Scanner) wird dann zuerst der Spielkoffer ausgewählt und abgespeichert

- im weiteren Verlauf des Eingabedialogs werden dann zuerst 6,5,4,... Koffer rausgewählt, deren Betrag dann angeben werden, wobei die restlichen Koffer in jeder neuen Runde angezeigt werden

- Nach den ersten 6 (dann 5,4,...) Koffern erscheint im Eingabedialog ein Angebot des "Bankers" (Mittelwert), welche zum Spielende führen kann, falls man das Angebot annimmt (while-Schleife)

- Falls man das Angebot ausschlägt, wird das Spiel bis zu Ende fortgesetzt, d.h. bis nur noch der Spielkoffer übrig ist

- Am Spielende erscheint der Betrag, welchen man gewonnen hat; bei Annahme das Angebots noch zusätzlich der Betrag der im Koffer vorhanden ist.

Rhetorische Frage 100: Reicht die verwendung von Arrylist, While Schleife, Random und java.util.Scanner bereits aus um von Objektorientierung zu sprechen?
 
Na klar, ist das java.util.Scanner denn kein Objekt? :fresse2: Bzw j.u.S an sich eine Klasse...
 
Zuletzt bearbeitet:
Arrylist und Random sind auch Klassen. Das ist doch dann Objektorientierung in Perfektion und kann nur noch die Note 1 geben...
 
Da wurde ich missverstanden.

Ich wollte von euch keine Musterlösung, sondern Anregungen oder Tipps, ob man das ganze leichter gestalten kann, da ich stets an der Umsetzung des Plans scheiter.

Edit: Mittlerweile hab ich allerdings schon einiges umsetzen können, auch wenn vieles noch fehlt.
 
Zuletzt bearbeitet:
Nein tut mir Leid. Könntest du es ein bisschen ausformulieren, was du damit genau meinst?
 
Was soll ich da ausformulieren? Das ist deine Hausaufgabe. Stell dir vor ich wäre dein Lehrer. Was an deinem Lösungsvorschlag ist objektorientiert? Was ist der Unterschied zwischen prozeduraler und objektorientierter Programmierung?
 
Du solltest das ganze vlt auch selbst noch in Fachklassen verpacken, ich denke das ist gemeint ;)

und nicht nur vordefiniere Klassen benutzen ;)
 
Du solltest das ganze vlt auch selbst noch in Fachklassen verpacken, ich denke das ist gemeint ;)

Das wäre schonmal ein Schritt in die richtige Richtung aber führt nicht zwangsläufig zum Ziel.

Im Moment sieht es so aus als würde es auf prozedurale Progarmmierung hinauslaufen bei der ein paar Klassen von Java benuzt werden. Da bringt es auch nichts die Sache in ein paar Fachklassen zu verpacken. Dann ist es nicht Note 4 sondern Note 3. Für Note 2 oder sogar 1 wäre vieleicht objektorientiere Analyse (OOA) und Design (OOD) ratsam. Macht für diese Aufgabe vieleicht nicht unbedingt Sinn aber die Gefahr nach OOA und OOD immernoch prozedural zu programmieren ist denke ich weit kleiner und dürfte vor allem den Unterschied klar machen.

Später kann man bei solch kleinen Aufgaben immernoch schlampen und OOA und OOD unter den Tisch fallen lassen. Streng genommen gehört aber beides mit zur Aufgabe.
 
Man weiß halt nicht was die das so machen ... Ich mein wenn die gerade eh sag ich mal uml durchgenommen haben sollte man damit natürlich erst mal alles schön modellieren...
Man weiß einfach nicht welche Ansprüche der Lehrer hat .. und nur auf die kommt es hier an
 
@Prinz Brand:
Wie sieht denn dein Code bisher aus ? Wie ist dein Vertständnis von OO ?
Meine Vorgehensweise:
Analyse:
- Welche "Dinge" machen das Spiel aus (e.g. Koffer, Spielregeln, Spieler etc.) ?
- Welche Beziehungen haben diese Dinge untereinander (e.g. Spieler hat einen Geldkoffer, Spiel hat verschiedene Koffer etc.)
- Was für Eigenschaften haben diese Beziehungen bzw. Dinge (e.g. Spieler hat einen Namen, etc.)
Mal dir das mal auf (also Dinge und deren Beziehungen). Benutze hierfür UML2 Klassen oder irgendeine andere Modellierungssprache. Bsp.: Domain model - Wikipedia, the free encyclopedia

Design:
Schau dir das gemalte Model aus der Analyse an:
- Probiere Verantwortlichkeiten zu verteilen an die Dinge zu verteilen die in deinem Spiel vorkommen (kannst du aus den Anforderungen ableiten) (e.g. Spiel ist verantwortlich für die Einhaltung der Spielregeln und Weiterführung des Spiels, Spieler wählt Geldkoffer, Spiel erstellt Koffer etc.). Jedes Ding mit Verantwortlichkeit wird zu einer Klasse.
- Für Verantwortlichkeiten die keinem Ding aus der Analyse zuordnungsbar sind, kannst du eigene Klassen erstellen (e.g. erstelle Klasse IO welche die Verantwortlichkeiten der Ein- und Ausgabe übernimmt).
- Erweitere deine Klassen um alle nötigen Methoden (e.g. Klasse Player: chooseBag(); setName(String name); Klasse Game: setGameState(GameState state);etc.)
- Male ein Klassendiagram mit allen Beziehungen zwischen den Klassen.

Implement:
Setze Klassendiagram um.

Wenn du allerdings nicht so viel Erfahrung hast, ist es erstmal wichtig das Ganze überhaupt zum Laufen zu bringen. Ich als Lehrer würde dir für ein lauffähiges Programm min. eine 2 geben. Wenn noch ein paar eigene Objekte vorhanden sind, dann umso besser.

Hoffe das hilft.
 
So, ich hab jetzt einen Code, der zwar läuft, allerdings wohl viel zu umständlich ist, als dass ich ihn hier präsentieren möchte ;) .

@ Listener

Ich bin deinem Rat gefolgt und letztenendlich ans "Ziel" gekommen, auch wenn ich dafür einige Umwege gemacht habe. :-)wink:)

Nochmals Danke an alle für eure Bemühungen mir weiterzuhelfen.

MFG

Prinz Brand
 
So, ich hab jetzt einen Code, der zwar läuft, allerdings wohl viel zu umständlich ist, als dass ich ihn hier präsentieren möchte

Zu umständlich um ihn quasi anonym in einem Forum zu zeigen aber für deinen Lehrer reichts oder wie? :fresse:
 
So, ich hab jetzt einen Code, der zwar läuft, allerdings wohl viel zu umständlich ist, als dass ich ihn hier präsentieren möchte ;).

Solange der Code ordentlich objektorientiert ist, spiel es keine Rolle wie umständlich oder "häslich" er sein mag. Die Frage ist nur ob du den Unterschied zwischen prozedural, objektorientiert oder irgend einer Krankheit dazwischen erkennen würdest. Wir könnten das recht schnell beurteilen. Wir können dich aber nicht zwingen. Wir können dir nur unsere Hilfe anbieten.
 
Wichtig bei Objektorientierung sind auch die abstrakten (abgeleitenen)-Klassen.

In deinem Fall würde ich mir eine Hauptklasse (z.B. Quiz) zuliegen und eine Klasse Dealer.

Hauptklasse -> Quiz
Abstrakteklasse -> Dealer

In Quiz gibts Du dann die Eingabe und Results aus die du in der Klasse Dealer (als Getter/Setter-Methoden) hast.

Für die 26 Koffer kannst Du ruhig ein Array nehmen. Die befüllung mit random() geht auch in ordnung (Weiß nicht obs bei Java auch so ist wie in C++, denk dabei an die initializierung von der time() funktion für die random(), damit ist gewährleistet das es wirklich sich um eine Zufallszahl handelt).

Benutze doch den Konstruktor der Quiz-Klasse für eine Auswahl des Koffers.

Das ganze sollte man doch relativ zügig hinbekommen. Kannst ja Dein Code dann mal posten wenns irgendwo hakt.

Viel Erfolg.
 
Was? Dealer ist bei dir eine abstrakte Klasse. Wozu? Wer erbt von Dealer?
 
Auch wenn's reichlich spät ist...
In was für einem Umfeld wurde diese Aufgabe gestellt?
  • Realschule
  • Gymnasium
  • Berufsschule (Nur als Thema im Fach, da Ausbildung zu irgendeinem IT-Beruf)
  • Berufsschule (Hauptthema, da Ausbildung zum Fachinformatiker)
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh