pamparampa Opublikowano 16 Grudnia 2012 Udostępnij Opublikowano 16 Grudnia 2012 Witam. Mój problem dotyczy zadania, ale chcę tylko, żebyście pomogli mi zrozumieć polecenie :). Brzmi ono w skrócie: Zdefiniuj klasę Hotel . Każdy hotel ma określoną liczbę numerowanych pokoi rozmieszczonych na poszczególnych piętrach. Liczba pięter i liczba pokoi na każdym piętrze jest ustawiana w momencie tworzenia obiektu. Pokój jest identyfikowany przez obiekt klasy NumerPokoju ( o polach pietro i pokoj ) . Określony pokój jest wynajęty jeśli jest z nim powiązany obiekt klasy Osoba. Jedna osoba może wynajmować wiele pokoi. Problem polega głównie na tym, że nie wiem co to znaczy "...pokój jest wynajęty, jeśli jest z nim powiązany obiekt klasy Osoba. Czy mam to rozumieć jako powiązanie obiektu Osoba z obiektem NumerPokoju? czy w ogóle jest w Javie coś takiego jak powiązanie dwóch obiektów? i jak to się robi? Sorry, jeśli te pytania są zbyt banalne, ale jestem w javie trochę początkujący :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 16 Grudnia 2012 Udostępnij Opublikowano 16 Grudnia 2012 Ja tu nawet problemu żadnego nie widzę :P . W ogóle, czy w rzeczywistości/realu/matrixie czy jak to programiści teraz nazywają (o ile w ogóle im jest te pojęcie potrzebne) mówisz "jestem powiązany z pokojem [...], a on ze mną", czy może prędzej "mój pokój to [...]"? Jeśli to drugie, no to najzwyczajniej w świecie przenieś to na kod - to człowieka interesuje jaki ma pokój, nie na odwrót. Oczywiście ma to też swoje uzasadnienie praktyczne (instancje Człowieka -> jeden pokój, a nie jeden pokój -> lista instancji Człowieka). Podsumowując: walnij sobie w klasie Człowiek zmienną typu Pokój o nazwie myRoom, wskazującą oczywiście na obiekt będący pokojem danego ludzia. Sorry za mieszanie języków i polskie znaki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pamparampa Opublikowano 16 Grudnia 2012 Autor Udostępnij Opublikowano 16 Grudnia 2012 Ale wtedy jak będę chciał sprawdzić kto wynajmuje dany pokój to będzie problem bo będzie trzeba albo przeszukać wszystkie osoby, albo w pokoju też robić zmienną typu osoba, która wskazuje na osobę wynajmującą ten pokój. Tylko czy to rozwiązanie nie będzie mało eleganckie? Sądziłem, że może jest jakaś metoda która wiąże dwa obiekty czy coś podobnego... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 16 Grudnia 2012 Udostępnij Opublikowano 16 Grudnia 2012 sernat, nie piernicz :) jest sobie manager, ktory zarzadza parcelowaniem pokoi osobom. jak osoba rezerwuje pokoj, to laczysz jego id z id pokojem, nie na odwrot. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pamparampa Opublikowano 16 Grudnia 2012 Autor Udostępnij Opublikowano 16 Grudnia 2012 @YXE mógłbyś to jakoś bardziej wytłumaczyć? :) co to jest to parcelowanie? i jak się łączy te id i w ogóle na czym to polega? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 16 Grudnia 2012 Udostępnij Opublikowano 16 Grudnia 2012 jutro zarzuce kodem, bo piszac zauwazylem, ktora godzina i co dzis za dzien :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 16 Grudnia 2012 Udostępnij Opublikowano 16 Grudnia 2012 sernat, nie piernicz :) jest sobie manager, ktory zarzadza parcelowaniem pokoi osobom. jak osoba rezerwuje pokoj, to laczysz jego id z id pokojem, nie na odwrot. Nie pierniczę, prosta sprawa, ale trza uświadomić kolegę. Ważne, żeby wszystko miało też swoje uzasadnienie logiczne, patrząc na całość przez pryzmat OOP. No i pojęcie "id" to kojarzy mi się co najwyżej z GMem. Mówimy tutaj o jednej zmiennej i oczywiście funkcjach operujących na niej, np. setterze i getterze. Btw z tego twojego "łączenia" nie wynika, kto przechowuje informację. Konkrety pls. Pamparampa: Rozwiązanie będzie jak najbardziej eleganckie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Grudnia 2012 Administratorzy Udostępnij Opublikowano 17 Grudnia 2012 Definiujesz sobie w klasie tak: public Osoba osoba = null; A potem gdzieś w jakiejś metodzie: public void function wynajmijPokoj() { osoba = new Osoba(); } i aby sprawdzic: public bool czyWynajety() { return osoba != null; } O to chodzi? Edit: ofc, dla wiecej niz jednoosobowego pokoju moze byc lista albo tablca osób w tym pierwszym, i wtedy bedzie osoba.add(new Osoba()); w wynajmijPokoj(); (moze tez byc przeciazona metoda, ze podajesz jako argument int ileOsob). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pamparampa Opublikowano 17 Grudnia 2012 Autor Udostępnij Opublikowano 17 Grudnia 2012 To ja jeszcze poczekam na rozwiązanie YXE, bo jego pomysł wydaje mi się najbardziej odpowiedni :). Pewnie jest dużo sposobów, żeby to rozwiązać, ale chcę to zrobić jakimś optymalnym sposobem, a wydaje mi się, że tu bardziej chodzi o powiązanie dwóch obiektów, a nie takie coś, że robimy jednemu obiektowi zmienną typu drugi obiekt, a ten drugi obiekt nawet nie wie, że coś go łączy z tym pierwszym :D (np. co zrobię jak będę chciał sprawdzić, czy dana osoba wynajmuje jakiś pokój?). Nie wiem, ja się nie znam ale tak mi się wydaje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Grudnia 2012 Administratorzy Udostępnij Opublikowano 17 Grudnia 2012 Możesz w osobie zrobić przypisanie do pokoju: class Osoba { public Pokoj pokoj = null; public void Osoba(Pokoj p) { pokoj = p; } public bool czyWynajelaCos() { return Pokoj != null; } } class Pokoj { public Osoba osoba= null; public void function wynajmijPokoj() { osoba = new Osoba(this); } } to w sumie wynika z powyższego kodu ;) Ale może YXE ma coś ciekawszego do pokazania Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 17 Grudnia 2012 Udostępnij Opublikowano 17 Grudnia 2012 sernat, ID jest po to, by zachowac dobry performance przy przeszukiwaniu polaczen pokoj-osoba, ktore osobno sa trzymane w mapach, zamiast porownywac referencje (bad), czy cale obiekty (very bad) :) (po pracy wrzuce kod) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Grudnia 2012 Administratorzy Udostępnij Opublikowano 17 Grudnia 2012 Tyle, że IDków ci GarbageCollector sam nie usunie, wiec dla mnie ten sposób jest wygodniejszy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 18 Grudnia 2012 Udostępnij Opublikowano 18 Grudnia 2012 sernat, ID jest po to, by zachowac dobry performance przy przeszukiwaniu polaczen pokoj-osoba, ktore osobno sa trzymane w mapach, zamiast porownywac referencje (bad), czy cale obiekty (very bad) :) (po pracy wrzuce kod) Sam jesteś bad :P . Bad to jest użycie tablicy w takim wypadku zamiast listy, no ale to w sumie chyba każdy wie. A patentów są dziesiątki w zależności od potrzeby. Byle by w przyszłości "rozszerzać, a nie usuwać/edytować klasy i ich metody", czy jak to szło ;) . Btw. "porównywanie całych obiektów" to nie jest żadne very bad, to byłby po prostu debilizm. Ale nie wiem jak można na to wpaść. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się