6236 Programmering I Agenda/Class

From Teknologisk videncenter
Jump to: navigation, search

En klasse (Class) minder lidt om en struct og kan samle flere variable i en, men til forskel fra struct kan man på klassen også tilføje metoder der kan udføre noget med klassens variable. Variablene kaldes også attributter.

Her under laves først klassen Konto, på denne klasse tilføjes attributterne ejer og saldo.

Dertil kommer metoderne oplysSaldo, haev, indSaet og tilskrivRente, men tilforskel fra tidligere tager de ikke længere saldo som parameter da de arbejder på den saldo der allerede ligger i klassen.

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

Når vi vil arbejde med klassen forgår det sådan her. Bemærk at vi ikke længere skal overføre saldo da den jo ligge på klassen.

static void Main(string[] args)
{
	//Her laves en ny variable af type Konto
	Konto k = new Konto() { ejer = "Jens", saldo = 25000 };
	Int32 valg;

	do
	{
		System.Console.WriteLine("Hvad ønsker du at gøre?");

		System.Console.WriteLine("1. Oplys saldo");
		System.Console.WriteLine("2. Hæve penge");
		System.Console.WriteLine("3. Sætte penge ind");
		System.Console.WriteLine("4. Tilskriv renter");
		System.Console.WriteLine("0. Exit");
		valg = Convert.ToInt32(System.Console.ReadLine());
		switch (valg)
		{
			case 1:
				k.oplysSaldo();
				break;
			case 2:
				k.haev();
				break;
			case 3:
				k.indSaet();
				break;
			case 4:
				k.tilskrivRente();
				break;
			default:
				break;
		}
	} while (valg != 0);
}

Fordelen med klasser er at vi kan oprette flere variable (instancer) af samme klasse. Herunder oprettes to konti og et menupunkt så man kan skifte mellem dem.

static void Main(string[] args)
{
	//Her oprettes k1 og k2 som to instancer af klassen Konto
	Konto k1 = new Konto() { ejer = "Jens", saldo = 25000 };
	Konto k2 = new Konto() { ejer = "Kurt", saldo = -1000 };
	Int32 valg;
	
	//Her sættes k til kontoen k1 som default
	Konto k = k1;
				
	do
	{
		System.Console.WriteLine("Hvad ønsker du at gøre?");

		System.Console.WriteLine("1. Oplys saldo");
		System.Console.WriteLine("2. Hæve penge");
		System.Console.WriteLine("3. Sætte penge ind");
		System.Console.WriteLine("4. Tilskriv renter");
		System.Console.WriteLine("5. Skift konto");
		System.Console.WriteLine("0. Exit");
		valg = Convert.ToInt32(System.Console.ReadLine());
		switch (valg)
		{
			case 1:
				k.oplysSaldo();
				break;
			case 2:
				k.haev();
				break;
			case 3:
				k.indSaet();
				break;
			case 4:
				k.tilskrivRente();
				break;
			case 5:
				System.Console.WriteLine("Hvilken konto ønsker du at arbejde med");
				System.Console.WriteLine("1. Jens");
				System.Console.WriteLine("2. Kurt");
				Int32 v = Convert.ToInt32(System.Console.ReadLine());
				if (v == 1) k = k1;
				if (v == 2) k = k2;
				break;
			default:
				break;
		}
	} while (valg != 0);
}

Opgave

Konto

Afprøv først koden som den er. Prøv at sætte penge ind på den ene konto og tjek saldo. Skift derefter til den anden konto og sæt penge ind på den, tjek saldo. Skift tilbage til den første og tjek at saldo på den er uændret.

Ret i metoderne indsat, haev og rente så de altid udskriver saldo når der er indsat penge.

Opret et array af konti (Se siden med struct hvordan) og sæt de to konti ind i arrayet. Opret også yderligere en koto og tilføj til arrayet.

Lav programmet sådan at den konto man vælger i menupunkt 5 kommer fra arrayet.

Bil

Lav også et nyt projekt hvor du laver klassen bil og giver den attributterne mærke, ejer og km/l.

Tilføj metoder i Bil der omregner til liter/100km og en anden der kan beregner forbruget ved en bestem distance.