Tárgy, csoport:Programozási nyelvek II. Java (BSc)
Oktató:Németh Boldizsár
Feladat:Első beadandó - MrPostman
Határidő:2015-11-02, 23:55:00

Részletes leírás

Posta

A feladatban levelek kézbesítését fogjuk megoldani. A részfeladatok megoldása során ügyeljünk arra, hogy a megadottakon kívül egyetlen osztály se tartalmazzon más publikus metódust vagy adattagot! Bár nem kötelező, célszerű metódusokat dokumentációs megjegyzéssel dokumentálni.

A megoldást egyetlen zip állományként kell feltölteni, amely tartalmazza a csomagnak megfelelő könyvtárszerkezetben az összes forráskódot. A fordítás során létrejövő class állományokat viszont nem szabad már mellékelni! A fordításhoz minimum a Java Standard Edition 7 használata kötelező.

A kész megoldást az innen letölthető tesztelővel lehet kipróbálni. Ezt a lefordított class fájlokkal a következő módon lehet futtatni:

$ java Test

A feladat összefoglaló leírása

Egy postának elsődleges feladata, hogy leveleket kézbesítsen. Egy levélnek van feladója, címzettje és tartalma.

A feladót és címzettet egy-egy címmel ábrázoljuk. Egy cím az országból, városból, utcából és házszámból áll.

A leveleket postások kézbesítik, akik egy adott utcában kivisznek egy levelet, illetve eldöntik, hogy jó-e a címzett. A postás tudja, hogy az ő utcájában hány páros és hány páratlan számú házszám van. Ez alapján vagy kikézbesíti a levelet vagy visszaadja a hivatalnak a rossz címzés miatt. Ha visszaküldéskor kiderül, hogy a feladó sem található, akkor a postahivatalnok mérgében összetépi a levelet.

A postának vannak elosztó központjai (hivatalai): minden országban van egy országos, és számos városi hivatal. Egy országnak egy postája van, és számos ország létezik. Az országos hivatalok kapcsolatban állnak más országos hivatalokkal és az országuk városi hivatalaival. A városi hivatalok az országos hivatalukkal állnak kapcsolatban.

A városi hivatalok utca alapján eldöntik, hogy melyik postás tudja kivinni a levelet, és kapcsolatban állnak az országos hivatallal: onnan kapnak leveleket, hogy kikézbesítsék a megfelelő postással. Ha egy postás nem tudja kikézbesíteni a levelet, akkor visszaviszi a városi hivatalba, az pedig visszaküldi a feladónak. Egész pontosan: ha ugyanabban a városban a címzett és a feladó, akkor egyszerű a helyzet: meg kell keresni a postást, aki a feladónak kézbesíteni tudja a levelet. Ha külön városban vannak: el kell küldeni a levelet az országos hivatalnak. Ha másik országban vannak, akkor sincs baj, mert az országos hivatalok kapcsolatban vannak egymással, az egyik átküldheti a levelet a másiknak.

A levelet a feladó egy tetszőleges városi hivatalban adhatja fel, egyszerűen bedobva a postaládába. A feladat a levelek feldolgoztatása.

A címek ábrázolása

A post.mail csomagban hozzuk létre az Address osztályt! Ez fogja a címeket ábrázolni. Az Address privát adattagjai a következők:

Az Address osztálynak legyen egy konstruktora, mely paraméterül várja az adattagok kezdeti értékét, és inicializálja az adattagokat! Emellett minden adattagjához tartozzon egy-egy paraméter nélküli metódus, mely visszaadja az adattag értékét! Például a country-hoz legyen getCountry() metódus, a city-hez legyen getCity() és így tovább.

A levelek ábrázolása

Ugyanebben a post.mail csomagban hozzuk létre a Letter osztályt is, mely a kézbesítendő leveleket fogja ábrázolni! Egy Letter objektumnak legyenek a következő privát adattagjai:

A Letter osztály emellett definiálja a következő publikus metódusokat:

A postások ábrázolása

Definiáljuk a postást ábrázoló Postman osztályt a post csomagban! Egy postás tudja, hogy melyik utca tartozik hozzá és abban az utcában melyik a legnagyobb páratlan és páros házszám. Egy Postman objektum adattagjai tehát a következők:

Definiáljuk továbbá a következő publikus metódusokat:

A városi hivatalok ábrázolása

Definiáljuk a városi hivatalt ábrázoló Municipal osztályt az office csomagban a post csomagon belül! A városi hivatal számon tartja a székhelyét, az országos postahivatalt, a postásait, és emellett van egy postaládája is, ahova a városban élők bedobhatják a leveleiket, melyet a városi hivatal aztán kézbesít. Az adattagok tehát a következők:

Definiáljuk továbbá a következő metódusokat is:

Az országos hivatalok ábrázolása

Definiáljuk szintén az office csomagban a National osztályt, mely az országos hivatalt fogja ábrázolni! Egy országos hivatal ismeri más országok országos hivatalait, és a saját országának városi hivatalait. Az adattagok tehát a következők:

Definiáljuk emellett az alábbi metódusokat:

Beadott megoldások

A beadott megoldásokhoz a beadás után még hozzászólások írhatóak.

Nincsenek még beadott megoldások.