8. vaje: RAČUNALNIŠKE KOMPONENTE (20.04. - 04.05.)

Prodaja računalniških komponent

V prodajalni računalniških komponent so želeli prodati staro zalogo procesorjev, matičnih plošč in pomnilnikov, zato so se odločili za spomladansko razprodajo določenih komponent. Vse računalniške komponente, ki jih želijo prodati (torej procesorji, matične plošče in pomnilniki), so podane v datoteki komponente.txt, v kateri so zapisani tudi podrobnejši podatki o komponentah. Napišite program, ki bo prebral podatke iz datoteke ter na zaslon izpisal cenik komponent (opis komponente in pripadajočo ceno s popustom). V ceniku upoštevajte spomladanski popust, ki je za vse pomnilnike 10%, za matične plošče 15% in za procesorje 5%. Da bodo kupci lažje izbrali ustrezne komponente, izpišite tudi, katere matične plošče so kompatibilne s katerimi procesorji (glej izpis spodaj).

Program naj vsebuje:

  1. Razred Komponenta, ki naj vsebuje atribute String ime, double cena, int popust, konstruktor, ki nastavi vse atribute, in metodi:
    1. public String toString(), ki vrne niz, v katerem je ime komponente in njena cena s popustom;
    2. public double cenaSPopustom(), ki vrne ceno komponente s popustom.
  2. Razred Pomnilnik, ki je izpeljan iz razreda Komponenta, z atributi int tip (vrednost 0 pomeni SDRAM, 1 DDR, 2 DDR2, 3 DDR3), int velikost, int hitrost, konstruktorjem, ki nastavi vse atribute (za ime in ceno naj uporabi konstruktor očeta), in metodo:
    1. public String toString(), ki vrne niz z vsemi podatki o pomnilniku (za ime in ceno s popustom uporabite metodo toString() očeta).
  3. Razred MaticnaPlosca, ki je izpeljan iz razreda Komponenta, z atributi String format, String podnozje, int steviloPomnilniskihRez, konstruktorjem, ki nastavi vse atribute (za ime in ceno naj uporabi konstruktor očeta), in metodi:
    1. public String toString(), ki vrne niz z vsemi podatki o matični plošči (za ime in ceno s popustom uporabite metodo toString() očeta);
    2. public boolean jeKompatibilna(Procesor p), ki vrne true, če je matična plošča kompatibilna s procesorjem p in false sicer. Matična plošča in procesor sta kompatibilna, če sta pripravljena za enako podnožje (atributa podnozje se ujemata).
  4. Razred Procesor, ki je izpeljan iz razreda Komponenta, z atributi String podnozje, int steviloJeder in int hitrostJedra, konstruktorjem, ki nastavi vse atribute (za ime in ceno naj uporabi konstruktor očeta), in metodo:
    1. public String toString(), ki vrne niz z vsemi podatki o procesorju (za ime in ceno s popustom uporabite metodo toString() očeta).
  5. Razred Racunalniki z metodo main, ki bo poskrbel za branje datoteke z opisi komponent, ustvarjanje ustreznih objektov ter izpis cenika. V njem najprej naredite tabelo vseh komponent in jo napolnite s podatki iz zgoraj podane datoteke. Po branju izpišite prebrane komponente in preverite, katere matične plošče so kompatibilne s katerimi procesorji. 

Format vhodne datoteke je naslednji:

  • vsaka vrstica vsebuje podatke o eni komponenti (predpostavite lahko, da v datoteki ni več kot 100 vrstic);
  • posamezni atributi komponente so ločeni s podpičji;
  • prvi podatek v vrstici nam pove tip komponente, drugi njeno ime, tretji ceno, preostali podatki pa predstavljajo atribute, ki so specifični za posamezno komponento in si sledijo v istem vrstnem redu kot v navodilih zgoraj. Prva vrstica v datoteki:
    Pomnilnik;Silicon Power;23.18;0;4;1600
    nam tako predstavlja pomnilnik, pomen posameznih podatkov pa je sledeč:
    vrsta komponente;ime pomnilnika;cena pomnilnika v evrih;tip pomnilnika;velikost pomnilnika;hitrost pomnilnika

Primer: za datoteko komponente.txt z vsebino:

Pomnilnik;Silicon Power;23.18;0;4;1600
Procesor;Intel Core i7 3820;321.39;2011;4;3600
Pomnilnik;Transcend;29.73;2;2;800
Procesor;Amd FX-Series FX-8150;260.82;AMD3+;8;3600
Pomnilnik;Kingstone;26.33;3;4;1333
Maticna;Asus P8Z68-V;87.07;ATX;2011;4
Maticna;Gigabyte GA-990XA;116.89;ATX;AMD3+;3

bi dobili naslednji izpis:

Pomnilnik: Silicon Power, cena s popustom: 20,86€
Tip: SDRAM, velikost: 4GB, hitrost: 1600MHz

Procesor: Intel Core i7 3820, cena s popustom: 305,32€
Podnozje: 2011, st. jeder: 4, hitrost jedra: 3600MHz

Pomnilnik: Transcend, cena s popustom: 26,76€
Tip: DDR2, velikost: 2GB, hitrost: 800MHz

Procesor: Amd FX-Series FX-8150, cena s popustom: 247,78€
Podnozje: AMD3+, st. jeder: 8, hitrost jedra: 3600MHz

Pomnilnik: Kingstone, cena s popustom: 23,70€
Tip: DDR3, velikost: 4GB, hitrost: 1333MHz

Maticna plosca: Asus P8Z68-V, cena s popustom: 74,01€
Format: ATX, podnozje: 2011, stevilo pomn. rez: 4

Maticna plosca: Gigabyte GA-990XA, cena s popustom: 99,36€
Format: ATX, podnozje: AMD3+, stevilo pomn. rez: 3


Procesor: Intel Core i7 3820 in maticna plosca: Asus P8Z68-V sta kompatibilna (podnozje 2011).
Procesor: Amd FX-Series FX-8150 in maticna plosca: Gigabyte GA-990XA sta kompatibilna (podnozje AMD3+).