Aufgabe 1: Klasse Temperatur

Erstelle eine C#-Klasse Temperatur zur Darstellung einer Temperatur.

Vorgaben:

  • Verwende Datenkapselung mit einer privaten Variable (z. B. celsius als double).
  • Erstelle Konstruktoren:
    • Parameterlos: setzt Temperatur auf 0°C
    • 1-parametrig (double celsius)
    • Nutze Konstruktorverkettung sinnvoll.
  • Erstelle Getter/Setter:
    • Setter soll prüfen: Temperatur darf nicht kleiner als -273.15°C sein (sonst Exception).
  • Erstelle Methoden:
    • double ToFahrenheit() (Umrechnung)
    • void Add(double delta) (Temperatur erhöhen/verringern)
    • ToString(): Ausgabe in der Form XX.X °C
  • Hauptprogramm:
    • Erstelle ein Temperatur-Objekt t mit -10
    • Gib t aus
    • Erhöhe um +12.5
    • Gib t aus und zusätzlich den Fahrenheit-Wert

Aufgabe 2: Klasse Konto

Erstelle eine C#-Klasse Konto (Bankkonto) mit Kontostand und Kontoinhaber.

Vorgaben:

  • Private Attribute: string inhaber, double kontostand
  • Konstruktoren:
    • 1-parametrig: nur inhaber, Kontostand soll 0 sein
    • 2-parametrig: inhaber und kontostand
    • Verwende Konstruktorverkettung
  • Zugriff:
    • Für inhaber nur Getter (keine Änderung möglich)
    • Für kontostand kein Setter, Änderungen nur über Methoden
  • Methoden:
    • void Einzahlen(double betrag) (betrag muss > 0 sein, sonst Exception)
    • void Abheben(double betrag) (betrag muss > 0 sein; wenn zu wenig Guthaben → Exception)
    • ToString(): Inhaber: NAME, Kontostand: XX.XX
  • Hauptprogramm:
    • Lege ein Konto für "Alex" mit 50 an
    • Zahle 20 ein, gib aus
    • Hebe 60 ab, gib aus

Aufgabe 3: Klasse Rechteck

Erstelle eine C#-Klasse Rechteck mit Breite und Höhe (ganzzahlig).

Vorgaben:

  • Datenkapselung: breite und hoehe privat
  • Konstruktoren:
    • 1-parametrig (int seite) → Quadrat (breite=seite, höhe=seite)
    • 2-parametrig (int breite, int hoehe)
    • Verwende Konstruktorverkettung
  • Getter/Setter:
    • Für beide Setter gilt: Wert muss > 0 sein, sonst Exception
  • Methoden:
    • int Umfang()
    • int Flaeche()
    • bool IstQuadrat() (true, wenn breite == höhe)
    • ToString(): Breite x Höhe (z. B. 3 x 5)
  • Hauptprogramm:
    • Erstelle ein Rechteck r mit 3,4
    • Gib r aus, gib Fläche und Umfang aus
    • Setze Höhe auf 3
    • Gib aus, ob es jetzt ein Quadrat ist

Aufgabe 4: Spieler und Waffe

Interaktion mehrerer Klassen

Erstelle zwei Klassen: Spieler und Waffe.

Klasse Waffe:
Eigenschaften:

  • Name (string)
  • Schaden (int)

Methode:

  • ZeigeInfo() → zeigt Name und Schaden an

Klasse Spieler:
Eigenschaften:

  • Name (string)
  • Leben (int)
  • AktuelleWaffe (Waffe)

Konstruktor:

  • erhält Name und Leben

Methoden:

  • Ausrüsten(Waffe waffe) → setzt AktuelleWaffe
  • Angreifen(Spieler ziel) → reduziert das Leben des Zielspielers um den Schaden der aktuellen Waffe
  • ZeigeStatus() → zeigt Name, Leben und Waffenname an

Aufgabe:

  1. Erstelle mindestens zwei Waffe-Objekte (z.B. Schwert, Bogen).
  2. Erstelle zwei Spieler.
  3. Rüste die Spieler mit unterschiedlichen Waffen aus.
  4. Lass die Spieler sich gegenseitig angreifen.
  5. Gib nach jedem Angriff den Status der Spieler aus.

Optional (Bonuspunkte):

  • Verhindere Angriffe ohne Waffe
  • Leben darf nicht unter 0 fallen
  • Füge eine dritte Klasse Rüstung hinzu, die den erlittenen Schaden reduziert

Aufgabe 5: Schüler und Schulklasse

Erstelle zwei Klassen: Schueler und Schulklasse.

Klasse Schueler: Eigenschaften:

  • Name (string)
  • Note (double)

Konstruktor:

  • erhält Name und Note

Methoden:

  • ZeigeInfo() → gibt Name und Note auf der Konsole aus

Klasse Schulklasse: Eigenschaften:

  • Name (string, z. B. „3AHIF“)
  • SchuelerListe (List<Schueler>)

Konstruktor:

  • erhält den Namen der Schulklasse
  • initialisiert die Liste der Schüler

Methoden:

  • SchuelerHinzufuegen(Schueler s) → fügt einen Schüler zur Liste hinzu
  • ZeigeAlleSchueler() → gibt alle Schüler mit ihren Noten aus
  • BerechneDurchschnitt() → gibt die Durchschnittsnote zurück
  • BesteNote() → gibt die beste (kleinste) Note zurück
  • SchlechtesteNote() → gibt die schlechteste (größte) Note zurück

Optional:

  • AnzahlBestanden() → zählt, wie viele Schüler eine Note ≤ 4.0 haben
  • BesterSchueler() → gibt das Schueler-Objekt mit der besten Note zurück

Aufgabe:

  1. Erstelle mehrere Schueler-Objekte (mindestens 5).
  2. Erstelle ein Objekt der Klasse Schulklasse.
  3. Füge alle Schüler mit SchuelerHinzufuegen(...) zur Schulklasse hinzu.
  4. Gib alle Schüler aus.
  5. Gib danach folgende Werte aus:
    • Durchschnittsnote
    • Beste Note
    • Schlechteste Note