/// <summary> /// Sucht nach einem Schüler in der Schule /// </summary> /// <param name="id">Id des Schülers</param> /// <returns>Gibt ein ganzes Objekt vom Typ Schüler zurück</returns> public Schueler FindSchuelerById(int id) { /* * NICHT NACHMACHEN!!!!! NUR ZUM ZEIGEN!!! * Würde sich die ganze DB holen (Bsp. 40 Millionen Datensätze) und dann durchiterieren... * Kommentar Schletz: So gibs garantiert nur die Note >=4 ;-) * * foreach(Klasse k in Klassen.Values) * { * foreach(Schueler s in k.Schueler) * { * if(s.Id == id) * { * return s; * } * } * } * * foreach(Klasse k in Klassen.Values) * { * Schueler found = k.FindSchuelerById(id); * if(found != null) * { * return found; * } * } */ //"Aktuelle" Lösung (Stand mit Ende der Stunde) --> nächste Woche weiter foreach (Klasse k in Klassen.Values) { Schueler found = k.FindSchuelerById(id); if (found != null) { return(found); } } /* * Schöne Lösung, produktivbetriebs-Lösung --> evtl. statt var den richtigen Datentyp angeben. * var res = (from k in Klassen.Values * from s in k.Schueler * where s.Id == id * select s).FirstOrDefault(); */ return(null); }
public Schueler FindSchuelerById(int id) { /* SO GIBTS GARANTIERT NUR DIE NOTE >= 4 */ foreach (Klasse k in Klassen.Values) { Schueler found = k.FindSchuelerById(id); if (found != null) { return(found); } } /* * var res = (from k in Klassen.Values * from s in k.Schueler * where s.Id == id * select s).FirstOrDefault(); */ return(null); }
/*/// <summary> * /// Fügt der Klasse einen neuen Schüler hinzu * /// </summary> * /// <param name="s">Schüler als fertiges Objekt</param> * public void AddSchueler(Schueler s) * { * if(s != null) * { * if (Schueler.Count < 5) * { * Schueler.Add(s); * * //"Prüft" ob es dem Schüler gibt und löscht ihn dann, mit ? wird das klassiche != null überprüft * s.Klasse?.Schueler.Remove(s); * * //vgl. mit Diagramm --> NICHT VERGESSEN!!! --> Referenzen (Rückreferenz null, Schüler ohne Klasse)!!! * s.Klasse = this; * } * * } * * /* * oder: * if(s == null) { return; } //geht auch am Anfang vom Code, beispielsweise 3-4 Fehler prüfen und dann den logischen Code */ //} //Auf boolean setzen für UnitTests public bool AddSchueler(Schueler s) { if (s == null) { return(false); } if (s.Klasse == null && Schule.FindSchuelerById(s.Id) != null) { return(false); } if (Schueler.Count < 5) { Schueler.Add(s); s.Klasse?.Schueler.Remove(s); s.Klasse = this; return(true); } return(false); }
public bool AddSchueler(Schueler s) { if (s == null) { return(false); } if (s.Klasse == null && Schule.FindSchuelerById(s.Id) != null) { return(false); } if (Schueler.Count < 5) { Schueler.Add(s); /* NICHT VERGESSEN, sonst bleibt die Rückreferenz NULL!! */ s.Klasse?.Schueler.Remove(s); s.Klasse = this; return(true); } return(false); }