Topic outline

  • Grundlagen

    Variablentypen (Datentypen, Variablen im Speicher, Stack und Heap)
    Kontrollstrukturen: Entscheidungen, Schleifen
    Einführung IDE

    • Variablentypen spielen eine zentrale Rolle in der Softwareentwicklung, da sie bestimmen, welche Art von Daten in einer Variablen gespeichert werden kann und welche Operationen darauf ausgeführt werden können. Sie beeinflussen die Speicherverwaltung, die Laufzeiteffizienz und die Art und Weise, wie Programme strukturiert und verstanden werden.
      Die Wahl des richtigen Datentyps ist entscheidend für die Entwicklung effizienter, sicherer und wartbarer Software. Entwickler sollten die Eigenschaften und Einschränkungen der verschiedenen Typen gut verstehen, um sie effektiv einsetzen zu können.

    • Es gibt mehrere Kategorien von Variablentypen, die je nach Programmiersprache variieren können.

      • Primitive Datentypen
      • Komplexe Datentypen
      • Referenztypen
      • Abgeleitete Datentypen
      • Generische Typen
      • Typen für spezielle Zwecke
    • Kontrollstrukturen sind essenzielle Bestandteile jeder Programmiersprache. Sie steuern den Ablauf eines Programms und bestimmen, welche Anweisungen zu welchem Zeitpunkt ausgeführt werden. Es gibt verschiedene Arten von Kontrollstrukturen, die in drei Hauptkategorien eingeteilt werden können: Sequenz, Auswahl (Bedingungen) und Schleifen (Wiederholungen).

  • Refresh Programmierungsgrundlagen

    Struktogramme
    Programmablaufpläne
    Pseudocode

  • Programmiertechniken/-methoden

    Algorithmen formulieren und Anwendungen in einer Programmiersprache erstellen
    Standardalgorithmen der Informatik (z. B. Bubble-Sort)
    Wiederverwertbarkeit von Code (Funktionen, Prozeduren)
    systematisch Fehler erkennen, analysieren und beheben

  • Abgrenzung prozedurale zu objektorientierter Programmierung

    Einführung in das objektorientierte Paradigma (Java, C# oder C++ als Anschauungssprache)
    Grundlegende OOP-Konzepte
    Klassen/Objekte
    Vererbung
    Überladen und Überschreiben von Methoden
    Polymorphismus
    Generalisierung
    Spezialisierung
    Assoziationen

    • Aus den Entwurfsphilosophien der Sprachen und den spezifischen Merkmalen, die sie zur Unterstützung der objektorientierten Programmierung hervorheben, ergeben sich einige Unterschiede in der Anwendung von Konzepten, wie
       abstract, virtual,und interface

      Hauptunterschiede
      • C++: Verwendet virtuelle für Polymorphismus und rein virtuelle Funktionen für abstrakte Klassen. Keine direkte Entsprechung zu Java-Schnittstellen.
      • Java: Methoden sind standardmäßig virtuell. Abstrakte Klassen und Schnittstellen sind explizit definiert und haben eigene Schlüsselwörter und Verwendungszwecke.
      • Python: Fehlt ein explizites virtuelles Schlüsselwort, unterstützt aber Polymorphismus durch Methodenüberschreibung. Verwendet das abc-Modul für abstrakte Klassen und ähnliche Konstrukte für Schnittstellen.

    • - Class Definition:
        - Java: `class ClassName { ... }`
        - C++: `class ClassName { ... };`

      - Constructor:
        - Java: `public ClassName(parameters) { ... }`
        - C++: `ClassName(parameters) : initialization_list { ... }`

      - Access Specifiers: Both languages use `private`, `protected`, and `public`.

      - Inheritance:
        - Java: `class DerivedClass extends BaseClass { ... }`
        - C++: `class DerivedClass : public BaseClass { ... }`

      - Method Overriding:
        - Java: `@Override`
        - C++: `virtual` keyword in base class and `override` specifier in derived class (C++11 and later).

      - Main Function:
        - Java: `public static void main(String[] args) { ... }`
        - C++: `int main() { ... }`

      - Output:
        - Java: `System.out.println("text")`
        - C++: `cout << "text" << endl`

  • Analyse und Design


  • UML

     Use Case, Klassendiagramm,  Objektdiagramm,  Sequenzdiagramm,  Zustandsdiagramm
     

  • Lösungen konkreter Problemstellungen

    - prozedural und objektorientiert implementieren
            Algorithmen formulieren und Anwendungen in einer Programmiersprache erstellen
            Erstellen der Diagramme
            Umsetzung in OOP
            systematisch Fehler erkennen, analysieren und beheben

  • Testverfahren/-konzepte

    systematisch Fehler erkennen, analysieren und beheben
            Black-Box-/White-Box-Test
            Unittest
            Integrationstest
            Systemtest
            Abnahmetest