Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 14.08.2010 Ostrzeżenie: (0%)
|
Witam, wiem że w tym dziale jest już świeży temat o stosowaniu OOP, jednak chciałbym aby ktoś zweryfikował mój kod czy to co robię jest zgodne z założeniem OOP.
Jest to przykładowy game framework, dla treningu. Mam w nim 4 klasy User, UserManager, Character, CharacterManager, oto one :
Index.php
Pytania: 1. Głowne - czy ten kod jest zgodny z OOP ? 2. Czy metoda Logon() powinna być w klasie UserManager czy w osobnej np. Login 3. Czy tworzenie obiektu User a potem przekazywanie go do UserManager w celu obróbki itp jest prawidłowe ? Czy w klasie UserManager powinna być metoda tworząca obiekt User ? (to tyczy się również klas Character i CharacterManager) Proszę o wytknięcie mi błedów i sposobów w jaki mogę je poprawić (IMG:style_emoticons/default/wink.gif) |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 11 Dołączył: 7.04.2003 Ostrzeżenie: (10%)
|
Cytat "W którymś tematcie o OOP było napisane, że całkiem rozsądne jest robienie takich kontenerów-obiektów zawierających dane. Są tam zmienne, settery i gettery. Czy jednak to jest zło i należy to zmienić ?" Ale taki obiekt który ma tylko dane + gettery i settery jest jak lodówka która nie mrozi albo auto które nie jeździ. Niewiele różni się od tablicy albo zbioru luźnych zmiennych. Zależy czym ma być ten obiekt.Tu są dwie strony medalu: 1. Getery i setery są konwencją która pozwala na pewnego rodzaju "rozpoznawalny" interfejs dostępu do danych obiektu. Dzięki czemu łatwiej zaprzęgnąć do pracy zewnętrzną bibliotekę tak aby współdziałała z twoimi obiektami. Np chcesz wprowadzić zapis obiektów do bazy danych. Zamiast pisać własny kod który to obsługuje korzystasz z Doctrine2. Albo chcesz przeprowadzać inicjalizację przez kontener IoC. Jakikolwiek nie był by to mechanizm musi jakoś obsługiwać twoje obiekty, zrobi to dzięki getterom i setterom które umieścisz w swoim obiekcie. (To nie musi być zewnętrzny system to moze byc system który sam chcesz napisac) I to jest dobre prawidłowe wykorzystanie get i set. 2. Getery i setery mogą też stać się 'protezami' dla programisty który nie potrafi zaplanować dobrze kodu i zamiast prosić obiekt aby ten coś dla niego wykonał co chwile używa get i set aby cos z obiektu wyciągnąć albo cos do niego wrzucic. Czyli zamiast
piszesz
I to jest złe stosowanie get i set. Jezeli wprowadzasz get i set do swojego systemu nie wiedząc DOKLADNIE do czego jest ci to potrzebne to już zrobiłeś błąd. Ten post edytował smentek 30.08.2011, 20:31:53 |
|
|
|
Fanatyko OOP czy dobrze go stosuję ? 27.08.2011, 20:16:00
smentek Cytat1. Głowne - czy ten kod jest zgodny z OOP ?
... 27.08.2011, 21:23:05
Fanatyko No właśnie też złapałem się na tym, że rzucam nazw... 28.08.2011, 06:10:21
rahul mysle ze mozesz sobie poczytac moj post, zadawalem... 28.08.2011, 09:32:09
elektrrrus Prawdopodobnie całkiem przez przypadek, ale zrobił... 28.08.2011, 09:46:31
Spawnm Za łączenie z pdo powinna odpowiadać klasa db a ni... 28.08.2011, 09:51:15
smentek CytatPrawdę mówiąc nie wiem czy złapałem o co chod... 28.08.2011, 10:01:51
Fanatyko Cytatmysle ze mozesz sobie poczytac moj post, zada... 28.08.2011, 11:47:00
melkorm jeżeli masz dane w tablicy o takich samych nazwach... 28.08.2011, 12:04:58
smentek CytatZakładając, że chcę napisać klasę do logowani... 28.08.2011, 12:42:34
Fanatyko CytatIm mniejsze czyli bardziej rozdrobnione obiek... 29.08.2011, 19:31:13
Fantazyn Dla mnie kod wygląda całkiem znośnie, ale:
1. Unik... 29.08.2011, 20:12:22
banditpanda class Database {
function __construct() ... 29.08.2011, 20:16:28
Fanatyko @Fantazyn
dzięki za odpowiedź, naprawdę mi się pr... 29.08.2011, 21:52:58
Fanatyko CytatI to jest złe stosowanie get i set. Jezeli wp... 30.08.2011, 21:11:51
daren88 Główny problem tej klasy na co już niektórzy zwróc... 3.09.2011, 21:20:21
CuteOne Mi nie podoba się jedna rzecz... zrobiłeś z klasy ... 4.09.2011, 12:22:55 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 02:30 |