1 / 10

OBJEKTNO ORIJENTIRANO PROGRAMIRANJE

SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU. ELEKTROTEHNIČKI FAKULTET OSIJEK. ZAVOD ZA RAČUNARSTVO. OBJEKTNO ORIJENTIRANO PROGRAMIRANJE. Vježba 4. Apstrakcija. Sučelja. Osijek, 2007. APSTRAKCIJA. Apstrakcija predstavlja princip objektno orijentiranog programiranja

milton
Télécharger la présentation

OBJEKTNO ORIJENTIRANO PROGRAMIRANJE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET OSIJEK ZAVOD ZA RAČUNARSTVO OBJEKTNO ORIJENTIRANOPROGRAMIRANJE Vježba 4. Apstrakcija. Sučelja. Osijek, 2007.

  2. APSTRAKCIJA • Apstrakcija predstavlja princip objektno orijentiranog programiranja • Naznačava se u Javi ključnom riječi abstract • Klase i metode mogu biti apstraktne • Apstraktna klasa predstavlja "nedovršenu" klasu koja se ne može instancirati, već ju je potrebno naslijediti i implementirati u naslijeđenoj klasi • Apstraktna klasa ne sadrži konstruktor • Apstraktna klasa sadrži barem jednu apstraktnu metodu • Apstraktne metode ne sadrže tijelo, tj. nemaju implementaciju • Apstraktna klasa sadrži osnovne koncepte nekog skupa objekata • Apstraktna klasa može sadržavati implementirane metode • Svrha apstrakcija jest organizacija i preglednost koda • Apstrakcija • Sučelja • Zadatak • Dodatni zadatak

  3. APSTRAKCIJA • public abstract class Instrument {private String trenutniTon;private int tempo;public String getTrenutniTon() {return trenutniTon; } • public abstract void ustimaj(); • public abstract void svirajTon(); • public abstract void svirajAkord(); • public abstract void setTempo(int tempo); • public abstract int getFrekvencijaOsnovnogTona(); • } • Apstrakcija • Sučelja • Zadatak • Dodatni zadatak

  4. APSTRAKCIJA • public class Klavir extends Instrument {public void svirajTon() { //implementacija stisnute tipke klavijature } • public void ustimaj() { //implementacija metode ustimaj() } • public void svirajAkord() { //implementacija metode svirajAkord() } • public void setTempo(int tempo) { //implementacija metode setTempo() } • public int getFrekvencijaOsnovnogTona() { //implementacija metode getFrekvencijaOsnovnogTona()return 1; }} • Apstrakcija • Sučelja • Zadatak • Dodatni zadatak

  5. SUČELJA • Sučelje (eng. interface) predstavlja kolekciju neimplementiranih metoda • Ne sadrži atribute (osim deklaracija konstanti) • Označava se ključnom riječi interface • Implementacija se vrši u klasi koja implementira sučelje, naznačava se ključnom riječi implements. Potrebno je implementirati sve metode sučelja u klasi koja ga implementira. • Jedna klasa može implementirati više sučelja (ne može naslijediti više klasa)‏ - način višestrukog nasljeđivanja • Sve metode sučelja su implicitno apstraktne, stoga nije nužno deklarirati metodu sučelja kao apstraktnu ključnom riječi abstract • Apstrakcija • Sučelja • Zadatak • Dodatni zadatak

  6. SUČELJA • public interface Writeable {public static final char delimiter = (char)0x21;public boolean writeASCII();public boolean writeBinary();} • public interface MessageUtils {public void writeDebugEntry();public void writeErrorEntry();public void writeInfoEntry();} • public class MessageWriter implements Writeable, MessageUtils {private String message; • public MessageWriter(String message) {this.message = message; } • publicboolean writeASCII() { //implementacija writeASCII() metodereturntrue; } • public boolean writeBinary() { //implementacija writeBinary() metodereturn true; } • public void writeDebugEntry() { //implementacija writeDebugEntry() metode • } • Apstrakcija • Sučelja • Zadatak • Dodatni zadatak

  7. SUČELJA • public void writeErrorEntry() { //implementacija writeErrorEntry() metode } • public void writeInfoEntry() { //implementacija writeInfoEntry() metode } • } • Apstrakcija • Sučelja • Zadatak • Dodatni zadatak

  8. ZADATAK • Stvoriti apstraktnu klasu Shape, koja ima atribut ime, te metode setIme(String ime) i getIme(). Također, definirati dvije apstraktne metode: povrsina() – za računanje površine like i crtaj() – za grafičko iscrtavanje. • Zatim kreirati klasu Trokut koja nasljeđuje apstraktnu klasu Shape. Kao atribute, klasa Trokut koristi koordinate triju točaka (x1, y1, x2, y2, x3, y3). Njih je, zajedno s nasljeđenim atributom ime, potrebno postaviti putem konstruktora. Klasa Trokut mora implementirati metode povrsina() i crtaj() koje je nasljedila od apstraktne klase Shape. • Stvoriti sučelje ShapeInterface koje definira konstantu PI te metode setIme(String ime), getIme(), povrsina() i crtaj(). • Kreirati klase Krug i Pravokutnik koje implementiraju sučelje ShapeInterface, te u njima implementirati sve metode koje to sučelje nalaže. Osim toga, klasa Krug će posjedovati atribute ime i radijus, dok u klasi Pravokutnik trebaju biti definirani atributi ime, a i b, gdje a i b predstavljaju dužine stranica pravokutnika. U obje klase, atributi se postavljaju putem konstruktora. • Klasu Start koja služi za pokretanje aplikacije i klasu Crtac koja se korisiti kao pomoć pri iscrtavanju likova, nije potrebno implementirati, već samo iskoristiti ovdje navedene primjere. • Apstrakcija • Sučelja • Zadatak • Dodatni zadatak

  9. ZADATAK • Apstrakcija • Sučelja • Zadatak • Dodatni zadatak

  10. DODATNI ZADATAK • Dodatni zadatak nadovezuje se na zadatak s vježbe. • Potrebno je kreirati novu klasu Elipsa, koja nasljeđuje apstraktnu klasu Shape. Atributi te klase trebaju biti poluosX i poluosY, koji se, uz ime, postavljaju putem konstruktora. Također je potrebno implementirati i metode povrsina() i crtaj() koje nalaže nasljeđena apstraktna klasa. • Apstraktnu klasu Shape zatim proširiti s novom apstraktnom metodom opseg() koja će se koristiti za računanje obujma pojedinog lika. • Na sličan način proširiti i sučelje ShapeInterface s metodom opseg(). • Kako klase Trokut i Elipsa nasljeđuju apstraktnu klasu Shape, potrebno je u njima implementirati novu metodu opseg() iz klase Shape. • Isto tako, klase Krug i Pravokutnik moraju implementirati dodatnu metodu opseg() pošto je ona postala dio sučelja ShapeInterface. • Klasu Start proširiti sa stvaranjem novog objekta tipa Elipse, te za taj objekt ispisati ime, povrsinu, opseg, te elipsu iscrtati. Ispis ostalih likova proširiti s rezultatom metode opseg(). • Klasu Crtac nije potrebno mijenjati, u njoj je već predviđeno i iscrtavanje elipse. • Apstrakcija • Sučelja • Zadatak • Dodatni zadatak

More Related