Készítsd el az alábbi osztályokat, amelyek egy város autós forgalmát szimulálják. A Csomopont főprogramja hét parancssori paraméterrel dolgozik, ha többet vagy kevesebbet kap, lépjen ki és írjon ki hibaüzenetet. A parancssori paraméterek sorban: a csomópont saját portszáma, a csomópont naplófájljának neve, a csomóponttól (sorban) északra, keletre, délre és nyugatra található másik csomópontok portszámai, valamint a csomópont lámpájának váltási üteme (ezredmásodpercben). Az egyéb csomópontok "portszámai" közül bármelyik lehet az "x" szöveg is, ez azt jelzi, hogy a megfelelő irányban nincsen másik csomópont. java Csomopont 12345 naplo12345.txt 1111 2222 x 4444 1000 Ennek a csomópontnak a portja 12345, északra tőle az 1111, keletre a 2222, nyugatra a 4444 portú csomópont található, délre nincsen másik csomópont. A lámpa másodpercenként vált. A csomópont főprogramja indítson el egy szervert a megadott porton, és várja a kapcsolatokat. Egyszerre több kapcsolatot is kell tudnia kezelni. A bejövő kapcsolatok szöveges üzeneteket küldenek. Kétfajta kapcsolatot kezelünk: autókat és rendőröket. Az autók "auto " üzenetet küldenek, ahol a két irány lehet "eszak", "del", "kelet", "nyugat"; a csomópont megvizsgálja, hogy a bejövő és a kimenő irány egyezik-e, és ha igen, a naplófájljába egy bejegyzést készít erről, majd bontja a kapcsolatot az autóval. Ha az irányok helyesek (nem egyezőek), akkor az autó beáll a megfelelő lámpához tartozó sorba. A csomópont lámpája mindig véletlenszerűen választja ki, melyik iránynak ad zöldet, de az utolsó két zöldet kapott irány nem választható. Amikor egy irány zöldet kap, a lámpa egyenletes tempóban három autót enged át rajta, majd ismét vált. Az autó átengedésekor a csomópont elküldi a cél-csomópont portjának számát az autónak (akivel a kapcsolatot mindeddig fenntartotta). Ha a célport nem létezik, akkor a válasz szövegesen "x". A csomópont minden történést (melyik irány kapott zöldet, melyik autót engedte át melyik irányból melyik irányba és milyen portra) naplóz a naplófájljába soronként. A rendőrök "rendor" üzenetet küldenek kapcsolódáskor. Ha egy rendőr már kapcsolódott a csomóponthoz, és egy újabb is próbálna kapcsolódni, a csomópont rögtön bontsa a kapcsolatot a beérkezővel. Kapcsolódás után a rendőr a következő üzeneteket küldheti (mindegyiket külön sorban): - "sorhossz ": a csomópontnak vissza kell küldenie adott irányhoz tartozó autósor hosszát - "eszak", "del", "kelet", "nyugat": a lámpa átvált a megfelelő irányba, innentől arról engedi át az autókat - az átengedés üteme továbbra is lámpaváltás/3 - ha a rendőr közvetlenül azután változtatta meg a jelzést, hogy egy autó elindult, akkor a következő autó nem indulhat, meg kell várnia, hogy az előző autó átérjen - amíg a rendőr kapcsolatban van egy csomóponttal, felfüggeszti annak automatikus váltakozását; amikor viszont a rendőr kilép, az automatizmus újra működésbe lép A Rendor osztály főprogramja a sztenderd bemenetről veszi az utasításokat soronként, és ezek szerint cselekszik. Az utasítások a következőek lehetnek. - "kapcsolat ": a lokális gépen futó, megadott portszámú csomóponthoz csatlakozik - ha kapcsolatban van már egy másikkal, bontja a kapcsolatot előtte - "eszak", "del", "kelet", "nyugat": ha kapcsolódott egy csomóponthoz, átállítja annak lámpáját Készíts továbbá egy RMI objektumot, amely a Terkep interfészt valósítja meg, és a "terkep" néven érhető el. A következő szolgáltatások legyenek elérhetőek rajta. - bejegyez(int port, int eszak, int kelet, int del, int nyugat): a csomópontok induláskor meghívják ezt a metódust, ezzel jelzik a térképnek, hogy melyik porton érhetőek el, és milyen irányban melyik portú másik csomópont található (jelezze -1 azt, ha nincsen arra csomópont) - veletlenCsomopont(): visszaadja egy véletlenszerűen választott (a térképre bejegyzett) csomópont portját - utvonal(int kezdoPort, List iranyok): visszaadja egy listában, hogy a kezdoPort csomópontból, ha a megadott irányokba lépünk sorban (az irányokat kódolja 'E', 'K', 'D' és 'N'), akkor milyen portú csomópontokhoz érünk; ha kilépnénk a térképről a lépések megtétele közben, akkor a lista utolsó eleme legyen -1 Az Auto osztály főprogramja kapcsolódjon az RMI térképhez, kérjen egy véletlenszerűen választott csomópontot, majd generáljon véletlenszerűen egy útvonalat. Járja be ezt az útvonalat (a megfelelő csomópontokkal kommunikálva), és közben ellenőrizze, hogy az RMI utvonal művelete helyesen adja-e meg az érintett csomópontokat.