Gyakorlati alapok II.
Összetett példa a metódus-túlterhelésre
Az előző, Ahol az elnevezésnek köze nincs a tartalomhoz: a metódus-túlterhelés című fejezet már megmutatta a metódus "túlterhelésének" nem oly bonyolult lehetőségét. Ebben a fejezetben egy fokkal bonyolultabb gyakorlati példát nézünk meg a helyzet vizsgálatára.
Adott egy egyszerű kiiras() nevű eljárás, amelyet azonban konzolkiírás végett sokféle típusú bemeneti adattal "terhelünk túl". Ezt a trükköt már előzőleg néhányszor megtettük, ám amit még nem, hogy bemeneti paraméterként egy működő objektumot küldünk be (kiiras(Object object) -> Igazi Para Péter: metódus, mint bemeneti paraméter). Ebben az esetben az objektum egy pontosan megfogalmazott függvény lesz egy adott művelet végrehajtására. Célszerű a 4 algebrai függvénnyel példálóznunk:
-
osszeadas(a, b);
-
kivonas(a, b);
-
szorzas(a, b);
-
osztas(a, b);
Ezenfelül megpróbálhatnánk egy tömbbel való játékot is...
int[] tomb = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
...néhány programozási alaptételes megoldással:
-
osszegzes(int[] tomb),
-
atlagolas(int[] tomb)),
-
maximum(int[] tomb)),
-
minimum(int[] tomb)).
...és a végeredményeket szintúgy bevezethetnénk dedikált kiíró metódusunkba.
Nézzük meg a futtatható Java-kódot!
public class Main {
public static void kiiras() {
System.out.println("Hello vilag!");
}
public static void kiiras(String szoveg){
System.out.println(szoveg);
}
public static void kiiras(int szam){
System.out.println(szam);
}
public static void kiiras(Object object){
System.out.println(object);
}
public static void kiiras(int[] tomb){
for(int i = 0; i < tomb.length; i++) {
System.out.print(tomb[i] + " ");
}
System.out.println();
}
public static int osszeadas(int a, int b) {
return a + b;
}
public static int kivonas(int a, int b) {
return a - b;
}
public static int szorzas(int a, int b) {
return a * b;
}
public static float osztas(int a, int b) {
return (float)a / b;
}
public static int osszegzes(int[] tomb) {
int osszeg = 0;
for(int i = 0; i < tomb.length; i++) {
osszeg += tomb[i];
}
return osszeg;
}
public static float atlagolas(int[] tomb) {
float atlag;
int osszeg = 0;
for(int i = 0; i < tomb.length; i++) {
osszeg += tomb[i];
}
atlag = (float)osszeg / tomb.length;
return atlag;
}
public static int maximum(int[] tomb) {
int maximum = tomb[0];
for(int i = 0; i < tomb.length; i++) {
if(maximum < tomb[i]) {
maximum =
tomb[i];
}
}
return maximum;
}
public static int minimum(int[] tomb) {
int minimum = tomb[tomb.length-1];
for(int i = 0; i < tomb.length; i++) {
if(minimum > tomb[i]) {
minimum =
tomb[i];
}
}
return minimum;
}
public static void main(String[] args) {
int[] tomb = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int a = 40;
int b = 30;
kiiras();
kiiras("Hello vilag, mint bemeneti parameter");
kiiras(a);
kiiras(osszeadas(a, b));
kiiras(kivonas(a, b));
kiiras(szorzas(a, b));
kiiras(osztas(a, b));
kiiras(tomb);
kiiras(atlagolas(tomb));
kiiras(osszegzes(tomb));
kiiras(maximum(tomb));
kiiras(minimum(tomb));
}
}
Végeredmény:
Hello vilag!
Hello vilag, mint bemeneti parameter
40
70
10
1200
1.3333334
1 2 3 4 5 6 7 8 9 10
5.5
55.0
10
1