[FreeBSD] memoria - regi gimp-gond

Nohl Attila Rajmund Attila.Nohl at eth.ericsson.se
2001. Jan. 15., H, 17:57:59 CET


On Mon, 15 Jan 2001, Aries wrote:

> On Thu, Jan 04, 2001 at 09:16:39PM +0100, Miklos Niedermayer wrote:
> > Hmm, kíváncsi volnék, te miben írnál egy ilyen méretű és ilyen jellegű
> > alkalmazást.
>
> En C-ben. Lehet, hogy bennem van a hiba, de soha nem ertettem, miert lehet
> nagysagrendekkel jobban programozni OO-an, mint strukturaltan.

ELTE progmat, harmadik felevben feleves beadando: ablakozo rendszer
(text-mode-ban). En Turbo Pascal-ban irtam a beadandot. Voltak olyan
adatstrukturaim, hogy Ablak rekord, meg Gomb rekord. Aztan ket honap
mulva mar olyan reszfeladatot kellett megcsinalni, hogy pl. a Gomb
megnyomasara tortenjen valami. Hogy csinal ilyet az ember?
A megoldas (strukturalt):
csinal egy LenyomtakEgyGombot fuggvenyt, ami elso parameterkent megkapja a
gombot, aztan a fuggvenyben van egy bazi nagy case, ami aszerint, hogy
melyik gombot nyomtak le, vegrehajt egy kodot.
B megoldas (objektum orientalt):
a Gomb rekord tipus kapott egy Lenyomtak mezot, ami procedure tipusu
volt. Megcsinaltam azt a fuggvenyt, ami a gomb lenyomasakor hajtodik
vegre, az adott gomb letrehozasakor a Lenyomtak mezonek ertekul adtam a
fuggvenyt, es amikor lenyomtak a gombot, a Lenyomtak mezoben tarolt
fuggvenyt inditottam el.
A masodik megoldas elonyei: jol elkulonul a funkcio, nem egy case-en
belul van elrejtve (_sokkal_ konnyebb karban tartani), nem is kell az
emlitett case-t megirni, jobban latszik a Gomb.Lenyomtak() hivason, hogy
itt a gombbal tortenik valami, mint a LenyomtakEgyGombot(Gomb).

Az egy felev alatt megirt, 6-7 fele widgetet tartalmazo rendszeren
nagyon kijott a masodik megoldas elonye (nem a tanar javasolta, igy
_sokkal_ jobb volt megirni). Egy igazi objektum orientalt nyelven meg
elegansabb lett volna (nem kulon kellett volna megirni a fuggvenyt,
hanem hanem a Gomb osztaly reszekent).

				Bye,NAR

U.i.: az OOP nem csodaszer, nem minden feladatra alkalmas, hanem
jellemzoen olyanra, amelyek letezo objektumokat modelleznek.
-- 
"Beware of bugs in the above code; I have only proved it correct, not
 tried it."




További információk a(z) BSD levelezőlistáról