Übungsblatt 1 Aufgabe 1) Eclipse als Programmierumgebung Machen Sie sich mit der Entwicklungsumgebung Eclipse vertraut. Legen Sie dabei testweise mehrere JavaProjekte an. Versuchen Sie von Anfang an eine angemessene Struktur ihrer Projekte einzuhalten: • • • • Quellcode in einem src-Ordner Kompilierte Klassen im Ordner classes bzw. bin externe Libraries im Ordner lib Dokumentationen in einem Ordner doc Versuchen Sie die von Ihnen angelegte Projektstruktur nachzuvollziehen, indem Sie sich das WorkspaceVerzeichnis von Eclipse näher ansehen. Aufgabe 2) Probleme lösen wie in Programmierung I Eine Collatz-Folge (bekannt auch als Syracuse-Problem, Kakutani-Poblem, Hasse-Algorithmus und UlamProblem) von Lothar Collatz, 1937 ist definiert durch n -> n/2, falls n gerade ist, n -> 3n+1, falls n ungerade ist. Die Folge ist beendet, wenn 1 erreicht ist. Beginnt man etwa mit n=7, durchläuft der Algorithmus die folgenden Zahlen: 7 -> 22 -> 11 -> 34 -> 17 -> 52 -> 26 -> 13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1 • Schreiben Sie ein Programm, welches die Collatz-Folge für einen beliebigen Startwert berechnet und eine Ausgabe wie oben erzeugt. Aufgabe 3) Einstieg Objektorientierung (OO) In den Veranstaltungen zur OOAD und Programmierung II wurde schon etwas auf Klassen und Objekte eingegangen. Zum Verständnis der Objektorientierung sollen folgende Fragen beantwortet werden: • • • Was versteht man in unter einem Objekt? Wodurch ist ein Objekt gekennzeichnet? Was versteht man unter dem Begriff Klasse? • • • Wie werden in einem OO Java-Programm die Eigenschaften eines Objektes bezeichnet? Wie werden in einem Java-Programm die Fähigkeiten eines Objektes bezeichnet? Mit welchem „Schlüsselwort“ kann man in Java ein Objekt erzeugen? Aufgabe 4) Programmierung II Im Skript von Harald Wehr ist auf Seite 21 eine Graphik zu sehen, welche die Zusammenhänge des KlassenKonzeptes in Java darstellt. Versuchen Sie, die folgenden Java-Sprachelemente innerhalb dieser Graphik wiederzufinden: a) class Spieler { /* ... */ } b) void setzeTrikotNummer(int nummer) { /* ... */ } c) String nameMannschaft() { /* ... */ } d) Spieler(int nummer, String mannschaft) { /* ... */ } e) int trikotNummer; f) String mannschaft; g) this.trikotNummer = nummer; h) if (nummer > 0 && nummer <= 11) { /* ... */ } i) return this.mannschaft; Aufgabe 5) Klassen programmieren Zu schreiben sind zwei Klassen. Die erste Klasse soll den Namen „Spieler“ haben, sowie verschiedene Eigenschaften und Fähigkeiten eines Fußball-Spielers beschreiben. Die zweite Klasse stellt Ihr eigentliches Programm dar. Es enthält ausschließlich eine main-Methode. In dieser main-Methode können Sie dann Spieler-Objekte erzeugen, Eigenschaften verändern (direkt oder über Methoden) und ausgeben lassen. Als Vorlage können die folgenden Code-Fragmente dienen: Klasse Spieler: class Spieler { int trikotNummer; String position; // Torwart, Abwehr, Mittelfeld, Sturm /* weitere Attribute */ Spieler(int trikotNummer) { this.trikotNummer = trikotNummer; } /* weitere Konstruktoren */ void setzePosition(String position) { this.position = position; } int hatTrikotNummer() { return this.trikotNummer; } } /* weitere Methoden */ Klasse mit main-Methode: class MeinProgramm { public static void main(String[] args) { Spieler s1 = new Spieler(1); s1.setzePosition("Torwart"); Spieler s2 = new Spieler(11); s2.setzePosition("Stürmer"); System.out.println("Trikot s2: " + s2.hatTrikotNummer()); System.out.println("Position s2: " + s2.position); } } Aufgabe 6) Eigene Klassen ausdenken Überlegen Sie sich, wie eine Klasse „Mannschaft“ aussehen könnte, die max. 11 Spieler inklusive 1 Torwart hat? Eine weitere Bedingung ist, daß alle Spieler unterschiedliche Trikot-Nummern haben müssen. Versuchen Sie, diese Klasse in Java zu realisieren (Programmierer sagen „implementieren“).