Objektno programiranje v Javi 2024 - 21. marec PDF

Summary

Te opombe pokrivajo različne koncepte v objektno usmerjenem programiranju (OOP) v Javi, kot so izjeme, obvladovanje izjem, polimorfizem in generični razredi.

Full Transcript

M. Heričko Tipi izjem Napake (Error) za Java VM in HW probleme kot so InternalError, OutOfMemoryError ipd., teh napak običajno ne prožimo, niti lovimo RT izjeme (RuntimeException) tipično programske napake, ki običajno kažejo na “hrošče” npr. indeks po...

M. Heričko Tipi izjem Napake (Error) za Java VM in HW probleme kot so InternalError, OutOfMemoryError ipd., teh napak običajno ne prožimo, niti lovimo RT izjeme (RuntimeException) tipično programske napake, ki običajno kažejo na “hrošče” npr. indeks polja izven... Izjeme (Exception) so “pričakovane” oz. najavljene izjeme oz. morebitne težave, ki jih pričakujemo, t.i. checked exception Objektno programiranje v Javi 2024 – 21. 03., str. 1 M. Heričko Obvladovanje izjem try - definira blok kode, za katerega želimo obvladovati izjeme catch - definira izjemo, ki jo želimo obvladati in definira blok kode, ki za to poskrbi finally - definira blok kode, ki se izvrši ne glede na to, ali se je izjema pojavila ali ne Princip obravnave izjem try { // V splošnem se ta del programa izvede normalno. // Lahko pa pride do izjeme ali prekinitve s stavkom break, continue ali return. } catch (TipIzjeme1 e1) { // Obravnava izjeme tipa TipIzjeme1 ali podrazreda tega tipa } catch (TipIzjeme2 e2) { // Obravnava izjeme tipa TipIzjeme2 ali podrazreda tega tipa } finally { // Koda se izvede vsakič, ko zapustimo del označen s try ne glede na način. // Ločimo več vrst zaključitev izvajanja: // normalno, ko dosežemo konec bloka // z izjemo, ki smo jo ulovili s stavkom catch // z izjemo, ki je nismo ujeli // zaradi stavka break, continue ali return } // vsak try ima vsaj en catch blok ali finally blok, razen try-with-resources Objektno programiranje v Javi 2024 – 21. 03., str. 2 M. Heričko Proženje izjeme ko se pojavi izjema znotraj metode oz. bloka stavkov, se izvajanje bloka/ metode prekine, kreira ustrezni objekt (exception object), ki vsebuje informacijo o izjemi, vključno s tipom in stanjem (npr. mesto izvajanja) programa, ko je izjema nastopila. Izjeme throwing handling ko se pojavi izjema, metoda kreira objekt izjemo in ga preda RunTime sistemu objekt izjema vsebuje informacije o izjemi, tipu in stanju programa ob pojavu izjeme RT sistem je odgovoren, da najde kodo, ki bo izjemo obdelala sledenje skladu (verigi) klicev če ne najde, se izvajanje RT in posledično Java programa zaključi Objektno programiranje v Javi 2024 – 21. 03., str. 3 M. Heričko Veriga klicev (dinamična) info na skladu klicev Razlika med throw in throws throw throws označuje del, ki sproži izjemo – za metodo označi možne izjeme sintaksa: throw izraz – ne vključuje napak (Error) izraz je primerek razreda Throwable ali njegovega podrazreda Objektno programiranje v Javi 2024 – 21. 03., str. 4 M. Heričko throws vs. throw Načeloma lahko obravnavam več izjem naenkrat (ni pa pametno) try {... } catch (Exception e) {...} raje: try {... } catch (IOException e1) {...} catch (ArrayIndexOutOfBounds e2) {...} hitro namreč “obvladamo” še kaj drugega Objektno programiranje v Javi 2024 – 21. 03., str. 5 M. Heričko Catch z več izjemami Tip ex je najbolj specializiran skupen nadtip navedenih izjem! try-with-resources try (BufferedReader br = new BufferedReader(new FileReader(“a.txt”))) { } finally { } za vire, ki implementirajo java.io.AutoCloseable(tudi vsi java.io.Closeable) Objektno programiranje v Javi 2024 – 21. 03., str. 6 M. Heričko OO koncepti objekt (“object”) ograjevanje (“encapsulation”) razred (“class”) vmesnik (“interface”) dedovanje (“inheritance”) delegiranje (“delegation”) komunikacija s sporočili polimorfizem (“polymorphism”) Objektno programiranje v Javi 2024 – 21. 03., str. 7 M. Heričko Polimorfizem Vključitveni (inclusion polymorphism) Operacijski (operation polymorphism) Parametrični (parametric) Run-time polymorphism vs. compile-time polymorphism Vključitveni polimorfizem Neka spremenljivka (referenca) lahko predstavlja objekte različnih razredov: iz iste razredne hierarhije so primerki razredov, ki implementirajo isti vmesnik Dejanska metoda, ki se izvede, se določi šele v času izvajanja! INalozba xx; Instrument ins; xx = new Nepremicnina (); ins = new Instrument(); xx = new VarcevalniRacun(…); ins = new Kitara(); xx = new NavadnaDelnica(); ins = new ElektricnaKitara(); xx.vrniDonosnost(); ins.oglasiSe (); xx.vrniTveganje (); xx.vrniTrenutnoVrednost (); Objektno programiranje v Javi 2024 – 21. 03., str. 8 M. Heričko Vmesniki, razredi IInvesticija prva = new Nepremicnina (); IInvesticija druga = new VarcevalniRacun(); IInvesticija tretja = new KriptoValuta(); Smrtonosen x = new Sosed(); Fakinski joze = new Sosed(); x = new Zmajcek(); Operacijski polimorfizem "overloading" isto ime metode, različni seznami argumentov metode se ne morejo razlikovati glede na rezultat, ki ga vračajo tipično – več konstruktorjev Objektno programiranje v Javi 2024 – 21. 03., str. 9 M. Heričko Parametrični polimorfizem Generiki (generics), parametrizirani razredi Objektno programiranje v Javi 2024 – 21. 03., str. 10 M. Heričko Dodatno lahko podamo omejitev glede tipa Objektno programiranje v Javi 2024 – 21. 03., str. 11 M. Heričko OO koncepti objekt (“object”) ograjevanje (“encapsulation”) razred (“class”) vmesnik (“interface”) dedovanje (“inheritance”) delegiranje (“delegation”) komunikacija s sporočili polimorfizem (“polymorphism”) Delegiranje Objekt za izvedbo operacije zadolži drug objekt (preloži odgovornost) Dogodkovni modeli z delegiranjem Delegiranje je pogosto primernejši koncept kot dedovanje Objektno programiranje v Javi 2024 – 21. 03., str. 12 M. Heričko Točka -x Konceptualna -y + postaviKoordinate() pravilnost + premakni() Preberimo!!! Krog je točka Krog Valj je krog -r “is-a” + nariši() + izračunajPloščino() Števnost (kardinalnost) 1:1 Valj -h + izračunajPloščino() Pravilneje z delegiranjem class Krog { private Tocka sredisce; … public double izracunajPloscino() {….} … } class Valj { private Krog osnovnaPloskev; … public double izracunajProstornino() { return visina * osnovnaPloskev.izracunajPloscino(); } } Objektno programiranje v Javi 2024 – 21. 03., str. 13 M. Heričko Primer Seznam +prvi() +zadnji() +dodaj() Sklad Seznam +odst rani() -podat ki: Seznam +prvi() +push() +zadnji() +pop() +dodaj() +odst rani() Sklad +push() +pop() PRENOS ARGUMENTOV Objektno programiranje v Javi 2024 – 21. 03., str. 14 M. Heričko Podajanje argumentov v primeru osnovnih podatkovnih tipov se argumenti podajajo po vrednosti posledično se vsi argumenti kopirajo oz. imamo kopijo vrednosti objekti se podajajo po referenci PAZI: prenese se kopija reference po vrednosti (by value) Osnovni tipi po vrednosti Objektno programiranje v Javi 2024 – 21. 03., str. 15 M. Heričko Objekti – reference po vrednosti Objektno programiranje v Javi 2024 – 21. 03., str. 16

Use Quizgecko on...
Browser
Browser