Difference between revisions of "6236 Programmering I Agenda/Method overload"

From Teknologisk videncenter
Jump to: navigation, search
 
Line 56: Line 56:
 
}
 
}
 
</source>
 
</source>
 +
==Opgave==
 +
Første dag havde i følgende program
 +
<source lang=csharp>
 +
static void Main(string[] args)
 +
{
 +
//Opret en variable af typen Int32 (Heltal) med navnet antal
 +
Int32 antal;
 +
double pris;
 +
double total;
 +
string varenavn;
 +
 +
//Bed brugeren om at indtaste varenavn
 +
System.Console.Write("Indtast varenavn ");
 +
varenavn = System.Console.ReadLine();
 +
 +
//Bed brugeren om at indtaste antal
 +
System.Console.Write("Indtast antal ");
 +
antal = Convert.ToInt32(System.Console.ReadLine());
 +
 +
//Bed brugeren om at indtaste pris
 +
System.Console.Write("Indtast stk. pris ");
 +
pris = Convert.ToDouble(System.Console.ReadLine());
 +
 +
//Beregn total
 +
total = antal * pris;
 +
 +
//Udskriv varenavn og total
 +
System.Console.WriteLine(antal + " " + varenavn + " af " + pris + "kr/stk. = "+ total + "kr" );
 +
System.Console.ReadKey();
 +
}
 +
</source>
 +
Lav om i koden så beregning og udskrift af total foregør i metoden beregnTotal
 +
 +
Lav nu to versioner af beregnTotal, en hvor antal og pris overføres som int og double, en anden hvor de overføres som strings.

Latest revision as of 15:15, 26 November 2015

I konto øvelsen havde vi metoden haev. Metoden to sal som en parameter og spurgte brugeren hvor meget der skal hæves.

Lad os antage at vi nogle gange allerede ved hvor meget der skal hæves og gerne vil overfører det beløb som parameter sammen med saldo.

Det kan vi med det der kendes som method overloading.

I eksemplet her har vi to metoder med samme navn, men den ene tager kun en parameter, den anden tager to. Når vi kalder metoden fra main finder C# selv ud af hvilken metode den skal anvende ud fra antallet af parametre.

class Program
{
	static Double haev(Double sal)
	{
		System.Console.WriteLine("Hvor meget vil du hæve?");
		Double beloeb = Convert.ToDouble(System.Console.ReadLine());
		sal = sal - beloeb;
		return sal;
	}

	static Double haev(Double sal, Double belob)
	{
		sal = sal - beloeb;
		return sal;
	}

	static void Main(string[] args)
	{
		Double saldo = 25000;
		
		//Kald den hæv metode som spørger brugeren hvad der skal hæves
		haev(saldo);

		//Kalder den metode der blot hæver beløbet (1000kr)
		haev(saldo, 1000);

		System.Console.ReadKey();
	}
}

En endnu bedre måde er at lade den ene metode kalde den anden, så vi er sikre på der altid udføres den samme opgave.

static Double haev(Double sal)
{
	System.Console.WriteLine("Hvor meget vil du hæve?");
	Double beloeb = Convert.ToDouble(System.Console.ReadLine());
	//Her kalder metoden den anden metode med de ekstra parametre
	return haev(sal, beloeb);
}

static Double haev(Double sal, Double belob)
{
	sal = sal - beloeb;
	return sal;
}

Opgave

Første dag havde i følgende program

static void Main(string[] args)
{
	//Opret en variable af typen Int32 (Heltal) med navnet antal
	Int32 antal;
	double pris;
	double total;
	string varenavn;
 
	//Bed brugeren om at indtaste varenavn
	System.Console.Write("Indtast varenavn ");
	varenavn = System.Console.ReadLine();
 
	//Bed brugeren om at indtaste antal
	System.Console.Write("Indtast antal ");
	antal = Convert.ToInt32(System.Console.ReadLine());
 
	//Bed brugeren om at indtaste pris
	System.Console.Write("Indtast stk. pris ");
	pris = Convert.ToDouble(System.Console.ReadLine());
 
	//Beregn total
	total = antal * pris;
 
	//Udskriv varenavn og total
	System.Console.WriteLine(antal + " " + varenavn + " af " + pris + "kr/stk. = "+ total + "kr" );
	System.Console.ReadKey();
}

Lav om i koden så beregning og udskrift af total foregør i metoden beregnTotal

Lav nu to versioner af beregnTotal, en hvor antal og pris overføres som int og double, en anden hvor de overføres som strings.