Új hozzászólás Aktív témák

  • opr

    nagyúr

    válasz s1999xx #12692 üzenetére

    SRP - Single Responsibility Principle, a neve kb elmagyarazza.
    A peldad amugy jo, csak az felejted el, hogy minden classnak lehetnek memberjei, amik szinten lehetnek classok.
    Mondok egy masik peldat, hogy ertheto legyen.
    Ha irsz egy osztalyt, ami primszamokkal dolgozik, mondjuk ugy, hogy vannak fuggvenyei, amik primeket keresnek, vagy megmondjak az adott primek szamat egy adott intervallumon belul, vagy ikerprimeket keresnek vagy akarmi, akkor se az a class neve, hogy "HasAtLeastAnArrayAndSomeIntegersByTheWayHasItsOwnThreadAlsoTakesParameters", hanem hogy mittudomen PrimeCalculator vagy akarmi.

    Mondjuk mashogy: Az osztaly nevebol azt kell tudni, hogy mit csinal, es az OOP szepsege, hogy pont leszarod, hogy hogyan. Teged az erdekel, hogy mit csinal, es ehhez mire van szuksege. Ezt tartalmazza a signature.(esetleg erdemes kicsit kesobb meg megnezni, mi az, hogy design by contract)

    Nezzuk a peldadat:
    Auto motorja. Mit csinal? Mozgatja az autot. Ha Te egy autot veszel, es feltetelezzuk, hogy nem vagy szaki, akkor nem az fog erdekelni, hogy az auto motorjaban hany darab alkatresz van, milyen muszaki kovetelmenyekkel, mert pont leszarod.
    Az auto mozgatasa szempontjabol az erdekel, hogy milyen tipusu uzemanyagot fogyaszt es milyen "eroben" van. Amikor az autot aruljak se azt irjak ra, hogy motorter tartalma: szivattyuk (4db), uzemanyagcsovek(4m), szelepek(16), stb stb stb, hanem hogy 2.0 benzin es kesz. (Sot, ujabban meg ezt sem, csak kap valami fantazianevet, pl KJM16 -> 1.6os KurvaJoMotor.)
    Peldankban a motor classnak amit felsoroltunk a memberjei. Aki inicializalja a motor classt, es utana hivogatja a "lefetyeljenek a paripak!" fuggvenyt (indit - tapossa a gazt), az pont leszarja, hogy kozben milyen szelep allasa micsoda meg stb.
    Aki irja a motor osztalyt, azt mar erdekli, de azt se annyira melyen, ot az erdekli, hogy letezik-e olyan "benzinpumpa" osztaly, ami megfelel az elvarasainak. Aki meg a benzinpumpat tervezi, leszarja, hogyan gyartjak a csapagyat, az erdekli, hogy van-e olyan csapagy, ami megfelel a kovetelmenyeinek, es igy tovabb, egeszen addig, amig az igazan low level szintig el nem jutunk, ami pedig esetunkben a banyaszat. De neked, mint a motor osztaly felhasznalojanak hala egnek nem kell tudnod, hogy melyik alkatreszhez hol banyasztak micsodat, kulonben soha nem keszulne el semmi.

    Konkluzio: A single responsibility mindig a hivo/felhasznalo kontextusabol ertelmezendo. nem azt jelenti, hogy az osztaly nem csinalhat csak egy dolgot a hatterben, hanem hogy a felhasznalo szempontjabol (aki hasznalni fogja) egy feladatra egy osztalyt hasznalunk, es egy osztaly egy feladatot lat el.

    Remelem sikerult erthetoen eltulmagyaraznom. :DDD

Új hozzászólás Aktív témák

Hirdetés