Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 4 Dołączył: 6.09.2007 Ostrzeżenie: (0%)
|
Hej,
Ostatnio zacząłem przepisywać skrypt na OOP i mam kilka funkcji (nie powiązanych ze sobą), które nie nadają się do standardowej klasy (gdzie tworzy się instancje obiektu) i tak sobie myslałem, czy byłoby prawidłowo jeślibym utworzył klasę (np. Tools czy Utilities) w której trzymałbym przydatne statyczne metody? Czyli stworzyłbym klasę, która nigdy nie będzie miała obiektu a będzie istniała tylko po to, żeby być kontenerem na statyczne metody. Coś na tej zasadzie:
I teraz mam pytanie do Was ... ma to jakiś sens? (IMG:style_emoticons/default/biggrin.gif) Jakie jest prawidłowe podejście? Czy funkcje powinny "luzem" w kodzie leżeć a ja nie powinienem za wszelką cenę opakowywać wszystkiego w OOP? Pozdrawiam MD Ten post edytował MiChaSSs 28.11.2010, 22:45:51 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%)
|
Dokładnie jak kolega wyżej pisze. Twoje zastosowanie abstract w sumie działa, ale nie jest do końca zgodne z ideą OOP - abstract ma bardziej pełnić rolę interfejsu, tyle że "rozbudowanego" o część metod.
Dzięki temu można np. stworzyć kolekcje obiektów o jednolitym interfejsie i np. po nich potem iterować. Użycie klasy abstract w sposób jaki tutaj proponujesz jest niewłaściwe - mike podał ci eleganckie rozwiązanie zgodne z ideą OOP. |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 4 Dołączył: 6.09.2007 Ostrzeżenie: (0%)
|
Abstract służy do tego żeby nie można było bezpośrednio z tej klasy stworzyć instancji obiektu, a nie do tego żeby nie trzeba było mieć instancji obiektu, jak sama nazwa wskazuje określa to abstrakcyjny model, którego instancja fizyczna nie istnieje. Pozwala to natomiast tworzenie konkretnych instancji obiektów danego typu np: abstract class Animal {} class Dog extend Animal {} class Cat extend Animal {} && Dokładnie jak kolega wyżej pisze. Twoje zastosowanie abstract w sumie działa, ale nie jest do końca zgodne z ideą OOP - abstract ma bardziej pełnić rolę interfejsu, tyle że "rozbudowanego" o część metod. Dzięki temu można np. stworzyć kolekcje obiektów o jednolitym interfejsie i np. po nich potem iterować. Użycie klasy abstract w sposób jaki tutaj proponujesz jest niewłaściwe - mike podał ci eleganckie rozwiązanie zgodne z ideą OOP. Tak, ja tylko tłumaczyłem co miałem na myśli pisząc wcześniej o abstract (IMG:style_emoticons/default/winksmiley.jpg) Ale jak kolega mike zauważył po tym można dziedziczyć + konsekwencje tego, stąd pozostaje tylko to, co mike zaproponował wcześniej, pozdrawiam MD |
|
|
|
MiChaSSs [OOP] Klasa tylko z funkcjami statycznymi 28.11.2010, 22:45:07
skowron-line Helpery to klasy ze statycznymi metodami możesz zr... 28.11.2010, 22:49:07
Crozin Takie konstrukcje są pozbawione sensu z punktu wid... 28.11.2010, 23:02:49
MiChaSSs A istnieje jakis standard, który by definiował co ... 29.11.2010, 18:44:08
mike Cytat(skowron-line @ 28.11.2010, 22... 30.11.2010, 09:44:40 
skowron-line Cytat(mike @ 30.11.2010, 09:44:40 ) A... 30.11.2010, 10:02:49
marcio CytatTak mi się napisało, poza tym helpery nie mus... 30.11.2010, 12:35:10
Zyx Z funkcjami jest taki problem, że nie podlegają au... 30.11.2010, 22:58:02
aart3k Reasumując: biorąc pod uwagę ograniczenia PHP (wła... 1.12.2010, 12:43:34
Quadina Zgodzę się z użytkownikiem aart3k na prawie całej ... 1.12.2010, 13:56:09
Crozin Hmmm... faktycznie brak autoloadera to już poważna... 1.12.2010, 14:36:57
aart3k @Crozin: you missed the point, chodziło o klasę To... 1.12.2010, 15:27:22
athabus Ja mam cały zbiór klas pomocniczych. Nazwałem go C... 1.12.2010, 15:51:43
thek Może więc aart3k chodzi Ci o system helperów z Koh... 1.12.2010, 16:04:51
MiChaSSs Okej, czyli poprawiając mój pierwszy, aby upewnić ... 1.12.2010, 17:36:28
aart3k nie wiem czy z abstracta można wywoływać statyczne... 1.12.2010, 18:52:28 
mike Cytat(MiChaSSs @ 1.12.2010, 17:36:28 ... 1.12.2010, 21:18:08 
MiChaSSs Cytat(aart3k @ 1.12.2010, 18:52:28 ) ... 1.12.2010, 22:37:23 
manro Cytat(MiChaSSs @ 1.12.2010, 23:37:23 ... 2.12.2010, 16:55:45
smentek Cytat(MiChaSSs @ 2.12.2010, 19:23:28 ... 10.12.2010, 17:27:26
mike Cytat(smentek @ 10.12.2010, 17:27:26 ... 13.12.2010, 08:54:30 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 21:01 |