Post
#1
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%)
|
Witam,
Nawiązując do http://forum.php.pl/index.php?showtopic=64555&st=80 chciałem troszkę rozjaśnić swoje zdanie na temat obiektowości w programach. Rozumiem koncept OOP i dzielenia aplikacji na obiekty - logiczne, wszystko dzieli się według zastosowania. Ale OOP to nie tylko taki podział. Potem dochodzą do tego interfejsy oraz klasy abstrakcyjne. Rozumiem interfejs, ale czemu interfejs nie może być normalną klasą, przecież i tak nie ma być wykorzystywany w programie? To tak jakby sucha kromka chleba miała być niejadalna, bo jest tylko interfejsem do kromki z serem. A jest jadalna - tylko większość osób kładzie na nią dodatkowo ser czy cośtam. I teraz klasy abstrakcyjne. Rozumiem, że obiekty mają hierarchię, ale po co klasy abstrakcyjne? Jeżeli są to klasy, których nie nalaży używać, to wystarczy ich nie używać - na pewno są przecież bezużyteczne, inaczej nie byłyby abstrakcyjne. Dlatego mam czasami wrażenie, że OOP to nie tylko standart projektowania, ale również inny troszkę tok myślenia. Rozumiem, że programista musi założyć, że użytkownicy to idioci. Bo oni mogą się nie znać. Ale jeżeli ktoś pisze jakąś obiektową bibliotekę, albo jeszcze gorzej strukturę programu dla siebie, to nie musi wychodzić z założenia, że jest idiotą. Jeżeli programista jest idiotą to jego sprawa, bo jego program i tak nie będzie działał - nie potrzeba do tego warningów/errorów kompilatora/interpretera. Tak samo metody prywatne. Jeżeli w dokumentacji będzie wspomniane nie używać, to mądry programista ich i tak nie użyje, a sprytny użyje i też będzie ok. Dlatego nie rozumiem, po co w OOP ten cały mechanizm zabezpieczania programów przed... programistami, którzy je piszą? Pozdrawiam |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 29.03.2007 Ostrzeżenie: (0%)
|
Ale przy protected w klasie dziedziczącej jest widoczna, właśnie po to się ustawia tą widoczność aby nie można było jej z zewnątrz wywołać, ale w klasie dziedziczącej jak najbardziej. Zacytuję, bo chyba tego nie widzisz: wtedy musi być private No to sie chyba faktycznie nie rozumiemy, bo poprawiasz mnie tak samo ja ja piszę. Podsumowywując krótko i jednoznacznie: private - metoda widoczna tylko w klasie w ktorej jest definicja tej metody, niewidoczna w klasach potomnych ani poza klasą protected - tj private a dodatkowo widoczna w klasach potomnych public - tj protected a dodatkowo poza klasą |
|
|
|
Post
#3
|
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%)
|
private - metoda widoczna tylko w klasie w której jest definicja tej metody, niewidoczna w klasach potomnych ani poza klasą Dziwisz się później, że nikt Cię nie rozumie. Napisz to jak po ludzku a nie się bawisz (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) protected - tj private a dodatkowo widoczna w klasach potomnych public - tj protected a dodatkowo poza klasą Jak protected to protected a nie jakieś "ale". private - składowe klasy (pola, funkcje) widoczne (czyli dostęp do niech) tylko i wyłącznie wewnątrz klasy; protected - składowe klasy, do których dostęp jest z wewnątrz klasy oraz wewnątrz klas dziedziczących. public - składowe klasy do których dostęp można uzyskać w dowolnym miejscu aplikacji. Ten post edytował mike_mech 3.04.2007, 21:19:43 |
|
|
|
Jabol OOP. Interfejsy oraz klasy abstrakcyjne 3.04.2007, 18:03:01
Athlan Moim zdaniem źle podszedłeś do sprawy. Zły przykła... 3.04.2007, 18:26:15 
enigma Cytat(Athlan @ 3.04.2007, 19:26:15 ) ... 1.05.2007, 16:46:49
LBO Cytat(Jabol @ 3.04.2007, 19:03:01 ) R... 3.04.2007, 18:28:04
Jabol Dzieki za wyjaśnienie, rozumiem w czym rzecz.
Czy... 3.04.2007, 18:53:14
Sedziwoj Tylko w opisie pojawił się pewien bug, bo bułki/ch... 3.04.2007, 19:06:32
Athlan CytatTylko w opisie pojawił się pewien bug, bo buł... 3.04.2007, 19:12:29
Sedziwoj To w sumie pokazuje jeszcze jedno, gdyż pieczywo j... 3.04.2007, 19:31:55
Zeman Ja się jeszcze dorzucę.
Interfejsy w językach skr... 3.04.2007, 19:58:25 
Sedziwoj Cytat(Zeman @ 3.04.2007, 20:58:25 ) .... 3.04.2007, 20:06:40
Zeman Cytat(Sedziwoj @ 3.04.2007, 21:06:40 ... 3.04.2007, 20:11:34 
Sedziwoj Ale przy protected w klasie dziedziczącej jest wid... 3.04.2007, 20:25:43
Turgon W mojej skromnej opinii, klasy abstrakcyjne, final... 4.04.2007, 12:50:56
dr_bonzo Cytatkurde czegoś tu nie rozumiem, no po co tak ro... 1.05.2007, 19:03:22
Sedziwoj Tu po prostu Rodzic powinien implementować Obrabia... 2.05.2007, 11:30:45
enigma Cytat(dr_bonzo @ 1.05.2007, 20:03:22 ... 13.05.2007, 09:54:49
menic Ale interfejsy sa bardzo proste do zrozumienia. St... 13.05.2007, 10:12:54
Cysiaczek Interfejsy to dla mnie głównie nowe typy, któ... 13.05.2007, 10:27:07
Sedziwoj menic stosowane są takie przykłady, aby każdy czyt... 13.05.2007, 11:42:17
Turgon Cysiaczek, a jakże dobry i prosty przykład. Tutaj ... 15.05.2007, 18:12:19
splatch Troszkę inny przykład ...
[PHP] pobierz,... 22.05.2007, 14:13:41
LBO JA bym się przyczepił do jacka, bo:
[PHP] pobierz,... 22.05.2007, 15:23:35
DeyV Korzystanie z interfejsów pokazuje swoje zalety w ... 24.05.2007, 09:34:11
vegelus Przepraszam, że odgrzewam temat. Chciałbym poruszy... 7.01.2008, 02:29:15
mike Jest do tego gotowy operator: instanceof 7.01.2008, 08:33:07
Virti A ja, jeśli można, chciałbym prosić o wytłumaczeni... 7.01.2008, 19:11:07
Whisller @Virti
Aby ułatwić sobie implementację Mały przyk... 8.01.2008, 08:04:55
Virti Ok, czyli rozumiem, że abstrakcja dostarcza funkcj... 8.01.2008, 18:35:14
domis86 @virti: żeby wymusic dziedziczenie po tej klase. K... 8.01.2008, 19:38:08
Sedziwoj @vegelus
Wyjaśnij mi czym się różni "brzdek... 9.01.2008, 11:58:07
Cysiaczek Ja się zawsze staram robić klasy abstrakcyjne. Naz... 9.01.2008, 12:41:11
-=Peter=- Witam, może powinienem założyć nowy temat, ale wol... 1.02.2008, 21:28:08
Sajrox Wracająć do tematu to jak dobrze zrozumi... 2.02.2008, 19:36:10
-=Peter=- Interfejsy nie tylko wymuszają istnienie danych me... 2.02.2008, 19:55:00 ![]() ![]() |
|
Aktualny czas: 25.12.2025 - 16:24 |