Gramolik
10.09.2013, 11:56:56
Cześć,
Chciałem prosić Was o pomoc w napisaniu skryptu w OOP. Strukturalnie napisał bym go bez mrugnięcia okiem jednak obiektowo jakoś się zaciąłem. Być może rozwiązanie mojego problemu pozwoli mi ruszyć w świat obiektowości. Do rzeczy.
Chciałbym napisać prosty skrypt do zarządzania programami i licencjami. No i padam już w momencie przemyśleń na temat struktury. Nie umiem się przestawić na obiektowe widzenie. Zgodnie z tym co wiem o oop każdy obiekt klasy to tak jak by inny przedmiot. Myślałem więc, że trzeba zrobić dwie klasy, program i licencja.
Klasa Program
Składowe: id, nazwa, typ_licencji
Metody: Dodaj, Pokaz, Pokaz_wszystkie , Usuń
Klasa Licencja
Składowe: id, ilość, klucz
Metody: Dodaj, Pokaż, Usuń
O ile powyższe myślenie jest w miarę poprawne to jakoś nie mogę sobie wyobrazić jak osiągnąc sytuację aby po wywołaniu Program->Pokaz(id) wyświetliło się podsumowanie programu wraz z licencją przynależącą do niego. Nie wiem jak to zaplanować. Możecie mnie jakoś naprowadzić, jak taki skrypt powinien być skonstruowany?
buliq
10.09.2013, 12:17:13
Mało.
Licencje dzielimy jeszcze na rodzaje, a do tego dochodzą właśnie klucze więc osobno klasa (a może interfejs) do definicji rodzajów licencji, i osobny przypadek dla kluczy (klasa)
Następnie każdy rodzaj licencji ma osobną klasę dziedziczącą po tej wyżej, i odpowiednie metody, które działają właśnie dla tego rodzaju licencji.
Teraz ciekawiej, bo możesz robić wiele powiązań
Program może mieć kilka rodzai licencji,
Klucze mogą być różnych typów licencji,
więc:
Klasa program tworzy obiekty Licencja, w metodzie Pokaz pobierasz dane z tych obiektów.
Klasa klucz tworzy obiekty do licencji i do programu (tak wiem że program już ma obiekty licencji, ale wszystkich, a ja chciałbym tą jedyną)
Oczywiście jeżeli zakładasz że program ma tylko jedną licencję i jeden klucz, to nic nie stoi na przeszkodzie aby to program tworzył obiekty i licencji i klucza
Gramolik
11.09.2013, 14:27:20
Hej, dzięki za odpowiedź!
Zastanawiam się dlaczego osobna klasa na klucze? Klucz w moim zamyśle miał być tylko składową danej licencji, ciągiem znaków przyporządkowanych do konkretnej licencji które w czasie instalacji programu będę musiał wpisać.
Licencja była by klasą wzorcową a dziedziczyły by po niej licencja_internetowa, licencja_sprzetowa oraz licencja_darmowa
Powiedzmy mam pakiet office 2010 - do niego mam 10 stanowiskową licencję - jeden klucz (serial) oraz 5 stanowiskową - drugi klucz (serial).
Czyli tworzę obiekt klasy Program, wywołuję metodę pokaz(office2010) metoda ta tworzy obiekt klasy licencja_internetowa i wywołuje metodę pokaz_licencje(office2010), a co w przypadku kiedy mam licencję internetową do tego programu oraz licencję sprzętową, czy metoda - pokaz w klasie Program ma tworzyć obiekty dla każdego typu licencji i sprawdzać czy istnieją przypisane licencje konkretnego typu do danego programu?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.