HILFE!! Hausaufgabe/ zahlenrate programm!!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 13. Januar 2009, 10:48

lunar hat geschrieben:Leonidas, du nutzt doch nicht ernsthaft Eclipse für den Kram an der Uni?

Doch. Einige Features sind auch gar nicht übel wie etwa der JUnit-Support, andere Dinge wären besser wenn die Autoren beim Implementieren auch nachgedacht hätten. Aber dass die IDE keine Vorschläge per Tabs hat wundert mich. Vielleicht ist das ja irgendwo konfigurierbar.

Und nun mit Eclim kann ich vielleicht auch einen brauchbaren Editor verwenden.

sma, danke für das Code-Review. Jetzt weiß ich noch besser, was ich in Zukunft nicht machen will :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Dienstag 13. Januar 2009, 11:16

Leonidas hat geschrieben:Jetzt weiß ich noch besser, was ich in Zukunft nicht machen will :)

Oh, glückliche Uni-Zeit. Ich schreibe dies, während ich warte, dass mein Java-Code kompiliert und getestet wird... Übrigens ist natürlich Intellij IDEA die beste IDE ;)

Stefan
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Beitragvon audax » Dienstag 13. Januar 2009, 11:38

Zwischenstand: http://paste.pocoo.org/show/99416/

Internationalisierung und JavaDoc fehlt noch :D

€dit:
Mit Ansätzen von JavaDoc:
http://paste.pocoo.org/show/99421/
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Beitragvon hendrikS » Dienstag 13. Januar 2009, 12:42

@Audax

Hast Du Dir mal Leonidas' Beitrag "Was ist OOP eigentlich?" durchgelesen.
Mach mal und versuch mal ein paar Dinge, speziell Absatz 4, "Nehmen..." auf Dein Programm zu uebertragen.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Beitragvon BlackVivi » Dienstag 13. Januar 2009, 12:51

hendrikS hat geschrieben:@Audax

Hast Du Dir mal Leonidas' Beitrag "Was ist OOP eigentlich?" durchgelesen.
Mach mal und versuch mal ein paar Dinge, speziell Absatz 4, "Nehmen..." auf Dein Programm zu uebertragen.
Mhm, genau das versucht ja Audax zu vermeiden. Sein Programm verhöhnt scherzhaft das overengineering der Javaprogrammierer... Und das hat nix mit "Was ist OOP" von Leonidas zu tun, weil er OOP meiner Meinung nach realistisch und gut sieht. Der durchschnittliche Javaprogrammierer meiner Meinung nach aber nicht.
Silmaril
User
Beiträge: 55
Registriert: Sonntag 21. September 2008, 17:10
Wohnort: Franken

Beitragvon Silmaril » Dienstag 13. Januar 2009, 12:59

Warum gibt es eigenlich immer noch "Hello World"-Programme? Ein Zahlerateprogramm zum Vorstellen einer Sprache ist doch viel besser!

Und Nein, ich schreib das hier jetzt nicht in AWL :-P :-D
Lebe jeden Tag, als wäre es Absicht.
lunar

Beitragvon lunar » Dienstag 13. Januar 2009, 13:02

Leonidas hat geschrieben:
lunar hat geschrieben:Leonidas, du nutzt doch nicht ernsthaft Eclipse für den Kram an der Uni?

Doch. Einige Features sind auch gar nicht übel wie etwa der JUnit-Support,

Du schreibst doch nicht tatsächlich Unittests für deine Hausaufgaben?

Ich weiß nicht, aber für das bisschen Code habe ich ja noch schneller Emacs gestartet, den Code und die build.xml geschrieben und das ganze per Mail verschickt, bevor Eclipse überhaupt gestartet hat ;)
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 13. Januar 2009, 13:25

lunar hat geschrieben:Du schreibst doch nicht tatsächlich Unittests für deine Hausaufgaben?

Doch. Gerade für einige wie das parsen von unglückseligen Kommandozeilenoptionen sind Unittests recht praktisch. Wenn sie durchlaufen - fertigimplementiert. Allerdings mag Eclipse TDD nicht sonderlich und blinkt böse, macht Boxen und Icons auf (grad dass es nicht anfängt zu hupen und mich beschimpft) wenn ich in Tests Methoden verwende, die noch nicht definiert sind. Noch nie was von Top-Down gehört oder so :)

Das Testen in der ``main()`` kann ich mir hingegen sparen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Dienstag 13. Januar 2009, 13:32

audax hat geschrieben:Mit Ansätzen von JavaDoc


Ah, wird besser :) Bitte beachte, dass der erste Satz eines Kommentars mit einem Punkt abgeschlossen werden sollte. Daraus generiert JavaDoc dann die Übersichtskommentare. Er sollte in der dritten Person singluar verfasst sein ("Returns foo"). PEP8 schreibt ja eine Imperativform vor ("Return foo"). Den "@author" empfinde ich kontraproduktiv zur Idee einer gemeinsamen "code ownership" im Programm und würde ihn dir daher anstreichen. Auch hinter einer } schreibt man IMHO klein weiter. Du meinst bei "Object" ja nicht "java.lang.Object" sondern einfach ein Objekt. Allgemein könnten die Kommentare noch etwas weniger redundant sein, denn Typen oder das etwas eine Klassse ich, kann ich auch aus dem Rest ersehen. Und sie enthalten noch Rechtschreibfehler. Hast du nicht Eclipse benutzt? Diese IDE sucht auch Rechtschreibfehler in JavaDoc-Kommentaren, wenn man sie lässt. Kann manchmal echt praktisch sein...

Stefan
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Dienstag 13. Januar 2009, 13:40

Leonidas hat geschrieben:Allerdings mag Eclipse TDD nicht sonderlich und blinkt böse, macht Boxen und Icons auf (grad dass es nicht anfängt zu hupen und mich beschimpft) wenn ich in Tests Methoden verwende, die noch nicht definiert sind.


Im Gegenteil sind Eclipse oder auch Intellij IDEA ideal für TDD, da sie einem helfen, den Code, den man braucht damit's kompiliert, automatisch zu erzeugen. Eclipse kann bekanntlich ja auch fehlerhafte Programme übersetzen und starten (war damals ein Novum für Java-IDEs und IDEA kann's 7 Jahre später immer noch nicht).

Das schöne ist doch gerade, dass du nur deinen Unit-Test schreiben musst, und Eclipse dabei schon den Rumpf für deinen Code erzeugt.

Also z.B. "new Foo()" in einem Unittest schreiben. Foo gibt's nicht. Also bietet die IDE an, die Klasse zu erzeugen. Danach alles markieren, jetzt lokale Variable erzeugen lassen. Dann steht da "Foo foo = new Foo()". Jetzt in die nächste Zeile, IDE ergänzt den ";". Man tippt "f"+complete, IDE ergänzt foo (nicht wirklich sinnvoll bei nur 3 Buchstaben aber je länger, desto praktischer). Man tippt ".bar(3, 4)", IDE vermisst "bar"-Methode, bietet an sie anzulegen, erkennt automatisch sinnvolle Typvorschläge für die Parameter usw.

Schneller geht's doch kaum.

Stefan
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Dienstag 13. Januar 2009, 13:50

numerix hat geschrieben:Jetzt würde ich es gerne aber auch noch in Cobol sehen.


Ich habe schon überlegt eine Lösung in ABAP zu machen, welches Cobol doch recht änlich ist. Irgendwie habe ich diese "Sprache" aber erfolgreich und nahezuf vollständig, verdrängen können ^^ Vielleicht trau ich es mich noch einmal in meine Unterlagen zu schauen ...

@Java-Code: Der sieht mal wirklich sehr gelungen aus, es schwirren aber noch die 0 und die 100 als Werte herum. Ich schlage daher eine Klasse "Bounds" vor:

Code: Alles auswählen

class Bounds<T> {
    private T left, right;
   
    public Bounds<T>(T left, T right) {
        this.left = Math.min(left, right);
        this.right = Math.max(left, right);
    }


    public in(T point) {
        return left <= point && point <= right;
    }

   
    public T getLeft() { return left; }
    public T getRight() { return right; }
}


Edit: Die while-Schleife in der main-Funktion könnte man noch durch das State-Pattern optimieren.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Dienstag 13. Januar 2009, 15:03

EyDu, dein Code kann leider nicht funktionieren. Es gibt keinen durch "T" ausdrückbaren Typ in Java, der mit "<=" zusammenarbeitet.

Eventuell funktioniert dank Autoboxing, wenn du <T extends Integer> schreibst, aber ich will das jetzt nicht ausprobieren. Glaube nicht.

Ich würde vorschlagen, an dieser Stelle lieber zu C#, C++ oder Scala zu wechseln. Java ist der Aufgabe offensichtlich nicht gewachsen.

Stefan
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Dienstag 13. Januar 2009, 15:40

sma hat geschrieben:EyDu, dein Code kann leider nicht funktionieren. Es gibt keinen durch "T" ausdrückbaren Typ in Java, der mit "<=" zusammenarbeitet.


Ja, ich hatte ganz vergessen, dass Java da so seltsame Beschränkungen hat. Alternativ könnte man dann wohl T einfach als Comparable machen und die entsprechenden Operatoren ersetzen.

Sebastian
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Beitragvon audax » Dienstag 13. Januar 2009, 17:03

Der Code ist frei für alle, "verbessert" ruhig, was gemacht werden kann :D
lunar

Beitragvon lunar » Dienstag 13. Januar 2009, 17:38

Leonidas hat geschrieben:Doch. Gerade für einige wie das parsen von unglückseligen Kommandozeilenoptionen sind Unittests recht praktisch. Wenn sie durchlaufen - fertigimplementiert.

Na, dann ziehe ich meinen Hut vor dir ...

Mir wäre das viel zu viel Arbeit. Die Aufgaben sind größtenteils trivial und daher ziemlich langweilig, da hab ich keine Lust, noch langweiligere Unittests zu schreiben. Zudem sind die Lösungen so kurz und so einfach, dass sich das Testen nicht lohnt ...

Noch nie was von Top-Down gehört oder so :)

Es sind doch nur Hausaufgaben ... :)

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], brainstir