https://github.com/Trivo25/tud-java-course
January 6, 2022
Florian Kluge, Moritz Schulz
https://trivo25.github.io/tud-java-course/
Florian.Kluge@mailbox.tu-dresden.de
Moritz.Schulz2@mailbox.tu-dresden.de
Objektorientierte Programmierung
instanceof
Florian Kluge
Florian.Kluge@mailbox.tu-dresden.de
Moritz Schulz
Moritz.Schulz2@mailbox.tu-dresden.de
extends
(“erbt von”)subclass
und superclass
Student
und Person
instanceof
obj
von der Klasse KlasseB
Instanz istobj
(KlasseA
) subclass
von KlasseB
istinstanceof
und Type Castspublic static void besucheVorlesung(Person p) {
if (p instanceof Dozent) {
Dozent d = (Dozent) p;
d.teach();
} else if (p instanceof Student) {
Student s = (Student) p;
s.study();
}
}
instanceof
und Type Castsp.teach()
und p.study()
würden nicht gehen, denn die Methoden sind in der Klasse Person
nicht vorhandenInstanceof.java:10: error: cannot find symbol
p.teach();
^
symbol: method teach()
location: variable p of type Person
subclass
Methoden der superclass
überschreibenclass Animal {
public void makeSound() {
System.out.println("some generic animal sound");
}
}
class Pig extends Animal {
@Override
public void makeSound() {
System.out.println("oiinkk");
}
}
// zum Beispiel in main(String[] args):
Animal pig1 = new Pig(); // pig1 kann auch vom Typ Animal sein
pig1.makeSound(); // 'oiinkk' und nicht 'some generic animal sound'
Animal
, um vorzugeben, welche Methoden Animal
-Objekte haben sollen"some generic animal sound"
meiden wollen?interface Interface { /*...*/ }
Klasse implements Interface
new Animal()
würde im Beispiel nicht funktionierenI...
benannt (z.B. IAnimal
)extends
)implements
)int compareTo(T o)
a.compareTo(b)
gibt zurück:
a
kleiner als b
a
gleich groß wie b
a
größer als b
https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html
Arbeite hier gern mit mehreren Dateien.
Form
, das eine Methode float getFlaeche()
fordert.Rechteck
und Dreieck
(Konstruktoren, implements
, float getFlaeche()
)System.out.println(flaeche1);
…@Override
) die String toString()
-Methode in den Klassen, und verwende sie, um auch das Objekt in der Konsole auszugebenRechteck
und Dreieck
das Comparable<Form>
-Interface implementieren. Vergleiche in der Methode int compareTo(Form f)
die Flächen entsprechend.Form[] formen
von den vier Objekten an (= {r1,r2,d1,d2}
).Arrays
-Klasse für den nächsten Schritt: import java.util.Arrays;
formen
aus, indem du Arrays.toString(formen)
verwendest.Arrays.sort(formen)
, um das Array zu sortieren.formen
auch nach dem Sortiervorgang aus.Setze eine Queue
(Warteschlange) von int
als Interface um.
Eine Queue ist ein abstrakter Datentyp nach FIFO-Prinzip: First in, first out. D.h. das Element, das zuerst hinzugefügt wird, wird auch zuerst herausgenommen.
Das Interface hat die Methoden
void push(int i)
: füge einen int hinten anint pop()
: entferne den letzten int und gib ihn zurückSetze dies mit einem Array um. Sollte der Array irgendwann zu klein sein, um noch eine weitere Zahl zu halten, musst du einen neuen Array erstellen und zunächst alle Elemente kopieren.
Teste deine Implementierung mit kleinen und großen Queues.
See course materials here: https://trivo25.github.io/tud-java-course/
Check out the Cheat Sheet: http://tiny.cc/java-cs
Inspiration für Probleme: