Bombentrichter
Jede Entscheidung ist der Tod von Milliarden von Möglichkeiten
ich hätte mal ne gerelle frage zum informatik praktikum programmieren. ist die abgabe der bearbeiteten aufgaben in irgendeiner weise verpflichtend und voraussetzung für die zulassung zur prüfung?wenn ja, müssen wir unsere lösungen vor irg einem gremium verteidigen / erklären?
package de.tudresden.praktikum2009.lib;/* Diese Klasse stellt das Modell für eine einzelne Antwort. Sie enthält * den Text und den Wahrheitsgehalt. Beide Werte sollen nach Erstellen * eines Objektes nur noch ausgelesen werden können.*/public class Antwort { private String antworttext; private boolean richtig; // Konstruktor, für Initialisierung der Daten public Antwort(String antworttext, boolean richtigeAntwort) { this.antworttext = antworttext; this.richtig = richtigeAntwort; } public String getAntworttext() { return antworttext; } /* * abweichend hier:bei boolschen Werten fängt der Standard-Getter mit is * statt mit get an */ public boolean isRichtig() { return richtig; } /* * eine Version des Getters, welcher vor Rückgabe eine Modifizierung von * Daten, hier der Typ und Wert, vornimmt */ public String getRichtig() { if (this.richtig) { return "wahr"; } else { return "falsch"; } }}
package de.tudresden.praktikum2009.lib;import java.util.ArrayList;/* Eine Frage soll eindeutig identifizierbar sein, * den Frage-Text beinhalten und kann mehrere * Antwortmöglichkeiten haben. Und auch hier sollten * die Attribute eines Objektes nur ausgelesen werden * können*/public class Frage { private String id; private String frage; /* ArrayList -> siehe Collection-Framework */ private ArrayList antworten; public Frage(String identifikator, String frage, ArrayList antworten) { id = identifikator; this.frage = frage; this.antworten = antworten; } public String getId() { return id; } public String getFrage() { return frage; } public ArrayList getAntworten() { return antworten; }}
package de.tudresden.praktikum2009.lib;import java.util.ArrayList;/* Der Fragenkatalog enthält eine Menge von Fragen und hat * auch eine Bezeichnung */public class Fragenkatalog { private ArrayList fragen; private String name; /* es ist möglich, gleichnamige Konstruktoren (und * auch Methoden) mit voneinander verschiedenen * Signaturen zu definieren */ public Fragenkatalog(String name) { this.name = name; this.fragen = new ArrayList(); } public Fragenkatalog(String name, ArrayList existierendeFragen) { this.name = name; this.fragen = existierendeFragen; } /* fügt eine neue(?) Frage dem Katalog hinzu*/ public void addFrage(Frage frage) { this.fragen.add(frage); } /* entfernt eine Frage mit entsprechender id aus * dem Katalog*/ public boolean delFrage(String id) { for (int i = 0; i < this.fragen.size(); i++) { if (this.fragen.get(i).getId().equals(id)) { this.fragen.remove(i); return true; } } return false; } public ArrayList getFragen() { return fragen; } public void setFragen(ArrayList fragen) { this.fragen = fragen; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
package de.tudresden.praktikum2009;import java.util.ArrayList;import de.tudresden.praktikum2009.lib.Antwort;public class TestAntwort { /** * @param args */ public static void main(String[] args) { // 5 Objekte vom Typ Antwort erstellt Antwort aw1 = new Antwort("ein grüner Kreis.", true); Antwort aw2 = new Antwort("ein grünes Dreieck.", false); Antwort aw3 = new Antwort("ein grüne Figur.", true); Antwort aw4 = new Antwort("ein grünes Pfeil.", true); Antwort aw5 = new Antwort("ein blauer Kreis.", false); // die Objekte zu einer Liste zusammenführen ArrayList antwortmoeglichkeiten = new ArrayList(); antwortmoeglichkeiten.add(aw1); antwortmoeglichkeiten.add(aw2); antwortmoeglichkeiten.add(aw3); antwortmoeglichkeiten.add(aw4); antwortmoeglichkeiten.add(aw5); //ein einzelnes Antwort-Objekt auslesen System.out.println(aw3.getAntworttext()); System.out.println("Diese Antwort ist " + aw3.isRichtig() + "."); // udn jetzt mit einem zufälligen Antwort-Objekt int n = (int) (Math.random() * antwortmoeglichkeiten.size()); System.out.println("Zufallszahl: " + n); System.out.println("jetzt ein zufälliges Antwortobjekt aus der Liste:"); System.out.println(antwortmoeglichkeiten.get(n).getAntworttext()); System.out.println("Diese Antwort ist " + antwortmoeglichkeiten.get(n).isRichtig() + "."); }}
package de.tudresden.praktikum2009;import java.util.ArrayList;import de.tudresden.praktikum2009.lib.Antwort;import de.tudresden.praktikum2009.lib.Frage;public class TestFrage { // eine kleine Testumgebung public static void main(String[] args) { Antwort aw1 = new Antwort("ein grüner Kreis.", true); Antwort aw2 = new Antwort("ein grünes Dreieck.", false); Antwort aw3 = new Antwort("ein grüne Figur.", true); Antwort aw4 = new Antwort("ein grünes Pfeil.", true); Antwort aw5 = new Antwort("ein blauer Kreis.", false); ArrayList antwortmoeglichkeiten = new ArrayList(); antwortmoeglichkeiten.add(aw1); antwortmoeglichkeiten.add(aw2); antwortmoeglichkeiten.add(aw3); antwortmoeglichkeiten.add(aw4); antwortmoeglichkeiten.add(aw5); //wir erzeugen uns 3 Objekte vom Typ "Frage" Frage f1 = new Frage("A001", // eine (eindeutige) ID "Was sind gängige Ampelsignale für das fahren/gehen?", // die Frage antwortmoeglichkeiten); // die Antwortmöglichkeiten Frage f2 = new Frage("A002", "blablabla...", antwortmoeglichkeiten); Frage f3 = new Frage("65003", "blubb", antwortmoeglichkeiten); System.out.println(f1.getId()); System.out.println(f1.getFrage()); System.out.println(f1.getAntworten()); System.out.println(f3.getId()); System.out.println(f3.getFrage()); System.out.println(f3.getAntworten()); }}
package de.tudresden.praktikum2009;import java.util.ArrayList;import java.util.Scanner;import de.tudresden.praktikum2009.lib.*;// hier für 1 richtige Antwortmöglichkeitpublic class Quizshow { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // Code wurde in eine Methode ausgelagert Fragenkatalog fk = initFK(); // jetzt wird eine Frage aus allen möglichen ausgewählt int n = (int) (Math.random() * fk.getFragen().size()); // Frage und Antwortmöglichkeiten auf Konsole ausgeben System.out.println("Beantworte bitte folgende Frage:"); System.out.println(fk.getFragen().get(n).getFrage()); /* * besser als direkte Ausgabe der einzelnen Antworten, da man die anzahl * der möglichen Antworten als unbekannt voraussetzen sollte */ for (int i = 0; i < fk.getFragen().get(n).getAntworten().size(); i++) { System.out.println((i + 1) + " - " + fk.getFragen().get(n).getAntworten().get(i) .getAntworttext()); } // nutzer darf sich entscheiden int wahl = sc.nextInt(); /* * Gültigkeit der Auswahl abprüfen (Schutz vor zu große/zu kleine * Zahlen) */ if ((wahl) > 0 && wahl <= fk.getFragen().get(n).getAntworten().size()) { System.out.println("diese Antwort ist " + fk.getFragen().get(n).getAntworten().get(wahl - 1) .getRichtig()); } else { System.out .println("deine Auswahl lag ausserhalb der Antwortmöglichkeit"); } } // erstellt einen Fragekatalog und füttert ihn mit 2 Fragen private static Fragenkatalog initFK() { Fragenkatalog fk = new Fragenkatalog("lustigerName"); ArrayList antworten = new ArrayList(); Antwort a1 = new Antwort("5", false); antworten.add(a1); antworten.add(new Antwort("7", true)); antworten.add(new Antwort("8", false)); Frage frage = new Frage("A", "Wieviel Tage hat eine Woche?", antworten); fk.addFrage(frage); /* * Neu-Initialisierung des Objektes -> es sind ab hier wieder 0 Elemente * enthalten ("Variablen-Recycling") */ antworten = new ArrayList(); antworten.add(new Antwort("H2O", true)); antworten.add(new Antwort("H2O2", false)); antworten.add(new Antwort("HO2", false)); frage = new Frage("B", "Was ist die chemische Formel von Wasser", antworten); fk.addFrage(frage); return fk; }}