Gyakorlati alapok III.

Körtulajdonságok interfészen keresztül

 

Az alábbi kódcsomagban a kör néhány jellegzetes, ugyanakkor most a legfontosabbnak ítélt tulajdonságát zárjuk interfészbe, hogy azokat kötelezően ki kelljen dolgoznunk azon osztályokban, amelyekben implementálásra kerülnek (implements). Ezen tulajdonságok:

A tulajdonságokat, mint legáltalánosabb megközelítéseket az interfész tartalmazza, a 2 kidolgozó osztály ezen bemeneti adatok felhasználásával, illetve a metódusfej kötelező kidolgozásával (itt körterület) egyre specifikusabb kimeneti adatokat produkálnak. A jelen esetünkben ez a körterület összegzése és átlagolása.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Egyes programozói vélekedések szerint az interfészek elnevezéseit kötelezően I betűvel kezdjük (például IKortulajdonsagok). Számos példát láttam erre, azonban az ellenkezőjére is, amely során ezt a szabályt nem vették figyelembe.

 

Nézzük meg a futtatható Java-kódot:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


Main.java

 

public class Main {
public static void main(String[] args) {
    new KorTeruletOsszegzo();
    System.out.println();
    new KorTeruletAtlagolo();
    }
}

 

IKortulajdonsagok.java

 

import java.math.*;

public interface IKorTulajdonsagok {
    double PI = Math.PI;
    int korSzam = 10;
    double korTerulet(int sugar, double PI);
}

 

KorTeruletOsszegzo.java

 

public class KorTeruletOsszegzo implements IKorTulajdonsagok{

KorTeruletOsszegzo(){
    System.out.println(osszegzo());
};

@Override
public double korTerulet(int sugar, double PI){
    return (sugar * sugar) * PI;
}

public double osszegzo(){
    double korTeruletOsszeg = 0;
    for(int i = 1; i <= korSzam; i++){
        int sugar = i;
        korTeruletOsszeg += korTerulet(sugar, PI);
        System.out.println(sugar + " egyseg sugaru kor terulete: " + korTerulet(sugar, PI));
    }
    System.out.print("Korteruletek osszege: " + korTeruletOsszeg);
    return korTeruletOsszeg;
    }
}

 

KorTeruletAtlagolo.java

 

public class KorTeruletAtlagolo implements IKorTulajdonsagok{

KorTeruletAtlagolo(){
    System.out.println(atlagolo());
};

@Override
public double korTerulet(int sugar, double PI){
    return (sugar * sugar) * PI;
}

public double atlagolo(){
    double korTeruletOsszeg = 0;
    for(int i = 1; i <= korSzam; i++){
        int sugar = i;
        korTeruletOsszeg += korTerulet(sugar, PI);
        System.out.println(sugar + " egyseg sugaru kor terulete: " + korTerulet(sugar, PI));
    }
    System.out.print("Korteruletek atlaga: " + korTeruletOsszeg / korSzam);
    return korTeruletOsszeg / korSzam;
    }
}

 

Végeredmény:

1 egyseg sugaru kor terulete: 3.141592653589793
2 egyseg sugaru kor terulete: 12.566370614359172
3 egyseg sugaru kor terulete: 28.274333882308138
4 egyseg sugaru kor terulete: 50.26548245743669
5 egyseg sugaru kor terulete: 78.53981633974483
6 egyseg sugaru kor terulete: 113.09733552923255
7 egyseg sugaru kor terulete: 153.93804002589985
8 egyseg sugaru kor terulete: 201.06192982974676
9 egyseg sugaru kor terulete: 254.46900494077323
10 egyseg sugaru kor terulete: 314.1592653589793
Korteruletek osszege: 1209.51317163207051209.5131716320705

1 egyseg sugaru kor terulete: 3.141592653589793
2 egyseg sugaru kor terulete: 12.566370614359172
3 egyseg sugaru kor terulete: 28.274333882308138
4 egyseg sugaru kor terulete: 50.26548245743669
5 egyseg sugaru kor terulete: 78.53981633974483
6 egyseg sugaru kor terulete: 113.09733552923255
7 egyseg sugaru kor terulete: 153.93804002589985
8 egyseg sugaru kor terulete: 201.06192982974676
9 egyseg sugaru kor terulete: 254.46900494077323
10 egyseg sugaru kor terulete: 314.1592653589793
Korteruletek atlaga: 120.95131716320705120.95131716320705