Witam, od niedawna uczę się programowania. Podstawy jakieś tam znam z dziedziczenia jednak czasem mnie przerastają. Teraz niestety widzę, że albo się nauczę albo będę niepotrzebnie pisał kod który będzie nie estetyczny.
Podaje przykład bardzo okrojony lecz dobrze pokazujący mój problem.
Mam jakąś podstawową klasę obiektu który do tego przykładu nada się najlepiej.
public class Uczeń
{
public Uczeń(int NrDziennika, string Imię, string Nazwisko)
{
this.NrDziennika = NrDziennika;
this.Imię = Imię;
this.Nazwisko = Nazwisko;
}
public int NrDziennika { get; set; }
public string Imię { get; set; }
public string Nazwisko { get; set; }
public override string ToString()
{
return String.Format("Uczeń {0} {1} o nr. Dzienika: {2}",Nazwisko,Imię,NrDziennika);
}
}
Następnie mam zbudowany model klasy który posiada kolekcję w postaci Listy oraz niezbędne metody które ułatwiają odwołanie się do kolekcji
public class Klasa
{
private List<Uczeń> ListaUczniów = new List<Uczeń>();
public void AddNewUczeń (Uczeń nowyUczeń)
{
ListaUczniów.Add(nowyUczeń);
}
public Uczeń GetUczeń(int nrDziennika)
{
foreach(var uczeń in ListaUczniów)
{
if(uczeń.NrDziennika == nrDziennika)
{
return uczeń;
}
}
return null;
}
}
Wiem, dla przykładu Uczeń oraz klasa można by było wykonać 100 razy lepsze rozwiązania i nie komplikując sobie życia. Ale nie chodzi mi tutaj o zaprojektowaniu klasy tylko o zrozumienie pewnej zasady.
Co chce osiągnąć.
Jak stworzyć klasę powiedzmy
public class Klasa_Technikum : Klasa
{
....
public class Klasa_Liceum : Klasa
{
....
w konstrukcji klasy powiedzmy automatycznie z poziomu kodu dodał bym jakiś uczniów do Listy z class Klasy
a implementacja w programie u umożliwiała by mi następująco
Klasa_Technikum _klasa_Technikum = new Klasa_Technikum();
_klasa_Technikum.AddNewUczeń(new Uczeń(23,Jacek,Nowak));
Klasa_Liceum _klasa_Liceum = new Klasa_Liceum();
_klasa_Liceum.AddNewUczeń(new Uczeń(23,Adam,Nowak));
console.writeLine(_Klasa_Technikum.GetUczeń(11));
console.writeLine(_Klasa_Technikum.GetUczeń(23));
console.writeLine(_Klasa_Liceum.GetUczeń(11));
console.writeLine(_Klasa_Liceum.GetUczeń(23));