sew-ex_2

Softwareentwicklung - Übungsangaben

Einleitung

  • Dozent: Dipl.-Ing. Msc. Paul Panhofer BSc.

  • E-Mail: paul.panhofer@tuwien.ac.at

  • Datum des Vortrags: 12.04.2023

Grundlagen der OOP

  • Theoretische Basis für Objektorientierte Programmierung (OOP):

    • Objektinstanzierung

    • Instanzierungsoperator

    • Klassenimplementierung

    • Enums

Ikusa - Basic OOP

Beispiel: Klassenimplementierung

  • Entwickeln Sie Klassen basierend auf den gegebenen JSON-Objekten.

  • Die Implementierung soll folgende Komponenten umfassen:

    • Unit.cs

      • JSON Objekt:

        { 
          "unitType": "Daiymo",
          "classification": "Samurai",
          "combatValue": 5,
          "cost": 0,
          "description": "A daimyo was a provincial warlord who commanded a large army of warriors."
        } 
      • Erstellen Sie Unit-Tests für die implementierten Klassen.

Unit Test Beispiel

  • UnitTest.cs

    • Objektdaten deklarieren:

      let bowmenUnit = { 
        unitType: "Bowmen",
        classification: "Samurai",
        combatValue: 6,
        cost: 3,
        description: "These long-range units represent experienced warriors who were deadly accurate with bow and arrow."
      };
    • Testmethoden:

      • Test darauf, ob die Objekte initialisiert werden und nicht null sind.

      • Überprüfen der Eigenschaften der Objekte z.B.:

        Assert.That(bowmenUnit.UnitType, Is.EqualTo("Bowmen"));

Aernautica - Basic OOP

Beispiel: Klassenimplementierung

  • Implementierung von Klassen basierend auf JSON-Objekten:

    • Aircraft.cs

      • Beispiel Objekt:

        { 
          "name": "Fire Raptor Gunship",
          "aircraftClass": "FIGHTER",
          ... 
        }
    • Testen der Konstruktoren und Eigenschaften in AircraftTest.cs.

Tests und Validierung

  • Methoden zur Überprüfung:

    • Existenz prüfend (z.B. Assert.That(raptor, Is.NotNull());)

    • Überprüfung von Eigenschaften durch Tests.

Vererbung und Abstrakte Klassen

  • AUnit als abstrakte Basisklasse zur Definition gemeinsamer Eigenschaften für verschiedene Einheitstypen (z.B. Samurai und Ashigaru).

TicTacToe Implementierung

TicTacToe Spiel

  • Definition der Spielklassen:

    • EPlayerType als Enum für Spielertypen (Init, Player1, Player2).

    • Move Klasse für Spielzüge, welche die Basisklasse Point erbt.

    • Implementierung der Spielregeln in der TicTacToeMap Klasse.

Tests

  • Unittest zur Überprüfung der Spielzüge und der Gewinner-Logik.

Train Simulation

Klassen

  • Implementierung der Point- und TrainMap-Klassen für die Simulation von Zügen.

  • Methoden zur Routenberechnung zwischen Punkten sowie zur Generierung von Nachbarn.

Abschluss

  • Nutzen und Anwendung der Objektorientierten Programmierung in komplexen Szenarien (Spiele und Simulationen).

  • Test-Driven Development (TDD) als Methodik zur Validierung von Softwareeinheiten.