Operativsystem: .............................................................
Operativsystem: .............................................................
Operativsystem: .............................................................
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: