Difference between revisions of "6236 Programmering I Agenda/Constructors"

From Teknologisk videncenter
Jump to: navigation, search
Line 33: Line 33:
 
//Her kaldes konstruktøren for at lave en ny konto
 
//Her kaldes konstruktøren for at lave en ny konto
 
Konto k = new Konto(25000);  
 
Konto k = new Konto(25000);  
 +
</source>
 +
 +
Hvis man gerne vil have at parameteren i konstruktøren hedde det samme som de attributter værdien gemmes i kan man benytte "this".
 +
 +
<source lang=csharp>
 +
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;
 +
}
 
</source>
 
</source>

Revision as of 11:25, 27 November 2015

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;
	}