Java nyelven kellene megírnom egy programot, de nem tudom hogy csináljam meg. Ötletek?
Számítógépes hálózat szimulációja:
Ebben a feladatban egy számítógépes hálózat szimulációjának egyszerűsített implementációját kell elkészítenünk. 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! A megoldás minden osztályát tegyük a router csomagba!
A hálózatban levő számítógépek címeinek ábrázolása:
A hálózaton összekapcsolt gépeket ún. IP-címekkel fogjuk azonosítani. Az IP-címeknek többféle szabványa is létezik, ezek közül mi most az IPv4-et fogjuk választani, ahol a címek négy, pontokkal elválasztott, 00 és 255 közti egész számból állnak, például 127.0.0.1, 8.8.4.4 vagy 255.255.255.255.
Ezeket az IP-címeket reprezentáljuk egy külön IPAddress osztállyal! Az osztály tartalmazzon:
- egy konstruktort, amely paraméterként kap egy egészekből álló tömböt, amely tartalmazza az IP-cím egyes komponenseit, és ennek elemeit másoljuk is le.
A paraméterül kapott nem feltétlenül négy elemű. Ha rövidebb, egészítsük ki a végén 0-kal. Ha hosszabb, akkor csak az első négy számot tároljuk el.
- egy osztályszintű fromString() metódust, amely egy, csak az IP-címek szöveges leírásának megfelelő, például "12.100.32.76" String értékből állít elő egy IPAddress objektumot. (Segítségül: figyeljünk arra, hogy ha reguláris kifejezéseket használunk a megoldásban, akkor pontra illeszkedő reguláris kifejezés a "\\.", míg a "." egy tetszőleges karakterre illeszkedő kifejezés.) Ha a paraméter nem bontható fel négy komponensre vagy négynél több komponensből áll, úgy a metódus adjon vissza null referenciát.
- egy logikai értékkel visszatérő isTheSame() metódust, amely eldönti, hogy a paramétereként átadott, IP-címet ábrázoló objektum megegyezik az objektumban tárolt IP-címmel.
- egy logikai értékkel visszatérő insideRng() függvényt, amely eldönti, hogy az adott IP-cím a paraméterként megadott másik két cím közé esik-e. Akkor mondjuk, hogy két cím közé esik egy harmadik, ha lexikografikus rendezés szerint az elsőtől nagyobb vagy egyenlő és a másodiktól kisebb vagy egyenlő.
Példák:
- 127.0.0.0 - 127.0.0.255 tartományon belül: 127.0.0.1
- 127.0.0.0 - 127.0.0.255 tartományon kívül: 10.0.0.1
- 0.0.0.1 - 63.127.127.127 tartományon belül: 23.0.0.0
- 0.0.0.1 - 63.127.127.127 tartományon kívül: 64.0.0.2
-egy String visszatérési értékű toString() metódust, amely formázott szövegként jeleníti meg az adott IP-címet. Ez formátum a korábbiak szerint négy, ponttal elválasztott számot fog jelenteni, például: "12.100.32.76".
Hol tartasz? Mit nem értesz? Min akadtál el? Milyen a kódod eddig?
Ha csak idevágod a feladat leírását, akkor mi mondani fogunk egy jó nagy összeget és egy számlaszámot és miután átutaltad a pénzt küldjük a megoldást.
class IPAddress {
private int[] addr = { 0,0,0,0 };
public IPAddress(int[] ipaddr) {
if (ipaddr.length < 4) {
for (int i = 0; i < ipaddr.length; i++) {
this.addr[i] = ipaddr[i];
}
for (int i = this.addr.length; i < 4; i++) {
this.addr[i] = 0;
}
} else {
for (int i = 0; i < 4; i++) {
this.addr[i] = ipaddr[i];
}
}
}
public boolean isTheSame(IPAddress ip) {
return (ip.addr[0] == this.addr[0])
&& (ip.addr[1] == this.addr[1])
&& (ip.addr[2] == this.addr[2])
&& (ip.addr[3] == this.addr[3]);
}
public String toString() {
return addr[0]+"."+addr[1]+"."+addr[2]+"."+addr[3];
}
}
class IPAddressTest {
public static void main(String args[]) {
System.out.println("Starting IPAddressTest...");
int[] ipaddr1 = { 168,192,100,1 };
int[] ipaddr2 = { 168,192,100,2 };
IPAddress ip1 = new IPAddress(ipaddr1);
IPAddress ip2 = new IPAddress(ipaddr2);
System.out.println(ip1);
System.out.println(ip2);
System.out.println(ip1.isTheSame(ip2));
}
}
A fromString() és az insideRng() metódusok még nincsenek megírva.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!