‏ ‏ ‎ ‏ ‏ ‎

1. 2023-10-09

1.1. Konstruktoren

  • Dienen dazu Speicherplatz für die Objekte am Heap zu allokieren (reservieren)

  • Ein Konstruktor hat den selben Namen wie die Klasse und keinen Rückgabewert

  • Obwohl ein Konstruktor eine Methode ist, wird er mit großen Anfangsbuchstaben geschrieben.

  • Sie können Eingangsparameter haben, damit die Objektvariablen initialisiert werden

Deklaration → Einer Variable einen Datentyp und eine Bezeichnung zuweisen, zB int a;
Initialisierung → Einer Variablen erstmalig einen Wert zuweisen

2. 2023-10-16

klassen vs objekte
beziehungen zwischen objekten
figuren cld
Dreieck[] d = new Dreieck[10];
Figur[] figuren = new Figur[10];
figuren[0] = new Dreieck(10,40,45);
  • @Override ist ein Marker, der sicherrstellt, dass auch eine (die korrekte) Methode überschrieben wird.

3. 2023-10-23

3.1. Kompilieren in Java

compile in java

3.2. absoluter vs relativer Pfad

  • relativer Pfad

    • ausgehend vom aktuellem Verzeichnis

      tree
      Wir befinden uns am Anfang im Root
      cd America/USA/NewYork  (1)
      cd ../Boston (2)
      1 Das ist ein relativer Pfad
      2 Das ist ebenfalls ein relativer Pfad
  • absoluter Pfad

    cd /Europe/Germany/Berlin (1)
    1 Das ist ein absoluter Pfad. Dieser beginnt immer im Wurzelverzeichnis (root)
Man erkennt einen absoluten Pfad daran, dass er immer mit einem / beginnt (unter Windows mit \ oder C:\)

3.3. Ausnahmebehandlung (Exceptions)

Exception in java1
  • Checked Exceptions müssen behandelt werden:

    • Weitergabe in Methodensignatur

    • Behandlung im try-catch-Block

3.4. try-with-resource

  • The try -with-resources statement is a try statement that declares one or more resources. A resource is an object that must be closed after the program is finished with it. The try -with-resources statement ensures that each resource is closed at the end of the statement.

try (Scanner scanner = new Scanner(new FileReader(FILE_NAME))) {

    // ...

} catch (FileNotFoundException e) {
    throw new RuntimeException(e);
}

4. 2023-11-13

vererbung
equals

5. 2023-12-18

6. 2023-12-21

6.1. Stack vs Queue

stack vs queue

6.2. (Einfach) verkettete Liste

verkettete liste

7. 2024-01-08

7.1. Boxing & Unboxing

  • Boxing: Vom Primitivdatentyp zum Objektdatentyp

    • z.B. int → Integer

  • Unboxing: Vom Objektdatentyp zum Primitivdatentyp

    • z.B. Integer → int

7.2. Wrapping

  • Der Primitivdatentyp wird in einer Klasse eingepackt.

7.3. Einfachvererbung & Mehrfachvererbung

Mehrfachvererbung in Java nicht möglich!
  • Einfachvererbung wird allerdings schon in Java verwendet.

  • z.B.

einfach  und mehrfachvererbung

7.4. FiFo & LiFo

  • Beim FiFo-Speicher wird ein Element als erstes eingefügt, dieses Verlässt den Speicher allerdings auch als erstes (First-In, First-Out).

  • Beim LiFo wird das zuletzt zugefügte Element als Erstes beim Speicher wieder entfernt (Last- In, First- Out).

8. 2024-01-15

8.1. Tipps für den Test

  • Lesen und Schreiben von Files

  • Ev. einfach verkettete Liste

    • Mögliche Operationen:

      • Einfügen vorne und hinten und an bestimmten Positionen

      • Entnehmen (Löschen) von Elementen der Liste (vorne, hinten, nach Position)

      • Zugriff auf einzelne Elemente der Liste

      • Durchlaufen aller Elemente

    • Erweiterung von Zug-Beispiel

      • Anstelle der Wrapper-Klassen eigene Klassen / Objekte verwenden: zB Container (mit Gewicht, Name)

      • Berechnen des Gesamtgewichts

      • Ermitteln des schwersten und leichtesten Wagons.

      • Ermitteln des durchschnittlichen Gewichts der einzelnen Wagons.

      • Wieviele Wagons hat der Zug?

      • Welche Wagons sind leer?

        package train container
        train mit container

9. 2024-02-12

9.1. Übung

  • Bsp 001: Erstellen Sie eine Klasse Person, sowie eine Klasse PersonenSortierer

    • Mit einem Menü kann man auswählen wie die Liste sortiert wird

      1 ... Person eingeben
      2 ... Liste nach Nachnamen / Vornamen sortiert ausgeben
      3 ... Liste nach Alter absteigend ausgeben
      4 ... Liste nach Größe aufsteigend ausgeben
      0 ... Programm beenden
      sortieren person cld
    • Verwenden Sie als natürliche Sortierung Nachnamen und als zweites Kriterium den Vornamen

    • Für die anderen Sortierkriterien verwenden Sie das Comparator Interface

    • Beginnen Sie mit einfachen Unit-Tests um die Funktionalität zu prüfen

10. 2024-03-04

10.1. Sorts

10.1.1. Grundsortierung

10.1.2. Insertion Sort

10.1.3. Selection Sort

10.1.4. Bubble Sort

  • In-Place

10.1.5. O-Notation

  • Zeitkomplexität !

  • Platzkomplexität: Diese gibt an, wie viel zusätzlichen Speicherplatz der Algorithmus in Abhängigkeit von der Anzahl der zu sortierenden Elemente benötigt. Damit ist nicht der Speicherplatz gemeint, der für die zu sortierenden Elemente selbst benötigt wird, sondern darüberhinaus benötigter Platz für z. B. Hilfsvariablen, Schleifenzähler und temporäre Arrays.

  • stabile und nicht-stabile Sortierverfahren

11. 2024-05-06

11.1. statische Elemente in einer Klasse

  • Verbesserung der 3.LF-W

  • Hausübung

    • Die gesamte 3.LF ist zu verbessern

    • Die einzelnen Korrekturen sind in einer Datei VERBESSERUNG.adoc zu dokumentieren. Diese Datei ist im Repo-Root

    • Invite-Link: https://classroom.github.com/a/UZoZayof

    • Besonders wichtig ist die (Neu-)Implementierung von Aufgabe 3

11.2. Unit-Tests mit assertj-core

11.3. Generics

11.4. Autoboxing

  • In Java gibt es Primitivdatentypen zB int → int zahl = 3;

  • Es gibt aber auch Objekttypen wie zB Integer

  • Man betrachtet diese Objekttypen als Schachtel (Box), in der die Primitivdatentypen verpackt werden.

    zB Integer zahl = 3;

    Hier wir nicht nur ein Wert erstellt, sondern ein ganzes Integer-Objekt (mit allen Methoden usw) in der der Wert 3 eingepackt wurde. Dies geschieht automatisch, daher autoboxing

  • Früher musste man das händisch durchführen.

    Integer zahl = new Integer(3);

    • Boxing: int → Integer

    • Unboxing: Integer → int

12. 2024-05-27 Generics und Collections

siehe Projekt "GenericsDemo" im lab-Ordner, wo eine Liste implementiert wird.