26.07.2013 Views

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

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

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

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

advarsel fra kompileren fordi du ikke også override metoden GetHashCode() – hvis du vil rette<br />

denne fejl kan du skrive endnu en override:<br />

public override int GetHashCode(){<br />

return kilometer.GetHashCode();<br />

}<br />

Metoden GetHashCode() returnerer et heltal som er objektets ’nummer’ eller hash kode<br />

(nummer kode) i RAM – metoden kan altså kaldes på hele bilen eller på fx dens navn eller<br />

et andet felt. Hash kode bruges i hashtabeller til at finde et index til et objekt.<br />

Eksempel: Polymorfisme og dynamisk binding<br />

Der vil nu blive præsenteret et lille eksempel på styrken i arv og polymorfisme:<br />

For at give flere muligheder er der her oprettet en ny klasse Cirkel som arver fra Figur. Klassen<br />

cirkel overrider også metoden vis().<br />

Desuden er skrevet en applikation som opretter et array af Figurer som vælges tilfældigt. Det mest<br />

interessante er at når disse tilfældige objekter er oprettet og indsat i tabellen kan systemet finde den<br />

rigtige metode (run time – dvs mens programmet afvikles) til det rigtige objekt. Den rigtige metode<br />

findes dynamisk (’dynamic binding’) og ikke statisk (under kompileringen). Dette kaldes<br />

polymorfisme. Styrken i dette er også at det er muligt at oprette en tabel af Figurer som ikke blot<br />

kan rumme Figurer men også alle sub klasser af Figur!!<br />

Kode eksempel på arv og polymorfisme:<br />

//fil: arv.cs<br />

//illustrerer på enkel måde arv og polymorfisme i C#<br />

//af nemheds grunde er alle klasser her anbragt i samme fil arv.cs<br />

//postcondition: outputter data om objekter<br />

using System;<br />

public class Figur{<br />

}<br />

//protected og ej private da de skal bruges af arve-klasser:<br />

protected string navn;<br />

protected string id;<br />

public Figur(string n){navn=n;id="Figur";}<br />

//netode som nedarves erklæres virtual så den kan overrides:<br />

public virtual void vis(){<br />

Console.WriteLine("Objektet er {0} og navnet er {1}",id,navn);<br />

}<br />

public class Rektangel: Figur{<br />

//NB navn og id er nedarvede automatisk<br />

private int side1,side2;<br />

//constructor kalder base dvs kalder Figurs constructor:

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

Saved successfully!

Ooh no, something went wrong!