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