Hirdetés

Keresés

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

  • opr

    nagyúr

    LOGOUT blog

    válasz bandi0000 #11413 üzenetére

    Húha, itt tényleg nagy a kavar. Elképzelni nem tudom, milyen maszlag magyarázatot sikerült adniuk az egyetemen. :(

    Szóval, nem OOB, hanem OOP (Object Oriented Programming).

    Nagyon leegyszerűsítem az érthetőség kedvéért a dolgot, szóval a kollegák légyszi ne gyilkoljanak halomra. :)
    Az egésznek az a lényege, hogy:
    - Leosztod a programod kicsi, logikus összetevőkre/részekre. Egy ilyen "rész" csak egy feladatot lát el. Na, ez az osztály. Az osztály neve Qrvafontos, mert ami a neve, az a feladata. Ezért van az, hogyha van olyan osztály, aminek mondjuk az a neve, hogy HttpConnector, erre file-okat nyitogat, akkor aki írta, annak a fejét lágyan, szeretetteljesen illik integrálni az asztallapba.
    - Innentől kezdve a program átlátható, illetve minden osztályról tudod, hogy mit csinál. Ez a lényege az OOP-nek. Nem azt tudod, hogy HOGYAN csinál valamit. Azt tudod, hogy MIT csinál, és ehhez mire van szüksége.
    - Az objektum az egy példányosított osztály, nem kell túlmisztifikálni (tehát bármilyen osztály, amit használsz a kódban, azoknak minden példánya egy-egy objektum).

    És akkor itt jön be a képbe a public, private, protected. Ezek mind a külső szemlélő szempontjából egy adott osztályon belüli függvények/adattagok láthatóságát (elérhetőségét) szabályozzák.
    Mivel minden osztályról azt tudjuk, hogy mit csinál, de nem tudjuk (leszarjuk), hogy hogyan.
    Fentebbi példa esetén a HttpConnector osztályt mondjuk létrehozzuk, aztán van neki két publikus függvénye, egy connectTo(string const &cim), meg egy disconnect().

    Te ebből, mint ember, aki az osztályt használja, ennyit látsz. Nem látod, hogyan oldja meg a csatlakozást, nem látod, milyen adattagjai (változói) vannak, stb. És igazából, le is szarod, mert Te ezt csak használni szeretnéd.

    Tehát a példánkban az osztálynak kettő darab publikus függvénye van (C++ esetén konstruktor, destruktor kivételével), a connect meg a disconnect, és ki tudja mennyi private/protected.

    Az, hogy ezek között mi a különbség, legyen házi, innentől már nem nehéz. :P

    Header: C#-nál van header file? :Y Vagy itt már C++ról beszélünk? A header-t egyelőre fogd fel úgy, mint az a file, ami leírja, hogy néz ki a class, és tekints rá úgy, mint egy hatalmas előny, hogy van egy kicsike file-od, amiben benne van minden függvény, member, meg minden, így elég egy bármilyen osztályra vetni egy pillantást, és azonnal tudod, hogy mire számíthatsz tőle. :)
    Egyébként egy nagyon hasznos dolog, Én imádom, hogy van.
    Annyi még, hogy header-be kifejtést nem írunk, (inline kivételével, de azt most inkább hanyagold még), kézeltörés jár érte. Header-fileban definiálod a class-t, cpp file-ban kifejted.

    Ha van valami, amit nem írtam le/nem tiszta, kérdés jöhet.
    Kollegák: Ha valaki kiegészítené, az is jöhet, de lehetőleg vegyük figyelembe, hogy junior kollegához beszélünk, és olyankor a túl sok infónak általában az a vége, hogy semmi nem marad belőle/csak összezavarodik szegény. :K

    "Programozó vagyok. Ez azt jelenti, hogy amit leírok, megtörténik." :D “The only valid measurement of code quality is What-The-F**ks/Minute.” - Robert Martin

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

Hirdetés