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
instanceofFlorian Kluge
Florian.Kluge@mailbox.tu-dresden.de
Moritz Schulz
Moritz.Schulz2@mailbox.tu-dresden.de
extends (“erbt von”)subclass und superclass
Student und Person
instanceofobj 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 Interfacenew 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 ba gleich groß wie ba größer als bhttps://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: