Lösung: Rollennamen
Completion requirements
Das UML-Anwendungsfalldiagramm macht doppelte Navigationsrichtungen nötig:

UML-Klassendiagramm der konkreten Implementierung zweier Rollen
Eine mögliche Lösung wurde mit Properties realisiert:
- class Program
- {
- static void Main(string[] args)
- {
- Kunde k1 = new Kunde(1, "Musterinhaber");
- Kunde k2 = new Kunde(2, "Musterberechtigter 1");
- Kunde k3 = new Kunde(3, "Musterberechtigter 2");
- Konto kto1 = new Konto(1, 50);
- Konto kto2 = new Konto(2, 100);
- k1.addInhaberberechtigung(kto1);
- k2.addZugriffsberechtigung(kto1);
- k3.addZugriffsberechtigung(kto1);
- k1.addZugriffsberechtigung(kto2);
- // Navigation über einen Kunden
- Console.WriteLine(k1.Name + " ist Inhaber von: ");
- foreach (Konto konto in k1.Inhaberberechtigungen)
- {
- Console.WriteLine("KontoNr: " + konto.Nr);
- }
- Console.WriteLine("und zugriffsberechtigt auf: ");
- foreach (Konto konto in k1.Zugriffsberechtigungen)
- {
- Console.WriteLine("KontoNr: " + konto.Nr);
- }
- // Navigation über ein Konto
- Console.WriteLine("\nInhaber von KontoNr: " + kto1.Nr + " ist: ");
- Console.WriteLine("KundenNr: " + kto1.Inhaber.Nr + " Name: " + kto1.Inhaber.Name);
- Console.WriteLine("und zugriffsberechtigt sind: ");
- foreach (Kunde kunde in kto1.Zugriffsberechtigte)
- {
- Console.WriteLine("KundenNr: " + kunde.Nr + " Name: " + kunde.Name);
- }
- }
- }
- class Konto
- {
- public int Nr { get; set; } // Properties
- public double Guthaben { get; set; }
- public Kunde Inhaber { get; set; } // Konto hat einen Inhaber
- public List<Kunde> Zugriffsberechtigte { get; set; } // Konto hat mehrere Zugriffsberechtigte
- public Konto(int nr, double guthaben)
- {
- Nr = nr;
- Guthaben = guthaben;
- Zugriffsberechtigte = new List<Kunde>(); // Objekterzeugung ist noch nötig
- }
- public void addZugriffsberechtigte(Kunde k)
- {
- Zugriffsberechtigte.Add(k);
- }
- }
- class Kunde
- {
- public int Nr { get; set; }
- public string Name { get; set; }
- public List<Konto> Inhaberberechtigungen { get; set; } // Kunde ist Inhaber mehrerer Konten
- public List<Konto> Zugriffsberechtigungen { get; set; } // Kunde ist auf mehrere Konten zugriffsberechtigt
- public Kunde(int nr, string name)
- {
- Nr = nr;
- Name = name;
- Inhaberberechtigungen = new List<Konto>();
- Zugriffsberechtigungen = new List<Konto>();
- }
- public void addInhaberberechtigung(Konto kto)
- {
- Inhaberberechtigungen.Add(kto);
- kto.Inhaber = this;
- }
- public void addZugriffsberechtigung(Konto kto)
- {
- Zugriffsberechtigungen.Add(kto);
- kto.addZugriffsberechtigte(this);
- }
- }
Last modified: Thursday, 1 February 2018, 9:02 PM