Obsługa listy

0

Witam,

Dopiero zaczynam przygodę z programowaniem stąd proszę o wskazówkę w wykonaniu zadania:

Stwórz klasę Czytelnik, dziedziczącą z klasy Osoba. Dodatkowo klasa Czytelnik

powinna posiadać pole – listę / tablicę obiektów typu Książka - listę książek przeczytanych przez

danego czytelnika oraz metodę WypiszKsiążki - wypisujące tytuły książek, które czytelnik

Stwórz 3-5 książek, 2-4 czytelników, przypisz książki do tablic / list przeczytanych książek

czytelników, wykonaj metody WypiszKsiążki.

Tak wygląda obecnie moja klasa Czytelnik:

   public class Czytelnik : Osoba
        {

            public List<Ksiazka> listaKs= new List<Ksiazka>();
            public List<Czytelnik> listaCzytelnikow = new List<Czytelnik>();

            public Czytelnik(string im, string naz, int wiek): base (im, naz,wiek)
            { 
            
            
            }

        
        }

Mam również klasę Książka. Moje pytanie brzmi:
Czy powinienem w klasie czytelnik mieć dwie listy osobno na książki osobno na czytelników? Jeżeli tak to jak dodać obiekty klasy Ksiażka na listę książek ?

Z góry dziękuję za pomoc

2

W klasie Czytelnik w ogóle nie powinno być listy Czytelników, bo to bez sensu. Czytelnik powinien mieć tylko listę Książek, które przeczytał.

0

dzięki za szybką odpowiedź.

Jeżeli dobrze zrozumiałem to powinno to wyglądać w następujący sposób:

  public class Czytelnik : Osoba
        {

            public List<Ksiazka> listaKs= new List<Ksiazka>();

            public Czytelnik(string im, string naz, int wiek): base (im, naz,wiek)
            { 
                     
            }

            public void WypiszKsiazki() { 
            
                foreach(Ksiazka ks in listaKs){
                    Console.WriteLine(ks.tytul);
                }
           
            }
        
        }

a mainie tworzę czytelnika i dodaję na listę przeczytane jego książki ? 

 Osoba os = new Osoba("Jan", "Nowak", 5);
           os.Wypisz();


            Ksiazka ks = new Ksiazka("Matematyka", Convert.ToDateTime("12-12-2001"), os);
           

            Ksiazka ks2 = new Ksiazka("Historia", Convert.ToDateTime("12-12-1901"), os);
           

            Czytelnik cz1 = new Czytelnik("a","b",33);
            cz1.listaKs.Add(ks);
            cz1.listaKs.Add(ks2);

            cz1.WypiszKsiazki();
            Console.ReadKey();
1

Wydaje się ok i zgodne z zadaniem.
Polecam tylko zmienić listaKs na ListaKsiazek - w C# elementy publiczne są z wielkiej litery i lepiej pisać bardziej opisowo niż potem zastanawiać się co to było "ks" ;)

0

Nie znam C# więc jako tako o składni się nie wypowiem Ale...

  1. Czemu czytelnik posiada listę która jest publiczna ?
  2. Jaki sens jest trzymać w książce obiekt osoby która ja przeczytała? Idąc do biblioteki masz karty osób z listami książek które wypożyczyła dana osoba A nie karty z książkami zawierające listę osób które ja wypozyczaly. Trochę to nielogiczne.
  3. Poczytaj o hermetyzacji (A przy okazji o SOLID).

1 użytkowników online, w tym zalogowanych: 0, gości: 1