PROGRAMIRANJE 2 TOMAŽ DOBRAVEC

Σχετικά έγγραφα
Funkcijske vrste. Matematika 2. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 2. april Gregor Dolinar Matematika 2

Odvod. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 5. december Gregor Dolinar Matematika 1

Zaporedja. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 22. oktober Gregor Dolinar Matematika 1

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 21. november Gregor Dolinar Matematika 1

Diferencialna enačba, v kateri nastopata neznana funkcija in njen odvod v prvi potenci

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 14. november Gregor Dolinar Matematika 1

KODE ZA ODKRIVANJE IN ODPRAVLJANJE NAPAK

Booleova algebra. Izjave in Booleove spremenljivke

Odvod. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 10. december Gregor Dolinar Matematika 1

Kotne in krožne funkcije

IZPIT IZ ANALIZE II Maribor,

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 12. november Gregor Dolinar Matematika 1

MATEMATIČNI IZRAZI V MAFIRA WIKIJU

Tretja vaja iz matematike 1

Integralni račun. Nedoločeni integral in integracijske metrode. 1. Izračunaj naslednje nedoločene integrale: (a) dx. (b) x 3 +3+x 2 dx, (c) (d)

*M * Osnovna in višja raven MATEMATIKA NAVODILA ZA OCENJEVANJE. Sobota, 4. junij 2011 SPOMLADANSKI IZPITNI ROK. Državni izpitni center

Zaporedja. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 15. oktober Gregor Dolinar Matematika 1

Kontrolne karte uporabljamo za sprotno spremljanje kakovosti izdelka, ki ga izdelujemo v proizvodnem procesu.

13. Jacobijeva metoda za računanje singularnega razcepa

NEPARAMETRIČNI TESTI. pregledovanje tabel hi-kvadrat test. as. dr. Nino RODE

SKUPNE PORAZDELITVE VEČ SLUČAJNIH SPREMENLJIVK

PONOVITEV SNOVI ZA 4. TEST

1. Έντυπα αιτήσεων αποζημίωσης Αξίωση αποζημίωσης Έντυπο Πίνακας μεταφράσεων των όρων του εντύπου...

Splošno o interpolaciji

Numerično reševanje. diferencialnih enačb II

Enačba, v kateri poleg neznane funkcije neodvisnih spremenljivk ter konstant nastopajo tudi njeni odvodi, se imenuje diferencialna enačba.

Matematika 1. Gregor Dolinar. 2. januar Fakulteta za elektrotehniko Univerza v Ljubljani. Gregor Dolinar Matematika 1

Programiranje v Javi. Viljan Mahnič. UNIVERZA V LJUBLJANI Fakulteta za računalništvo in informatiko

p 1 ENTROPIJSKI ZAKON

1. Definicijsko območje, zaloga vrednosti. 2. Naraščanje in padanje, ekstremi. 3. Ukrivljenost. 4. Trend na robu definicijskega območja

Delovna točka in napajalna vezja bipolarnih tranzistorjev

Osnove matematične analize 2016/17

matrike A = [a ij ] m,n αa 11 αa 12 αa 1n αa 21 αa 22 αa 2n αa m1 αa m2 αa mn se števanje po komponentah (matriki morata biti enakih dimenzij):

3.1 Reševanje nelinearnih sistemov

Matematika. Funkcije in enačbe

Statistična analiza. doc. dr. Mitja Kos, mag. farm. Katedra za socialno farmacijo Univerza v Ljubljani- Fakulteta za farmacijo

Reševanje sistema linearnih

Vaje iz MATEMATIKE 8. Odvod funkcije., pravimo, da je funkcija f odvedljiva v točki x 0 z odvodom. f (x f(x 0 + h) f(x 0 ) 0 ) := lim

Dragi polinom, kje so tvoje ničle?

Kotni funkciji sinus in kosinus

Εισαγωγή στον Προγ/μό Η/Υ

8. Diskretni LTI sistemi

DISKRETNA FOURIERJEVA TRANSFORMACIJA

Tabele termodinamskih lastnosti vode in vodne pare

Αντικειμενοστρεφής Προγραμματισμός

Definicija. definiramo skalarni produkt. x i y i. in razdaljo. d(x, y) = x y = < x y, x y > = n (x i y i ) 2. i=1. i=1

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods

1. Trikotniki hitrosti

Iterativno reševanje sistemov linearnih enačb. Numerične metode, sistemi linearnih enačb. Numerične metode FE, 2. december 2013

Βασικά Στοιχεία της Java

Αντικειµενοστραφής Προγραµµατισµός

CM707. GR Οδηγός χρήσης SLO Uporabniški priročnik CR Korisnički priručnik TR Kullanım Kılavuzu

V tem poglavju bomo vpeljali pojem determinante matrike, spoznali bomo njene lastnosti in nekaj metod za računanje determinant.

Algebraične strukture

Αντικειµενοστρεφής Προγραµµατισµός

Fazni diagram binarne tekočine

Η λέξη κλειδί this. Γαβαλάς Δαμιανός

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Βασικά Στοιχεία της Java

SEMINARSKA NALOGA Funkciji sin(x) in cos(x)

Državni izpitni center SPOMLADANSKI IZPITNI ROK *M * NAVODILA ZA OCENJEVANJE. Sreda, 3. junij 2015 SPLOŠNA MATURA

Podobnost matrik. Matematika II (FKKT Kemijsko inženirstvo) Diagonalizacija matrik

PODATKOVNI MODEL ENTITETA-RAZMERJE

Gimnazija Krˇsko. vektorji - naloge

IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f

Osnove elektrotehnike uvod

IZVODI ZADACI ( IV deo) Rešenje: Najpre ćemo logaritmovati ovu jednakost sa ln ( to beše prirodni logaritam za osnovu e) a zatim ćemo

Funkcije več spremenljivk

Matematika I (VS) Univerza v Ljubljani, FE. Melita Hajdinjak 2013/14. Pregled elementarnih funkcij. Potenčna funkcija. Korenska funkcija.

vezani ekstremi funkcij

osnovni koraki Matija Lokar in Srečo Uranič V 0.9 oktober 2008

Matematika vaja. Matematika FE, Ljubljana, Slovenija Fakulteta za Elektrotehniko 1000 Ljubljana, Tržaška 25, Slovenija

Transformator. Delovanje transformatorja I. Delovanje transformatorja II

1 Fibonaccijeva stevila

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

8. Navadne diferencialne enačbe

POROČILO 3.VAJA DOLOČANJE REZULTANTE SIL

Uporabna matematika za naravoslovce

PARCIJALNI IZVODI I DIFERENCIJALI. Sama definicija parcijalnog izvoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je,

(Διαφάνειες Νίκου Βιδάκη)

Navadne diferencialne enačbe

1. VAJA IZ TRDNOSTI. (linearna algebra - ponovitev, Kroneckerjev δ i j, permutacijski simbol e i jk )

IZVODI ZADACI (I deo)

Mεταβλητές (variables) και Σταθερές (constants)

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

Izpeljava Jensenove in Hölderjeve neenakosti ter neenakosti Minkowskega

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Univerza v Ljubljani Fakulteta za računalništvo in informatiko MATEMATIKA. Polona Oblak

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

Διδάσκων: Παναγιώτης Ανδρέου

11.5 Metoda karakteristik za hiperbolične PDE

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Προγραμματισμός Διαδικτύου

Poliedri Ines Pogačar 27. oktober 2009

cot x ni def. 3 1 KOTNE FUNKCIJE POLJUBNO VELIKEGA KOTA (A) Merske enote stopinja [ ] radian [rad] 1. Izrazi kot v radianih.

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12

II. LIMITA IN ZVEZNOST FUNKCIJ

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

( , 2. kolokvij)

Transcript:

UNIVERZA V LJUBLJANI Fakulteta za računalništvo in informatiko PROGRAMIRANJE 2 TOMAŽ DOBRAVEC Objektno programiranje

O OBJEKTNEM PROGRAMIRANJU l Osnova objektnega programiranja so OBJEKTI: program sestavlja množica samostojnih objektov, ki med seboj lahko sodelujejo. l Objekt združuje podatke in metode za delo z njimi. l Objekt izdelamo s pomočjo NAČRTA za izdelavo objektov določenega tipa (za vsak tip objektov obstaja drug načrt).

O OBJEKTNEM PROGRAMIRANJU l V objektno usmerjenem programskem jeziku se načrt imenuje RAZRED. l Na razred lahko gledamo kot na PREDLOGO (štampiljko) za izdelavo objektov. l Objekt je primerek (instanca) razreda. V programu imamo pogosto več primerkov istega razreda.

O OBJEKTNEM PROGRAMIRANJU Primer: z ukazoma ustvarimo dva objekta razreda String. l Vsi objekti razreda String poznajo (med drugim) tudi metodo charat(): l Pozor: za klic metode uporabljamo piko!

KARAKTERISTIKE OBJEKTOV l Osnovne karakteristike objektov so: stanje in obnašanje Stanje l Stanje objekta določajo njegovi atributi (spremenljivke). l Objekti istega razreda so lahko v različnih stanjih (različne vrednosti atributov).

OBNAŠANJE OBJEKTOV l Obnašanje objektov je določeno z metodami. l Objekti istega razreda se lahko različno obnašajo. l Obnašanje je odvisno od stanja, v katerem se objekt nahaja. l Če sta dva objekta istega razreda v istem stanju, se bosta praviloma enako obnašala.

PRIMER RAZREDA Naloga: Napiši razred za izdelavo dreves. l STANJA drevesa ime (v drevesnici je več dreves, vsako ima svoje "ime") starost (v letih) višina (odvisna od starosti: prva tri leta drevo zraste za en meter, potem vsako leto 20 cm) l OBNAŠANJE: vsako pomlad se starost poveča (za ena), spremeni se tudi višina (odvisno od starosti) drevo se zna narisati na zaslon (pozor: tega običajno drevesa ne počnejo J )

STANJE OBJEKTA (ATRIBUTI) l Stanje objekta je zajeto v atributih (angl. attributes, instance variables, fields) l Primer (razred Drevo): starost, visina, ime l Vsak objekt ima svoje atribute: objekt atributov ne deli z drugimi objekti, vsak objekt ima svoji kopijo posameznega atributa spreminjanje vrednosti atributa nekega objekta NE vpliva na vrednost istega atributa drugega objekta Prepričaj se, da imajo atributi starost in visina v različnih objektih različno vrednost.

STATIČNE SPREMENLJIVKE l Statične so tiste spremenljivke, ki jih najavimo z rezervirano besedo static. l Statične spremenljivke == spremenljivke razreda. l Vsi objekti nekega razreda imajo ISTO vrednost statičnih spremenljivk. l Če eden od objektov spremeni vrednost, se spremeni vsem objektom tega razreda! l Obstaja SAMO ena kopija spremenljivke za VSE objekte. l Statično spremenljivko lahko uporabljamo tudi, če nimamo nobenega objekta tega razreda!

STATIČNE SPREMENLJIVKE l Primer: če je ID statična spremenljivka razreda NekRazred, ne potrebujem objekta, da bi spremenil njeno vrednost. Namesto NA OBJEKTU NekRazred imeobjekta = new NekRazred(); imeobjekta.id = 5; lahko spremenljivko uporabim NA RAZREDU NekRazred.ID=5; Razredu Drevo dodaj statično spremenljivko ID, ki šteje, koliko dreves je bilo izdelanih.

OBNAŠANJE OBJEKTA l Obnašanje objekta narekujejo metode (angl. methods) Primer: drevo1.pomlad(). Spremeni se vrednost atributov drevo1.izrisise(). Vpliv na okolico (izris na zaslon) l Metode imajo pri objektnem programiranju podobno nalogo kot funkcije pri proceduralnem programiranju. l Logika" programa je razbita na eno ali več metod. l Metoda lahko spreminja objekt (nastavlja atribute) ali vpliva na "okolico" (druge objekte, sistem,...).

PARAMETRI METODE l Poznamo metode brez parametrov in take s parametri. l Primer metode brez parametrov je metoda izpisise(), ki jo kličemo takole: drevo1.izpisise() l Primer metode s parametri: void spremeniime(string novoime) { ime = novoime; } l Klic metode spremeniime() iz programa: drevo1.spremeniime("hrast"); V razred Drevo dodaj metodo spremeniime(string novoime)

REZULTAT METODE l Metode so lahko tipa void ali pa vračajo rezultat. l Primer metode tipa void je metoda izrisise(), l Metodo tipa void kličemo na objektu drevo1 takole: drevo1.izrisise(); l Primer metode, ki vrne rezultat: povprecnarast(), ki vrne, koliko je drevo v povprečju zraslo vsako leto: double povprecnarast() { } l Rezultat Metode povprecnarast() je tipa double.

REZULTAT METODE double povprecnarast() { if (starost==0) return 0; else return visina / starost; } l Metodo povprecnarast() kličemo takole: double rast = drevo1.povprecnarast(); (rezultat, ki ga vrne metoda povprecnarast() se shrani v spremenljivki rast). V razred Drevo dodaj metodo double povprecnarast()

STATIČNE METODE l Metode, ki jih najavimo z rezervirano besedo static, so statične metode. l Statične metode so metode razreda -- ne potrebujemo objekta, kličemo jih direktno na razredu. Primer statične metode: metoda sin() razreda Math. Namesto Math m = new Math(); double rezultat = m.sin(3.14); pišemo kar double rezultat = Math.sin(3.14); V razred Drevo dodaj statično metodo za izpis navodil za obrezovanje in statično metodo, ki vrne število že narejenih dreves.

REZERVIRANA BESEDA THIS l Rezervirano besedo this uporabjamo za sklicevanje na trenutni objekt l Besedo this lahko uporabljamo le v metodah, ki niso statične. l Besedo this preberemo kot»jaz«. l Besedo this običajno uporabljamo zato, da preprečimo konflikte z imeni

REZERVIRANA BESEDA THIS Primer: void spremeniime(string ime) { } this.ime = ime; l Priporočilo: rezervirano besedo this uporabljamo pred vsakim atributom (tudi, kadar ni nevarnosti, da bi prišlo do konflikta z imeni). V razredu Drevo spremeni metodo spremeniime(), kot je napisano zgoraj.

KONSTRUKTOR l Konstruktor je podoben metodi, vendar NI metoda. Primer: konstruktor za razred Drevo Drevo() { // koda, ki se izvrši // ob izgradnji objekta } l l Namen metode: združuje zaporedje javanskih ukazov Namen konstruktorja:»ustvari«objekt l Konstruktor ima isto ime kot razred. l Konstruktor ne vrača rezultata (niti void ne).

KONSTRUKTOR l Konstruktor ustvari razred, čas nastanka razreda pa je najprimernejši čas za nastavitev začetnih vrednosti atributom: Drevo() { ID = ID + 1; mojid = ID; ime = ""; starost=0; visina=0; }

KONSTRUKTOR l Razred ima lahko več konstruktorjev; vsi imajo enako ime (ime razreda), vendar različno število in tip parametrov. l Konstruktorji običajno kličejo eden drugega, v ta namen uporabijo rezervirano besedo this l Beseda this znotraj konstruktorja ima drug pomen kot this v metodi: v metodi pomeni 'trenutno izvedbo', v konstruktorju pomeni klic drugega konstruktorja. V razredu Drevo dodaj konstruktor Drevo(tIme String)

KONSTRUKTOR l V vsakem razredu obstaja vsaj en konstruktor (če ga programer ne napiše, ga doda prevajalnik). l Privzet konstruktor je konstruktor brez parametrov. Primer: Razreda in class MojRazred { } class MojRazred{ MojRazred() { super(); } } se prevedeta v popolnoma enak razred.

REZERVIRANA BESEDA INSTANCEOF l če imamo objekt x in bi radi preverili, ali je x objekt razreda X, uporabimo rezervirano besedo instanceof: x instanceof X (rezultat: true ali false) Primer: Drevo d1 = new Drevo(); boolean jedrevo = d1 instanceof Drevo; System.out.println(jeDrevo); Object s = Test ; System.out.println(s instanceof Drevo) System.out.println(s instanceof String) true false true

RAZŠIRITVE RAZREDOV IN DEDOVANJE l Razširitve razredov in dedovanje so najpomembnejši koncepti objektnega programiranja. l Osnovni ideja: za izhodišče izberem obstoječ razred in ustvarim njegovega»naslednika«; naslednik ima vse lastnosti (metode in atribute) ENAKE kot izhodiščni razred (ker je od njega vse podedoval); razreda se razlikujeta le po imenu; če želim, lahko v nasledniku nekatere metode spremenim (redefiniram); lahko dodam tudi povsem nove metode in atribute.

RAZŠIRITVE RAZREDOV IN DEDOVANJE l Primer razširitve: z rezervirano besedo extends ustvarim razširitev razreda. Primer: z deklaracijo class Bonsai extends Drevo { } ustvarim razred Bonsai, ki se ujema z razredom Drevo v vseh metodah in atributih.

RAZŠIRITVE RAZREDOV IN DEDOVANJE class Bonsai extends Drevo { } l Če želim, lahko (znotraj oklepajev, namesto ) nekatere metode razreda Bonsai napišem na novo (redefiniram). l Napišem lahko tudi nove metode (take, ki v razredu Drevo ne obstajajo). l Metode, ki jih v novem razredu ne redefiniram, ostanejo enake kot v njegovem predniku (so od njega podedovane).

l Izrazi: RAZŠIRITVE RAZREDOV IN DEDOVANJE Prvotni razred je prednik (oče, nadrazred, angl. super class) Razširjeni razred je potomec (sin, podrazred, angl. sub class), Razred Bonsai je potomec (podrazred) razreda Drevo. Razred Drevo je prednik (nadrazred) razreda Bonsai Napiši razred Bonsai, v katerem redeklariraš metodo povecajvisino (bonsai raste po 5 cm prvi 2 leti, potem pa se rast v višino ustavi).

NOVE METODE IN ATRIBUTI l Razred Bonsai je naslednik razreda Drevo, zato pozna vse metode razreda Drevo l Bonsai lahko nekatere metode razreda Drevo redefinira (prejšnji primer: povecajvisino() in izrisise()) l in še več: Bonsai lahko uvede nove atribute in metode, ki jih razred Drevo ni poznal! l Bonsai je torej Drevo s popravki in dodatki. V razred Bonsai dodaj atribut sirina (koliko je bonsai širok v cm);vsako pomlad naj se širina poveca za 2 cm; širino lahko zmanjšamo, če bonsai ostrižemo (vsako striženje: -1cm); dodaj še metodo za striženje

KATEREGA TIPA (RAZREDA) JE NEK OBJEKT? l Naredimo objekt razreda Drevo: Drevo d = new Drevo(); Ker je d primerek razreda Drevo, bo ukaz System.out.println(d instanceof Drevo); izpisal true. l Podobno: naredimo objekt razreda Bonsai: Bonsai b = new Bonsai(); Ker je b primerek razreda Bonsai, bo ukaz System.out.println(b instanceof Bonsai); izpisal true.

KATEREGA TIPA (RAZREDA) JE NEK OBJEKT? l Toda pozor: b je tudi primerek razreda Drevo, saj je Bonsai naslednik razreda Drevo (b ima vse kot Drevo, morda celo kaj več). Ukaz System.out.println(b instanceof Drevo); bo izpisal true, ukaz System.out.println(d instanceof Bonsai); pa seveda false.

KATEREGA TIPA (RAZREDA) JE NEK OBJEKT? l Ker je Bonsai nadgradnja razreda Drevo, lahko napišemo tudi tole: Drevo drevo1 = new Bonsai(); vendar potem lahko nad objektu d kličemo le metode, ki jih pozna Drevo, na pa tudi tistih, ki jih je uvedel Bonsai.

PRA-OČE OBJECT l Vsi razredi v Javi so potomci razreda Object. l Ob deklaraciji razreda prevajalnik sam doda besedi extends Object. l Na vseh javanskih objektih lahko kličemo metode, ki so jih podedovali od praočeta. l Ena od teh metod je tudi metoda tostring(), ki jo poznajo vsi objekti. Ustvari Drevo drevo1 in pokaži njegove metode, ki so podedovane iz razreda Object.

PRA-OČE OBJECT l Zanimiva posledica: v Javi lahko z ukazom System.out.println() izpisujemo vsak objekt. Izpiši drevo1 z ukazom println() l Kaj se je izpisalo? Njegova tostring() vrednost! l Če želimo, lahko redefiniramo metodo tostring() in s tem med drugim dosežemo tudi to, da bomo objekt lahko lepo izpisovali. V Drevo dodaj metodo tostring() in drevo1 ponovno izpiši.

SKRIVANJE ATRIBUTOV Ustvari primerek razreda Drevo in spremeni atribut starost l Da bi onemogočili možnost spreminjanja atributov, atribut najavimo z določilom private. Namesto int starost; pišemo private int starost; l S tem smo atribut starost skrili in do njega lahko dostopamo samo v razredu samem.

GETTER/SETTER l Ko smo skrili atribut starost, smo preprečili, da bi ga uporabnik nekontrolirano spremnijal. l Toda s tem smo preprečili vsakršen dostop do tega atributa uporabnik ga ne more niti brati niti spreminjati. l Nastalo težavo rešimo z uporabo getter-jev in setter-jev (t.j. metod, ki uporabniku omogočajo dostop do skritih atributov).

GETTER/SETTER l getter je metoda, ki omogoča branje atributa; ime metode: getimeatributa Primer: getstarost() l setter je metoda, s katero lahko kontrolirano nastavim vrednost atributa; ime metode: setimeatributa Primer: setstarost() Napiši getter in setter za starost.

ABSTRAKTNE METODE IN RAZREDI l V Java kontekstu beseda abstraktno pomeni, da nekaj ni (v celoti) definirano. l Metoda je abstraktna, če poznamo samo njen podpis, telo metode pa ni na voljo. l Abstraktni razred je razred, v katerem je vsaj ena od metod abstraktna. l Iz abstraktnega razreda ne moremo narediti objektov!

Primer: ABSTRAKTNE METODE IN RAZREDI abstract class Funkcija { } abstract double vrednost(double x); l Metoda vrednost je v Funkcija samo najavljena (brez telesa) new Funkcija(); napaka

ABSTRAKTNE METODE IN RAZREDI - PRIMER l Ničlo funkcije f(x) lahko iščemo z Newtnovo metodo: začnemo s približkom za ničlo (x0) na vsakem koraku iz prejšnjega približka (x0) izračunamo naslednji približek (x1) po formuli

ABSTRAKTNE METODE IN RAZREDI PRIMER Napiši program za računanje ničel funkcij s pomočjo Newtnove metode. Delovanje programa za računanje ničel funkcije preveri na naslednjih primerih: f(x) = 2 x 2 5 x 3 (ničle: x1 = -0.5, x2 = 3) f(x) = sin(x) (ničle: 0, π,.)

ANONIMNI NOTRANJI RAZRED l Razred za enkratno uporabo. l V fazi izdelave objekta lahko razred spremenimo (prilagodimo) - nastane anonimni notranji razred. l Nadomestimo lahko vse ne-statične metode. l Spremenimo lahko vrednost statičnim spremenljivkam. Napiši razred TestANR, v katerem boš z uporabo Newtnove metode in anonimnega notranjega razreda izračunal ničle funkcije f(x) = x 3 3 x 2 x + 3 (ničle: x1=1, x2=-1, x3=3)

VMESNIKI l Vmesnik (angl. interface) vsebuje podpise metod. l Podobna vloga kot abstraktni razred (podaja samo podpise metod, telo ni na voljo). l Vmesnik lahko vsebuje le konstante (static final spremenljivke). l Vmesnik implementiramo z rezervirano besedo implements

Primer: VMESNIKI interface Funkcija { double vrednost(double x); } class Sinus implements Funkcija { double vrednost(double x) { } }

VMESNIKI IN ABSTRAKTNI RAZREDI - PRIMERJAVA Abstraktni razred Prednosti: nekatere metode lahko implementiramo, imamo lahko atribute Slabosti: pri razširitvi (extends) lahko navedemo samo en razred (Java ne pozna večkratnega dedovanja) Vmesnik Prednosti: v nekem razredu lahko implementiramo več vmesnikov Slabosti: ni delne implementacije in atributov Primer z Newtnovo metodo napiši še z uporabo vmesnika.

OP PRIMER S HOTELOM 1/7 l Problem: investitor želi zgraditi verigo hotelov l Pot k rešitvi: - Investitor najame projektante. - Projektanti izdelajo dokument z naslovom 'Osnovne zahteve za gradnjo hotelov' in ga uskladijo z investitorjem.

OP PRIMER S HOTELOM 2/7 Osnovne zahteve za gradnjo hotelov Investitor, ki želi pridobiti dovoljenje za gradnjo hotelov, mora pripraviti projektno dokumentacijo, sestavljeno iz naslednjih delov. l Gradbeni načrt, ki vsebuje natančna navodila za izgradnjo hotela. l Načrt dela z obiskovalci, ki vsebuje opis postopkov za registracijo obiskovalcev ter odjavo obiskovalcev. l Računovodski načrt, ki vsebuje opis postopka za računanje dnevnega prometa.

OP PRIMER S HOTELOM 3/7 - Upravna enota potrdi dokument "Osnovne zahteve " - Projektanti izdelajo projektno dokumentacijo, skladno z "Osnovnimi zahtevami za gradnjo hotelov": gradbeni načrt, delo z gosti: knjiga gostov (po sobah), računanje prometa: število gostov * cena nočitve, dodatno: možnost pretvorbe med valutami (EUR/SIT).

OP PRIMER S HOTELOM 4/7 - Upravna enota preveri, ali je projektna dokumentacija skladna z izdanim dokumentom in s splošno znanimi pravili (gradbeni uzanci) - Ko investitor prejme potrjeno dokumentacijo, lahko začne graditi. - Pred gradnjo lahko uporabi le tiste komponente potrjenega projekta, ki niso vezane na konkretno izvedbo: cena nočitve in postopek za pretvorbo SIT/EUR.

OP PRIMER S HOTELOM 5/7 l Dokument Osnovne zahteve l Projektanti l Projektna dokumentacija.. vmesnik (interface).. programerji.. razred l Navodilo za izgradnjo hotela l Podatki Cena nočitve Knjiga zasedenosti sob.. konstruktor.. statična spremenljivka.. ne-statična spremenljivka

OP PRIMER S HOTELOM 6/7 l Postopki Pretvorba iz EUR v SIT Prijava/odjava obiskovalca l Upravna enota l Potrjena projektna dokumentacija l Postavljen hotel.. statična metoda.. ne-statična metoda.. prevajalnik.. preveden razred.. objekt

OP PRIMER S HOTELOM 7/7 Napiši program za "gradnjo" hotelov. 1. Napiši vmesnik "Osnovna zahteve" 2. Napiši razred Hotel 3. Napiši program, s katerim "zgradiš" nekaj hotelov 4. Napiši še razred za izgradnjo hotelov z bazenom