A InfoWiki wikiből
Tartalomjegyzék |
Zár osztály
Egy 'ZÁR' objektumot jellemez egy egész szám, amely a zárkombinációt tartalmazza. A ZÁR-nak van egy 'bezar()' metódusa, amely azonnal bezárja a zárat. Van neki egy 'nyitva_e' property-e, amellyel meg lehet vizsgálni, hogy a zár nyitva van-e. Ezen túl van egy 'kinyit(kombinacio)' metódusa, amely paramétereként megkapja a kinyitáshoz szükséges kombinációs számot. Amennyiben a kombináció egyezik, a zár kinyílik, ellenkező esetben akkor is bezáródik, ha nyitva lett volna.
Egy 'FejlettZar' képes számon tartani, hogy hányszor próbálták meg kinyitni. Amennyiben a próbálkozás elér egy előre megadott mennyiséget, a zár beolvasztja saját zárszerkezetét, és soha többé nem lehet kinyitni.
Készítsünk el egy 'ZÁR' osztályt, melynek van két mezője: egy zárkombinációt tároló egész szám, és egy zár státuszt tároló karakter mező. Ebben vagy a 'N' mint NYITVA, vagy 'Z' mint zárva érték legyen. Készítsünk konstruktort, amely paraméterként megkapja a zár majdani nyitó kombinációját. A zár induláskor zárva van.
Készítsünk hozzá egy 'bezar()' metódust, amely kiírja a képernyőre az alábbi szövegek közül a megfelelőt:
- "a zár nyitva volt, most bezáródott"
- "a zár már eleve zárva volt, zárva marad"
Ezen túl készítsünk el egy 'kinyit(kombinacio)' metódust, amely a paraméter értékét összehasonlítja a nyitó kombinációval, és ha az egyezik, akkor kinyílik:
- "a zár zárva volt, most kinyílik"
- "a zár eleve nyitva volt, nyitva marad"
Készítsünk a 'ZÁR' objektumba egy 'nyitva_vane_e' csak olvasható property-t (logikai), mely megadja, hogy a zár milyen állapotban van.
Összegezve:
- zarkombinacio mező, egész szám
- statusz mező, karakter (N:nyitva, Z:zárva)
- nyitva_e csak olvasható property, bool típusú
- bezar()
- kinyit( kombinacio )
- konstruktor
Teszt program
Készítsünk olyan teszt programot, amely bekér induláskor egy egész számot, és ennyi db 'ZÁR' példányt helyez el egy listába, a nyitó kombinációkat véletlen értékekre beállítva 40-60 között. Majd egy maximum 1000 elemű ciklusban véletlen számokat talál ki 40-60 között, próbálgatva a nyitó kombinációkat. Csak a lezárt zárakat próbálja meg kinyitni, amelyek már nyitva vannak, azokat nyitva tartja. A ciklus korábban is leállhat, mint 1000, ha minden lakat nyitva van.
Fejlett Zár osztály
Fejlesszük tovább a ZÁR osztályunkat egy 'FejlettZar' osztállyá, amelynek van egy 'hibasProbalkozas' mezője (egész szám). Ebben a mezőben számoljuk, hányszor próbálták hibás kombinációval kinyitni a zárat. Tartalmaz ezen túl egy 'maxHiba' mezőt is, melyben azt tároljuk, hogy maximum hányszor próbálhatják meg rossz kombinációval kinyitni a zárat. A státusz mező értéke felveheti a 'S'="megsemmisült" értéket is, amennyiben a zár leolvasztja magát. Ilyen státuszban már a jó kombinációval sem lehet majd kinyitni. A kinyit(kombinacio)' metódust javítsuk ki, hogy amennyiben a hiba-számláló eléri a maximális értéket, úgy a zár beolvasztja magát. Ennek megfelelően a kiírásokat is módosítsuk, és módosítsuk még a megfelelő pontokon a metódusokat illetve a property-t.
Összegezve:
- hibasProbalkozas mező, egész szám
- maxHiba mező, egész szám
- statusz mező, karakter (S:megsemmisült, N, Z)
- kinyit(..) függvény működését módosítjuk
- bezar() függvény módosul
- nyitva_e property módosul
- konstruktor
Teszt program
Módosítsuk a teszt programot, hogy megadott mennyiségű egyszerű 'ZÁR' után ugyanannyi mennyiségű 'FejlettZar' példányt is elhelyez a listában, de a továbbiakban a fentiekben leírt módon viselkedik (fejlettzár példányokat is megpróbál kinyitni, stb).