6236 Programmering I Agenda/Static

From Teknologisk videncenter
Jump to: navigation, search

Hvis man gerne vil have at noget er fælles for alle objekter af type Konto kan man vælge at gøre det statisk.

I eksemplet her er det rente der bliver statisk og dermed ens for alle konti. I metoden tilskrivRente har vi fjerne det kode der beder brugeren om at angive renten.

class Konto
{
        //Rente er static og dermed fælles for alle objekter af typen konto
	public static double rente;

	public string ejer;
	private double saldo;

        ....

	public void tilskrivRente()
	{
                //I tilskrivRente har vi fjernet det koder der spørger brugeren efter rente og anvender i stedet den statiske rente
		//System.Console.WriteLine("Hvad er renten?");
		//Double rente = Convert.ToDouble(System.Console.ReadLine());
		saldo = saldo + saldo / 100 * rente;
		System.Console.WriteLine("Kontoen er tilskrevet " + rente + "procent i rente");
	}
}

I main ændre vi renten ved at skrive Konto.rente (Navnet på klassen . Navnet på den statiske attribut eller metode)

Der efter vil alle objekter af typen Konto få samme rente.

static void Main(string[] args)
{
	//Her laves en ny variable af type Konto
	Opsparing k = new Opsparing(25000,new DateTime(2020,1,1));
	Konto k1 = new Konto(10000);
	Konto.rente = 5;
	k.tilskrivRente();
	k1.tilskrivRente();
 

Kontoen er tilskrevet 5procent i rente
Kontoen er tilskrevet 5procent i rente

På samme måde kunne vi anvende static til at lave en liste af Konto som vi kunne gemme alle Konti i. Listen bliver den samme for alle Konto objekter.

class Konto
{
	public static double rente;
	public static List<Konto> konti;

	public string ejer;
	private double saldo;

	public Konto(double saldo)
	{
                //I constructoren skal listen initialiseres, men kun første gang vi opretter en konto. Derfor if null.
		if (konti == null) konti = new List<Konto>();
		this.saldo = saldo;
	}

I main kan vi anvende listen således

static void Main(string[] args)
{
	//Her laves en ny variable af type Konto
	Opsparing k1 = new Opsparing(25000,new DateTime(2020,1,1));
	Konto k2 = new Konto(10000);

	Konto.konti.Add(k1);
	Konto.konti.Add(k2);

	foreach (Konto k in Konto.konti)
	{
		k.oplysSaldo();
	}
 

Din saldo er 25000
Din saldo er 10000

Opgave

Lav en liste af Biler på din Bil klasse.