26.07.2013 Views

Operativsystem: .............................................................

Operativsystem: .............................................................

Operativsystem: .............................................................

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Interfaces – en anden slags arv:<br />

Et interface erklæres som en klasse, men indeholder kun abstrakte metoder (inklusive properties,<br />

indexers og events – som alle opfattes som en slags metoder). Et interface kan IKKE indeholde<br />

felter!<br />

public interface IBog {<br />

}<br />

//properties:<br />

string Forfatter{get;set;}<br />

string Titel{get;set;}<br />

int Sider{get;set;}<br />

//en abstrakt metode:<br />

void vis_bog();<br />

En klasse kan implementere et interface hvilket betyder at den har ’pligt’ til at definere de metoder<br />

og properties som er indeholdt i dette interface. En abstract klasse kan indeholde metoder som er<br />

defineret og implementeret, men et interface kan kun rumme ikke-implementerede medlemmer!!<br />

Bortset herfra minder abstrakte klasser om interfaces!<br />

På en vis måde ’arver’ klassen fra dette interface. I en vis forstand kan man opfatte et interface som<br />

en basisklasse. Hvis klassen Ejerlejlighed implementerer et interface ILejlighed kan man sige at<br />

en ejerlejlighed ’er’ en lejlighed!<br />

Et ’interface’ (en grænseflade til verden uden om) er egentligt de metoder osv som klassen stiller<br />

til rådighed for ’den ydre verden’ eller andre objekter eller ’klienten’. (Sådan fungerer interfaces<br />

typisk i Windows COM objekter). Jvf begrebet GUI – grafisk user interface! Alle medlemmer af et<br />

interface er derfor public – logisk nok.<br />

Ved at bruge interfaces kan man igen sikre et logisk hierarki. Hvis man vil designe et system – kan<br />

man meget logisk starte med at definere en række interfaces – systemets ’skelet’!<br />

En klasse kan både arve fra en basisklasse og implementere et eller evt mange interfaces. (I selve<br />

kode notationen: class X:Y{} kan man faktisk IKKE se om Y er en basisklasse eller et interface!!).<br />

En klasse kan implementere to interfaces som har den ’samme’ metode (dvs signaturen er ens:<br />

samme navn, samme returtype, samme parametre!) – fx således:<br />

public interface IKlasser{ string vis(); }<br />

public interface IObjekter{ string vis(); }<br />

I klassen kan man så skelne mellem de to implementeringer ved at skrive ’den fulde sti’:<br />

IKlasser.vis(){...}

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!