OOP Grundlagen - Objekt im Objekt



  • Hallo zusammen,
    ich lerne zurzeit noch die Basics der OOP in C#.
    Ich habe folgende Aufgabe:
    In jedem Benutzer-Objekt soll das passende Gruppenobjekt drinn stehen und anders rum.

    Folgende Klassen habe ich:
    MSSQLworker.cs:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    using System.Data.SqlClient;
    
    
    
    public class MSSQLworker
    {
        bool kontrolle = true;
        SqlConnection con = new SqlConnection();
        SqlCommand cmd = new SqlCommand();
        SqlDataReader reader;
    
    
    
        private void SQLverbinder()
        {
            try
            {
                con.ConnectionString = "Data Source = localhost;" + "Initial Catalog = benutzerverwaltung;" + "Integrated Security = true;";
                con.Open();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        private void SQLdeverbinder()
        {
            con.Close();
        }
    
        public void BenutzerEinfuegen()
        {
    
            int eingabeGruppe = 0;
    
            Console.WriteLine("Bitte geben Sie den Benutzernamen ein.");
            string eingabeBenutzername = Convert.ToString(Console.ReadLine());
    
            Console.WriteLine("Bitte geben Sie den Passwort ein.");
            string eingabePasswort = Convert.ToString(Console.ReadLine());
    
            do
            {
                Console.WriteLine("Bitte geben Sie die Gruppen zugehoerigkeit ein. (1 - Administrator, 2 - Benutzer, 3 - Buchhaltung, 0 - gehoert keiner weiteren Gruppe an.)");
                eingabeGruppe = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("Moechten Sie den neuen Benutzer in eine weitere Gruppe hinzufuegen ? (Ja oder Nein)");
                string eingabeWeitereGruppe = Convert.ToString(Console.ReadLine());
                if (eingabeWeitereGruppe == "Ja")
                {
                    kontrolle = true;
                }
                else
                {
                    kontrolle = false;
                }
            } while (kontrolle);
    
            try
            {
                SQLverbinder();
                cmd.CommandText = "INSERT INTO [User] (Benutzername, Passwort, Gruppen_ID) VALUES ('" + eingabeBenutzername + "', '" + eingabePasswort + "', '" + eingabeGruppe + "');";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
                Console.WriteLine("Neuer Nutzer wurde erfolgreich erstellt.");
                SQLdeverbinder();
            }
    
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void LoescheBenutzer()
        {
            Console.WriteLine("Geben Sie die zu loeschende ID ein. (User-Tabelle wird bearbeitet!)");
            int iDauswahl = Convert.ToInt32(Console.ReadLine());
    
            try
            {
                SQLverbinder();
                cmd.CommandText = "DELETE FROM [User] WHERE ID =" + iDauswahl + ";";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                Console.WriteLine("Der User mit der ID " + iDauswahl + " wurde geloescht!");
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void UpdateBenutzer()
        {
            Console.WriteLine("Geben Sie die zu aktualisierende ID ein. (User-Tabelle wird bearbeitet!)");
            int iDauswahl = Convert.ToInt32(Console.ReadLine());
    
            Console.WriteLine("Geben Sie den neuen Benutzernamen ein.");
            string neuBenutzername = Convert.ToString(Console.ReadLine());
    
            Console.WriteLine("Geben Sie das neue Passwort ein.");
            string neuPasswort = Convert.ToString(Console.ReadLine());
    
            Console.WriteLine("Geben Sie die neue Gruppen_ID ein.");
            int neuGruppen_ID = Convert.ToInt32(Console.ReadLine());
    
            try
            {
                SQLverbinder();
                cmd.CommandText = "UPDATE [User] SET Benutzername ='" + neuBenutzername + "', Passwort ='" + neuPasswort + "', Gruppen_ID ='" + neuGruppen_ID + "' WHERE ID =" + iDauswahl + ";";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                Console.WriteLine("Benutzer mit der ID " + iDauswahl + " wurde aktualisiert.");
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void LoescheAlleBenutzer()
        {
            try
            {
                SQLverbinder();
    
                cmd.CommandText = "DELETE FROM [User];";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
                reader.Close();
    
                Console.WriteLine("Alle Benutzer aus der Tabelle User wurden geloescht!");
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void Datenbankausgabe()
        {
            Benutzer benutzer = new Benutzer();
            Gruppe gruppe = new Gruppe();
            try
            {
                SQLverbinder();
                cmd.CommandText = "SELECT [User].Benutzername, [User].Passwort,[User].ID, [User].Gruppen_ID, Gruppe.[Name], Gruppe.Gruppen_ID FROM [User] INNER JOIN Gruppe ON [User].Gruppen_ID = Gruppe.Gruppen_ID;";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                while (reader.Read())
                {
                    benutzer.benutzername = (string)reader.GetValue(0);
                    benutzer.passwort = (string)reader.GetValue(1);
                    benutzer.id = (int)reader.GetValue(2);
                    benutzer.gruppen_id = (int)reader.GetValue(3);
                    gruppe.name = (string)reader.GetValue(4);
                    gruppe.gruppen_id = (int)reader.GetValue(5);
                    Console.WriteLine(benutzer.benutzername + ", " + benutzer.passwort + ", " + benutzer.id + ", " + benutzer.gruppen_id + ", ||" + gruppe.name + ", " + gruppe.gruppen_id);
                }
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void GruppeEinfuegen()
        {
            Console.WriteLine("Bitte geben Sie den Gruppennamen ein.");
            string eingabeGruppenname = Convert.ToString(Console.ReadLine());
    
            try
            {
                SQLverbinder();
                cmd.CommandText = "INSERT INTO Gruppe (Name) VALUES ('" + eingabeGruppenname + "');";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
                Console.WriteLine("Neue Gruppe wurde erfolgreich erstellt.");
                SQLdeverbinder();
            }
    
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void GruppeLoeschen()
        {
            Console.WriteLine("Geben Sie die zu loeschende ID ein. (Gruppen-Tabelle wird bearbeitet!)");
            int iDauswahl = Convert.ToInt32(Console.ReadLine());
    
            try
            {
                SQLverbinder();
                cmd.CommandText = "DELETE FROM Gruppe WHERE Gruppen_ID =" + iDauswahl + ";";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                Console.WriteLine("Die Gruppe mit der Gruppen_ID " + iDauswahl + " wurde geloescht!");
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void UpdateGruppe()
        {
            Console.WriteLine("Geben Sie die zu aktualisierende ID ein. (Gruppen-Tabelle wird bearbeitet!)");
            int iDauswahl = Convert.ToInt32(Console.ReadLine());
    
            Console.WriteLine("Geben Sie den neuen Gruppennamen ein.");
            string neuGruppenname = Convert.ToString(Console.ReadLine());
    
            try
            {
                SQLverbinder();
                cmd.CommandText = "UPDATE Gruppe SET Name ='" + neuGruppenname + "' WHERE Gruppen_ID =" + iDauswahl + ";";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                Console.WriteLine("Die Gruppe mit der Gruppen_ID " + iDauswahl + " wurde aktualisiert.");
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void LoescheAlleGruppen()
        {
            try
            {
                SQLverbinder();
    
                cmd.CommandText = "DELETE FROM Gruppe;";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
                reader.Close();
    
                Console.WriteLine("Alle Gruppen aus der Tabelle Gruppe wurden geloescht!");
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        private List<Benutzer> LadeBenutzer()
        {
            List<Benutzer> listeDerBenutzer = new List<Benutzer>();
            try
            {
                SQLverbinder();
                cmd.CommandText = "SELECT [User].Benutzername, [User].Passwort, [User].ID, [User].Gruppen_ID FROM [User];";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                while (reader.Read())
                {
                    Benutzer tmpBenutzer = new Benutzer();
                    tmpBenutzer.benutzername = (string)reader.GetValue(0);
                    tmpBenutzer.passwort = (string)reader.GetValue(1);
                    tmpBenutzer.id = (int)reader.GetValue(2);
                    tmpBenutzer.gruppen_id = (int)reader.GetValue(3);
                    listeDerBenutzer.Add(tmpBenutzer);
                }
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
            return listeDerBenutzer;
        }
    
        private List<Gruppe> LadeGruppe()
        {
            List<Gruppe> listeDerGruppen = new List<Gruppe>();
            try
            {
                SQLverbinder();
                cmd.CommandText = "SELECT Gruppe.Name, Gruppe.Gruppen_ID FROM Gruppe;";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                while (reader.Read())
                {
                    Gruppe tmpGruppe = new Gruppe();
                    tmpGruppe.name = (string)reader.GetValue(0);
                    tmpGruppe.gruppen_id = (int)reader.GetValue(1);
                    listeDerGruppen.Add(tmpGruppe);
                }
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
            return listeDerGruppen;
        }
    
        public void Ausgabe()
        {
    
            List<Benutzer> tmpBenutzerListe = LadeBenutzer();
            foreach (Benutzer test1 in tmpBenutzerListe)
            {
                Console.WriteLine("Benutzerliste: " + test1.benutzername + ", " + test1.passwort + ", " + test1.id + ", " + test1.gruppen_id);
            }
    
            List<Gruppe> tmpGruppenListe = LadeGruppe();
            foreach (Gruppe test2 in tmpGruppenListe)
            {
                Console.WriteLine("Gruppenliste: " + test2.name + ", " + test2.gruppen_id);
            }
        }
    }
    

    MainKlasse.cs:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    using System.Data.SqlClient;
    
    
    
    public class MSSQLworker
    {
        bool kontrolle = true;
        SqlConnection con = new SqlConnection();
        SqlCommand cmd = new SqlCommand();
        SqlDataReader reader;
    
    
    
        private void SQLverbinder()
        {
            try
            {
                con.ConnectionString = "Data Source = localhost;" + "Initial Catalog = benutzerverwaltung;" + "Integrated Security = true;";
                con.Open();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        private void SQLdeverbinder()
        {
            con.Close();
        }
    
        public void BenutzerEinfuegen()
        {
    
            int eingabeGruppe = 0;
    
            Console.WriteLine("Bitte geben Sie den Benutzernamen ein.");
            string eingabeBenutzername = Convert.ToString(Console.ReadLine());
    
            Console.WriteLine("Bitte geben Sie den Passwort ein.");
            string eingabePasswort = Convert.ToString(Console.ReadLine());
    
            do
            {
                Console.WriteLine("Bitte geben Sie die Gruppen zugehoerigkeit ein. (1 - Administrator, 2 - Benutzer, 3 - Buchhaltung, 0 - gehoert keiner weiteren Gruppe an.)");
                eingabeGruppe = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("Moechten Sie den neuen Benutzer in eine weitere Gruppe hinzufuegen ? (Ja oder Nein)");
                string eingabeWeitereGruppe = Convert.ToString(Console.ReadLine());
                if (eingabeWeitereGruppe == "Ja")
                {
                    kontrolle = true;
                }
                else
                {
                    kontrolle = false;
                }
            } while (kontrolle);
    
            try
            {
                SQLverbinder();
                cmd.CommandText = "INSERT INTO [User] (Benutzername, Passwort, Gruppen_ID) VALUES ('" + eingabeBenutzername + "', '" + eingabePasswort + "', '" + eingabeGruppe + "');";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
                Console.WriteLine("Neuer Nutzer wurde erfolgreich erstellt.");
                SQLdeverbinder();
            }
    
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void LoescheBenutzer()
        {
            Console.WriteLine("Geben Sie die zu loeschende ID ein. (User-Tabelle wird bearbeitet!)");
            int iDauswahl = Convert.ToInt32(Console.ReadLine());
    
            try
            {
                SQLverbinder();
                cmd.CommandText = "DELETE FROM [User] WHERE ID =" + iDauswahl + ";";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                Console.WriteLine("Der User mit der ID " + iDauswahl + " wurde geloescht!");
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void UpdateBenutzer()
        {
            Console.WriteLine("Geben Sie die zu aktualisierende ID ein. (User-Tabelle wird bearbeitet!)");
            int iDauswahl = Convert.ToInt32(Console.ReadLine());
    
            Console.WriteLine("Geben Sie den neuen Benutzernamen ein.");
            string neuBenutzername = Convert.ToString(Console.ReadLine());
    
            Console.WriteLine("Geben Sie das neue Passwort ein.");
            string neuPasswort = Convert.ToString(Console.ReadLine());
    
            Console.WriteLine("Geben Sie die neue Gruppen_ID ein.");
            int neuGruppen_ID = Convert.ToInt32(Console.ReadLine());
    
            try
            {
                SQLverbinder();
                cmd.CommandText = "UPDATE [User] SET Benutzername ='" + neuBenutzername + "', Passwort ='" + neuPasswort + "', Gruppen_ID ='" + neuGruppen_ID + "' WHERE ID =" + iDauswahl + ";";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                Console.WriteLine("Benutzer mit der ID " + iDauswahl + " wurde aktualisiert.");
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void LoescheAlleBenutzer()
        {
            try
            {
                SQLverbinder();
    
                cmd.CommandText = "DELETE FROM [User];";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
                reader.Close();
    
                Console.WriteLine("Alle Benutzer aus der Tabelle User wurden geloescht!");
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void Datenbankausgabe()
        {
            Benutzer benutzer = new Benutzer();
            Gruppe gruppe = new Gruppe();
            try
            {
                SQLverbinder();
                cmd.CommandText = "SELECT [User].Benutzername, [User].Passwort,[User].ID, [User].Gruppen_ID, Gruppe.[Name], Gruppe.Gruppen_ID FROM [User] INNER JOIN Gruppe ON [User].Gruppen_ID = Gruppe.Gruppen_ID;";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                while (reader.Read())
                {
                    benutzer.benutzername = (string)reader.GetValue(0);
                    benutzer.passwort = (string)reader.GetValue(1);
                    benutzer.id = (int)reader.GetValue(2);
                    benutzer.gruppen_id = (int)reader.GetValue(3);
                    gruppe.name = (string)reader.GetValue(4);
                    gruppe.gruppen_id = (int)reader.GetValue(5);
                    Console.WriteLine(benutzer.benutzername + ", " + benutzer.passwort + ", " + benutzer.id + ", " + benutzer.gruppen_id + ", ||" + gruppe.name + ", " + gruppe.gruppen_id);
                }
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void GruppeEinfuegen()
        {
            Console.WriteLine("Bitte geben Sie den Gruppennamen ein.");
            string eingabeGruppenname = Convert.ToString(Console.ReadLine());
    
            try
            {
                SQLverbinder();
                cmd.CommandText = "INSERT INTO Gruppe (Name) VALUES ('" + eingabeGruppenname + "');";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
                Console.WriteLine("Neue Gruppe wurde erfolgreich erstellt.");
                SQLdeverbinder();
            }
    
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void GruppeLoeschen()
        {
            Console.WriteLine("Geben Sie die zu loeschende ID ein. (Gruppen-Tabelle wird bearbeitet!)");
            int iDauswahl = Convert.ToInt32(Console.ReadLine());
    
            try
            {
                SQLverbinder();
                cmd.CommandText = "DELETE FROM Gruppe WHERE Gruppen_ID =" + iDauswahl + ";";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                Console.WriteLine("Die Gruppe mit der Gruppen_ID " + iDauswahl + " wurde geloescht!");
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void UpdateGruppe()
        {
            Console.WriteLine("Geben Sie die zu aktualisierende ID ein. (Gruppen-Tabelle wird bearbeitet!)");
            int iDauswahl = Convert.ToInt32(Console.ReadLine());
    
            Console.WriteLine("Geben Sie den neuen Gruppennamen ein.");
            string neuGruppenname = Convert.ToString(Console.ReadLine());
    
            try
            {
                SQLverbinder();
                cmd.CommandText = "UPDATE Gruppe SET Name ='" + neuGruppenname + "' WHERE Gruppen_ID =" + iDauswahl + ";";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                Console.WriteLine("Die Gruppe mit der Gruppen_ID " + iDauswahl + " wurde aktualisiert.");
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        public void LoescheAlleGruppen()
        {
            try
            {
                SQLverbinder();
    
                cmd.CommandText = "DELETE FROM Gruppe;";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
                reader.Close();
    
                Console.WriteLine("Alle Gruppen aus der Tabelle Gruppe wurden geloescht!");
    
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
        }
    
        private List<Benutzer> LadeBenutzer()
        {
            List<Benutzer> listeDerBenutzer = new List<Benutzer>();
            try
            {
                SQLverbinder();
                cmd.CommandText = "SELECT [User].Benutzername, [User].Passwort, [User].ID, [User].Gruppen_ID FROM [User];";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                while (reader.Read())
                {
                    Benutzer tmpBenutzer = new Benutzer();
                    tmpBenutzer.benutzername = (string)reader.GetValue(0);
                    tmpBenutzer.passwort = (string)reader.GetValue(1);
                    tmpBenutzer.id = (int)reader.GetValue(2);
                    tmpBenutzer.gruppen_id = (int)reader.GetValue(3);
                    listeDerBenutzer.Add(tmpBenutzer);
                }
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
            return listeDerBenutzer;
        }
    
        private List<Gruppe> LadeGruppe()
        {
            List<Gruppe> listeDerGruppen = new List<Gruppe>();
            try
            {
                SQLverbinder();
                cmd.CommandText = "SELECT Gruppe.Name, Gruppe.Gruppen_ID FROM Gruppe;";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = con;
                reader = cmd.ExecuteReader();
    
                while (reader.Read())
                {
                    Gruppe tmpGruppe = new Gruppe();
                    tmpGruppe.name = (string)reader.GetValue(0);
                    tmpGruppe.gruppen_id = (int)reader.GetValue(1);
                    listeDerGruppen.Add(tmpGruppe);
                }
                SQLdeverbinder();
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler!\n" + e.Message);
                SQLdeverbinder();
            }
            return listeDerGruppen;
        }
    
        public void Ausgabe()
        {
    
            List<Benutzer> tmpBenutzerListe = LadeBenutzer();
            foreach (Benutzer test1 in tmpBenutzerListe)
            {
                Console.WriteLine("Benutzerliste: " + test1.benutzername + ", " + test1.passwort + ", " + test1.id + ", " + test1.gruppen_id);
            }
    
            List<Gruppe> tmpGruppenListe = LadeGruppe();
            foreach (Gruppe test2 in tmpGruppenListe)
            {
                Console.WriteLine("Gruppenliste: " + test2.name + ", " + test2.gruppen_id);
            }
        }
    }
    

    Gruppe.cs:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    public class Gruppe
    {
        public string name = "";
        public int gruppen_id = 0;
        public List<Benutzer> benutzerListe = new List<Benutzer>();
    }
    

    Benutzer.cs:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    public class Benutzer
    {
        public string benutzername = "";
        public string passwort = "";
        public int id = 0;
        public int gruppen_id = 0;
        public List<Gruppe> gruppenListe = new List<Gruppe>();
    }
    

    SQL Datenbank:
    CREATE DATABASE benutzerverwaltung;

    CREATE TABLE Gruppe(
    Gruppen_ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    Name VARCHAR(50));

    CREATE TABLE [User](
    Gruppen_ID INT,
    ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    Benutzername VARCHAR(50),
    Passwort VARCHAR(50));

    Also soweit ich das richtig verstanden habe soll ich es so machen, dass in jedem Benutzerobjekt der beispielsweise in der Gruppe Buchhaltung ist ein Gruppenobjekt mit den Werten der Buchhaltung drinn ist und in jedem Gruppenobjekt sollen alle Benutzerobjekte drinn sein mit der passenden Gruppe, oder vertue ich mich da ?

    Ich sitze schon seit einigen Tagen da rann aber komme auf kein vernünftiges Ergebnis 😕

    Villeicht könnt ihr mir dabei helfen



  • @proggingneuling Ich möchte nicht das ihr die Aufgabe für mich löst.
    Das was ich brauche sind kleine Tipps wie ich das am besten bewerkstelligen kann und wo ich das einbringen kann im Programm.



  • Ob das jetzt deiner konkreten Aufgabenstellung entspricht, weiß ich nicht, du hast die Aufgabenstellung ja nicht exakt angegeben. Wär aber denkbar.
    Was ist dein Problem? Hast ja schon recht viel Code. Was mir bezüglich der Aufgabenstellung (wie du sie interpretierst) falsch vorkommt, ist dass die Klasse Benutzer eine Liste von Gruppen hat - es sollte nur eine sein. Und die IDs der Gruppe usw. gehören da auch nicht mehr, wenn, dann gehörts in die Gruppe.

    Ich würde ganz dringend davon abraten, auf deutsch zu programmieren. Das ist einfach nur grauenhaft. Außerdem sind viele Bezeichner in deinem Quellcode sinnlos, falsch, oder nichtssagend.



  • @mechanics Das mit dem deutsch programmieren werde ich mir merken aber da ich das bis jetzt schon gemacht habe habe ich ehrlich gesagt keine lust das jetzt alles auf englisch zu machen.

    Es kann auch daran liegen das ich das programmiert habe und es deshalb besser verstehe, aber ich habe jetzt auf den ersten Blick keine "schlechten" Bezeichner gefunden. Soll keine Kritik sein, aber vielleicht kannst du mir ein par nennen damit ich diese überarbeiten kann.
    Die Variable "gruppen_id" in der Klasse Benutzer.cs habe ich schonmal zu "gruppenzugehoerigkeit" geändert.

    Die Idee mit den Listen war das beim erstellen eines Benutzers ja schon klar ist in welcher Gruppe er ist wegen der Variable gruppen_id des Benutzers und dadurch der Benutzer dann in die Liste kommt, aber ist auch egal, weil ich das jetzt im nachhinein weg gemacht habe, weil es glaube nicht viel Sinn macht, wenn jedes Benutzerobjekt eine eigene liste der Gruppen hat wie du das glaube ich schon angedeutet hast.

    Ich habe es zwar noch nicht umgesetzt aber meine neue Idee wäre das ich in der Klasse Gruppe.cs eine Liste<Benutzer> anlege damit jede Gruppe erstmal Ihre eigene Benutzerliste hat in die ich dann die jeweiligen Benutzerobjekte rein tue. Somit hätte ich ja ein Teil des Problems gelöst indem dann in jedem Gruppenobjekt alle dazugehörigen Benutzerobjekte drinn stehen.
    Was hältst du von diesem Ansatz ?

    Die Aufgabenstellung ist eine ausgedachte Aufgabenstellung von mir gewesen um das Programm nach und nach immer Objektorientierter zu machen. Villeicht ist mir die Formulierung nicht ganz geglückt 😂



  • @proggingneuling sagte in OOP Grundlagen - Objekt im Objekt:

    Ich habe es zwar noch nicht umgesetzt aber meine neue Idee wäre das ich in der Klasse Gruppe.cs eine Liste<Benutzer> anlege damit jede Gruppe erstmal Ihre eigene Benutzerliste hat

    Du hast doch schon eine List<Benutzer> in der Gruppe !?!?!?

    Schlechte Bezeichner einfach von oben nach unten durchgeschaut:

    • kontrolle
    • SQLVerbinder (das ist eine Funktion, kein Objekt!)
    • SQLdeverbinder
    • eingabeGruppe
    • eingabeWeitereGruppe 😃

    usw...
    Außerdem ist bei dir alles vermischt. Wenn es eine Übungsaufgabe ist, die du dir selber ausgedacht hast, wäre es viel sinnvoller und objektorientierter, mal die Logik und "GUI" (in dem Fall Konsole) auseinanderzuziehen.