OBJEKTNO ORIJENTISANO PROGRAMIRANJE

Similar documents
Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

PREDMET. Osnove Java Programiranja. Čas JAVADOC

Inheritance. A key OOP concept

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM

PROGRAMIRANJE. Amir Hajdar

PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI

Programiranje III razred

VRIJEDNOSTI ATRIBUTA

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

Java IMI PMF KG OOP 09 AKM. Objekti i klase

Java. Ugnježdeni tipovi IMI PMF KG OOP 09 AKM. najveći deo teksta je preuzet sa slajdova Prof. Dragana Milićeva (ETF Bg) namenjenih pedmetu OOP2

Visoka tehnička škola Niš

Improving structure with inheritance. Main concepts to be covered. The DoME example. DoME objects. DoME classes. DoME object model

More about inheritance

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

Izrada VI laboratorijske vježbe

Nasleđivanje i izvedene klase u jeziku C++

Visoka tehnička škola Niš

Informacioni sistemi i baze podataka

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

JavaScript i HTML DOM

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Improving structure with inheritance

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

VHDLPrimeri Poglavlje5.doc

C++ minitutorial. Osnovni elementi i koncepti programskog jezika C++ uz primere

Vežbe - XII nedelja PHP Doc

Objektno orijentisano programiranje. Aleksandra Klašnja-Milićević Marko Marković

Uputstvo za korišćenje logrotate funkcije

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Sadržaj. Verzija 03/2017 Primjenjuje se od 20. novembra godine

public static void main(string []args) { System.out.println("Hello World"); /* prints Hello World */

Sberbank Business Online na Mozilla FireFox

Cjenovnik usluga informacionog društva

TEHNIKA I INFORMATIKA U OBRAZOVANJU

Marko Milošević.

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

PARALELNO PROGRAMIRANJE

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Aspektno programiranje u Javi. AOP + AspectJ

NIZOVI.

Objektno orijentisano programiranje. Prolećni semestar 15/16 ~branislavas

Uvod u relacione baze podataka

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS

Objektno orijentisano programiranje

Programske paradigme Funkcionalna paradigma

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta

Proširivanje hijerarhije klasa. Moguće je rešiti u osnovnoj klasi

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

VDSL modem Zyxel VMG1312-B10A/B30A

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar

Programski jezik JAVA PREDAVANJE

NEKE OBJEKTNE OSOBINE ORACLE PL/SQL 9i JEZIKA (usporedba sa OOPL jezicima C++, Eiffel i Java)

Prva recenica. Druga recenica.

Računarski praktikum 4

VB komande. Programiranje 1

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

RAČUNARSKI PRAKTIKUM II

Objektno orjentirano programiranje

Dežurni nastavnik: Kolokvijum traje 1.5 sat, prvih sat vremena nije dozvoljeno napuštanje kolokvijuma. Upotreba literature nije dozvoljena.

Java IMI PMF KG OOP 09 AKM. Izuzeci

Programiranje III razred

PHP? PHP (recursive acronym "PHP: Hypertext Preprocessor") Open Source general-purpose scripting language Web development

PROCENA UGROŽENOSTI METODOM INDEKSA POŽARA I EKSPLOZIJE (F&EI) DOW INDEKS

modifier returnvaluetype methodname(list of parameters) { // Method body; }

Računarske osnove Interneta (SI3ROI, IR4ROI)

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

24/03/2018. Deklaracija promenljivih. Inicijalizacija promenljivih. Deklaracija i inicijalizacija promenljivih

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

Objektno orijentirano programiranje

f2() f6() main() f3() f7() f4()

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

x y = z Zadaci - procedure

Java i Internet programiranje

Proširena stvarnost - Augmented Reality (AR) Dr Nenad Gligorić

Ovde će se raditi na funkcijama konverzija: konverzija tipa datuma u znak tip i obrnuto, konverzija broja u karakter tip i obrnuto

12. Uskladištene procedure (Stored Procedures)

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n.

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

GUI - događaji (Events) i izuzeci. Bojan Tomić

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici

Lekcija 09 Sakrivanje podataka, statički članovi, preklapanje funkcija i operatora. Miljan Milošević

Objektno orijentirano programiranje proširuje objektnotemeljeno mogućnošću uvoñenja odnosa izmeñu tipova i njihovih podtipova

Projektovanje Namenskih Računarskih Struktura 1. Sistemi zasnovani na Androidu

Funkcije, prenos parametara i dinamička alokacija memorije

Lekcija 07 C++ funkcije, stringovi, imenski prostor, memorija i fajlovi. Miljan Milošević

Broj Pitanje Bodovi 1. Navedi osnovne razloge uvođenja objektno orjentiranog pristupa? 2. Što je klasa u programskom jeziku?

Strukture Klase i OOP

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

Modbus TCP i dva PLC S7 1200

ZAVOD ZA AUTOMATIKU I PROCESNO RAČUNARSTVO FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA SVEUČILIŠTE U ZAGREBU OO SIMSCRIPT. Dinko Korunić

KURSORI BAZE PODATAKA U ORACLE 11g

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

Laslo Kraus PROGRAMSKI JEZIK C++ sa rešenim zadacima

Projektovanje namenskih računarskih struktura

Transcription:

OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 12: NASLEĐIVANJE Miloš Kovačević Đorđe Nedeljković 1 /17

OSNOVNI KONCEPTI - Statički i dinamički tipovi podataka - Prepisivanje metoda superklase - Polimorfizam na nivou metode - Modifikator vidljivosti protected - tostring() metoda klase Object 2 /17

DoME PROJEKAT - NASTAVAK 3 /17

DoME V2 PROBLEM SA PRINT METODOM - Napraviti jedan CD i jedan Video i staviti ih u bazu. Izlistati sadržaj baze u obe verzije (dome-v1 i dome-v2) public class Database{ private ArrayList<Item> items; public Database(){ items = new ArrayList<Item>(); public void additem(item theitem){ items.add(theitem); public void list(){ for(item item : items) { item.print(); System.out.println(); metoda print() ne razlikuje CD i Video objekte, štampa samo zajednička polja iz klase Item 4 /17

STATIČKI I DINAMIČKI TIP OBJEKTNIH PROMENLJIVIH Car c1 = new Car(); // tip c1 je Car Vehicle v1 = new Car(); // v1 polimorfna // sta je tip v1? - Statički tip promenljive je deklarisan tip promenljive (levo do promenljive u prvom pojavljivanju) - Dinamički tip promenljive je tip objekta na koji promenljiva ukazuje - U gornjem primeru c1 ima isti statički i dinamički tip (Car), dok v1 ima statički tip Vehicle, a dinamički Car - Polimorfna promenljiva može imati različit statički i dinamički tip 5 /17

DoME V2 PROBLEM SA PRINT METODOM - Šta se dešava ako print() metod iz klase Item prebacimo u klase CD i Video? public void print(){ System.out.print("title: " + title + " (" + playingtime + " mins)"); if(gotit) { System.out.println("*"); else { System.out.println(); System.out.println(" " + comment); System.out.println("artist: " + artist); System.out.println("num. tracks: " + numberoftracks); dodato za CD polja - Prodiskutovati dva tipa grešaka koje prijavljuje prevodilac: 1. privatna polja superklase nisu dostupna potklasi (prilikom prevođenja CD) 2. Item klasa ne sadrži print() metod (prilikom prevođenja Database) 6 /17

DoME V2 PROBLEM SA PRINT METODOM - Šta se dešava ako print() metod iz klase Item prebacimo u klase CD i Video? - privatna polja superklase nisu dostupna potklasi (prilikom prevođenja CD) - Rešava se uvođenjem javnih metoda za pristup privatnim poljima u superklasi public void list(){ for(item item : items) { item.print(); System.out.println(); - Item klasa ne sadrži print() metod (prilikom prevođenja Database) - Prevodilac proverava statički tip za promenljivu item - Prilikom provere tipova prevodilac proverava statički, a ne dinamički tip (jer u vreme prevođenja se ne zna tip objekta na koji promenljiva pokazuje) 7 /17

PREPISIVANJE METODA SUPERKLASE public class Item{... public void print(){ System.out.print(title + " (" + playingtime + " mins)"); if(gotit){ System.out.println("*"); else { System.out.println(); System.out.println(" " + comment); public class CD extends Item{... public void print(){ System.out.println(" " + artist); System.out.println(" tracks: " + numberoftracks); public class Video extends Item{... public void print(){ System.out.println(" director: " + director); 8 /17

PREPISIVANJE METODA SUPERKLASE - Potklasa može da definiše metod koji ima isti potpis kao i metod superklase - Tada se razlikuje implementacija metoda u odnosu na metod superklase (metod potklase radi nešto drugo) Item i = new Item(...); i.print(); CD cd = new CD(...); cd.print(); // poziva se print() metoda iz Item klase // poziva se print() metoda iz CD klase - Metoda iz potklase koja je prepisana ima prednost pri pozivu nad objektima te klase 9 /17

DINAMIČKO PRONALAŽENJE ADEKVATNOG METODA - Otvoriti projekat dome-v3 iz chapter09 - Analizirati kod, kreirati jedan CD i jedan Video, ubaciti ih u bazu i potom izlistati njen sadržaj (diskutovati) - U vreme prevođenja proverava se statički tip, a u vreme izvršavanja proverava se dinamički tip 10/17

POLIMORFIZAM NA NIVOU METODE - Isti poziv metode može aktivirati različite metode u zavisnosti od dinamičkog tipa promenljive nad kojom je metod pozvan public void list(){ for(item item : items){ item.print(); polimorfna metoda 11/17

POLIMORFIZAM - REKAPITULACIJA - Polimorfizam mogućnost poprimanja više oblika - Objektne promenljive u Javi su polimorfne pokazuju na objekte deklarisane klase ili na izvedene klase - Isti poziv metode može aktivirati različite metode u zavisnosti od dinamičkog tipa promenljive nad kojom je metod pozvan public void list(){ for(item item : items){ item.print(); polimorfna promenljiva polimorfna metoda 12/17

POZIV PREPISANE METODE PREKO SUPER - Primećujemo da u verziji 3 opet imamo problem sa štampom (štampaju se samo polja klasa CD i Video) - Problem se prevazilazi upotrebnom službene reči super za poziv prepisane metode superklase: public class CD extends Item{ poziv prepisanog metoda superklase... public void print(){ super.print(); System.out.println(" " + artist); System.out.println(" tracks: " + numberoftracks); - Za razliku od poziva konstruktora superklase, poziv metode preko super može biti bilo gde unutar metode - Iako se preko super mogu pozivati i neprepisane javne metode iz superklase, takve metode su vidljive u potklasi i direktno (bez super) 13/17

UTVRĐIVANJE DINAMIČKOG TIPA POLIMORFNE PROMENLJIVE - Ukoliko želimo da utvrdimo dinamički tip polimorfne promenljive, koristimo službenu reč instanceof: for( Item item : items ){ if(item instanceof CD){... 14/17

MODIFIKATOR VIDLJIVOSTI PROTECTED - Ukoliko polje ili metod ima deklarisanu vidljivost protected, može mu se pristupiti (pozvati) iz objekata iste klase, kao i svih potklasa protected String gettitle(){ return title; - Modifikator protected omogućava prisniju vezu između objekata potklasa i superklase, što je i prirodno s obzirom da objekti potklasa imaju i svojstva superklase 15/17

ENKAPSULACIJA - REZIME - Enkapsulacija je osnovni princip objektnog orijentisanog programiranja koji podrazumeva sakrivanje detalja implementacije od spoljnog sveta - Realizuje se primenom modifikatora vidljivosti na nivou polja i metoda Modifikator Klasa Potklasa Svet public + + + protected + + private + 16/17

METODtoString() KLASE Object - Javna metoda tostring() vraća tekstualnu reprezentaciju objekta - Kako su sve klase nasleđene iz klase Object, sve nasleđuju ovaj metod - Ukoliko neka klasa ne prepiše implementaciju tostring() metode, onda podrazumevana metoda (iz klase Object) vraća tekst oblika ImeKlase@memorijskaAdresaObjektaUMemoriji, npr: CD@6acdd1 - Obično se ova metoda prepisuje, npr: public class Osoba{... // moguca tekst reprezentacija objekata klase Osoba public String tostring(){ return "ime: " + ime + "\n prezime: " + prezime; - Kada klasa prepiše tostring(), njeni objekti mogu biti direktni argumenti za System.out.println(): Osoba pera = new Osoba(...);... System.out.println(pera); 17/17