class kunde { [string]$name kunde([string]$name) { $this.name = $name } } class konto { [kunde]$kunde [double]$guthaben [datetime]$erstelldatum static ueberweisen([konto]$von, [konto]$nach, [double]$menge) { $stand_von = $von.guthaben $stand_nach = $nach.guthaben try { $von.auszahlen($menge) $nach.einzahlen($menge) } catch { $von.guthaben = $stand_von $nach.guthaben = $stand_nach throw $_ } } ueberweisen([konto]$nach, [double]$menge) { [konto]::ueberweisen($this, $nach, $menge) } konto([kunde]$kunde) { $this.guthaben = 0 $this.erstelldatum = Get-Date $this.kunde = $kunde } [double]einzahlen([double]$menge) { if ($menge -lt 0) { throw "Einzahlungsmenge muss positiv sein!" } $this.guthaben += $menge return $this.guthaben } [double]auszahlen([double]$menge) { if ($menge -lt 0) { throw "Auszahlungsmenge muss positiv sein!" } if (($this.guthaben - $menge) -gt (-1000)) { $this.guthaben -= $menge } else { throw "Konto überzogen!" } return $this.guthaben } } class bank { [string]$name [System.Collections.Generic.List[konto]]$konten [System.Collections.Generic.List[kunde]]$kunden bank([string]$name) { $this.name = $name } auszahlen([konto]$konto, [double]$menge) { $konto.auszahlen($menge) } einzahlen([konto]$konto, [double]$menge) { $konto.einzahlen($menge) } überweisen([konto]$von, [konto]$nach, [double]menge) { $konto.überweisen($nach, $menge) } [kunde]neukunde([string]$vorname, [string]$nachname) { $kunde = [kunde]::new($vorname, $nachname) $this.kunden.add($kunde) return $kunde } [konto]konto_erstellen([kunde]$kunde) { $konto = [konto]::new($kunde) $this.konten.add($konto) return $konto } }