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.

IObjekter.vis(){...}<br />

Arv fra flere klasser er ikke tilladt i C# (det er tilladt i fx C++), men i C# kan en klasse altså i stedet<br />

’arve’ fra mange interfaces. Effekten er stort set den samme – men man undgår de problemer som<br />

’multiple inheritance’ skaber i fx C++!<br />

Hvis vi antager en basisklasse Bog og et interface IBog (interfaces starter – pr tradition - med ’I’),<br />

kan man altså skrive en ny klasse sådan:<br />

public class Roman:Bog, Ibog{}<br />

’Bog’ efter kolon er basis klassen og ’IBog’ er et interface.<br />

Hvis en klasse både ’arver’ fra en klasse og et interface, skal basisklassen stå først efter kolon!!<br />

Et mere konkret eksempel på anvendelse af interfaces er følgende kode eksempel, som er<br />

kommenteret løbende:<br />

//interface.cs<br />

using System;<br />

//Alle bøger ‘arver’ fra IAbstraktBog (dvs det som er fælles for alle bøger):<br />

public interface IAbstraktBog{<br />

}<br />

//har 4 properties og en metode (her alle abstrakte uden implementering):<br />

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

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

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

//eks på property der kun er readonly: Bogens type:<br />

string Type {get;}<br />

void vis_bog();<br />

//Endnu et interface – ’arver fra’ abstrakt bog: Index findes kun i en fagbog:<br />

//Et interface kan implementere et andet interface!:<br />

public interface IAbstraktFagBog : IAbstraktBog{<br />

}<br />

//Denne property sættes altså med en streng tabel eller ord liste:<br />

string[] Index{get;set;}<br />

//Klassen Bog implementerer dvs ‘udfylder’ interfacet IAbstraktBog - dvs ‘er’ en (abstrakt) bog:<br />

public class Bog:IAbstraktBog{<br />

string forfatter,titel,type="Bog";

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

Saved successfully!

Ooh no, something went wrong!