Posts by Bradon

    Beim Livebeispiel gibt es anscheinend verschiedene Angaben. Ich musste die Delete-Methode einer simplen Produktverwaltung in Dao-, Service- und Gui-Schicht implementieren. Was man dazu können sollte: @FXML Annotation, PreparedStatement, javafx-Dialoge, tableView.getSelectionModel().getSelectedItems(), tableView.getItems().remove(..).
    Der zweite Teil waren ein paar JUnit-Tests für eine Quasi-Collection, jeweils eine Methode für isEmpty(), size(), quasi-add() und quasi-remove().


    Alles wird nur automatisiert überprüft, das heißt man kann es beliebig schlampig implementieren. Für eine schöne Implementierung war die Angabe (imho) auch viel zu ungenau. Am hilfreichsten sind die Fehlermeldungen von der Prüfklasse, z.B. (paraphrasiert) "dein dummer dialog hat den falschen typ :sudern:"


    Zum AG: Keine Ahnung, wie tutorenabhängig das ist, aber es wurde weder versucht, das ganze auf dem Abgaberechner auszuführen, noch aus dem SVN auszuchecken (d.h. theoretisch könnte man heute und morgen noch dran arbeiten). Sauberes Javadoc in den Interfaces IHorseDao und IHorseService und in HorseDto haben für volle Punkte für Doku gereicht (sonst hatte ich fast nirgends Kommentare). Beim Durchtesten des Programms wurde einigen Wert auf den korrekten Umgang mit gelöschten Pferden und Jockeys gelegt. Achtet drauf, dass die Datenbankverbindung nach Schließen des Programms ebenfalls geschlossen wird. (<DatenbankSingleton>.closeConnection())


    Viel Glück!


    /edit: Ach ja, das Filtern nach Attributen muss unbedingt im SQL-Code geschehen, sonst gibts Punkteabzüge :)

    Oh ja natürlich, den sollte man dazu schreiben :p.


    Wie meinst du: mit mathematischem Beweis? Ich kann natürlich beweisen, dass eine funktion f(n)=xxxxx in Θ(n) liegt, aber zuvor muss ich die funktion ja auch um konstanten "kürzen" bzw. vereinfachen wie ichs eben gemacht hab, oder gibts da noch einen genäueren Lösungsweg?! :)


    Das Kürzen kann man ja auch mathematisch korrekt machen, indem man n gegen Unendlich gehen lässt und die ganze Funktion (mit allen Konstanten) durch n dividiert

    Vergiss bei Zeile 4-5 nicht die äußere Schleife, also den Faktor log(a).


    Macht aber keinen Unterschied: Ja, man kann alle konstanten Werte ignorieren (bzw sie werden beim Umformen irrelevant) und kommt am Ende auf Θ(n)


    Wenn das eine Mathe-Aufgabe ist, wäre ein mathematischer Beweis aber nicht verkehrt ;)

    "Lassen Sie das Objekt die Methoden dividieren() und multiplizieren() durchführen. Übergeben Sie dazu den Methoden Instanzvariablen als Argumente". (Objekt und Instanz sowie Parameter und Argumente bedeuten jeweils das gleiche, falls das nicht klar ist)


    Um das Programm komplett zu verstehen, sollten die Grundlagen von objektorientierter Programmierung bekannt sein, das heißt was Klassen, Objekte, Methoden und Konstruktoren sind und wie man sie benutzt. Das Grundrechenarten-Beispiel kommt typischerweise etwas vor diesen Themen, wenn erst mal Variablen und Output erklärt werden sollen.

    1. Formal: this ist eine Referenz auf das aktuelle Objekt. Wenn du ob1.addieren(..) aufrufst, ist this innerhalb von addieren ob1.


    Gebraucht wird this vor allem in folgender Situation:


    Code
    1. class Foo {
    2. int [color=red][b]x[/b][/color];
    3. public Foo(int [color=blue][b]x[/b][/color]) {
    4. [color=blue][b]x[/b][/color] = [color=blue][b]x[/b][/color]; //tut nichts
    5. this.[color=red][b]x[/b][/color] = [color=blue][b]x[/b][/color];
    6. }
    7. }


    (Durch die Farben deute ich an, welches der beiden x jeweils verwendet wird)


    Der Konstruktor setzt die Objektvariablen x und y, also die x und y, die direkt in der Klasse definiert sind und nicht innerhalb einer Methode. (Wenn dich das verwirrt: verständlich. Das Programm benutzt einige Konzepte, die Programmieranfänger eig noch nicht kennen/verstehen können)


    2. Bei der Bildschirmausgabe fehlt ein Leerzeichen nach "Addition" ;)


    3. Wenn deine Klasse "GrundRechenArtenA" heißt, muss sie auch in der main-Methode so bezeichnet werden, also "GrundRechenArtenA ob1= new GrundRechenArtenA(3,7);"


    4. ob1 ist ein Objekt der Klasse GrundRechenArtenA mit x=3 und y=7. "ob1.dividieren (ob1.x, ob1.y);" heißt "Rufe die dividieren-Methode von ob1 mit dem x von ob1 und dem y von ob1 als Parametern auf"
    "ob1.dividieren (1,3)" würde auch funktionieren, entspricht aber nicht der Angabe.



    Ich hoffe, das beantwortet mehr Fragen als es aufwirft :)

    Das Spiel war echt cool.. Ich erinnere mich noch, dass ich immer ein paar Münzen auf die Enter-Taste gelegt hab und ne halbe Stunde afk gegangen bin, um das Abrunden beim Landhandel zu abusen :D


    Hab leider kein Apple Gerät mehr

    Code
    1. loop_start:
    2. //loop body
    3. loop loop_start


    Funktioniert bei mir. Bin allerdings sehr unzufrieden mit meiner Lösung, weil ich sowohl einen abwärts zählenden Counter (%rcx) habe, um die Schleife ohne Vergleich mit loop abbrechen zu können, als auch einen aufwärts zählenden, um immer das richtige Offset zu haben..

    Wenn mich mein eingerostetes Funkprog-Wissen nicht täuscht:
    Es wird für den in-Block eine Funktion "no" definiert, die für jeden Parameter n "bar" zurückgibt. Dieser Funktion wird dann "foo" übergeben.

    Hallo,
    wart erst mal auf eine Antwort auf deine Mail. Die Leute hinter der Hotline sind die einzigen, die zu Abgabegesprächen verbindlich Auskunft geben können. Es wird aber sicher noch Termine geben, solange Bedarf besteht, selbst wenn das Semester eigentlich schon vorbei ist.