1. class Program
  2. {
  3.     static void Main(string[] args)
  4.     {
  5.         Person p1 = new Person("Chef");
  6.             
  7.         Person p11 = new Person("Abteilungsleiter - Einkauf", p1);
  8.         Person p111 = new Person("Einkäufer A", p11);
  9.         Person p112 = new Person("Einkäufer B", p11);
  10.             
  11.         Person p12 = new Person("Abteilungsleiter - IT", p1);
  12.         Person p121 = new Person("Programmierer", p12);
  13.         Person p122 = new Person("Administrator", p12);
  14.  
  15.         Console.WriteLine("Vorgesetzte von: " + p121.Name);
  16.         Program.showVorgesetzte(p121);
  17.  
  18.         Console.WriteLine("\nMitarbeiter von " + p1.Name + ": ");
  19.         Program.showMitarbeiter(p1, 0);
  20.             
  21.     }
  22.  
  23.     static private void showVorgesetzte(Person p)  // ohne Rekursion möglich
  24.     {
  25.         while(p.Vorgesetzter != null)
  26.         {
  27.             Console.WriteLine(p.Vorgesetzter.Name);
  28.             p = p.Vorgesetzter;
  29.         }
  30.     }
  31.  
  32.     static private void showMitarbeiter(Person p, int recDepth)
  33.     {
  34.         if (p.Mitarbeiter.Count > 0)
  35.         {
  36.             recDepth++;
  37.             foreach (Person person in p.Mitarbeiter)
  38.             {
  39.                 for (int i = 0; i < recDepth; i++)
  40.                     Console.Write("\t");
  41.                 Console.WriteLine(person.Name + " ");
  42.                 Program.showMitarbeiter(person, recDepth);  // rekursiver Aufruf
  43.             }
  44.         }
  45.     }
  46. }
  47.  
  48. class Person
  49. {
  50.     public string Name { get; set; }
  51.     public Person Vorgesetzter { get; set; }     // doppelt verkettet = beide Navigationsrichtungen
  52.     public List<Person> Mitarbeiter { get; set; }
  53.  
  54.     public Person(string name, Person vorgesetzter = null)  // 2. Parameter mit default-Wert
  55.     {
  56.         Name = name;
  57.         Mitarbeiter = new List<Person>();
  58.         if (vorgesetzter != null)   // Vorgesetzter vorhanden = nicht Chef
  59.         {
  60.             Vorgesetzter = vorgesetzter;
  61.             vorgesetzter.Mitarbeiter.Add(this);
  62.         }
  63.         else
  64.             Vorgesetzter = null;
  65.     }
  66. }


Last modified: Saturday, 3 February 2018, 7:18 PM