C# Binäre Assoziationen - Beispielprogramm

Griffindor01

Cadet 3rd Year
Registriert
Feb. 2021
Beiträge
33
Hallo!
Ich bin gerade dabei, ein vorgegebenes Programm zum Thema binäre Assoziationen zu Programmieren, komme aber seit Stunden an einem gewissen Punkt nicht weiter und würde euch daher gerne um Hilfe bitten.
Unten ist die Aufgabenstellung dargestellt. Im Grunde ist die Aufgabe, ein Programm zu programmieren, in dem Haltern Fahrzeuge zugewiesen werden und zwischen Halter + Fahrzeug eine binäre Assoziation entstehen soll.
Nachfolgend darunter meine Klassen. Ich komme bei der letzten Aufgabe, dem Iterieren nicht weiter, und habe wahrscheinlich schon davor einen Denkfehler im Code, den ich aber leider nicht finde.

Entwerfen Sie die zwei Klassen Fahrzeug und Halter mit einigen sinnvollen Attributen.
Ein Halter kann keine oder viele Fahrzeuge haben und kennt seine Fahrzeuge. Ein Fahrzeug
gehört keinem oder einem Halter und kennt diesen nicht.
Implementieren Sie diese binäre Assoziation und schreiben Sie ein Testprogramm, in dem
mindestens zwei Halter mit jeweils mindestens zwei ihnen zugeordneten Fahrzeugen erzeugt
werden.

Ändern Sie die Beziehung so, dass ein Fahrzeug-Objekt sein Halter-Objekt kennt.

Verwalten Sie die Halter-Objekte mittels einer Liste List<T>.
Durchlaufen (iterieren) Sie die Liste mit den Halter-Objekten und lassen Sie sich die Daten
des Halters sowie die ihm zugeordneten Fahrzeug-Objekte anzeigen.



C#:
[/B]

DIE MAIN-KLASSE[/B]

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Willkommen in meinem Programm zu binären Assoziationen!");

            // Erstellen wir zunächst einmal 3 Halter.

            Halter Bob = new Halter("Bob", "Buddler", new DateTime(2001, 04, 02), "München");
            Halter James = new Halter("James", "Johnson", new DateTime(1999, 01, 07), "Saarbrücken");
            Halter Jochen = new Halter("Jochen", "Jochbein", new DateTime(2002, 02, 09), "Saarbrücken");
            Halter Rudi = new Halter("Rudi", "Rudolfsen", new DateTime(2000, 06, 02), "Norderstedt");


            // Autos den Haltern zuweisen.

            Bob.kaufeFahrzeug(new Fahrzeug("Honda", "Weiß", 140, 9200));
            Bob.kaufeFahrzeug(new Fahrzeug("Audi", "Gelb", 120, 6200));
            James.kaufeFahrzeug(new Fahrzeug("Opel", "Türkis", 152, 7650));
            Rudi.kaufeFahrzeug(new Fahrzeug("Toyota", "Schwarz", 182, 10500));
            Rudi.kaufeFahrzeug(new Fahrzeug("Dacia", "Schwarz", 157, 5200));

            // Nun die Halter-Liste Iterieren (Durchlaufen), dabei Daten des Halters + zugeordneter Fahrzeuge anzeigen

            static void zeigeHalterUndFahrzeuge()
            {
                // Aufträge der Kunden ausgeben
                
                Console.ReadLine();
            }

        }
    }
}


HALTER-KLASSE:


class Halter
    {
        private string vorname;
        private string nachname;
        private DateTime geburtsdatum;
        private string wohnort;

        private List<Fahrzeug> fahrzeuge;
        private List<Halter> fahrzeughalter;



        public List<Fahrzeug> Fahrzeuge
        {
            get { return fahrzeuge; } 
            set { fahrzeuge = value; } // Entfernen
        }

        public List<Halter> Fahrzeughalter
        {
            get { return fahrzeughalter; }
            set { fahrzeughalter = value; }
        }

        public string Vorname
        {
            get { return vorname; }
            set { vorname = value; }

        }
        public string Nachname
        {
            get { return nachname; }
            set { nachname = value; }


        }

        public DateTime Geburtsdatum
        {
            get { return geburtsdatum; }
            set { geburtsdatum = value; }

        }
        public string Wohnort
        {
            get { return wohnort; }
            set { wohnort = value; }

        }

        public Halter(string _vorname, string _nachname, DateTime _geburtsdatum, string _wohnort)
        {

            vorname = _vorname;
            nachname = _nachname;
            geburtsdatum = _geburtsdatum;
            wohnort = _wohnort;

        }

        public void kaufeFahrzeug(Fahrzeug fz) // Fahrer soll Fahrzeug zugeordnet werden

        {
            fz.Halter = this;
            this.Fahrzeug = fz;
            fahrzeuge.Add(fz);
            fahrzeughalter.Add(this);

        }

        public void verkaufeFahrzeug(int _fahrzeugnummer)

        {

            if (_fahrzeugnummer >= 0 && _fahrzeugnummer <= fahrzeuge.Count)
                fahrzeuge.RemoveAt(_fahrzeugnummer - 1);

        }

        public Fahrzeug zeigeFahrzeuge(int _fahrzeugnummer)

        {

            if (_fahrzeugnummer >= 0 && _fahrzeugnummer <= fahrzeuge.Count)

                return fahrzeuge[_fahrzeugnummer - 1];
            else
                return null;



        }


        public Fahrzeug Fahrzeug
        {

            get { return Fahrzeug; }
            // Setzt oder löscht Kunden-Objekt
            set { Fahrzeug = value; }

        }


    }
}

FAHRZEUG-KLASSE

 class Fahrzeug
    {
        private string marke;
        private string farbe;
        private int pferdestärke;
        private int preis;
        

        public string Marke
        {
            get { return marke; }
            set { marke = value; }

        }
        public string Farbe
        {
            get { return farbe; }
            set { farbe = value; }


        }

        public int Pferdestärke
        {
            get { return pferdestärke; }
            set { pferdestärke = value; }

        }
        public int Preis
        {
            get { return preis; }
            set { preis = value; }

        }


       






        public Fahrzeug(string _marke, string _farbe, int _ps, int _preis)
        {

            marke = _marke;
            farbe = _farbe;
            pferdestärke = _ps;
            preis = _preis;

        }


        public Halter Halter
        {

            get { return Halter; }
            // Setzt oder löscht Kunden-Objekt
            set { Halter = value; }

        }



    }
}






[B]  [/B]
 
Warum hat dein Halter eine Liste von Fahrzeughaltern? Diese Information gehört ins Fahrzeug... (was ja auch schon der Fall ist)

Im Übrigen hört sich das extrem nach Hausaufgabe an.

Was mit "Verwalten Sie die Halter-Objekte mittels einer Liste List<T>." gemeint ist solltest du den Aufgabensteller fragen. Mir ist das nicht klar. Evtl meint es nur, dass du Bob und Co in eine Liste packst in deiner Main-Methode.

Und die "static void zeigeHalterUndFahrzeuge()" gehört wohl kaum in die Main-Methode.

Die Lesbarkeit deines Code-Schnipsels ist übrigens nicht gerade gelungen, würde sich vielleicht auch anbieten für die einzelnen Klassen eigene Code-Tags zu verwenden und überflüssige Leerzeilen zu entfernen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Griffindor01
tollertyp schrieb:
Ja, das "Verwalten Sie die Halter-Objekte mittels einer Liste List<T> meint einfach eine Liste der Halter in der Main-Methode, habe ich auch gerade erst durch Nachfragen geblickt.

Ich probiere mich noch etwas daran und melde mich mit dem überarbeiteten Code
Ergänzung ()

Ich bin wirklich ziemlich überfordert mit der Aufgabe und würde mich über Hilfe freuen, habe jetzt einmal wenigstens das mit der Liste korrigiert. Wieso kann ich nun aber nicht aus der Main-Methode mit der Zeile "zeigeHalterUndFahrzeuge(Halter);" meine gleichnamige Methode ausführen, die nun in der Klasse "Halter" ist?

Die Daten der Halter konnte ich bereits ausgeben wie im Code zu sehen, aber wie komme ich nun an die Fahrzeugdaten und gebe die dazugehörigen Fahrzeugdaten von einem oder mehreren Autos aus?

Hier mein aktueller Code:

C#:
[/B]

 class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Willkommen in meinem Programm zu binären Assoziationen!");
            Console.ReadLine();
            Console.Clear();

            // Erstellen wir zunächst einmal 3 Halter.

            Halter Bob = new Halter("Bob", "Buddler", new DateTime(2001, 04, 02), "München");
            Halter James = new Halter("James", "Johnson", new DateTime(1999, 01, 07), "Saarbrücken");
            Halter Jochen = new Halter("Jochen", "Jochbein", new DateTime(2002, 02, 09), "Saarbrücken");
            Halter Rudi = new Halter("Rudi", "Rudolfsen", new DateTime(2000, 06, 02), "Norderstedt");

            // Nun erstelle ich eine Liste, welche die Halter enthält

            List<Halter> Halter = new List<Halter>();
            Halter.Add(Bob);
            Halter.Add(James);
            Halter.Add(Jochen);
            Halter.Add(Rudi);
            

            // Autos schlussendlich noch den Haltern zuweisen.

            Bob.kaufeFahrzeug(new Fahrzeug("Honda", "Weiß", 140, 9200));
            Bob.kaufeFahrzeug(new Fahrzeug("Audi", "Gelb", 120, 6200));
            James.kaufeFahrzeug(new Fahrzeug("Opel", "Türkis", 152, 7650));
            Rudi.kaufeFahrzeug(new Fahrzeug("Toyota", "Schwarz", 182, 10500));
            Rudi.kaufeFahrzeug(new Fahrzeug("Dacia", "Schwarz", 157, 5200));

            // Iteration ausgeben

            zeigeHalterUndFahrzeuge(Halter);



        }
    }
}



C#:
class Halter
    {
        private string vorname;
        private string nachname;
        private DateTime geburtsdatum;
        private string wohnort;

        private List<Fahrzeug> fahrzeuge;
        



        public List<Fahrzeug> Fahrzeuge
        {
            get { return fahrzeuge; } 
            set { fahrzeuge = value; }
          
        }

       

        public string Vorname
        {
            get { return vorname; }
            set { vorname = value; }

        }
        public string Nachname
        {
            get { return nachname; }
            set { nachname = value; }


        }

        public DateTime Geburtsdatum
        {
            get { return geburtsdatum; }
            set { geburtsdatum = value; }

        }
        public string Wohnort
        {
            get { return wohnort; }
            set { wohnort = value; }

        }

        public Halter(string _vorname, string _nachname, DateTime _geburtsdatum, string _wohnort)
        {

            vorname = _vorname;
            nachname = _nachname;
            geburtsdatum = _geburtsdatum;
            wohnort = _wohnort;

        }

        public void kaufeFahrzeug(Fahrzeug fz) // Fahrer soll Fahrzeug zugeordnet werden

        {
            fz.Halter = this;
            this.Fahrzeug = fz;
            Fahrzeuge.Add(fz);
            

        }

        public void verkaufeFahrzeug(int _fahrzeugnummer)

        {

            if (_fahrzeugnummer >= 0 && _fahrzeugnummer <= fahrzeuge.Count)
                fahrzeuge.RemoveAt(_fahrzeugnummer - 1);

        }

        public Fahrzeug zeigeFahrzeuge(int _fahrzeugnummer)

        {

            if (_fahrzeugnummer >= 0 && _fahrzeugnummer <= fahrzeuge.Count)

                return fahrzeuge[_fahrzeugnummer - 1];
            else
                return null;



        }


        // Nun die Halter-Liste Iterieren (Durchlaufen), dabei Daten des Halters + zugeordneter Fahrzeuge anzeigen
        static void zeigeHalterUndFahrzeuge(List<Halter> Halter)
        {
            foreach (Halter h in Halter)
            {
                Console.WriteLine("Name: {0} \nNachname: {1} \nGeburtsdatum: {2} \nWohnort: {3} \n",
                        h.Vorname, h.Nachname, h.Geburtsdatum, h.Wohnort);


            }
            Console.ReadLine();


        }


        public Fahrzeug Fahrzeug
        {

            get { return Fahrzeug; }
            // Setzt oder löscht Kunden-Objekt
            set { Fahrzeug = value; }

        }


    }
}


C#:
class Fahrzeug
    {
        private string marke;
        private string farbe;
        private int pferdestärke;
        private int preis;
        

        public string Marke
        {
            get { return marke; }
            set { marke = value; }

        }
        public string Farbe
        {
            get { return farbe; }
            set { farbe = value; }


        }

        public int Pferdestärke
        {
            get { return pferdestärke; }
            set { pferdestärke = value; }

        }
        public int Preis
        {
            get { return preis; }
            set { preis = value; }

        }


       






        public Fahrzeug(string _marke, string _farbe, int _ps, int _preis)
        {

            marke = _marke;
            farbe = _farbe;
            pferdestärke = _ps;
            preis = _preis;

        }


        public Halter Halter
        {

            get { return Halter; }
            // Setzt oder löscht Kunden-Objekt
            set { }

        }



    }
}
 
Zuletzt bearbeitet:
Zurück
Oben