INTERFEJSI

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 10

INTERFEJSI

C#
Veza između klasa (friend funkcije ili interface)
 Interfejs služi samo za deklaraciju određenih metoda,
događaja... Klasa ili struktura koja implementira interfejs
mora da implementira članove interfejsa koji su
navedeni u njegovoj definiciji. Interfejsi mogu da
nasleđuju jedni druge.

Definisanje interfejsa
 Definisanje je isto kao kod klasa. Jedina razlika je to što se koristi
ključna reč interface, a ne class. Unutar interfejsa se deklarišu
metode kao kod klase ili strukture, ali se nikad ne dodaje
modifikator pristupa. Metode nemaju implementaciju, već samo
deklaraciju.
 Ne mogu da se dodaju polja unutar interfejsa.
Implementacija interfejsa
 Da bi se interfejs implementirao, deklariše se
klasa ili struktura koja nasleđuje interfejs i koja
implementira sve metode navedene u interfejsu.

 Klasa može da nasledi drugu klasu i istovremeno da


implementira interfejs. U tom slučaju prvo se navodi
naziv osnovne klase, pa zatim znak , i na kraju naziv
interfejsa.
namespace ConsoleApplication public double UzmiVrednost()
{ {
public interface ITransakcija return vrednost;
{ }
void PrikaziTransakciju();
double UzmiVrednost();
public void PrikaziTransakciju()
}
{
Console.WriteLine("Transakcija: {0}", kod);
public class Transakcija : ITransakcija
Console.WriteLine("Datum: {0}", datum);
{
Console.WriteLine("Vrednost: {0}", vrednost);
private string kod;
private string datum;
}
private double vrednost; }
class Program
public Transakcija() {
{ static void Main(string[] args)
kod = ""; {
datum = ""; Transakcija t1 = new Transakcija("001", "8/10/2015", 789.00);
vrednost = 0; Transakcija t2 = new Transakcija("002", "9/10/2015", 451.00);
} t1.PrikaziTransakciju();
public Transakcija(string kod, string datum, t2.PrikaziTransakciju();
double vrednost) }
{ }
this.kod = kod;
}
Bitne činjenice

 Svaki član interfejsa za razliku od klasa se


podrazumeva da je javni, svaki član mora biti javni
i svaki član se mora implementirati u istoj
implementirajućoj klasi.
 Ali najvažnija osobina interfejsa je da klase mogu
implementirati više interfejsa kao i što interfejs
može da poziva druge interfejse.
 Kada se iz jednog interfejsa pozivaju drugi
interfejsi, onda se to naziva re-implementation.
Bitne činjenice

 Interfejs sadrži isključivo abstraktne članice i one


mogu biti događaji, indekseri, metode ili svojstva.
Predlozi u imenovanju interfejsa i apstraktnih klasa:

1. naziv interfejsa počinje sa I npr, IOsnovnoSredstvo


2. kada se jednom definiše interfejs, potpis metoda ne treba
menjati
3. ako je ipak potrebna promena interfejsa na bilo koji način,
predlog je da se kreira novi interfejs
4. apstraktne klase treba koristiti u scenarijima kada se očekuje
verzionisanje jer je dodavanje nove funkcionalnosti olakšano
činjenicom da je moguće dodati metodu u izvedenoj klasi a da
pri tome nije potrebno menjati klijentski kod (tj. klase koje su već
izvedene iz osnovne)
public Notifikacije()
PRIMER 2 {
using System;
posiljalac = "Brat Pantela";
using System.Collections.Generic;
using System.Linq; poruka = "Neka poruka!";

using System.Text; }
using System.Threading.Tasks; public Notifikacije(string posiljalac, string poruka)
{
namespace Interfejsi1 this.posiljalac = posiljalac;
{
this. poruka = poruka;
interface INotifikacije
}
{
public void PrikaziNotifikaciju()
void PrikaziNotifikaciju();
{
DateTime PrikaziDatum();
} Console.WriteLine("Poruka je: {0}, nju je poslao
{1}", poruka, posiljalac);
}
public class Notifikacije:INotifikacije
{ public DateTime PrikaziDatum()

private string posiljalac; {


private string poruka; return datum.Date;
DateTime datum = new DateTime(2018,11,30); }
Glavni program
class Program
{
static void Main(string[] args)
{
Notifikacije not1 = new Notifikacije("Pantela iz repke" ,"Ovo je poruka");

not1.PrikaziNotifikaciju();

Console.WriteLine(not1.PrikaziDatum());
//Console.WriteLine(not1.Datum());
//Console.WriteLine(not1.Sada());
//not1.JosNekiPodaci();

}
}

You might also like