OOP Alapok

  • View
    15

  • Download
    0

Embed Size (px)

Transcript

  • OOP alapok

    By nja

  • Egysgbezrs

    Egy programozsi nyelv Objektum Orientlt Programozsi nyelv, ha megvalsthat benne hrom alapelv: egysgbezrs,

    rklds sokalaksg Az egysgezrs azt jelli, hogy a progra szvege is egyrtele

    jellve legyen, hogy egy objektumosztlyt milyen adatok s milyen veletek jellezik. Az adatok az egyedekl eltrek lehetek ide autak s-ms a redsza, de a veletek egegyezek. A veletek a feti adatokra hivatkoznak, azokat hasznljk fel a megvalstsukban, illetve azokat mdostjk (pl. TeleTankol velet autk eset a benzinMennyiseg adatot mdostja). Az adatokat ee az esete ezk-nek vagy adattagok-nak szoktk evezi. A veletek pedig eljrsok s fggvyek forja va egvalstva, de ee a kryezete kzs ve etdus-nak hvjuk ket.

  • rklds Egy programozsi nyelv Objektum Orientlt Programozsi nyelv, ha

    megvalsthat benne hrom alapelv: egysgbezrs,

    rklds sokalaksg

    Az rklds alapelv azt odja ki, hogy ha ksze vagyuk egy osztllyal egadtuk aak adatait s veleteit, akkor kpesek legynk egy j osztlyt ltrehozni oly mdon, hogy ezen, mr ksz osztlybl kiinduljon. Ekkor a sodik szit osztly idulskor e res, hae ris redelkezik a fet defiilt adatokkal s veletekkel. Ekkor r sak a vtst s dostst kell leprograozi. A kiidul osztlyt s osztly-nak, a tovbbfejleszett osztlyt gyermek osztly-nak, vagy szrmaztatott osztly-nak nevezzk.

  • Sokalaksg (polimorfizmus)

    Egy programozsi nyelv Objektum Orientlt Programozsi nyelv, ha megvalsthat benne hrom alapelv: egysgbezrs, rklds sokalaksg Az rklds alapelve szerit a szraztatott osztlya lehetsg va a r eglv, rklt veletek jrarsra dostsra. A sokalaksg szerit azok a veleteket, elyek eze javtott veletekre plek ne

    ignyeljenek jrarst, hanem kpesek legyenek jrars nlkl is ezt az j verzit hasznlni. Ezt az alapelvet a legtbb programozsi nyelv a virtulis metdusokkal valstja meg.

  • OOP-t tmogat nyelvek

    Egy prograozsi yelv OOP togat, ha harmadik genercis, de lehet benne hagyomnyos (nem OOP) stlusban is programozni, de alkalmazhatk az OOP alapelvei is.

    Az ilyen programozsi nyelvek utlag lettek vtve, kiegsztve az OOP jellezkkel. Ilyen programozsi nyelvek pl: C++, Delphi.

  • Tisztn OOP nyelvek

    Egy prograozsi yelv tisztn OOP jelleg, ha harmadik genercis, de csak OOP szemlettel lehet benne programozni.

    Az ilyen programozsi nyelvekben nem lehet egyszer eljrsokat s fggvyeket ksztei, minden ilyet el kell helyezni valamilyen osztlyban (metduss vlik). Nem lehet vltozkat megosztani fggvnyek kztt, azokat is osztlyok elseje kell helyezi ezv vlik. Ilyen programozsi nyelvek pl: C#, Java.

  • Osztly adattagjai

    Az osztly kt f rszl ll: adatokl s veletekl. Az adatokat ezke adattagok troljuk. class TKor { public int x; public int y; public int sugar; } A fenti osztly hrom adattagot tartalmaz. Minden adattagak va eve, s tpusa. Az klz pldyok eset az adattagok rtke klz lehet, hisze jele plda esetn minden kr ms-ms koordintra kerlhet akr, s a sugara is klz lehet.

  • Osztly adatai

    Az osztly kt f rszl ll: adatokl s veletekl. Az adatokat ezke adattagok) troljuk. class TKor { public int x; public int y; public int sugar; } Az osztly ide esete felels, hogy a pldyai garatlta helyese kdjeek. Eek egfelele e egegedhet az, hogy az adattagok e tartalmazzanak rtket, vagy hibs rtkeket tartalmazzanak. Hogy a pldny mr kezdetben rtkekkel rendelkezzen, az adattagoknak kezdrtkads sorn be lehet lltani az alaprtelmezett rtkeket: class TKor { public int x =0; public int y = 0; public int sugar =0; }

  • Vdelmi szintek

    Az osztly ide esete felels, hogy a pldyai garatlta helyese kdjeek. Ne egegedhet az, hogy az adattagok hibs rtkeket tartalmazzanak. Aeyie a progra valaely kls rsze direkt do hozz tud frni az adattagokhoz, akkor azokba hibs rtkeket helyezhet el. Ezek egzavarhatjk az osztly veletek kdst. Pl., ha egy repl esete a agassgot egatv rtkre is e lehet lltai, akkor a leszlls velet eslyese hit fog okozi. Az osztly a szra kritikus adattagokat vdheti a klvilg ell a vdelmi szintek hasznlatval. A vdeli szitek a ezk hatskrt dostjk. Segtsgkkel olya hatskr llthat e, elye ell a ezk olvashatk s rhatk, de azo kvl a ezk e hozzfrhetek. Ha e hozzfrhetek, akkor his rtket se tudak elhelyezi ek.

  • PUBLIC

    Az osztly a szra kritikus adattagokat vdheti a klvilg ell a vdeli szintek hasznlatval. Hrofajta alapvet vdeli szit va: private protected public A public a legegeged vdeli szit. Egy public adattag hatskre

    kiterjed a teljes program szvegre. Ms osztlyokbl is meghivatkozhat, rtke brmikor kiolvashat s megvltoztathat. Pl.: class TTelefon { public string TulajdonosNeve; private int PIN_Kod; // private, mert kirtuk int PUK_Kod; // private, mert nem rtunk semmit }

  • PROTECTED

    Az osztly a szra kritikus adattagokat vdheti a klvilg ell a vdeli szitek haszlatval. Hrofajta alapvet vdeli szit va: private protected public A protected eggyel gyengtett vdelmi szint. Egy protected adattag hatskre kiterjed az t tartalaz osztlyra, s aak ide szraztatott

    osztlyra. Pl.: class TTelefon { public string TulajdonosNeve; protected int PIN_Kod; protected int PUK_Kod;0 public bool PIN_Kod_Csere(int regiKod, int ujKod) { if (regiKod==PIN_Kod) { PIN_Kod = ujKod; return true; } return false; } } class TJoTelefon:TTelefon // szrmaztats { public int PIN_Lekerdez( int pukKod ) { if (pukKod == PUK_Kod ) return PIN_Kod; return -1; } } n -1; } }

  • PRIVATE

    Az osztly a szra kritikus adattagokat vdheti a klvilg ell a vdeli szitek haszlatval. Hrofajta alapvet vdeli szit va: private protected

    public A private a legszorosabb vdelmi szint. Egy private adattag hatskre e terjed tl az t tartalaz osztlyo. Ezrt sak az osztlya defiilt etdusok trzse lehet rjuk hivatkozi, s lehet ket felhaszli. Ez egye az alaprtelezett vdeli szit is. Vagyis aeyie e aduk eg vdeli szitet egy ezl,

    gy automatikusan a private lesz az: class TTelefon { public string TulajdonosNeve; private int PIN_Kod; // private, mert kirtuk int PUK_Kod; // private, mert nem rtunk semmit public bool PIN_Kod_Csere(int regiKod, int ujKod) { if (regiKod==PIN_Kod) { PIN_Kod = ujKod; return true; } return false; } }

  • METDUS

    Az osztly tartalazza a rajta vgezhet veletek kdjt is. A veletek eljrsok s fggvnyek formjban vannak megvalstva, s kzs sszefoglal nevk metdus. A metdusoknak van nevk, paramterlistjuk, utaststrzsk. A trzskben felhasznlhatjk a paramtereiket, de hivatkozhatnak az osztly adattagjaira is. Pl.: class TTelefon { protected string sajatTelefonSzam = String.Empty; protected int osszEgyseg = 0; public void EgyenlegFeltoltes( int egyseg ) { osszEgyseg = osszEgyseg + egyseg; SmsKuld(sajatTelefonSzam, Jelelegi egyeleged {0} egyseg,osszEgyseg ); } }

  • METDUS S ME) A etdusok elseje az osztly sajt ezit direkt do el lehet ri, s haszli. Mivel a

    metdus szintn az osztly befoglal blokkjnak belsejben kerl deklarlsra, gy a legszigorbb vdeli szit private ezkhz is direkt hozzfrhet, azokat rhatja s olvashatja. Ezrt az osztly etdusaiak a legagyo a felelssge. Egy hisa egrt etduso keresztl his viselkedsre vehet r az osztly pldyai: Pl.: class TTelefon { protected string sajatTelefonSzam = String.Empty; protected int osszEgyseg = 0; public void EgyenlegFeltoltes( int egyseg ) { osszEgyseg = osszEgyseg + egyseg; } } Az EgyenlegFeltoltes() metdus pldul negatv szmmal is meghvhat, mivel int tpus adatot fogad el. Negatv szm esetn pedig a feltlts cskkenti az egysgek szmt, nem nveli. public void EgyenlegFeltoltes( int egyseg ) { if (egyseg

  • METDUS HVSA METDUSBL

    Egy osztly tbb metdust is tartalmazhat. Egyik metdusbl termszetesen van lehetsg sik etdust eghvi a szoksos do: class TTelefon { protected string sajatTelefonSzam = String.Empty; protected int osszEgyseg = 0; public void EgyenlegFeltoltes( int egyseg ) { osszEgyseg = osszEgyseg + egyseg; string smsSzoveg = String.FormatJelelegi egyeleged {0} egyseg,osszEgyseg ) SmsKuld(sajatTelefonSzam, smsSzoveg ); } public void SmsKuld( string telefonszam, string szoveg ) { ... } }

  • Metdusok tlterhelse

    Egy osztly tbb metdust is tartalmazhat. Ugyanazon metdusnvvel tbb metdus is szerepelhet, amennyiben azok paraterezse klz. Ez az overloading tulajdosga a nyelvnek. Egy tlterhelst egeged yelve a etdushvs, az aktulis paramterlista illesztse dnt a metdus kivlasztsrl. Ha ez nem egyrtel eredyt ad, akkor fordtsi hit kapuk. Ha is illeszked etdus, akkor is hit kapuk. class TTelefon { public bool tarcsaz( int telefonszam { } public bool tarcsaz( int korzet, int telefonszam { } public bool tarcsaz( string telefonTulajdonos { } }

  • KONSTRUKTOR MEGADSA

    A konstruktor neve kttt, meg kell egyezzen az osztly nevvel. Egy konstruktornak nem lehet visszatrsi rtk tpusa (mg void sem). Lehetnek paramterei. Mivel a C# overloading -ot tmogat nyelv, gy br minden konstruktornak ugyanaz a neve, de mivel ms-ms a paraterezse, ezrt akr t kostruktor is kszthet. Pl: class TTelefon { public TTelefon { } public TTelefon(string tulajNev { } public TTelefon(string tulajNev, bool elofizeteses { } public TTelefon(int induloEgyenleg { } }

  • KONSTRUKTOR FELADATAI

    A konstruktor egy specilis feladat metdus. Feladata elkszteni egy pldnyt az adott osztlybl, azt alaphelyzetbe lltani, hogy azonnal hasznlhat lehessen. A konstruktor feladatai: az j pldy eziek alaphelyzete lltsa.

    Ezt valja agyo gyakra a ezk ell rt kezdrtkadsval vgezzk el. Ugyaakkor a kostruktorak paraterei lehetek, gy elkpzelhet, hogy a kezdrtkeket a paraterek alapj lltja e a kostruktor.

    Valamint a kezdrtkads sor haszlt kifejezsek sak korltozott kpessgek (nem hasznlhatak benne pl. fggvnyhvsok). A konstruktor trzsben azonban ezek r haszlhatak, gy sztott kezdrtkek is ellthatak amennyiben a paramterekben meghatrozott rtkek ellentmondsosak, a k