Difference between revisions of "6236 Programmering I Agenda/Method overload"
(One intermediate revision by the same user not shown) | |||
Line 38: | Line 38: | ||
} | } | ||
</source> | </source> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | <source lang=Csharp> | ||
+ | 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; | ||
+ | } | ||
+ | </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.