Prozedurale und Objektorientierte Programmierung
Topic outline
-
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).
-
-
Struktogramme
Programmablaufpläne
Pseudocode-
Einige Algorithmen, die schon oft in IHK Prüfungen erfragt wurden.
-
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 -
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 interfaceHauptunterschiede
- 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 dasabc-Modul
für abstrakte Klassen und ähnliche Konstrukte für Schnittstellen.
- C++: Verwendet
-
- 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`
-
-
-
kennenlernen und auswählen können.
Eine IDE ist eine Sammlung von Tools und Einrichtungen, die Programmierer für die Softwareentwicklung und das Design benötigen. Sie bietet dem Programmierer eine Umgebung, in der er seinen Code schreiben und testen kann.
-
Seite „Liste von integrierten Entwicklungsumgebungen“. In: Wikipedia – Die freie Enzyklopädie. Bearbeitungsstand: 1. Oktober 2023, 12:22 UTC. URL: https://de.wikipedia.org/w/index.php?title=Liste_von_integrierten_Entwicklungsumgebungen&oldid=237781402 (Abgerufen: 8. Juli 2024, 18:57 UTC)
-
ist eine Phase im Softwareentwicklungsprozess, die darauf abzielt, die Anforderungen und Spezifikationen eines Systems zu verstehen und zu modellieren.
-
Use Case, Klassendiagramm, Objektdiagramm, Sequenzdiagramm, Zustandsdiagramm
-
- prozedural und objektorientiert implementieren
Algorithmen formulieren und Anwendungen in einer Programmiersprache erstellen
Erstellen der Diagramme
Umsetzung in OOP
systematisch Fehler erkennen, analysieren und beheben-
Die Aufgabe:
Sie sollen die Grundlagen der Objektorientierten Analyse (OOA) verstehen und anwenden, indem Sie die Anforderungen und die Struktur eines Programms zum Schachspielen analysieren und modellieren.Erstellen Sie eine vollständige Objektorientierte Analyse (OOA) für ein Programm, das das Spiel Schach simuliert. Die Analyse soll die wesentlichen Schritte der OOA umfassen: Anforderungserhebung, Identifikation von Klassen und deren Beziehungen, sowie die Erstellung von Modellen und Diagrammen.
Schritte zur Durchführung der OOA:
1. Anforderungserhebung:
- Beschreiben Sie die funktionalen und nicht-funktionalen Anforderungen an das Schachprogramm. Berücksichtigen Sie dabei die grundlegenden Spielregeln von Schach, Benutzerinteraktionen, sowie mögliche Erweiterungen wie KI-Gegner oder Online-Spiele.
- Dokumentieren Sie die Anwendungsfälle (Use Cases) des Schachprogramms. Beispiele hierfür sind „Spiel starten“, „Zug machen“, „Spiel beenden“, „Spiel speichern“ und „Spiel laden“.
2. Identifikation von Klassen:
- Ermitteln Sie die wesentlichen Objekte (Klassen) des Schachspiels. Überlegen Sie, welche Objekte für die Modellierung des Schachbretts, der Figuren, der Spielregeln und der Benutzerinteraktionen erforderlich sind.
- Beschreiben Sie die Attribute und Methoden der identifizierten Klassen. Stellen Sie sicher, dass jede Klasse klar definierte Verantwortlichkeiten hat.
3. Beziehungen zwischen Klassen:
- Bestimmen Sie die Beziehungen zwischen den identifizierten Klassen. Identifizieren Sie Assoziationen, Aggregationen und Vererbungsbeziehungen.
- Zeichnen Sie ein Klassendiagramm, das die Klassen und ihre Beziehungen übersichtlich darstellt.4. Dynamische Modellierung:
- Erstellen Sie Sequenzdiagramme für die wichtigsten Anwendungsfälle. Diese Diagramme sollten zeigen, wie die Objekte miteinander interagieren, um die Anforderungen zu erfüllen.
- Entwickeln Sie Zustandsdiagramme für die Klassen, die einen komplexen Lebenszyklus haben (z.B. Schachfiguren, die verschiedene Zustände wie „auf dem Brett“ oder „geschlagen“ haben können).
5. Überprüfung und Verfeinerung:
- Überprüfen Sie die erstellten Modelle auf Konsistenz und Vollständigkeit. Achten Sie darauf, dass alle Anforderungen durch die identifizierten Klassen und deren Beziehungen abgedeckt sind.
- Verfeinern Sie Ihre Modelle basierend auf Feedback und Erkenntnissen aus der Überprüfung.
-
-
systematisch Fehler erkennen, analysieren und beheben
Black-Box-/White-Box-Test
Unittest
Integrationstest
Systemtest
Abnahmetest