Ministerstwo Finansow pragnie uzbroic urzedy skarbowe w system, w ktorym rejestrowani beda posiadacze nieruchomosci. Celem systemu jest wykrywanie nieujawnionych dochodow. Kazda nieruchomosc lezy na terenie pewnej gminy; kazda firma jest zarejestrowana w pewnej gminie; kazda osoba fizyczna jest zameldowana w pewnej gminie. Kazda nieruchomosc moze miec wielu wspolwlascicieli. Kazdy ze wspolwlascicieli jest posiadaczem pewnego ulamka danej nieruchomosci. Wlascicielem moze byc osoba fizyczna, firma, gmina lub skarb panstwa. Firmy moga ukrywac swoje nieruchmosci poprzez transferowanie ich do swoich spolek-corek. Dlatego w systemie potrzebna bedzie jeszcze informacja o udzialowcach kazdej firmy. Kazdy z udzialowcow jest posiadaczem pewnego ulamka danej firmy. Udzialowcem moze byc osoba fizyczna, firma, gmina lub skarb panstwa. Opracowac zbior klas i interfejsow do przechowywania w bazie Ozone, ktore beda sluzyc do polimorficznej reprezentacji tych danych. Praca ma obejmowac dwa interfejsy: interface Podmiot { // ktos, kto moze posiadac double lacznyMajatek(); void zmienUdzialy(Przedmiot p, double ulamek); // jesli usuwamy udzialy, to ulamek = 0 // zmiana moze byc tez z zera poprzednio, na jakis dodatni ulamek } interface Przedmiot { // cos, co moze byc posiadane double wartosc(); void wartosc(double w); // ustal nowa wartosc Gmina gmina(); void gmina(Gmina g); void zmienUdzialy(Podmiot p, double ulamek); // jesli usuwamy udzialy Podmiotu p, to ulamek = 0 // zmiana moze byc tez z zera poprzednio, na jakis dodatni ulamek // (gdy dodajemy nowego udzialowca) } oraz hierarchie klas implementujacych te interfejsy (Firma, Gmina, Osoba, SkarbPanstwa). Wszystko nalezy zaprojektowac tak, zeby mozna bylo latwo dodawac nowe klasy implementujace te interfejsy (np. Marsjanin i PoselSamoobrony oraz DzialkaNaKsiezycu i ZabytkowySchabowy). Zadanie zaliczeniowe (laboratorium): 1. Zapewnic, zeby suma udzialow zawsze byla <= 1. 2. Uwzglednic malzenska wspolwlasnosc majatkowa (to nie jest fifty-fifty): * Dodatkowa klasa Malzenstwo implementujaca Podmiot. * Zwiazek miedzy malzenstwem i Osobami. * Uwzglednienie majatku malzenstwa (w wysokosci 50%) w majatku Osoby. (moze przyda sie podklasa Osoby Malzonek?) 3. Dodac wypisywanie wszystkich obiektow z terenu wskazanej Gminy. 4. Dodac interfejs WWW do obslugi tych klas dla dwoch rodzajow uzytkownikow (majacych prawo pytac i majacych prawo modyfikowac).