![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 1.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam!!
Pisze sobie własnie taki mały system do obsługi artykułów. Do systemu maja dostęp dwie kategorie użytkowników: user i admin. Do obsługi artykułów jest stworzona klasa 'articles', w ktorej mam takie metody jak: - wyświetl liste - wyswietl artykul - dodaj artykuł - zablokuj artykuł I teraz pytanie: Czy dziedziczenie (klsay 'admin' i 'user' dziedziczą z klasy 'articles') jest dobrym rozwiązaniem?? Bo w takim przypadku obiekt 'user' ma dostęp do metod, które nie są mu przeznaczone (i w rzeczywistości niewiele się różni od obiektu klasy 'admin', a w takim przypadku nie ma sensu tworzyc osobnej klasy 'user'). I żeby to obejść nalezy jeszcze raz zdefiniować metody 'dodaj artykuł' i 'zablokuj artykuł' w klasie user. Drugie co mi do głowy przyszło to przekazanie utworzonego obiektu 'articles' do obiektów klas 'user' i 'admin'', a tam będą metody odpowiedzialne za wyświetlanie/edycje artykulów w zalezności od potrzeb (beda wywoływały metody obiektu 'articles'). Czy ktoś lepiej znający ode mnie temat mógłby jakos ustosunkować się do powyższego?? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) W drugim rozwiązaniu mozna jeszcze wyprowadzic klasę 'admin' z klasy 'user' - ale nad tym się jeszcze zastanowię (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) P.S. jakby były problemy ze zrozumieniem tego co napisałem to przepraszam (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Użytkownik dziedziczy po artykułach?
E... Wątpię. Zamiast tego, lepiej w okreslonej metodzie np. Articles->Add() sprawdizć poziom dostepu. Ot, choćby: Ocaywiście obiekt User przechowuje w swoich właściwościach daną: Która przytbiera wartość pobraną z bazy. Tworzenie dwu obiektów "admnin", "user" jest nielogioczne. Przeciez to ten sam obiekt. tylko że jedna z jego właściowści ma różna wartość. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 15.06.2004 Skąd: Warszawa Ostrzeżenie: (10%) ![]() ![]() |
Tutaj całkiem nieźle może zadziałać coś takiego:
Full OOP. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Rozwiązanie nie jest efektywne, bo stworzenie nowej roli użytkownika wymaga stworzenia klasy dziedziczącej po klasie osoba. Wprawka w OO-php? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Jeszcze raz zapytam.
Po grzyba atomowego dwie klasy "Admin" i "User" skoro admin to user, tylko ma inną wartość jednej właściwosci? Czemu user ma metodę DodajArtykuł? Czy jego rola.. co ma rola usera do opcji artykułu? tylko poziom dostepu. Już to kiedyś pisałem... "Nie sztuką jest pisac obiektowo. Sztuką jest obiektowo myśleć" |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 1.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Użytkownik dziedziczy po artykułach? E... Wątpię. ciii... mnie tak na uczelni uczyli... chyba że Rzeszów nie jest potęgą informatyczną (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) a wracajac do tematu: to w takim razie 'admin' dziedziczy po 'user', dodać do niego kilka metod, i sprawa powinna być załatwiona (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Po co admin dziedziszy po uiser?
Ludzie... ratunku!!!! User wywołuję metode dodaj obiektu Artykuł. Sam takej jmetody nie posiada, bo człowiek nie ma mołziwosci wysunięcia papieru z siebie, tylko z drukarki... Czyli to drukarka ma metodę "wysuń" i Zenek jej nie dziedziczy - Zenek ją używa. A drukarka sprawdza, czy zenek może jej użyć. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 15.06.2004 Skąd: Warszawa Ostrzeżenie: (10%) ![]() ![]() |
Cytat(scanner @ 2004-07-05 14:50:42) [...] bo człowiek nie ma mołziwosci wysunięcia papieru z siebie [...] Zenek jej nie dziedziczy - Zenek ją używa. A drukarka sprawdza, czy zenek może jej użyć. Scanner? Zastanawiałeś się nad prowadzeniem warsztatów? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 1.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat User wywołuję metode dodaj obiektu Artykuł. Sam takej jmetody nie posiada, bo człowiek nie ma mołziwosci wysunięcia papieru z siebie, tylko z drukarki... Czyli to drukarka ma metodę "wysuń" i Zenek jej nie dziedziczy - Zenek ją używa. A drukarka sprawdza, czy zenek może jej użyć. nic dodać nic ująć (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) natomiast mam pytanie do: Cytat Po co admin dziedziszy po uiser? Ludzie... ratunku!!!! więc: user ma metody: wyświetl listę (user zenek używa drukarki (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ) wyświetl artykuł admin, oprócz powyzszych posiada także: dodaj artykuł usuń artykuł wobec czego kod może wygladać tak:
i teraz dwa pytania: 1) czy powyższy kod jest zły?? 2) co dokładnie oznacza okreslenie 'dziedziczy po' - bo być może ja źle je pojmuję |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 15.06.2004 Skąd: Warszawa Ostrzeżenie: (10%) ![]() ![]() |
Cytat(Thaal @ 2004-07-05 15:34:05) i teraz dwa pytania: 1) czy powyższy kod jest zły?? 2) co dokładnie oznacza okreslenie 'dziedziczy po' - bo być może ja źle je pojmuję Przy wykorzystywaniu obiektów tych klas musisz pamiętać, który jakie ma metody. Chodzi o to, żeby wywołanie wyglądało mniej więcej tak:
W pierwszym wypadku, jeżeli obiekt $user będzie instancją klasy user, to php zwróci błąd podczas kompilacji. Na pocieszenie: chcesz zabrać użytkownikowi uprawnienia do postowania, musisz przenieść metodę z klasy user do klasy admin. No i pozamiatane. Drugie rozwiązanie jest "jakoś bardziej udane". W tym wypadku nie masz problemu ze zmianą uprawnień, bo obiekt klasy artykul samodzielnie sprawdzi uprawnienia. |
|
|
![]()
Post
#10
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Thaal - a mi się wydaje, że ty nadal nie zreozumiałeś przykładu scannera dotyczącego drukarki.
Ja zrobiłbym to chyba tak
|
|
|
![]() ![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) ![]() ![]() |
Thaal czy ty przy urodzeniu dziecka wiesz ktory jest strazakiem, ktory ksiegowym a ktory redaktorem?
To dyskryminacja 'obiektowa'. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Moze tak to ci przedstawie, Jestem obiektem User, mam swoje nazwisko imie, adres i powiedzmy zawod. Obiektem artykul jest "Gazeta", ale Gazeta ma metode(straznik), ktora sprawdza czy moj zawod to redaktor, a ze nie jestem redaktorem to gazeta odmawia dodania mi artykulu. A Moj kolga jest takrze obiektem User, ale jego zawod rozni sie od mojego bo jest redaktorem, i jego metoda sprawdzajaca(straznik) dopuszcza do biurka z maszyna do pisania i on moze taki artykul napisac do Gazety. Swiat sklada sie z obiektow, tak jak dom z cegiel. Nastepna lekcja bedzie na klockach (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 1.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
(IMG:http://forum.php.pl/style_emoticons/default/graduated.gif)
człowiek uczy się całe życie czyli z tego co zrozumiałem chciałem to wszystko zrobić "od du..." to znaczy "drugiej strony"... dzięki.... i nie denerwujcie się za bardzo na mnie bo co jakiś czas będę jakies głupie pytanie zadawał (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 08:33 |