slides

1. Einführung in die Informatik

  • Vorlesung von Prof. Dr. Alexander Pretschner an der TUM in Software & Systems Engineering

  • Zeitraum: WS 2024/2025

2. Überblick über die Vorlesung

  • Basierend auf Vorlesungen von Prof. Seidl (TUM) und Prof. Pretschner (KIT).

  • Inhalt:

    • Grundkonzepte der Informatik

    • Denkweisen der Informatik

    • Programmieren in Java

3. Hauptteile der Vorlesung

3.1 Einführung

3.2 Objektbasierte Programmierung

3.3 Testen

4. Funktionen und Algorithmen

  • Funktion: Abbildung einer Menge von Eingabedaten (E) auf Ausgabedaten (A).

  • Algorithmus: Verfahren zur Berechnung einer Funktion. Beispiel:

    • Euklidischer Algorithmus zur Berechnung des größten gemeinsamen Teilers (ggT).

5. Programmieren

  • Implementierung von Datenbeschreibungen und Algorithmen in einer Programmiersprache (z.B. Java).

6. Berechenbarkeit

  • Nicht jede Abbildung kann durch einen Algorithmus realisiert werden.

  • Beispiel Alltagsalgorithmen wie Strickmuster oder Rezepte.

7. Beispiele aus der Programmierung

7.1 Euklidischer Algorithmus

  • Definition, Schritte des Algorithmus:

    1. Überprüfe, ob a = b; ggT ist a.

    2. Wenn a > b, ersetze a durch a - b und wiederhole.

    3. Ansonsten ersetze b durch b - a und wiederhole.

7.2 Programme

  • Ein Programm formuliert einen Algorithmus in einer Programmiersprache zur maschinellen Ausführung.

  • Beispiele von Programmiersprachen: Java, C, Python, etc.

8. Objektbasiertes Programmieren

  • Objekte: Grundbausteine der Programmierung, die Daten (Attribute) und Verhalten (Methoden) zusammenfassen.

  • Klasse: Bauplan für Objekte, der Attribute und Methoden definiert.

  • Instanz: Konkretes Objekt einer Klasse, z.B. Buch in einer Bibliothek.

9. Attribute und Methoden

  • Attribute repräsentieren Eigenschaften, z.B. Autor und Titel eines Buches.

  • Methoden definieren, was mit den Objekten gemacht werden kann, z.B. ‚ausleihen‘ oder ‚zurückgeben‘.

10. Konstruktoren

  • Spezialmethoden zur Initialisierung eines Objekts.

  • Konstruktoren tragen den gleichen Namen wie die Klasse und haben keinen Rückgabetyp.

11. Referenzen und Dereferenzierung

  • Referenzen sind das Bindeglied zwischen der Variablen und dem tatsächlichen Objekt.

    • Beispiel: Point p = new Point(); erstellt einen neuen Point.

12. Vergleich von Objekten

12.1 Gleichheit

  • == prüft, ob zwei Referenzen auf dasselbe Objekt zeigen.

  • equals sollte überladen werden, um auf Attributgleiche zu testen.

13. Lokale und Instanzvariablen

  • Lokale Variablen: Existieren nur innerhalb ihrer Methode und werden im Stack gespeichert.

  • Instanzvariablen: Dienen zur Speicherung des Zustands eines Objekts.

14. Überladen von Methoden

  • Methoden gleichen Namens können verschiedene Parameter haben (Typ oder Anzahl).

15. Überprüfung von Programmen

  • Testing ist entscheidend, um festzustellen, ob ein Programm das tut, was es soll.

16. Testmethoden

16.1 Auswahl von Testfällen

  • Ziel ist es, Eingabewerte zu finden, die verschiedene Anforderungen und Hypothesen abdecken.

  • Nutzung von Äquivalenzklassen: Gruppierung ähnlicher Eingaben, die zu ähnlichem Verhalten führen.

16.2 Testausführung

  • Testfälle werden erstellt und überprüft, indem das Programm mit verschiedenen Eingaben getestet wird.

17. Fazit

  • Die Vorlesung bietet eine umfassende Einführung in die grundlegenden Konzepte der Informatik, insbesondere in die objektbasierte Programmierung und das Testen von Software.