Személyes eszközök
Keresés

 

A InfoWiki wikiből


Tartalomjegyzék

Háromszög

Készítsünk el egy 'Haromszog' osztályt, mely egy háromszög három oldalának értékét képes tárolni. A háromszög bármely két oldalának összege nagyobb kell legyen a harmadik oldal összegénél, valamint egyik oldalhosszúsága sem lehet nulla. Készítsünk hozzá konstruktort, amely ellenőrzi hogy csak szerkeszthető háromszöget adhassunk meg. Készítsünk hozzá property-ket, amelyen keresztül később az oldalak hosszát olvashatjuk, és írhatjuk (a szabályok betartása mellett). Készítsünk hozzá kerület és terület számítási lehetőséget.

Az alapfeladat

Készítsük el a háromszög osztályt az alábbi szempontok szerint:

  • egyik oldala sem lehet negatív vagy nulla
  • a három oldal hosszúsága olyan kell legyen, hogy szerkeszthető háromszöget adjon ki, vagyis bármely két oldal összege nagyobb kell legyen a harmadik oldal hosszánál
// Haromszog interface
class Haromszog
{
 protected int _A_oldal;
 protected int _B_oldal;
 protected int _C_oldal;
 
 public Haromszog(int a, int b, int c) {...}
 protected bool Szerkesztheto_e() { ... }
 public int A_oldal { get {...} set {...} }
 public int B_oldal { get {...} set {...} }
 public int C_oldal { get {...} set {...} }
}
  • a 'Szerkesztheto_e()' segédfüggvény, mely kiszámolja, hogy a három oldal ismeretében ez a háromszög szerkeszthető-e. Mivel segédfüggvény, nem kell 'public'-nak lennie.

Továbbfejlesztés, kiegészítés néhány jellemzővel

Készítsük el a 'Haromszog2' osztályt, amely a 'Haromszog' osztály leszármazottja, amely rendelkezik 'EgyenloSzaru_e', 'EgyenloOldalu_e', 'Derekszogu_e', 'Kerulet', 'Terulet' csak olvasható property-kkel. A 'Terulet' property csak abban az esetben képes kiszámolni a területet, ha az derékszögű háromszög.

// Haromszog2 interface
class Haromszog2:Haromszog
{
 public bool EgyenloSzaru_e { get {...} }
 public bool EgyenloOldalu_e { get {...} }
 public bool Derekszogu_e { get {...} }
 public double Kerulet { get {...} }
 public double Terulet { get {...} }
}
  • a fenti interface szándékosan nem teljes. El kell gondolkodni azon, hogy szükséges-e ehhez az osztályhoz saját konstruktort készíteni. Ehhez érdemes elolvasni a "konstruktorok" fejezetet még egyszer.

Továbbfejlesztés, Heron képletes területszámítás

Készítsük el a 'Haromszog3' osztályt, amely a 'Haromszog2' osztály leszármazottja, amely akkor is képes kiszámolni a területet, ha az általános háromszög az alábbi Heron képlet alapján 'Terület=négyzetgyök( s(s-a)(s-b)(s-c) )' ahol 's' a fél kerület, vagyis 's=(a+b+c)/2'.

// Haromszog3 interface
class Haromszog3:Haromszog2
{
 public double Terulet { get {...} }
}
  • ez az interface sem hibátlan. El kellene gondolkodni, hogy a 'Terulet' property felüldefiniálását milyen módon lehet elvégezni, mivel a fenti megoldás "warning"-os hibát okoz.

Főprogram, tesztelés

Készítsünk el egy főprogramot, amely bekéri a három oldal adatát, és példányosít mindhárom osztályból, és mindhárom példányra kiírja az adott példánynál létező információkat.

A lap eredeti címe: „http://wiki.ektf.hu/wiki/Mp4/page02
Nézetek
nincs sb_3.16.15.149 cikk