80 lines
1.8 KiB
PowerShell
80 lines
1.8 KiB
PowerShell
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)
|
|
}
|
|
|
|
} |