![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
witam mam pytanie zapewne banalne i wiele osob zadrwi ze mnie ale ze dopiero stawiam pierwsze kroki w OOP mam takie pytanie
jezeli mam klase do A i w niej jakies metody i teraz w klasie B chcę uzyc metody z klasy A to czy mozna to zrobic?? i jak to zrobic?? czy tu chodzi o dziedziczenie?? prosilbym moze o jakis prosty przyklad -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Można, przez dziedziczenie (klasa B dziedziczy po klasie A), zawarcie instancji klasy A w klasie B albo uczynienie metodę klasy A statyczna:
edit: Oczywiście każde z tych rozwiązań posiada plusy i minusy.. trzeba wybrać odpowiednio do potrzeb. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
a mam jeszcze jedno pytanie co powinno sie umieszczac w konstruktorze??
-------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli to pytanie do moich przykładów to na pewno w konstruktorze trzeba inicjalizować zmienne przechowujące instancje.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli to pytanie do moich przykładów to na pewno w konstruktorze trzeba inicjalizować zmienne przechowujące instancje. to pytanie ogolnie jak mam klase do rejestracji uzytkownikow to co powinno byc w konstruktorze?? -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Ja bym to zrobił tak, że napisałbym klasę UsersManager, która mogłaby zawierać metody add, edit, delete etc. i zrzucić te funkcje z klasy User. Konstruktor klasy UsersManager zostawiłbym pusty dopiero do metod przekazywałbym parametry. No ale ja dopiero zaczynam OOP więc moje podejście może być złe
![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
to pytanie ogolnie jak mam klase do rejestracji uzytkownikow to co powinno byc w konstruktorze?? Nie możesz zadawać takich pytań. Sprawa implementacji jest kwestią indywidualną. Napisz jakiś kod, a na pewno znajdziesz pomoc, żeby poprawic, ulepszyc etc. edit: Ktoś wspomniał o managerze.. a ja rejestrację (jako najmniejsza składową np. wpis do bazy) umieściłbym w klasie User odpowiedzialnej za logikę działań na danych poszczególnego użytkownika. edit: Ja bym to zrobił tak, że napisałbym klasę UsersManager, która mogłaby zawierać metody add, edit, delete etc. i zrzucić te funkcje z klasy User. A ja sama rejestracje widzę już jako logikę strony/serwisu... pewnie dlatego, że za bardzo myślę wg MVC Po zastanowieniu, mogę stwierdzić, że jakkolwiek to zaimplementujesz najważniejszym jest, żeby działało. Różne sposoby (wzorce) kodowania "wymuszają" na programiście używanie pewnych utartych schematów. Jedyna nadzieja w zatarciu różnic to coraz lepsze poznawanie, a co najważniejsze zrozumienie OOP - wydaje mi się, że na samym końcu tej drogi, wszyscy dochodzą do tych samych wniosków. Ten post edytował LBO 1.06.2007, 20:40:15 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
W konstruktorze umieszcza się kod tworzący obiekt. Mówiąc po ludzku, po wykonaniu konstruktora obiekt musi być gotowy do przyjmowania poleceń. Czyli jak masz klasę do rejestracji użytkowników, to pewnie łączy się ona z bazą danych. Z tego można wyciągnąć wniosek, że w konstruktorze musisz przygotować połączenie z bazą (przekazać referencję do obiektu będącego interfejsem używanego dbms albo utworzyć nowy uchwyt). Wszystkie atrybuty klasy muszą zostać też przygotowane.
-------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Można też kwestię przygotowania obiektu zrzucić na wywołania jego metod konfiguracyjnych, zamiast używać do tego konstruktora. Taka polityka sprawdza się, gdy nasz obiekt jest zależny od innych obiektów. np.
Zamiast robić tak:
można
Wszystko oczywiście zależy od okoliczności : ) Pozdrawiam. Ten post edytował Cysiaczek 2.06.2007, 07:25:02 -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Tylko użycie metod konfiguracyjnych narzuca sposób korzystania z obiektu. Zanim wywołasz jakąkolwiek inną metodę, wpierw musisz wywołać konfiguracyjne. Trzeba się pilnować, żeby o tym nie zapomnieć... Konstruktor zwalnia trochę z myślenia.
-------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Oczywiście. Niektóre obiekty (np. obiekty używane jedynie przez framework) można w ten sposób "podnosić", inne już nie, bo API stałoby się zbyt skomplikowane. Zresztą - nic nie stoi na przeszkodzie w wykorzystaniu obu możliwości jednocześnie : >
-------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Zawsze mozna tez stworzyc cos ala przeciazanie. W zaleznosci od ilosci parametrow podanych przy tworzeniu obiektu wywolujemy inne metody.
-------------------- |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 14.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
nalezalo by tez wspomniec o slowku parent
![]() ![]()
-------------------- Black Tarantula
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 09:23 |