Materiały dotyczące programowaniu w języku Java można znaleźć na stronie: http://docs.oracle.com/javase/tutorial/index.html
Proszę przygotować aplikację składającą się z dwóch pakietów - pakietu klas definiujących funkcjonalności aplikacji i pakietu z klasą testującą, zawierającą metodę main.
Klasa Firma posiada
prywatne pola
REGON (unikatowy numer)
String przechowujący nazwę firmy
String przechowujący adres firmy
Typ firmy (wyliczeniowy: handlowa, usługowa, produkcyjna, PUH, PU, PH, HU)
przychód firmy - double
rozchód firmy - double
publiczne metody
konstruktor definiujący nazwę, adres firmy i ustawiający odpowiednio REGON, przychód (na kapitał początkowy) i rozchód (na zero)
gettery i settery ustawiające pola prywatne typ, nazwa, adres
Klasa FirmaUslugowa dziedziczy po klasie Firma i posiada
prywatne pola
liczbę "stanowisk usługowych" (liczba usług, które mogą być jednocześnie świadczone na rzecz klientów),
kolekcję przechowującą świadczone usługi (usługa może być klasą zagnieżdżoną,każda usługa ma unikatowy identyfikator i skojarzone z nią przychody i rozchody)
konstruktor definiujący liczbę stanowisk,
publiczne metody
dodajUsluge - dodający usługę do kolekcji usług
zarezerwuj - rezerwująca stanowisko jeśli jakieś jest wolne
usunRezerwacje - kasująca rezerwację
utworzZamowienie - zwraca kolekcje uslug wybranych przez klienta do realizacji
modyfikujZamowienie - przyjmuje jako argument kolekcję usług stworzonych dla klienta i modyfikuje tą kolekcję
wykonajUsluge - przyjmuje jako argument zamowienie stworzone metodą utworzZamowienie i odpowiednio modyfikuje pola przychodu i rozchodu Firmy
Klasy definiujące funkcjonalności aplikacji opisane są poniżej. Szkielet kodu dla klasy testującej przedstawiono na Listingu 1. Szkielet kodu pozostałych klas przedstawiono na Listingu 2.
Listing 1 Plik Testuj.java - szkielet kodu testujacego funkcjonalności klas Firma i klas dziedziczących
public class Testuj {
public static void main(String args[]){
Firma firma1 = new Firma();
Firma firma2 = new Firma();
FirmaUslugowa f= new FirmaUslugowa();
f.liczbaStanowisk=5;
Typ t;
t=Typ.H;
FirmaUslugowa.Usluga u = f.new Usluga("golenie",1.0,0.0);
System.out.println(f.liczbaStanowisk+" ilosc uslug = "+f.getIloscUslug());
f.dodajUsluge(u);
System.out.println(firma1.getREGON()+" "+ firma2.getREGON());
System.out.println(t);
System.out.println(f.liczbaStanowisk+" ilosc uslug = "+f.getIloscUslug());
}
}
Listing 2 Plik Firma.java - szkielet kodu z klasami implementującymi funkcjonalności
import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;
class Firma{
private static int REGON;
private int myREGON;
private String nazwa;
private String adres;
private double przychod;
private double rozchod;
private Typ typ;
}
enum Typ {
H, U, P, HU, HP, UP, HUP
}
class FirmaUslugowa extends Firma {
int liczbaStanowisk;
class Usluga {
String opis;
double koszty;
double cena;
public Usluga(String opis,double k,double c) {
this.opis=opis;
this.koszty=k;
this.cena=c;
}
}
List<Usluga> listaUslug=new ArrayList<Usluga>();
public int getIloscUslug() {
return this.listaUslug.size();
}
public void dodajUsluge(Usluga u) {
listaUslug.add(u);
}
}