Szerintetek jól látom az osztálykezelést c++ban?
Adott egy négyzet alakú pálya, ami karaktereket tárol. A pálya mezőkből áll, melyek vagy üresek, vagy pénz, vagy gödör van rajtuk. Ezeket egy-egy karakter jelöli (üres az egy 'o', a pénz egy 'p', a gödör pedig 'g').
Úgy képzelem el, hogy létrehozok egy osztályt, ami egy mező tulajdonságait tárolja és ennek a tulajdonságait örökli a pénzes, gödrös mező is. A tábla osztály pedig a mezőt tartalmazza:
class mezo {
int sorKord, oszlopKord;
char alap = 'o';
};
class penz: public mezo{
char alap = 'p';
};
class godor: public mezo{
char alap = 'g';
};
class tabla{
mezo egymezo;
int meret;
};
Egyelőre ennyi adattagot vittem csak be. Arra vagyok kíváncsi, hogy jól gondolkozom-e az osztályok felépítését illetően?
Nem jól gondolod. Az osztály tipusát a viselkedése határozza meg (duck typing), nem pedig egy tipuskód, mint nálad az "alap" változód értéke. Alapvetően nagyjából igaz, hogy ha valaki tipuskódokat használ, vagy switch-case szerkezetet (kevés értelmes kivételt leszámítva), akkor még nem érti az oop-t.
"When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck". Szoval nem attól lesz kacsa, mert a lábán van egy gyűrű, amire rá van írva, hogy "kacsa".
Szoval ennyi kódból nem lehet eldönteni, hogy jól gondolod-e.
Kérdező:
"Arra vagyok kíváncsi, hogy jól gondolkozom-e az osztályok felépítését illetően?"
Igen, jól gondolkozol. Az oop lényege a kód ujrahasznosítás. Ezt még kicsit árnyalja az öröklés, a polimorfizmus. A hátránya, hogy erőforrás-igényes, sok memóriát fogyaszt, de ez ma már nem akkora gond, mint volt korábban.
Az előttem szóló nem tudom miről beszél, de lehet ő maga sem.
Tehát lehetséges, hogy a pénznek és a gödörnek is külön osztály kéne?
A tábla természetesen egy dinamikus tömb lesz.
Nemtudom, hogy egy mezönek, gödörnek, pénznek milyen viselkedése lehetne.
Ahogy én értelmezem, nem kell külön osztály.
Az ősosztályod tulajdonságait változtatod meg csak. Ehhez nem kell másik osztály.
Az osztály lényege, hogy mondjuk faragsz figurákat fából és annak megfelelő szinre fested, amilyet a megrendelő kér.
Ez esetben az osztály lesz a figura, annak minden tulajdonságával, ez írja le az osztályt és lesz egy olyan tulajdonsága, hogy szín, ami publikus, tehát bárki (a megrendelő) megváltoztathatja.
Az oszályok lényege, hogy bonyolult struktúrák, amelyek esélyesek arra, hogy többször igénybe legyenek véve - példányosítva legyenek - a program futása során.
Szerintem ennyiert kar osztalyokat letrehozni.
Ha csak 3 fele mezo van, eleg egy enum:
enum mezo { ures, penz, godor };
A tablanak pedig egy 2 dimenzios vektor, ami "mezoket" tartalmaz.
int **tabla;
(az enum az tulajdonkeppen egy int)
Persze lehet tovabbi opciokat bevezetni, de tulbonyolitani felesleges.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!