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

From Teknologisk videncenter
Jump to: navigation, search
(Created page with "På Class siden så i følgende klasse. <source lang=csharp> class Konto { public string ejer; public double saldo; public void oplysSaldo() { System.Console.WriteLine("...")
 
 
(6 intermediate revisions by the same user not shown)
Line 36: Line 36:
 
Som I måske har bemærket er alle attributter (variable) public, men sådan behøver det ikke være.
 
Som I måske har bemærket er alle attributter (variable) public, men sådan behøver det ikke være.
  
I C# kan vi vælge at lave properties. Med properties kan vi med get og set styre hvilken adgang der er til attributterne uden for klassen. Vi kunne f.eks. fjerne set fra saldo hvorved saldo ville blive readonly.
+
I C# kan vi vælge at lave properties (Bør man altid gøre). Med properties kan vi med get og set styre hvilken adgang der er til attributterne uden for klassen. Vi kunne f.eks. fjerne set fra saldo hvorved saldo ville blive readonly.
  
 
<source lang=csharp>
 
<source lang=csharp>
Line 53: Line 53:
 
}
 
}
 
</source>
 
</source>
 +
En property anvende i programmet på samme måde som en alm. attribut.
 +
 +
<source lang=csharp>
 +
static void Main(string[] args)
 +
{
 +
Konto k = new Konto() { Saldo = 25000, Ejer = "Kurt" };
 +
k.haev();
 +
 +
System.Console.WriteLine("Kontoen ejes af " + k.Ejer);
 +
System.Console.ReadKey();
 +
}
 +
</source>
 +
 +
<pre style="background:rgba(0,0,0,1); color:#FFFFFF">
 +
Hvor meget vil du hæve?
 +
1000
 +
Kontoen ejes af Kurt
 +
</pre>
 +
 +
En fordel ved at anvende properties er at vi senere kan ændre på vores attributter og alligevel bevare de oprindelige funktioner.
 +
 +
Hvis vi ønsker at navnet på ejeren skal deles i et fornavn og et efternavn, men gerne vil bevare Ejer som en kombination af det to kan vi gøre således.
 +
<source lang=csharp>
 +
private string fornavn;
 +
public string Fornavn
 +
{
 +
get { return fornavn;}
 +
set { fornavn = value; }
 +
}
 +
private string efternavn;
 +
public string Efternavn
 +
{
 +
get { return efternavn; }
 +
set { efternavn = value; }
 +
}
 +
 +
public string Ejer
 +
{
 +
get { return fornavn + efternavn; }
 +
}
 +
 +
</source>
 +
<source lang=csharp>
 +
static void Main(string[] args)
 +
{
 +
Konto k = new Konto() { Saldo = 25000, Fornavn = "Kurt",Efternavn = "Jensen" };
 +
k.haev();
 +
 +
System.Console.WriteLine("Kontoen ejes af " + k.Ejer);
 +
System.Console.ReadKey();
 +
}
 +
</source>
 +
 +
<pre style="background:rgba(0,0,0,1); color:#FFFFFF">
 +
Hvor meget vil du hæve?
 +
1000
 +
Kontoen ejes af KurtJensen
 +
</pre>
 +
 +
==Opgave==
 +
Lav properties på alle attributter i din Bil opgave.

Latest revision as of 14:09, 30 November 2015

På Class siden så i følgende klasse.

class Konto
{
	public string ejer;
	public double saldo;
 
	public void oplysSaldo()
	{
		System.Console.WriteLine("Din saldo er " + saldo);
	}
 
	public void haev()
	{
		System.Console.WriteLine("Hvor meget vil du hæve?");
		Double beloeb = Convert.ToDouble(System.Console.ReadLine());
		saldo = saldo - beloeb;
	}
 
	public void indSaet()
	{
		System.Console.WriteLine("Hvor meget vil du indsætte?");
		Double beloeb = Convert.ToDouble(System.Console.ReadLine());
		saldo = saldo + beloeb;
	}
 
	public void tilskrivRente()
	{
		System.Console.WriteLine("Hvad er renten?");
		Double rente = Convert.ToDouble(System.Console.ReadLine());
		saldo = saldo + saldo / 100 * rente;
	}
}

Som I måske har bemærket er alle attributter (variable) public, men sådan behøver det ikke være.

I C# kan vi vælge at lave properties (Bør man altid gøre). Med properties kan vi med get og set styre hvilken adgang der er til attributterne uden for klassen. Vi kunne f.eks. fjerne set fra saldo hvorved saldo ville blive readonly.

private string ejer;
public string Ejer
{
	get { return ejer; }
	set { ejer = value; }
}

private double saldo;
public double Saldo
{
	get { return saldo; }
	set { saldo = value; }
}

En property anvende i programmet på samme måde som en alm. attribut.

static void Main(string[] args)
{
	Konto k = new Konto() { Saldo = 25000, Ejer = "Kurt" };
	k.haev();

	System.Console.WriteLine("Kontoen ejes af " + k.Ejer);
	System.Console.ReadKey();
}
Hvor meget vil du hæve?
1000
Kontoen ejes af Kurt

En fordel ved at anvende properties er at vi senere kan ændre på vores attributter og alligevel bevare de oprindelige funktioner.

Hvis vi ønsker at navnet på ejeren skal deles i et fornavn og et efternavn, men gerne vil bevare Ejer som en kombination af det to kan vi gøre således.

private string fornavn;
public string Fornavn
{
	get { return fornavn;}
	set { fornavn = value; }
}
private string efternavn;
public string Efternavn
{
	get { return efternavn; }
	set { efternavn = value; }
}

public string Ejer
{
	get { return fornavn + efternavn; }
}
static void Main(string[] args)
{
	Konto k = new Konto() { Saldo = 25000, Fornavn = "Kurt",Efternavn = "Jensen" };
	k.haev();

	System.Console.WriteLine("Kontoen ejes af " + k.Ejer);
	System.Console.ReadKey();
}
Hvor meget vil du hæve?
1000
Kontoen ejes af KurtJensen

Opgave

Lav properties på alle attributter i din Bil opgave.