Nadgradnja klasa i nasljeđivanje – 3

Slides:



Advertisements
Similar presentations
Bog nas voli i ima povjerenja u nas. Kako je divno, Bože, što nas voliš unatoč svih naših grijeha i propusta. Doista, ne znamo čime smo zaslužili toliku.
Advertisements

Abstract Classes b b An abstract class is a placeholder in a class hierarchy that represents a generic concept b b An abstract class cannot be instantiated.
PiKKS. Ukratko Općenito Osnovni elementi OOP u Javi Overloading, overriding, virtual method invocation, modifikatori... Exceptions Java GUI Threads.
Prof: doc.dr. Samir Lemeš student: Samir Hrnjić. System restore je komponenta Microsoftovih operativnih sistema Windows Serveri ne podržavaju opciju System.
Inheritance in Java. Access Specifiers private keywordprivate keyword –Used for most instance variables –private variables and methods are accessible.
1 Interface &Implements. 2 An interface is a classlike construct that contains only constants variables and abstract methods definition. An interface.
Interfaces.
KAKO IZRADITI IGRU: Izrežite tabele, sličice, kartice, žetone. Ostavite 1mm bijelog ruba oko okvira. Nalijepite ih na karton u boji (hamer), jako lijepo.
Petlje WHILE – WEND.
Koncept objektno orijentiranog programiranja
RP3/predavanje08 Ugniježdeni tipovi Iznimke 10/11/2018
Glava 8 Nasljedjivanje.
Java Hello world !.
Algoritamske/programske strukture
Chapter 7 Arrays (Nizovi).
Programi,Podaci,Varijable,Računanje- Uvod
Programiranje - Blokovi naredbi i logički tipovi –
Java Klase – 2.
Java Petlje i logika - 1.
CheckBox RadioButton RadioGroup
Naredbe ciklusa.
Programiranje 2 – C++ Klase i objekti
7. Rad sa AWT-komponentama
Petlje FOR - NEXT.
Programi,Podaci,Varijable,Računanje - 2
Java Iznimke - exceptions.
Објектно орјентисано програмирање
KREIRANJE OBJEKATA.
Razmisli ……...
Europski dan programiranja
Java Klase (Classes).
Uvod u programiranje - matematika – X predavanje
Arrays and strings -2 (nizovi i znakovni nizovi)
Elektrotehnički fakultet – Podgorica Operativni sistemi
14 UNUTRAŠNJE I ANONIMNE KLASE
Programi,Podaci,Varijable,Računanje - 1
Arrays and strings -1 (nizovi i znakovni nizovi)
SUDOKU Ivo Doko Saša Buzov.
Objektno orijentisano programiranje
Postavke programa Expression Web
MessageBox.
Glava 9 Polimorfizam.
DISKRETNI DINAMIČKI SUSTAVI –LOGISTIČKI MODEL -KAOS-
Pojmovi digitalnog zapisa
Objektno orijentisano programiranje
Internet FTP usluga.
PROGRAMSKI JEZIK PASCAL
Osnovni simboli jezika Pascal
Do While ... Loop struktura
Računarski praktikum 3 Vježbe 01
Default konstruktor struct C{ int i; }; struct D{ D( ):i(1){ }
Programiranje – Small Basic
EU Montenegro Inclusive Education Services Project (EU - MIESP)
Java Inheritance.
Skup instrukcija procesora
Fakultet elektrotehnike i računarstva
Naredbe u php-u.
Programiranje - Naredbe za kontrolu toka programa – 1. dio
Programiranje - Naredbe za kontrolu toka programa – 3. dio
MODUL 5: PRIJENOS ZNANJA
Programski jezik C++ - Vježbe - 1. dio
LimeSurvey Uvjetni prikaz pitanja Internetska istraživanja
10th International Conference on Live Maintenance
Elder Scroll V:Skyrim.
Dvostruka autentifikacija
មជ្ឈមណ្ឌលកូរ៉េ សហ្វវែរ អេច អ ឌី
Vježbenica 2: struktura grananja – 2.dio
Hour of Code Coding Jetpack Jumper Mateja Hržica, MSP.
Programski jezik C++ - Vježbe - 2. dio
Iracionalni brojevi
Presentation transcript:

Nadgradnja klasa i nasljeđivanje – 3 Java Nadgradnja klasa i nasljeđivanje – 3

Što je sučelje (Interface) Definicija: interface je imenovani skup definicija metoda (bez implementacije). Interface deklarira i konstante. Klasa koja implementira interface slaže se da će implementirati sve metode deklarirane u sučelju, tj. slaže se s određenim ponašanjem. Java © - Eugen Mudnić

Interface public interface ConversionMethods { double inchToMM(double inches); double ounceToGram(double ounces); double poundToGram(double pounds); } Metode u sučelju su uvijek public i abstract – nije ih potrebno tako specificirati public interface ConversionFactors { double INCH_TO_MM = 25.4; double OUNCE_TO_GRAM=28.3; double POUND_TO_GRAM=453.5; } Konstante su uvijek public,static i final – nije ih potrebno tako specificirati Java © - Eugen Mudnić

Interface Kako se razlikuje interface i apstraktne klase Interface ne može implementirati nijednu metodu dok apstraktna klasa može. Klasa može implementirati više sučelja, ali može imati samo jednu superklasu. Interface nije dio hijearhije klasa. Nevezane klase mogu implementirati isto sučelje. Java © - Eugen Mudnić

Nadgradnja sučelja (Extendiong Interfaces) Možete definirati jedan interface na osnovu drugog public interface Conversions extends ConversionFactors { double inchToMM(double inches); double ounceToGram(double ounces); double poundToGram(double pounds); } public interface MyInterface extends HisInterface, HerInterface { // Interface – članovi (konstante i apstraktne metode) } Java © - Eugen Mudnić

Implementacija sučelja Dodaj ključnu riječ, implements , koju slijedi naziv sučelja, nakon naziva klase + implementaciju svih metoda deklariranih u definiciji sučelja public class MyClass implements Conversion { // Implemention of the methods in the interface // Definition of the rest of the class ... } Java © - Eugen Mudnić

Implementacija sučelja koje definira konstante Sve konstante koje su definirane u sučelju ConversionFactors su dostupne u klasi MyClass. public class MyClass implements ConversionFactors { double poundsWeight; public double getMetricWeight() { return poundsWeight*POUND_TO_GRAM; } // Definicija ostatka klase } Java © - Eugen Mudnić

Implementacija sučelja koje definira metode Potrebno je implementirati metode koje su u sučelju Svaka klasa može imati različitu implementaciju metoda sučelja public class MyClass implements Conversions { public inchToMM(double inches) { return inches*INCH_TO_MM; } public double ounceToGram(double ounces) { return ounces*OUNCE_TO_GRAM; } public poundToGram(double pounds) { return pounds*POUND_TO_GRAM; } // Definition of the rest of class } Java © - Eugen Mudnić

Djelomična implementacija sučelja public abstract class MyClass implements Conversions { public inchToMM(double inches) { return inches*INCH_TO_MM; } public double ounceToGram(double ounces) { return ounces*OUNCE_TO_GRAM; } } Klasu je potrebno deklarirati kao apstraktnu ako izostavite implementaciju bar jedne metode sučelja. Java © - Eugen Mudnić

Cloneable sučelje Cloneable sučelje je prazno sučelje ! Sve što je potrebno za njegovu implementaciju je navesti ga u deklaraciji klase Ono djeluje kao flag koji signalizira da dozvoljavate kloniranje svoje klase (marker interface) public class MyClass implements Cloneable { // Detail of the class ... } Java © - Eugen Mudnić

Korištenje sučelja Za pakiranje konstanti za implementaciju polimorfizma bez potrebe za definiranjem subklasa Možete separirati u sučelje skup metoda zajedničkih za više klasa . Sučelje onda može biti implementirano u svakoj od klasa. Java © - Eugen Mudnić

Primjer: korištenje sučelja public interface PetOutput { void sound(); } Sučelje PetOutput uključuje metodu koja je prije bila definirana u baznoj klasi Animal Java © - Eugen Mudnić

nema bazne klase, uklonjen super() public class Dog implements PetOutput { public Dog(String aName) name = aName; // Proslijeđeni naziv breed = "Unknown"; // Pretpostavljena vrsta } public Dog(String aName, String aBreed) breed = aBreed; // Proslijeđena vrsta // Prezentiraj detalje o psu kao string public String toString() return "It's " + name + " the " + breed; // Metoda za lajanje public void sound() System.out.println(“Vau Vau !"); ... nema bazne klase, uklonjen super() class Spaniel extends Dog { public Spaniel(String aName) super(aName,"Spaniel"); }

Primjer: korištenje sučelja interface PetOuput void sound(); class Dog implements PetOutput void sound(){...} // + the rest of class class Spaniel extends Dog // + the rest of class derived class interface & class members are inherited Možete koristiti referencu tipa sučelja, PetOutput, za pohranu vrijednosti reference na bilo koju navedenu klasu Java © - Eugen Mudnić

Primjeri: korištenje sučelja Ch6\10_Interface Duck.java Cat.java Dog.java TestInterface.java Spaniel.java PetOutput.java Java © - Eugen Mudnić

Korištenje višestrukih sučelja U Javi derivirane klase mogu imati samo jednu baznu klasu, ali broj sučelja koje klasa može implementirati nije ograničen Možete koristiti jedno sučelje za konstante , a drugo za metode koje želite polimorfno koristiti Java © - Eugen Mudnić

Gniježđenje klasa u definiciji sučelja Možete staviti definiciju klase unutar definicije sučelja. Klasa će biti inner klasa sučelja , pretpostavljeno static i public. Klasa koja implementira sučelje nema direktne veze s inner klasom sučelja – ona treba implementirati metode definirane sučeljem. Može i koristiti objekte tipa inner klase interface Port { // Methods & Constants declared in the interface class Info { // Definition of the class ... } Java © - Eugen Mudnić

Anonimne klase Umjesto deklariranja lokalne klase s jednom Java klasom te instanciranja i korištenja u drugoj liniji, anonimna klasa kombinira dva koraka u jedan Java izraz pickButton.addActionListener( new ActionListener() { // Code to define the class // that implements the ActionListener interface } ); Java © - Eugen Mudnić