• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# Problem z asocjacją

Object Storage Arubacloud
0 głosów
605 wizyt
pytanie zadane 1 kwietnia 2019 w C# przez UncleDave Nowicjusz (190 p.)

Hey ;) 
Mam problem z pewnym programem, który polega na prostej obsłudze zoo. Na dole zamieszczam opis słowny i grafikę struktury programu, którą dostaliśmy od profesora.

Problem pojawia się przy czerwonym znaku zapytania, mianowicie Opiekunowie mają być przypisywani do Klatek,
np jedna klatka może mieć 2 opiekunów, ale nie musi. No to zdecydowałem stworzyć listę w Klatce, bo przez kompozycję, jeśli usunę z poziomu Zoo Klatkę, to usuną się też przypisani do niej opiekunowie. No i fajnie, ale chcąc dodać Opiekuna do Klatki, muszę mieć ich listę z Zoo, do którego nie wiem jak mam się z poziomu Opiekuna czy Klatki odnieść (mógłbym do metody PrzydzielKlatke wysyłać zoo i nr, ale tak dostaliśmy na zajęciach - tylko z nr).
Proszę o pomoc bo kombinuję i nic nie mogę ciekawego wymyślić :/
Ogólnie jestem otwarty na wszelkie uwagi, bo od niedawna uczymy się C#, i na razie jakiś super rozwiązań nie znamy jeszcze ;) a sam język mi się podoba :) 

Pozdrawiam Dawid

    class Zoo
    {

        List<Klatka> klatki = new List<Klatka>();
        List<Opiekun> opiekun = new List<Opiekun>();

        public void InfoKlatki()
        {
            foreach (var item in klatki)
            {
                item.WypiszInfo();
            }
        }
        public bool DodajKlatke(uint nr, uint pojemnosc)
        {
            if (klatki.Exists(x => x.Nr == nr))
                return false;
            else
            {
                klatki.Add(new Klatka(nr, pojemnosc));
                return true;
            }
        }
        public Klatka ZnajdzKlatke(uint nrklatki)
        {
            foreach (var item in klatki)
            {
                if (item.Nr == nrklatki)
                    return item;
            }
            return null;
        }
        public void DodajZwierze(uint nrKlatki, Zwierze z)
        {
            if(ZnajdzKlatke(nrKlatki) != null)
                ZnajdzKlatke(nrKlatki).DodajZwierze(z);
            else
                Console.WriteLine("nie ma klatki " + nrKlatki + "\n");
        }


    }




    class Klatka
    {
        public uint Nr { get; }
        private uint pojemnosc = 0;
        private bool nieUpierdolona = true;
        List<Zwierze> zwierze = new List<Zwierze>();
        List<Opiekun> opiekuni = new List<Opiekun>();
        public Klatka(){ Nr = 0; }
        public Klatka(uint nr, uint pojemnosc)
        {
            this.Nr = nr;
            this.pojemnosc = pojemnosc;
        }
        public Klatka(uint nr, uint pojemnosc, bool nieUpierdolona)
        {
            this.Nr = nr;
            this.pojemnosc = pojemnosc;
            this.nieUpierdolona = nieUpierdolona;
        }
        public void WypiszInfo()
        {
            Console.WriteLine("numer: " + Nr + "\npojemnosc: " + pojemnosc + "\nczy trzysta" + nieUpierdolona + "\n\n");
            foreach (var item in zwierze)
            {
                item.WypiszInfo();
            }
            Console.WriteLine("\n");
        }
        public void DodajZwierze(Zwierze z)
        {
            if(zwierze.Count >= pojemnosc)
                Console.WriteLine("Przeciazenie klatki\n");
            else
            zwierze.Add(z);
        }
        public void ZabijZwierze(Zwierze z)
        {
            zwierze.Remove(z);
            Console.WriteLine("0we pole");
            zwierze[0].WypiszInfo();
        }

    }




    class Opiekun
    {
        string imie = "Brak";
        string nazwisko = "Brak";

        public Opiekun()
        {

        }
        public Opiekun(string imie, string nazwisko)
        {
            this.imie = imie;
            this.nazwisko = nazwisko;
        }

    }

Opis problemu: W pewnym ogrodzie zoologicznym znajdują się trzy rodzaje zwierząt: ssaki, ptaki i gady. O każdym ze zwierząt gromadzone są informacje na temat gatunku, rodzaju pożywienia oraz pochodzenia zwierzęcia. Każdy z trzech rodzajów zwierząt posiada też pewne unikatowe cechy i/lub umiejętności. Ptaki potrafią latać, a informacja o maksymalnej długości lotu ptaka bez odpoczynku wyznaczana jest na podstawie iloczynu rozpiętości skrzydeł ptaka i jego wytrzymałość. Niektóre gady mogą być jadowite. W zoo gromadzone są także informacje na temat naturalnego środowiska życia ssaków. Wszystkie zwierzęta trzymane są w klatkach, które mają pewną określoną pojemność. Klatka może wymagać posprzątania. Każda klatka jest identyfikowana za pomocą unikatowego numeru. W zoo zatrudnieni są również opiekunowie, którzy odpowiadają m.in. za sprzątanie klatek. Każdy z nich może być przydzielony do opieki nad kilkoma klatkami. Dyrekcja zoo potrzebuje na bieżąco sprawdzać informacje na temat wszystkich klatek wraz ze szczegółowymi informacjami na temat znajdujących się w nich zwierząt oraz na temat opiekunów pracujących w zoo. Dyrekcja może podjąć decyzję o budowie nowej klatki, powiększeniu klatki, zatrudnieniu nowego pracownika oraz umieszczeniu w klatce nowego zwierzęcia.

Ogólnie Dyrekcje zawarliśmy w Zoo

2 odpowiedzi

0 głosów
odpowiedź 2 kwietnia 2019 przez KonradKonrad Nowicjusz (140 p.)
Cześć :) To mój pierwszy wpis na forum więc tworząc tą odpowiedź chciał bym się również z wami przywitać. Na twoim miejscu dopisał bym pola zoo w klasach klatki i opiekuna po czym wymusił bym przypisanie konkretnego obiektu zoo w ich konstruktorach. Potem oczywiście musiał byś przekazać wszędzie ten sam obiekt - jeśli klatki i opiekunowi byli by w tym samym zoo.
0 głosów
odpowiedź 11 lipca 2019 przez ozyr Nowicjusz (140 p.)
Hello, zrobiles:)

Podobne pytania

+2 głosów
2 odpowiedzi 195 wizyt
pytanie zadane 14 czerwca 2019 w C# przez kamilborz Nowicjusz (180 p.)
0 głosów
1 odpowiedź 415 wizyt
pytanie zadane 24 kwietnia 2019 w C# przez Vorczu Początkujący (390 p.)
0 głosów
1 odpowiedź 568 wizyt
pytanie zadane 1 maja 2018 w C# przez bartekUW Początkujący (360 p.)

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...