6236 Programmering I Agenda/Constructors

From Teknologisk videncenter
Jump to: navigation, search

I klasse Konto gjorde vi følgende i main når vi skulle lave en ny klasse.

Ulempen er at saldo skal være public for at det virker, hvilket gør at vi har mulighed for bagefter at ændre saldo utilsigtet.

//Her oprette vi en konto
Konto k = new Konto() { ejer = "Jens", saldo = 25000 };
//Her laver vi saldo om
k.saldo = 1000;

Hvis vi i stedet gør saldo privat kan den ikke ændres fra main, men så er vi nødt til at lave en konstruktør.

Konstruktøren er en metode der hedder det samme som klassen.

class Konto
{
	public string ejer;
	//Her gøres saldo private
        private double saldo;

        //I konstruktøren overføres saldo som en parameter
	public Konto(double sal)
	{
                //Her gemmes den overførte sal i variablen saldo
		saldo = sal;
	}
        .......

Når vi skal oprette en ny Konto skal vi nu også fortælle hvad saldoen er.

//Her kaldes konstruktøren for at lave en ny konto
Konto k = new Konto(25000);

Hvis man gerne vil have at parameteren i konstruktøren hedde det samme som de attributter værdien gemmes i kan man benytte "this".

class Konto
{
	public string ejer;
	private double saldo;

	public Konto(double saldo)
	{
                //Her gemmes den overførte saldo i den interne this.saldo
		this.saldo = saldo;
	}

Opgave

Lav en constructor på din bil klasse. Lad konstructoren tage mærke og ejer som parameter.

Hvis du har properties i din classe så gør efterfølgende ejer og mærke til readonly attributter.