74 lines
1.4 KiB
PowerShell
74 lines
1.4 KiB
PowerShell
class abteilung {
|
|
[string]$Name
|
|
[mitarbeiter[]]$Mitarbeiter = @()
|
|
[mitarbeiter]$Abteilungsleiter
|
|
|
|
abteilung([mitarbeiter]$AL) {
|
|
$this.Abteilungsleiter = $AL
|
|
$this.Mitarbeiter += $AL
|
|
}
|
|
|
|
[int]einstellen([mitarbeiter]$MA) {
|
|
if ($MA -In $this.Mitarbeiter) {
|
|
return 1
|
|
}
|
|
$this.Mitarbeiter += $MA
|
|
return 0
|
|
}
|
|
|
|
[int]entlassen([mitarbeiter]$MA) {
|
|
if ($MA -Eq $this.Abteilungsleiter) {
|
|
return 2
|
|
}
|
|
if ($MA -In $this.Mitarbeiter) {
|
|
$this.Mitarbeiter = $this.Mitarbeiter | Where-Object { $_ -ne $MA }
|
|
return 0
|
|
} else {
|
|
return 1
|
|
}
|
|
|
|
}
|
|
|
|
[int]transfer([mitarbeiter]$MA, [abteilung]$AB) {
|
|
$ent = $this.entlassen($MA)
|
|
if ($ent -eq 0) {
|
|
$ein = $AB.einstellen($MA)
|
|
if ($ein -eq 0) {
|
|
return 0
|
|
} else {
|
|
$this.einstellen($MA)
|
|
return 4 + $ein
|
|
}
|
|
} else {
|
|
return 4 + $ent
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
class mitarbeiter {
|
|
[string]$Name
|
|
|
|
mitarbeiter($name) {
|
|
$this.Name = $name
|
|
}
|
|
}
|
|
|
|
#Tests
|
|
$MaA = [mitarbeiter]::new("Anna")
|
|
$MaB = [mitarbeiter]::new("Bertha")
|
|
$MaC = [mitarbeiter]::new("Christhof")
|
|
|
|
$AbA = [abteilung]::new($MaA)
|
|
$AbB = [abteilung]::new($MaB)
|
|
|
|
$AbB.einstellen($MaC)
|
|
|
|
|
|
$AbA
|
|
$AbB
|
|
|
|
$AbB.transfer($MaC, $AbA)
|
|
|
|
$AbA
|
|
$AbB |