Labortagebuch der Vorlesung Objektorientierte Programmierung (in JAVA) 1:
Termin 00
Termin 01
Termin 02 Termin 03
Termin 04
Termin 05 Termin 06
- Aufgabe:
HTML
- Loesung:
Diese Homepage
- Aufgabe:
Grundelemente einer Klasse
- Fragen:
Welche Bedeutung hat die Methode main?
Sie ist die Hauptmethode die beim Programmstart ablaeuft.
 
Warum muss main eine Klassenmethode (d.h. Static) sein?
Wie bei Klassenvariablen kann auf Klassenmethoden zugegriffen werden, ohne dass ein Objekt benötigt wird.
 
Warum muessen main und die Klasse HelloWorld oeffentlich (public) sein?
Keine Ahnung.
- Loesung:
Goodbye
- Aufgabe:
Datentypen und Aufzaehlungstypen
- Fragen:
Wie war doch gleich der Zusammenhang zwischen Variable und Datentypen?
Variablen werden mit einem Datentyp als Eigenschaft deklariert.
 
Wie ist ihr Eindruck von den Wertebereichen der Numerischen Datentypen?
| Typ | Daten | Groesse | Wertebereich |
|---|---|---|---|
| byte | Ganzzahl | 8 bit (1 byte) | -128 bis 127 |
| short* | Ganzzahl | 16 bit (2 byte) | -32768 bis 32767 |
| int | Ganzzahl | 32 bit (4 byte) | -2^31 bis 2^31-1 |
| long | Ganzzahl | 64 bit (8 byte) | gaaaanz viel |
| float | Fliesskomma | 32 bit (4 byte) | Einfache Genauigkeit |
| double | Fliesskomma | 64 bit (8 byte) | Doppelte Genauigkeit |
| Bool | Char | String | Byte | Int | Long | Float | Double | |
| Bool | N | N | J Z | N | N | N | N | N |
| Char | N | J G | J Z | J Z | J Z | J Z | J F | J F |
| String | J Z | J Z | J Z | J Z | J Z | J Z | J Z | J Z |
| Byte | N | J G | J Z | J G | J G | J G | J F | J F |
| Int | N | J G | J Z | J G | J G | J G | J F | J F |
| Long | N | J G | J Z | J G | J G | J G | J F | J F |
| Float | N | J F | J F | J F | J F | J F | J F | J F |
| Double | N | J F | J F | J F | J F | J F | J F | J F |
| naja :-) | Ganzzahlen | Fliesskommazahlen | |
| Bool | Char, String | Byte, Int, Long | Float, Double |
- Loesung:
Literals
Ampel1
Ampel2
Ampel3
- Aufgabe:
Ausdruecke und Zahlensysteme
- Fragen:
Was ist der Unterschied zwischen den Ausdruecken 3 und 4?
Ausdruck 3 ist ganzzahlig und Ausdruck 4 ist mit Fliesskomma.
 
Aendert sich das Ergebnis von Aufgabe 4 wenn sie es an Fliesskommavariablen zuweisen?
Ja es kommt dann das gewohnte Ergebnis, naemlich 2,5 raus.
 
Logische Ausdruecke:
| NOT | |
| false | true |
| true | false |
| AND | ||
| false | false | false |
| false | true | false |
| true | false | false |
| true | true | true |
| OR | ||
| false | false | false |
| false | true | true |
| true | false | true |
| true | true | true |
| XOR | ||
| false | false | false |
| false | true | true |
| true | false | true |
| true | true | false |
- Loesung:
Arithmetic Expressions
Logical Expressions
Relational Expressions
Hybrid Expressions
- Aufgabe:
Kontrollstrukturen
- Uebungsaufgaben fuer zu Hause:
Flussdiagramm
 
Nassi-Shneidermann Diagramm (Struktogramm)
 
Erweiterung: Rueckfrage nach Durchfuehrung
- Fragen:
Was ist der Unterschied zwischen kopf- und fussgesteuerten Schleifen?
Kopfgesteuerte (for, while) werden nicht durchlaufen wenn die Prüfbedingung erfuellt, bzw. nicht erfuellt. Fussgesteuerte (do) hingegen werden mindestens ein mal durchlaufen bis die Bedingung geprüft wird. Man spricht daher auch von einer nicht abweisenden Schleife.
- Loesung:
Aufgabe 1 a
Aufgabe 1 b
Aufgabe 1 c
Aufgabe 1 d
Aufgabe 1 e
Aufgabe 1 f
Aufgabe 2 a
Aufgabe 2 b
Aufgabe 2 c
Klasse zur Tastatureingabe
- Aufgabe:
Funktionsweise von Methoden
- Fragen:
Warum ist die Moeglichkeit Methoden zu ueberladen so praktisch?
Es wird anhand der uebergebenen Parameter entschieden welche Methode ausgefuehrt wird. Was daran so herausragend praktisch ist kann ich leider nicht erkennen.
 
Warum macht es Sinn moeglichst kleine und einfache Methode zu schreiben
K I S S (Keep it simple and stupid). Ein elementares Grundprinzip.
 
Vergleichen Sie die Schnittstellen der Methoden incrementAndPrintNumber und incrementAndPrintNumbers. Was faellt ihnen dabei bezueglich der Unterschiede zwischen elementaren Datentypen und Objekttypen auf?
Im Gegensatz zu vielen anderen Programmiersprachen macht JAVA bei der Uebergabe keinen Unterschied zwischen z.B.: int und einem int-Array. Wirklich sehr angenehm. (Mir sollte also auffallen, das mir nichts auffaelt?!?)
- Loesung:
Randomizer
- Aufgabe:
Klassen, Vererbung, Objekte, usw...
- Loesung:
PersonTest
Person
Student
Idiot
Meine Gruppe bestand aus:
- Adrian Pixelmast0r Alexander
- Viktor The Mouseover Nuss
- Und mir, Daniel Hack0r Leese
Wir wollten natürlich, wie alle echten Programmierer, ein Spiel programmieren. Und da echte Programmierer Herausforderungen mögen sollte es naürlich ein eher schwer zu programmierender Spieltyp sein. So viel unsere Wahl schnell auf ein Jump-and-Run.
Nach einer Konzeptphase mit etlichen Brainstormings und Teambesprechungen stand der Name des Spieles fest:
 Nun wurden erste Konzepte erstellt und abstrahiert und der zeitliche Ablauf geplant:
Nach unzaehligen durchgecodeten Naechten hatten wir dann, kurz vor dem Abgabetermin eine lauffaehige Beta-Version
Wenn man sich so codezeilen wie
if (domoImDangerMode == true && this.hithit == false) this.domodomo = true; boolean domodomo = false; //hack the planet! |
Schliesslich wurde unser Projekt zum zweitbesten gewählt und reichte auch ohne weiteres für den Laborschein. Das sagt wohl auch viel über die Qualität der anderen Projekte aus.
Hier noch der Projektordner mit Quellcode. Man sollte es jedoch nicht gerade als Vorbild fuer strukturierte, oder gar objektorientierte, Programmierung betrachten.