poj 2007 2008 summer pl

background image

Revision: 1.2
Date: 2008/03/30 10:02:47

R

EVISION

C

HANGELOG

Contents

1

Wprowadzenie

3

1.1

Zasady oceny

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

2

Zadania

4

2.1

Zadanie I (termin oddania: 29/30 marca 2008)

. . . . . . . . . . . . . . . . . . . . . . .

4

2.1.1

Serwis samochodowy: budowa klas (zadanie podstawowe: 10 pkt)

. . . . . . . .

4

2.2

Zadanie II (termin oddania: 29/30 marca 2008)

. . . . . . . . . . . . . . . . . . . . . .

7

2.2.1

Sporz ˛

adzenie listy płac (zadanie podstawowe: 10 pkt)

. . . . . . . . . . . . . .

7

2.2.2

Uwzgl˛ednienie regulacji prawnych w zakresie prawa pracy oraz 6-gozinnej zmi-
any sobotniej (zadanie dodatkowe: 15 pkt)

. . . . . . . . . . . . . . . . . . . .

8

2.3

Zadanie III (termin oddania: 12/13 kwietnia 2008)

. . . . . . . . . . . . . . . . . . . .

9

2.3.1

Salon sprzeda˙zy i komis (zadanie podstawowe: 10 pkt)

. . . . . . . . . . . . . .

9

2.3.2

Kontrola realizacji procesu sprzeda˙zy samochodu u˙zywanego (zadanie dodatkowe:
10 pkt)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

2.4

Zadanie IV (termin oddania: 12/13 kwietnia 2008)

. . . . . . . . . . . . . . . . . . . .

11

2.4.1

Symulacja dnia pracy warsztatu samochodowego (zadanie podstawowe: 20 pkt)

.

11

2.4.2

Symulacja uwzgl˛edniaj ˛

aca bardziej zło˙zony zestaw reguł (zadanie dodatkowe:

30 pkt)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

2.5

Zadanie V (termin oddania: 26/27 kwietnia 2008)

. . . . . . . . . . . . . . . . . . . . .

12

2.5.1

Trwało´s´c danych w oparciu o szeregowalno´s´c (zadanie podstawowe: 10 pkt)

. .

12

2.5.2

Utrwalanie stanu w postaci pliku tekstowego o okre´slonej składni (zadanie do-
datkowe: 25 pkt)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

2.6

Zadanie VI (termin oddania: 26/27 kwietnia 2008)

. . . . . . . . . . . . . . . . . . . .

14

2.6.1

Posortowane kolekcje (zadanie podstawowe: 10 pkt)

. . . . . . . . . . . . . . .

14

2.6.2

Mapy oraz kolekcje posortowane wzgl˛edem alternatywnych kryteriów (zadanie
rozszerzone: 15 pkt)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

2.6.2.1

Mapy (5 pkt)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

2.6.2.2

Alternatywne sortowanie kolekcji (10 pkt)

. . . . . . . . . . . . . . .

14

2.7

Zadanie VII (termin oddania: 17/18 maja 2008)

. . . . . . . . . . . . . . . . . . . . . .

15

c

E

DGAR

G

ŁOWACKI

background image

CONTENTS

2

2.7.1

Obracaj ˛

acy si˛e wykres kołowy (zadanie podstawowe: 10 pkt)

. . . . . . . . . .

15

2.7.2

Legenda wykresu oraz statystyka symulacji (zadania rozszerzone: 25 pkt)

. . . .

16

2.7.2.1

Legenda wykresu (15 pkt)

. . . . . . . . . . . . . . . . . . . . . . . .

16

2.7.2.2

Statystyka symulacji pracy warsztatu (10 pkt)

. . . . . . . . . . . . .

16

2.8

Zadanie VIII (termin oddania: 17/18 maja 2008)

. . . . . . . . . . . . . . . . . . . . . .

17

2.8.1

Wielobarwne prymitywy (figury) geometryczne (zadanie podstawowe: 10 pkt)

.

17

2.8.2

Obracaj ˛

ace si˛e prymitywy graficzne, układanka (zadania rozszerzone: 20 pkt)

. .

18

2.8.2.1

Obracaj ˛

ace si˛e prymitywy graficzne (10 pkt)

. . . . . . . . . . . . . .

18

2.8.2.2

Układanka (10 pkt)

. . . . . . . . . . . . . . . . . . . . . . . . . . .

18

2.9

Zadanie IX (termin oddania: 31 maja/1 czerwca 2008)

. . . . . . . . . . . . . . . . . .

19

2.9.1

Uciekaj ˛

ace si˛e przyciski (zadanie podstawowe: 10 pkt)

. . . . . . . . . . . . . .

19

2.9.2

Walidacja danych wprowadzanych przez u˙zytkownika (zadanie rozszerozne: 20
pkt)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

2.10 Zadanie X (termin oddania: 14/15 czerwca 2008)

. . . . . . . . . . . . . . . . . . . . .

21

2.10.1 Panel z zakładkami umo˙zliwiaj ˛

acy przegl ˛

adanie ró˙zne rodzaje rekordów (zadanie

podstawowe: 10 pkt)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

2.10.2 Utrwalanie zaznaczonego fragmentu panelu oraz paskki narz˛edzi (zadanie rozsz-

erzone: 25 pkt)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

2.10.2.1 Zapis zaznaczonego fragmentu panelu głównego aplikacji w pliku (15

pkt)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

2.10.2.2 Paski narz˛edziowe (10 pkt)

. . . . . . . . . . . . . . . . . . . . . . .

22

2.11 Zadanie XI (termin oddania: 28/29 czerwca 2008)

. . . . . . . . . . . . . . . . . . . . .

23

2.11.1 Wzajemnie powi ˛

azane listy pojazdów i ich wła´scicieli (30 pts)

. . . . . . . . . .

23

c

E

DGAR

G

ŁOWACKI

background image

3

1

Wprowadzenie

1.1

Zasady oceny

1. Rozwi ˛

azanie ka˙zdego zadania podstawowego dostarczone przed upływem terminu oddania b˛edzie

oceniane na maksymalnie 10 punktów;

2. Maksymalna liczba punktów mo˙zliwa do uzyskania za wykonanie zadania dodatkowego b˛edzie

zale˙zna od stopnia trudno´sci konkretnego zadania;

3. Z chwil ˛

a rozpocz˛ecia pierwszego tygodnia po terminie oddania (tj. we wtorek) maksymalna

liczba punktów mo˙zliwa do uzyskania za wykonanie zadania (zarówno podstawowego, jak i do-
datkowego) zostanie pomniejszona o 10%. Po upływie ka˙zdego kolejnego tygodnia (licz ˛

ac od

terminu oddania) liczba ta zostanie zredukowana o kolejne 20%, a˙z do osi ˛

agni˛ecia 50% warto´sci

pocz ˛

atkowej.

Oceny:

3

35%–44% (maksymalnej liczby punktów),

3.5

45%–60%,

4

61%–75%,

4.5

76%–89%

5

90%–100%

Ka˙zdy ze studentów jest zobowi ˛

azany dostarczy´c rozwi ˛

azanie zada´n dotycz ˛

acych nast˛epuj ˛

acych zagad-

nie´n:

• budowa klas (

2.1.1

);

• polimorfizm (

2.2

);

• implementacja interfejsów (

2.3

);

• strumienie (

2.5.1

);

• kolekcje (

2.6.1

);

• tworzenie aplikacji posiadaj ˛

acej prosty interfejs graficzny (ang. graphical user interface) (??).

c

E

DGAR

G

ŁOWACKI

background image

4

2

Zadania

2.1

Zadanie I (termin oddania: 29/30 marca 2008)

2.1.1

Serwis samochodowy: budowa klas (zadanie podstawowe: 10 pkt)

Korzystaj ˛

ac z konstrukcji dost˛epnych w j˛ezyku Java

TM

stwórz reprezentacj˛e bytów, z którymi mo˙zna

si˛e zetkn ˛

a´c w serwisie samochodowym.

Autoserwis obsługuje cztery rodzaje pojazdów: (1) motycykle (ang. motorbikes), (2) samochody os-
obowe (posiadaj ˛

ace nie wi˛ecej ni˙z sze´s´c miejsc siedz ˛

acych) (ang. passenger vehicles), (3) tzw. SUV-y

(ang. sports utility vehicles), (4) furgonetki (ang. pickup trucks).

Ka˙zdy pojazd jest opisywany nast˛epuj ˛

acymi atrybutami:

• producent,

• model,

• data produkcji,

• pojemno´s´c silnika,

• moc silnika (podana w koniach mechanicznych),

• numer rejestracyjny,

• wła´sciciel pojazdu, którym mo˙ze by´c (1) jedna lub wi˛ecej osób fizycznych, or (2) firma posiada-

j ˛

aca podmiotowo´s´c prawn ˛

a.

Dodatkowo samochód charakteryzuje si˛e:

• liczb ˛

a miejsc siedz ˛

acych,

• rozmiar felg (podany w calach),

• czy samochód został wyposa˙zony w felgi aluminiowe czy stalowe,

• rodzaj opon (wymiary opon, np. 175/65R14

1

),

• pojemno´s´c baga˙znika (w cm

3

),

• czy samochód jest wyposa˙zony w automatyczn ˛

a skrzyni˛e biegów.

Dodatkowo ka˙zdy sachód osobowy mo˙ze posiada´c:

system zabezpieczaj ˛

acy przed blokowaniem kół

w trakcie hamowania (ABS — Anti-lock Braking System), system kontroli antypo´slizgowej (ASR —
Acceleration Skid Control).

Dane dotycz ˛

ace furgonetki powinny obejmowa´c dodatkowo: (1) rozmiary skrzyni, oraz (2) informacj˛e,

czy samochód został wyposa˙zony w nap˛ed na cztery koła.

Zakładamy, ˙ze ka˙zdy pojazd typu SUV posiada nap˛ed obydwu osi.

1

pierwsza liczba (175) oznacza szeroko´s´c przekroju opony, druga (65) jest tzw. profilem, b ˛

ad´z wska´znikiem przekroju

opony oznaczaj ˛

acym procentowy stosunek wysoko´sci opony do jej szeroko´sci, liczba poprzedzona liter ˛

a R okre´sla wewn˛etrzn ˛

a

´srednic˛e osadzenia opony — czyli ´srednic˛e felgi mierzon ˛

a w calach

c

E

DGAR

G

ŁOWACKI

background image

2.1 Zadanie I (termin oddania: 29/30 marca 2008)

5

Rejestrowane dane produdenta obejmuj ˛

a: (1) nazw˛e, oraz (2) dane teleadresowe (adres, numery tele-

fonów) w Polsce.

Jak wspomniano samochód mo˙ze by´c własno´sci ˛

a: (1) osób fizycznych, lub (2) podmiotów posiadaj ˛

a-

cych osobowo´s´c prawn ˛

a.

Dane osoby fizycznej obejmuj ˛

a: (1) imi˛e, (2) nazwisko, oraz (3) dane teleadresowe.

Dane o przed-

si˛ebiorstwie b˛ed ˛

acym wła´scicielem samochodu powinny obejmowa´c: (1) nazw˛e, (2) NIP (Numer Iden-

tyfikacji Podatkowej).

PODPOWIED ´

Z: Rozwi ˛

azanie powinno obejmowa´c klasy reprezentuj ˛

ace: (1) pojazd, (2) motocykl, (3)

samochód, (4) samochód osobowy, (5) furgonetk˛e, (6) SUV, (7) klienta indywidualnego (osob˛e fizyczn ˛

a),

(8) klienta korporacyjnego (osob˛e prawn ˛

a).

Podczas tworzenia rozwi ˛

azania nale˙zy pami˛eta´c o:

1. zapewnieniu hermetyzacji (ang. encapsulation) danych w ramach poszczególnych klas;

2. dostarczeniu metody

toString()

prezentuj ˛

acej zawarto´s´c instancji (obiektu) klasy. Metoda

toString()

jest wykorzystywana w trakcie rzutowania obiektu danej klasy na obiekt klasy

java.lang.String

. Metoda

toString()

powinna prezentowa´c zawarto´s´c instancji danej

klasy zgodnie z nast˛epuj ˛

acym formatem:

<class-name> {

<attribute-name>: <attribute-value>[, <attribute-value>, ...]

}

W przypadku gdy obiekt zawiera referencje do innych obiektów metoda

toString()

powinna by´c

wywoływana rekurencyjnie (z uwzgl˛ednieniem zabezpieczenia przed przepełnieniem stosu).

<class-name> {

...

<attribute-name>:

<class-name> {

<attribute-name>: <attribute-value>[, <attribute-value, ...]

}

}

Przykładowo efekt wywołania metody

toString()

na rzecz obiektu reprezentuj ˛

acego motocykl marki

B

AYERISCHE

M

OTOREN

W

ERKE

AG, którego wła´scicielem jest Jan Kowalski mógłby by´c nast˛epj ˛

acy:

Motorbike {

manufacturer: Manufactuer { Bayerische Motoren Werke AG, address },

model: R 1150 RT,

year of manufacture: 2004,

engine capacity: 1130cc,

engine performance: 71kW,

registration number: WI 12345,

vehicle owner: Owner { Jan Kowalski, address, phone number }

}

Metoda

main()

powinna:

c

E

DGAR

G

ŁOWACKI

background image

2.1 Zadanie I (termin oddania: 29/30 marca 2008)

6

1. tworzy´c po kilka instancji instancji wymienionych klas (patrz. wy˙zej), oraz

2. wy´swietli´c zawarto´s´c ekstensji klas.

c

E

DGAR

G

ŁOWACKI

background image

2.2 Zadanie II (termin oddania: 29/30 marca 2008)

7

2.2

Zadanie II (termin oddania: 29/30 marca 2008)

2.2.1

Sporz ˛

adzenie listy płac (zadanie podstawowe: 10 pkt)

Wykorzystuj ˛

ac klasy utworzone w ramach rozwi ˛

azania zadania

2.1.1

zbuduj aplikacj˛e, która ułatwi wła´s-

cicielowi serwisu samochodowego wygenerowanie listy płac.

Pracownicy warsztatu s ˛

a podzieleni na trzy kategorie: (1) młodszych, oraz (2) starszych mechaników

samochodowych, a tak˙ze (3) odbywaj ˛

acych płatne praktyki uczniów pobliskiego zespołu szkół samo-

chodowych.

Warsztat zatrudnia ł ˛

acznie pi˛eciu starszych i dwudziestu jeden młodszych mechaników.

Ka˙zda z wymienionych grup posiada ´sci´sle okre´slone minimalne — wyra˙zone w godzinach — miesi˛eczne
obci ˛

a˙zenie, które:

• dla młodszych mechaników zostało ustalone na 150 godzin;

• w przypadku starszych mechaników wynosi odpowiednio 120 godzin;

• z kolei praktykanci s ˛

a zobowi ˛

azani przepracowa´c 80 godzin.

Aby otrzyma´c pensj˛e podstawow ˛

a ka˙zdy pracownik musi w ci ˛

agu miesi ˛

aca wypracowa´c limit godzin

ustalony dla swojej kategorii zaszeregowania. Podstawowa pensja brutto została ustalona na: (1) 2500
PLN dla młodszych, (2) 3000 PLN dla starszych, oraz (3) 1000 PLN dla praktykantów.

Je´sli pracownikowi nie uda si˛e wypracowa´c limitu godzin pensja miesi˛eczna jest redukowana o ek-
wiwalent nieprzepracowanych roboczogodzin. Przykładowo, je´sli młodszy mechanik nie przepracuje
ustalonego wymiaru godzin, np. wypracuje zaledwie 140 godzin, jego uposa˙zenie zostanie pominiejs-
zone o: 10 ×

2500PLN

150

= 166.67 PLN.

W przypadku, gdy pracownik przepracuje wi˛ecej roboczogodzin ni˙z wynika to z ustalonego limitu,
przysługuje mu pensja, której wymiar jest wyliczany zgodnie z nast˛epuj ˛

acym wzorem:

BonusSize = ExtraHoursNo

Employee

× ExtraHourPayment

EmployeeCategory

Stawka za nadgodziny wynosi: (1) dla młodszych mechaników: 20 PLN, (2) dla starszych mechaników:
30 PLN, (3) dla praktykantów: 15 PLN.

Warsztat samochodowy pracuje na dwie zmiany, sze´s´c dni w tygodniu (od poniedziałku do soboty).
Dzienna zmiana pracuje w godzinach 6:00–14:00, zmian wieczorna — 14:00–22:00. Ka˙zda zmiana
posiada kierownika, którym ka˙zdorazowo musi by´c starszy mechanik. Praca w charakterze kierownika
zmiany jest ka˙zdorazowo wynagradzana dodatkow ˛

a premi ˛

a w wysoko´sci 300 PLN.

Twoim zadaniem jest wygenerowanie listy płac dla wszystkich mechaników (w tym równie˙z praktykan-
tów) zatrudnianych przez warsztat samochodowy. Zarobki poszczególnych pracowników s ˛

a wyliczane

na podstawie wpisów rejestru czasu pracy za miniony miesi ˛

ac.

Rejestrowany czas pracy jest dzielony na dni oraz zmiany. Ka˙zda zmiana zawiera informacj˛e o:

• składzie osobowym,

• starszym mechaniku, który pełnił rol˛e kierownika zmiany,

• dziennej dacie,

• dniu tygodnia, oraz

• czy była to zmiana dzienna, czy wieczorna.

c

E

DGAR

G

ŁOWACKI

background image

2.2 Zadanie II (termin oddania: 29/30 marca 2008)

8

Twoja aplikacja powinna sporz ˛

adzi´c list˛e płac na luty 2008, co oznacza, ˙ze wyliczenie powinno uwzgl˛ed-

nia´c zapisy rejestru czasu pracy za nast˛epuj ˛

ace dni:

• 1–3 lutego 2008 (czwartek–sobota),

• 5–10 lutego 2008 (poniedziałek–pi ˛

atek),

• 12–17 lutego 2008 (poniedziałek–pi ˛

atek),

• 19–24 lutego 2008 (poniedziałek–pi ˛

atek), oraz

• 26–28 lutego 2008 (poniedziałek–´sroda).

2.2.2

Uwzgl˛ednienie regulacji prawnych w zakresie prawa pracy oraz 6-gozinnej zmiany sobot-
niej (zadanie dodatkowe: 15 pkt)

Dyrektywy Komisji Europejskiej wyznaczaj ˛

a ograniczenia dla przepisów prawnych obowi ˛

azuj ˛

acych

we wszystkich krajach członkowskich, w tym równie˙z w Polsce. Zgodnie z dyrektyw ˛

a wydan ˛

a przez

Komisj˛e Europejsk ˛

a w zakresie prawa pracy minimalny dzienny czas odpoczynku wynosi 11 godzin.

Powy˙zsze ograniczenie oznacza, ˙ze pracownik warsztatu nie mo˙ze pracowa´c na nast˛epuj ˛

acych po sobie

zmianach, o ile pomi˛edzy zmianami nie było dnia wolnego od pracy.

Dodatkowo wła´sciciel warsztatu nosi si˛e z zamiarem zmiany zasad jego funkcjonowania i ograniczy´c
wymiar pracy w soboty do jednej 6-godzinnej zmiany.

Dostosuj rozwi ˛

azanie zadania

2.2

do wymogów legislacji europejskiej oraz planowanych zmian organi-

zacji czasu pracy.

c

E

DGAR

G

ŁOWACKI

background image

2.3 Zadanie III (termin oddania: 12/13 kwietnia 2008)

9

2.3

Zadanie III (termin oddania: 12/13 kwietnia 2008)

2.3.1

Salon sprzeda˙zy i komis (zadanie podstawowe: 10 pkt)

Warsztat samochodowy poza serwisowaniem zajmuje si˛e sprzeda˙z ˛

a nowych i u˙zywanych pojazdów: (1)

motocykli, (2) samochodów osobowych, oraz (3) SUV-ów.

Ka˙zdy pojazd u˙zywany, który został oddany w komis mo˙ze posiada´c jeden z wymienionych statusów:

• wyceniony — komis zasugerował cen˛e sprzeda˙zy wła´scicielowi na podstawie jego stanu tech-

nicznego oraz ´sredniej ceny osi ˛

aganej przez pojazdy danego modelu w zbli˙zonym wieku;

• wystawiony na sprzeda˙z;

• zarezerwowany przez potencjalnego nabywc˛e;

• wycofany z komisu przez wła´sciciel — wła´sciciel musi ui´sci´c opłat˛e zwi ˛

azan ˛

a z umieszczeniem

pojazdu w ofercie salonu;

• sprzedany — nabywca dokonał dokonał przelewu na konto bankowe komisu;

• rozliczony — transakcja sprzeda˙zy została rozliczona z poprzednim wła´scicielem.

Z kolei nowy samochód mo˙ze by´c:

• zamówiony — klient zło˙zył zamówienie na pojazd cechuj ˛

acy si˛e okre´slonymi wła´sciwo´sciami

oraz dodatkowym wyposa˙zeniem. Zło˙zenie zamówienia wi ˛

a˙ze si˛e z zaliczk ˛

a w wysoko´sci 3%

ceny pojazdu;

• zarezerwowany — klient zarezerwował sobie pierwsze´nstwo w zakupie okre´slonego pojazdu zna-

jduj ˛

acego si˛e w ofercie salonu;

• dostarczony — pojazd odpowiadaj ˛

acy zamówieniu zło˙zonemu przez klienta został dostarczony ze

składu producenta do salonu;

• sprzedany — na konto bankowe salonu wpłyn˛eła nale˙zno´s´c za pojazd;

• zwrócony do składu producenta — pojazd zamówiony przez niedoszłego klienta został z powrotem

przetransportowany do składu producenta.

Salon sprzeda˙zy i komis pojazdów u˙zywanych współdziel ˛

a jedn ˛

a baz˛e danych przechowuj ˛

aca informacj˛e

nt. wszystkich pojazdów, które w ten, czy inny sposób znalazły si˛e w ofercie. Baza danych nie rejestruje
historii zmian statusów pojazdów — u˙zytkownicy s ˛

a w stanie sprawdzi´c jedynie bie˙zacy status danego

pojazdu.

Stwórz aplikacj˛e, która umo˙zliwi pracownikom salonu filtrowanie danych o pojazdach (nowych i u˙zy-
wanych) na podstawie ich bie˙z ˛

acego statusu.

PODPOWIED ´

Z: Zalecanym sposobem rozwi ˛

azania jest implementacja dwóch interfejsów:

SecondHandVehicle

,

and

NewVehicle

. Definicja interfejsu

SecondHandVehicle

mogłaby wygl ˛

ada´c nast˛epuj ˛

aco:

enum SecondHandVehicleStatus {

PRICE_BID_SUGGESTED,

SOLD,

...

c

E

DGAR

G

ŁOWACKI

background image

2.3 Zadanie III (termin oddania: 12/13 kwietnia 2008)

10

}

interface SecondHandVehicle {

...

SecondHandVehicleStatus getStatus();

...

}

2.3.2

Kontrola realizacji procesu sprzeda˙zy samochodu u˙zywanego (zadanie dodatkowe: 10 pkt)

Rozszerz rozwi ˛

azanie zadania

2.3.2

o wsparcie procesu sprzeda˙zy pojazdu u˙zywanego:

• Proces biznesowy sprzeda˙zy pojazdu u˙zywanego za po´srednictwem salonu rozpoczyna si˛e od

krótkiego przegl ˛

adu wykonywanego przez starszego mechanika. Przebieg przegl ˛

adu okre´sla spec-

jalna procedura obejmuj ˛

aca weryfikacj˛e kolejnych podzespołów pojazdu, której wyniki oraz uwagi

mechanika s ˛

a rejestrowane na specjalnej li´scie kontrolnej. Wynik przegl ˛

adu technicznego jest

nast˛epnie przekazywany kierownikowi zmiany.

• Bior ˛

ac pod uwag˛e ´sredni ˛

a cen˛e sprzeda˙zy danego modelu na rynku wtórnym, oraz stan techniczny

stwierdzony przez do´swiadczonego mechanika kierownik zmiany przedstawia propozycj˛e ceny,
która daje szans˛e na stosunkowo szybk ˛

a sprzeda˙z pojazdu. Je´sli klient nie zdecyduje si˛e od razu

odda´c pojazd w komis cena sprzeda˙zy zasugerowana przez salon jest wa˙zna przez kolejne trzy
tygodnie. Po upływie tego czasu zgodnie z procedur ˛

a przyj˛et ˛

a przez salon pojazd musi przej´s´c

kolejny przegl ˛

ad stanu technicznego.

• Po oddaniu pojazdu w komis cena sprzeda˙zy jest aktualizowana w cyklach kwartalnych.

• Wła´sciciel mo˙ze w ka˙zdej chwili zrezygnowa´c ze sprzeda˙zy pojazdu za po´srednictwem salonu,

ale wówczas wi ˛

a˙ze si˛e to z konieczno´sci ˛

a poniesienia kosztów zwi ˛

azanych z przechowywaniem

przez okres, kiedy pojazd znajdował si˛e w ofercie salonu.

• Potencjalny nabywca mo˙ze zarezerwowa´c sobie prawo pierwokupu co najwy˙zej jednego pojazdu

po okre´slonej cenie. Rezerwacja pozostaje wa˙zna przez kolejne trzy dni.

• Pojazd zmienia status na „sprzedany” z chwil ˛

a rejestracji wpływu z tytułu jego sprzeda˙zy na na

rachunku bankowym salonu.

• Proces sprzeda˙zy ko´nczy si˛e po rozliczeniu si˛e salonu z byłym wła´scicielem pojazdu.

c

E

DGAR

G

ŁOWACKI

background image

2.4 Zadanie IV (termin oddania: 12/13 kwietnia 2008)

11

2.4

Zadanie IV (termin oddania: 12/13 kwietnia 2008)

2.4.1

Symulacja dnia pracy warsztatu samochodowego (zadanie podstawowe: 20 pkt)

Stwórz aplikacj˛e symuluj ˛

ac ˛

a dzie´n roboczy warsztatu samochodowego opart ˛

a na modelu o nast˛epuj ˛

acych

zało˙zeniach:

1. warsztat posiada cztery stanowiska serwisowe (potocznie nazywane „kanałami”);

2. przeci˛etny czas naprawy samochodu wynosi jedn ˛

a godzin˛e;

3. w chwili rozpocz˛ecia zmiany do ka˙zdego stanowiska mo˙ze by´c przypisanych od 1 do 3 mechaników.

Skład zmiany pozostaje niezmienny przez cały czas jej trwania. Do ka˙zdego stanowiska musi by´c
przypisany co najmniej jeden mechanik.

4. W danym momencie na stanowisku mo˙ze by´c serwisowany jeden samochód.

5. Dwie sekundy czasu rzeczywistego odpowiada jednej godzinie pracy warsztatu.

6. W kolejce wej´sciowej symulacji zostanie losowo umieszczonych 48 ró˙znych pojazdów wszystkich

rodzajów opisanych w

2.1.1

.

PODPOWIED ´

Z: Ka˙zde stanowisko serwisowe jest symulowane przez osobny w ˛

atek. Kolejka wej´s-

ciowa stanowi sekcj˛e krytyczn ˛

a — zasób współdzielony przez wi˛ecej ni˙z jeden w ˛

atek.

UWAGA: Skład zmiany powinien by´c ustalany zgodnie z ograniczeniami wynikaj ˛

acymi z

obowi ˛

azuj ˛

acych przepisów prawnych omówionych w

2.2.2

.

2.4.2

Symulacja uwzgl˛edniaj ˛

aca bardziej zło˙zony zestaw reguł (zadanie dodatkowe: 30 pkt)

Zmodyfikuj rozwi ˛

azanie dla zadania

2.4.1

rozszerzaj ˛

ac zestaw ogranicze´n uwzgl˛ednianych przez symu-

lacj˛e

2

:

1. tylko dwa spo´sród dost˛epnych czterech stanowisk s ˛

a przystosowane do obsługi furgonetek i po-

jazdów typu SUV;

2. przydzielenie przynajmniej jednego starszego mechanika do danego stanowiska zmniejsza czas

obsługi o 50%;

3. Czas naprawy furgonetek lub SUV-ów jest 1,5 razy dłu˙zszy ni˙z obsługa pojazdów pozostałych

rodzajów.

4. Symulacja ko´nczy si˛e z chwil ˛

a obsługi wszystkich ˙z ˛

ada´n umieszczonych w kolejce wej´sciowej,

których liczba mo˙ze by´c podana przez u˙zytkownika jako parametr przekazywany z linii polece´n.

2

Zało˙zenia wymienione w

2.4.1

— w tym równie˙z ograniczenia wynikaj ˛

ace z legislacji w zakresie prawa pracy — pozostaj ˛

a

w mocy.

c

E

DGAR

G

ŁOWACKI

background image

2.5 Zadanie V (termin oddania: 26/27 kwietnia 2008)

12

2.5

Zadanie V (termin oddania: 26/27 kwietnia 2008)

2.5.1

Trwało´s´c danych w oparciu o szeregowalno´s´c (zadanie podstawowe: 10 pkt)

Rozszerz funkcjonalno´s´c dotychczasowego rozwi ˛

azania daj ˛

ac u˙zytkownikowi mo˙zliwo´s´c utrwalenia stanu

struktur danych (instancji klas) w pliku wykorzystuj ˛

ac mechanizm serializacji dost˛epny w Java

TM

.

Aplikacja powinna funkcjonowa´c w dwóch trybach: (1) utrwalania stanu struktur danych przechowywanych
w pami˛eci operacyjnej, lub (2) odtwarzania stanu struktur danych utrwalonego w pliku. Tryb pracy, oraz
nazwa pliku, w którym zostanie utrwalony stan aplikacji (przy trybie zapisu), b ˛

ad´z na podstawie którego

zostanie stan struktur danych (przy trybie odtwarzania) powinny by´c okre´slane w postaci dwóch kole-
jnych argumentów przekazywanych do aplikacji z linii polece´n.

Test, któremu zostanie poddana aplikacja b˛edzie polegał na:

1. utworzeniu kilku instancji ró˙znych klas oraz utrwaleniu ich stanu w pliku, a nast˛epnie

2. odtworzeniu stanu zapisanego w pliku.

2.5.2

Utrwalanie stanu w postaci pliku tekstowego o okre´slonej składni (zadanie dodatkowe: 25
pkt)

Rozszerz funkcjonalno´s´c dotychczasowego rozwi ˛

azania umo˙zliwiaj ˛

ac u˙zytkownikowi zapis stanu struk-

tur danych aplikacji w formacie tekstowym.

Podobnie jak w przypadku rozwi ˛

azania zadania

2.5.1

Twoja aplikacja powinna funkcjonowa´c w dwóch

trybach:

(1) utrwalania stanu struktur danych przechowywanych w pami˛eci operacyjnej, lub (2) odt-

warzania stanu struktur danych utrwalonego w pliku.

Aplikacja powinna wspiera´c nast˛epuj ˛

ac ˛

a składani˛e pliku przechowuj ˛

acego stan struktur danych:

<class-name> <arbitrary-object-name> {

<attribute-name>: <attribute-value>[, ...]

| ref { <arbitrary-object-name> [, ...]};

...

}

Przykładowy plik utrwalaj ˛

acy informacj˛e o dwóch pojazdach i ich wła´scicielach wygl ˛

adałby nast˛epu-

j ˛

aco:

Manufacturer a {

name: Bayerishe Motoren Werke AG;

address: address of BMW;

}

Motorbike b {

manufacturer: ref { a };

model: R 1150 RT;

yearOfManufacture: 2004;

engineCapacity: 1130cc;

enginePerformance: 71kW;

registrationNumber: WI 12345;

c

E

DGAR

G

ŁOWACKI

background image

2.5 Zadanie V (termin oddania: 26/27 kwietnia 2008)

13

vehicleOwner: ref { e, f }

}

Manufacturer c {

name: Fabbrica Italiana Automobili Torino;

address: addres of FIAT;

}

RegularPassengerCar d {

manufacturer: ref { c };

model: Marea Weekend;

yearOfManufacture: 2000;

engineCapacity: 1603cc;

enginePerformance: 84kW;

registrationNumber: WX 00003;

vehicleOwner: ref { e, f }

}

IndividualOwner e {

name: Jan Kowalski;

address: address of Jan Kowalski;

}

IndividualOwner f {

name: Maria Kowalska;

address: address of Maria Kowalska;

}

UWAGA: U˙zytkownik powinien mie´c mo˙zliwo´s´c tworzenia nazw zawieraj ˛

acych polskie znaki diak-

tryczne: ˛

a, ´c, ˛e, ´n, ł, ó, ´z, ˙z. Z tego wzgl˛edu dane aplikacji powinny by´c utrwalane w plikach tekstowych

zgodnie z kodowaniem UTF-8 umo˙zliwiaj ˛

acym zapis wszystkich znaków Unicode

R

.

c

E

DGAR

G

ŁOWACKI

background image

2.6 Zadanie VI (termin oddania: 26/27 kwietnia 2008)

14

2.6

Zadanie VI (termin oddania: 26/27 kwietnia 2008)

2.6.1

Posortowane kolekcje (zadanie podstawowe: 10 pkt)

Do definicji ka˙zdej klasy reprezentuj ˛

acej byt dziedziny problemowej dodaj ekstensj˛e tej klasy w postaci

atrybutu klasowy (

static

) przechowuj ˛

acy wszystkie jej instancje. Atrybut reprezentuj ˛

acy ekstensj˛e

powinien by´c typu kolekcyjnego (tj. powinien by´c obiektem klasy implementuj ˛

acej jeden z interfejsów

rozszerzaj ˛

acych

java.util.Collection

).

Elementy przechowywane w ekstensji powinny by´c posortowane zgodnie z poni˙zszymi regułami:

1. elementy umieszczone w ekstensjach klas reprezentuj ˛

acych pojazdy powinny by´c posortowane

wzgl˛edem: (1) nazwy producenta, (2) modelu, oraz (3) numeru rejestracyjnego;

2. z kolei producenci powinni by´c posortowani wzgl˛edem:

(1) danych teleadresowych, oraz (2)

nazwy;

3. wła´sciciele pojazdów, tj. osoby prawne lub fizyczne powinny by´c posortowane odpowiednio

wzgl˛edem: (1) numeru NIP, lub (2) nazwisk.

2.6.2

Mapy oraz kolekcje posortowane wzgl˛edem alternatywnych kryteriów (zadanie rozszer-
zone: 15 pkt)

2.6.2.1

Mapy (5 pkt)

Rozszerz rozwi ˛

azanie zadania

2.6.1

poprzez utworzenie map umo˙zliwiaj ˛

acych

bezpo´sredni dost˛ep do instancji klas przechowywanych w ekstensjach.

U˙zytkownik aplikacji powinien mie´c mo˙zliwo´s´c natychmiastowego dost˛epu do wpisów ekstensji:

1. klas reprezentuj ˛

acych pojazy po wpisaniu numeru rejestracyjnego;

2. klas reprezentuj ˛

acych producentów, lub wła´scicieli (zarówno indywidualnych, jak i korporacyjnych)

po wpisaniu odpowiednio: (1) nazwy, b ˛

ad´z (2) imienia i nazwiska.

Wspomniana funkcjonalno´s´c powinna by´c dost˛epna za po´srednictwem ´sci´sle zdefiniowanego interfejsu
programistycznego, tak aby odizolowa´c u˙zytkownika od zło˙zono´sci implementacyjnej.

2.6.2.2

Alternatywne sortowanie kolekcji (10 pkt)

Dostosuj swoje rozwi ˛

azanie zadania

2.6.1

do

zasad sortowania wyst˛epuj ˛

acych w j˛ezyku polskim. Przykładowo, słowa zawieraj ˛

ace polskie znaki diak-

tryczne: ˛

a, ´c, ˛e, ł, ´n, ó, ´z, ˙z domy´slnie nie b˛ed ˛

a posortowane zgodnie z polskimi zasadadmi kolatacji (ang.

collation). Przyczyn ˛

a powy˙zszego zjawiska s ˛

a warto´sci przyznane znakom polskiego alfabetu w stan-

dardzie Unicode, które s ˛

a wi˛eksze od wszystkich liter alfabetu łaci´nskiego. Jest to bezpo´sredni powód,

czemu np. słowo „ ´

Cma” domy´slnie zostanie umieszczona po słowie „Motyl”.

PODPOWIED ´

Z: Rozwi ˛

azanie wymaga dostarczenia odpowiedniego rozszerzenia klasy abstrakcyjnej

java.text.Collator

.

c

E

DGAR

G

ŁOWACKI

background image

2.7 Zadanie VII (termin oddania: 17/18 maja 2008)

15

2.7

Zadanie VII (termin oddania: 17/18 maja 2008)

2.7.1

Obracaj ˛

acy si˛e wykres kołowy (zadanie podstawowe: 10 pkt)

Twoim zadaniem jest skonstruowanie prostej aplikacji posiadaj ˛

acej graficzny interfejs u˙zytkownika (ang.

graphical user interface). Centralnym elementem formularza aplikacji powinien by´c przycisk zawier-
aj ˛

acy wykres kołowy (ang. pie chart) stanowi ˛

acy graficzn ˛

a prezentacj˛e rekordów opisuj ˛

acych pewne

wybrane zjawisko. Przykładowym zjawiskiem mógłby by´c profil wykształcenia w wybranym kraju —
tj. udział w społecze´nstwie danego osób posiadaj ˛

acych wykształcenie:

(1) wy˙zsze, (2) ´srednie, (3)

zasadnicze zawodowe, (4) podstawowe.

Wej´sciem dla wykresu powinny by´c warto´sci bezwzgl˛edne — nie procentowy udział. Dla podanego
powy˙zej przykładu oznacza to przekazanie bezwzgl˛ednej liczby osób, które zako´nczyły sw ˛

a edukacj˛e na

okre´slonym poziomie, podanej np. w setkach tysi˛ecy.

Suma warto´sci odpowiadaj ˛

acych poszczególnym fragmentom (ang. slices) wykresu okre´sla ł ˛

aczne wys-

t˛epowanie danego zjawiska wyra˙zone w liczbach bezwzgl˛ednych. Dla rozpatrywanego przykładu b˛edzie
to oczywi´scie liczebno´s´c społecze´nstwa danego kraju.

Figure 1: Wykres kołowy przed i po obrocie w wyniku wci´sni˛ecia przycisku

Poszczególne wycinki diagramu kołowego powinny by´c wykre´slane jedna po drugiej pocz ˛

awszy od

górnej (dodatniej) cz˛e´sci osi pionowej (y), gdzie pocz ˛

atkiem układu współrz˛ednych jest ´srodek przy-

cisku. Lewa kraw˛ed´z pierwszego fragmentu wykresu powinna pokrywa´c si˛e z dodatni ˛

a cz˛e´sci ˛

a osi pio-

nowej, lewa kraw˛ed´z ka˙zdego kolejnego fragmentu powinna pokrywa´c si˛e z praw ˛

a kraw˛edzi ˛

a wycinka

poprzedzaj ˛

acego.

Przycisk powinien całkowicie wypełni´c formularz aplikacji (patrz.

1

). Wykres powinien by´c wy´srod-

kowany w poziomie i pionie. Szeroko´s´c i wysoko´s´c wykresu powinna stanowii´c

2
3

odpowiednio sze-

roko´sci i wysoko´sci przycisku. Zmiana rozmiaru aplikacji powinnia powodowa´c odpowiedni ˛

a zmian˛e

rozmiaru i kształtu wykresu.

Wci´sni˛ecie przycisku powinno ka˙zdorazowo wi ˛

aza´c si˛e z obrotem wykresu kołowego o k ˛

at ostatniego

c

E

DGAR

G

ŁOWACKI

background image

2.7 Zadanie VII (termin oddania: 17/18 maja 2008)

16

fragmentu, którego prawa kraw˛ed´z pokrywa si˛e z dodatni ˛

a cz˛e´sci ˛

a osi y. Najprostszym sposobem re-

alizacji powy˙zszego wymagania jest wstawienie rekordu reprezentuj ˛

acego ostatni wycinek na pocz ˛

atek

zbioru danych wej´sciowych i ponowne wykre´slenie diagramu kołowego.

2.7.2

Legenda wykresu oraz statystyka symulacji (zadania rozszerzone: 25 pkt)

2.7.2.1

Legenda wykresu (15 pkt)

Rozszerz rozwi ˛

azanie zadania ?? dodaj ˛

ac:

1. nazw˛e ilustrowanego zjawiska powy˙zej diagramu;

2. nazw˛e reprezentowanego rekordu odpowiednio po lewej, lub prawej stronie odpowiedniego frag-

mentu wykresu, mniej wi˛ecej po ´srodku łuku odpowiedniego wycinka. Opisy wycinka nie powinny
na siebie nachodzi´c.

UWAGA: Obrotowi wykresu powinno towarzyszy´c odpowiednie przemieszczenie si˛e opisów.

2.7.2.2

Statystyka symulacji pracy warsztatu (10 pkt)

Wykorzystaj rozwi ˛

azanie zadania

2.7.2.1

do prezentacji statystyki symulacji pracy warsztatu samochodowego realizowanej przez zadania:

2.4.1

,

oraz

2.4.2

. Po zako´nczeniu symulacji aplikacja powinna prezentowa´c statystyk˛e dotycz ˛

ac ˛

a wydajno´sci

poszczególnych stanowisk oraz ich załóg w postaci wykresu kołowego z legend ˛

a.

c

E

DGAR

G

ŁOWACKI

background image

2.8 Zadanie VIII (termin oddania: 17/18 maja 2008)

17

2.8

Zadanie VIII (termin oddania: 17/18 maja 2008)

2.8.1

Wielobarwne prymitywy (figury) geometryczne (zadanie podstawowe: 10 pkt)

Stwórz aplikacj˛e posiadaj ˛

ac ˛

a graficzny interfejs u˙zytkownika, której główny panel wypełniaj ˛

a kwadratowe

przyciski jednakowej wielko´sci. Minimalna długo´s´c boku przycisku nie mo˙ze by´c nigdy mniejsza ni˙z 40
pikseli, z kolei maksymalna długo´s´c boku mo˙ze wynie´s´c co najwy˙zej 80 pikseli. Zmiana wielko´sci okna
(formularza) aplikacji oznacza odpowiedni ˛

a zmian˛e rozmiaru wszystkich przycisków z zachowaniem

kształtu.

W ´srodku ka˙zdego przycisku powinien znajdowa´c si˛e wypełniony prymityw (figura) geometryczny,
którego szeroko´s´c i wysoko´s´c powinna wynosi´c

2
3

odpowiednio: szeroko´sci i wysoko´sci przycisku.

Wewn ˛

atrz przycisków powinny by´c wykre´slane wypełnione (ang. filled) prymitywy nast˛epuj ˛

acych rodza-

jów:

1. trójk ˛

aty równoboczne,

2. kwadraty, oraz

3. koła.

W chwili uruchomienia aplikacja powinna losowo wygenerowa´c 15 prymitywów wy˙zej wymienionych
typów. Ka˙zdy prymityw geometryczny powinien by´c wykre´slany w innym (unikalnym) kolorze. Mo˙zli-
wo´sci współcze´snie wykorzystywanej 24-bitowej palety barw przekraczaj ˛

a zdolno´sci percepcyjne prze-

ci˛etnego człowieka pod wzgl˛edem liczby rozró˙znialnych kolorów. Z tego wzgl˛edu, aby zagwaran-
towa´c, by wygenerowane kolory były rozró˙znialne dla u˙zytkownika, nale˙zy zapewni´c, by dla ka˙zdej
pary kolorów ró˙znica warto´sci przynajmniej jednej składowej RGB b˛edzie wynosiła co najmniej 15.
Zakres warto´sci dla ka˙zdej składowej RGB

3

wynosi: [0..255]. Zbiór wygenerowanych prymitywów,

jak równie˙z kolory przypisane poszczególnym figurom powinny pozosta´c niezmienne przez czały czas
działania aplikacji.

W trakcie inicjalizacji aplikacji ka˙zdy z losowo wygenerowanych prymitywów powinien zosta´c sko-
jarzony z jednym równie˙z losowo wybranym przyciskiem. Wci´sni˛ecie przycisku powinno ponownie
losowo przyporz ˛

adkowa´c prymitywy do przycisków.

Dodatkowo aplikacja powinna posiada´c menu zawieraj ˛

ace nast˛epuj ˛

ace opcje:

1. „rozkład ci ˛

agły” (ang. flow layout) z podmenu:

(a) „do lewej” (ang. left alignment), oraz

(b) „do prawej” (ang. right alignment);

2. „rozkład siatkowy” (ang. grid layout) z podmenu:

(a) 4 × 4 — przyciski zostan ˛

a rozmieszczone w macierzy 4 × 4 (4 kolumny, 4 wiersze).

UWAGA: Prosz˛e zwróci´c uwag˛e, ˙ze jedna z „komórek” (ang. cell) siatki nie b˛edzie zawier-
ała przycisku, a tzw. „miejsce puste” (ang. placeholder).

(b) 5 × 3 — analogicznie 5 kolumn i 3 wiersze.

3

RGB — model barw wykorzystywany dla monitorów komputerowych oparty na trzech podstawowych barwach: czer-

wonym (ang. red), zielonym (ang. green), oraz niebieskim (ang. blue).

c

E

DGAR

G

ŁOWACKI

background image

2.8 Zadanie VIII (termin oddania: 17/18 maja 2008)

18

2.8.2

Obracaj ˛

ace si˛e prymitywy graficzne, układanka (zadania rozszerzone: 20 pkt)

2.8.2.1

Obracaj ˛

ace si˛e prymitywy graficzne (10 pkt)

Rozszerz funkcjonalno´s´c rozwi ˛

azania zada-

nia

2.8.1

, tak aby wci´sni˛ecie przycisku wi ˛

azało si˛e z obrotem ka˙zdego z prymitywów o k ˛

at 30

0

przed ich

ponownym przyporz ˛

adkowaniem.

PODPOWIED ´

Z: Oczywi´scie obrót ma sens jedynie w przypadku kwadratów i trójk ˛

atów równobocznych.

2.8.2.2

Układanka (10 pkt)

Zmodyfikuj rozwi ˛

azanie zadania

2.8.1

, tak aby w trybie 4 × 4 wci´sni˛e-

cie dowolnego przycisku s ˛

asiaduj ˛

acego z tzw. „miejscem pustym” wi ˛

azało si˛e z wizualn ˛

a „zamian ˛

a

miejsc” wybranego przycisku i „miejsca pustego”.

Zamiana miejsc powinna dotyczy´c wył ˛

acznie przycisków posiadaj ˛

acych wspóln ˛

a kraw˛edz z „miejscem

pustym” i wówczas nie powinna si˛e wi ˛

aza´c z ponownym przyporz ˛

adkowaniem prymitywów do przy-

cisków. Reakcja na wci´sni˛ecie przycisku nies ˛

asiaduj ˛

acego z placeholder powinna by´c taka jak w rozwi ˛

aza-

niu oryginalnym, tj. powinno nast ˛

api´c ponowne przypisanie prymitywów do przycisków.

c

E

DGAR

G

ŁOWACKI

background image

2.9 Zadanie IX (termin oddania: 31 maja/1 czerwca 2008)

19

2.9

Zadanie IX (termin oddania: 31 maja/1 czerwca 2008)

2.9.1

Uciekaj ˛

ace si˛e przyciski (zadanie podstawowe: 10 pkt)

Główne okno aplikacji powinno zawiera´c od 3 do 10 przycisków — dokładna liczba przycisków powinna
by´c okre´slona w postaci warto´sci argumentu linii polece´n.

Kontrolki (ang. widgets) umieszczone w głównym panelu aplikacji powinny zachowywa´c si˛e zgodnie z
poni˙zszymi regułami:

• przycisk, który jest w danym momencie wybrany (ang. gained focus) powinien pod ˛

a˙za´c za wska´znikiem

myszki;

• wszystkie pozostałe przyciski (tj. niewybrane) powinny "ucieka´c" przed wska´znikiem myszki;

• wska´znik myszy nie mo˙ze by´c umieszczony nad ˙zadnym przyciskiem (tj. u˙zytkownik nie powinien

mie´c nigdy mo˙zliwo´sci wci´sni˛ecia przycisku za pomoc ˛

a myszki);

• przycisky wybrany powinien by´c wyró˙zniony za pomoc ˛

a pogrubionego czerwonego obramowania;

• przyciski nie mog ˛

a na siebie zachodzi´c.

2.9.2

Walidacja danych wprowadzanych przez u˙zytkownika (zadanie rozszerozne: 20 pkt)

Zbuduj prosty graficzny interfejs u˙zytkownika umo˙zliwiaj ˛

acy zarz ˛

adzanie strukturami danych, których

zdefinowanie było przedmiotem zadania:

2.1.1

. U˙zytkownik aplikacji powinien mie´c mo˙zliwo´s´c wprowadza-

nia danych wszystkich typów, które zostały opisane w instrukcji dla zadania ??, tj. (1) pojazdów, (2)
wła´scicieli (obydwu rodzajów), (3) producentów, itp.

Panel główny aplikacji powinien by´c podzielony na dwie cz˛e´sci:

1. cz˛e´s´c górna powinna zawiera´c szczegóły aktualnie prezentowanego obiektu (ang. item);

2. cz˛e´s´c doln ˛

a powinien stanowi´c panel nawigacyjny zawieraj ˛

acy cztery przyciski:

(a) „nast˛epny” umo˙zliwiaj ˛

acy przej´scie do kolejnego elementu zapisanego w repozytorium ap-

likacji;

(b) „poprzedni” umo˙zliwiaj ˛

acy odpowiednio przej´scie do poprzedniego elementu;

(c) „dodaj” umo˙zliwiaj ˛

acy dodanie nowego elementu — wci´sni˛ecie „dodaj” powinno wi ˛

aza´c si˛e

z wy´swietleniem okna dialogowego, za pomoc ˛

a którego u˙zytkownik b˛edzie mógł okre´sli´c

typ dodawanego elementu (samochód osobowy, motocykl, itp.);

(d) „usu´n” umo˙zliwiaj ˛

acy usuni˛ecie aktualnie prezentowanego elementu.

U˙zytkownik powinien mie´c mo˙zliwo´s´c modyfikacji warto´sci wszystkich atrybutów (pól) opisuj ˛

acych

aktualnie prezentowany rekord. Dane wprowadzane przez u˙zytkownika powinny by´c walidowane (ang.
validated), tj. aplikacja powinna sprawdza´c ich poprawno´s´c:

1. aplikacja powinna uniemo˙zliwia´c wybrania (ang. move focus) innej kontrolki, dopóki aktualnie

edytowana kontrolka nie zawiera warto´sci poprawnej. Przykładowo imi˛e i nazwisko wła´sciciela
indywidualnego nie mo˙ze zawiera´c innych znaków ni˙z litery, a pojemno´s´c silnika musi by´c liczb ˛

a

całkowit ˛

a.

c

E

DGAR

G

ŁOWACKI

background image

2.9 Zadanie IX (termin oddania: 31 maja/1 czerwca 2008)

20

2. wprowadzenie warto´sci niepoprawnej by´c sygnalizowane przez aplikacj˛e poprzez zmian˛e koloru

ramki wybranej kontrolki na czerwono oraz wygenerowanie krótkiego sygnału dzwi˛ekowego (ang.
beep).

UWAGA: Rodzaje pojazdów, czy wła´scicieli ró˙zni ˛

a si˛e pod wzgl˛edem liczby oraz typów atrybutów

opisuj ˛

acych dany typ rekordu. Z tego wzgl˛edu u˙zytkownik powinien wprowadza´c dane za pomoc ˛

a for-

mularzy zaprojektowanych z my´sl ˛

a o poszczególnych rodzajach rekordów.

Wszystkie rekordy (wszytkich typów) powinny by´c przechowywane w jednej kolekcji. Dlatego te˙z prze-
jscie do elementu innego typu ni˙z aktualnie prezentowany powinno wi ˛

aza´c si˛e ze zmian ˛

a wygl ˛

adu górnej

cz˛e´sci konsoli umo˙zliwiaj ˛

acej podgl ˛

ad oraz edycj˛e rekordów zapisanych w repozytorium aplikacji.

UWAGA: Tworzenie/zmiana powi ˛

aza´n wyst˛epuj ˛

acych pomi˛edzy poszczególnymi rekordami (np. po-

jazdami i ich producentami, czy wła´scicielami) wymaga u˙zycia:

(1) list opuszczanych (ang. combo

boxes) — je´sli z bie˙z ˛

acym elementem mo˙ze by´c powi ˛

azany w danej roli jeden element, b ˛

ad´z (2) list —

w przypadku, gdy aktualnie prezentowany element mo˙ze by´c powi ˛

azany z wi˛eksz ˛

a liczb ˛

a rekordów.

c

E

DGAR

G

ŁOWACKI

background image

2.10 Zadanie X (termin oddania: 14/15 czerwca 2008)

21

2.10

Zadanie X (termin oddania: 14/15 czerwca 2008)

2.10.1

Panel z zakładkami umo˙zliwiaj ˛

acy przegl ˛

adanie ró˙zne rodzaje rekordów (zadanie podsta-

wowe: 10 pkt)

Zbuduj aplikacj˛e przypominaj ˛

ac ˛

a rozwi ˛

azanie zadania

2.9.2

. Podobnie jak poprzednio okno aplikacji

powinno by´c podzielone na dwie cz˛e´sci: (1) cz˛e´s´c górn ˛

a prezentuj ˛

ac ˛

a szczegóły aktualnie wybranego

rekordu, (2) cz˛e´s´c doln ˛

a zawieraj ˛

ac ˛

a panel navigacyjny.

Panel nawigacyjny powinien zawiera´c cztery przyciski:

(1)„poprzedni”, (2)„nast˛epny”, (3)„dodaj”,

oraz (4)„usu´n”, których funkcjonalno´s´c powinna pozosta´c niezmieniona w porównaniu z rozwi ˛

azaniem

zadania

2.9.2

.

W odró˙znieniu do poprzedniej aplikacji wygl ˛

ad panelu górnego nie powinien zmienia´c si˛e w zale˙zno´sci

od rodzaju aktualnie prezentowanego rekordu. Cz˛e´s´c górn ˛

a aplikacji powinien stanowi´c panel zaw-

ieraj ˛

acy zakładki (ang. tabbed panel) umo˙zliwiaj ˛

acy podgl ˛

ad wszystkich rodzajów elementów prze-

chowywanych w repozytorium aplikacji. Po wybraniu zakładki u˙zytkownik powinien mie´c mo˙zliwo´s´c:
(1) przegl ˛

adania, (2) dodawania, oraz (3) usuwania elementów danego typu przechowywanych w re-

pozytorium.

Kolejn ˛

a ró˙znic ˛

a w stosunku do rozwi ˛

azania

2.9.2

powinien by´c sposób podziału obszaru roboczego okna

aplikacji mi˛edzy dwoma opisanymi wy˙zej panelami. Tym razem u˙zytkownik powinien mie´c mo˙zliwo´s´c
zmiany rozmiaru ka˙zdej z cz˛e´sci za pomoc ˛

a „panelu podziału” (ang. split panel).

UWAGA: W odró˙znieniu do rozwi ˛

azania

2.9.2

aplikacja nie musi sprawdza´c poprawno´sci danych wprowadzanych

przez u˙zytkownika.

2.10.2

Utrwalanie zaznaczonego fragmentu panelu oraz paskki narz˛edzi (zadanie rozszerzone:
25 pkt)

2.10.2.1

Zapis zaznaczonego fragmentu panelu głównego aplikacji w pliku (15 pkt)

Załó˙zmy,

˙ze chcieliby´smy sporz ˛

adzi´c instrukcj˛e u˙zytkownika dla aplikacji stworzonej w ramach zadania

2.10.1

.

Ka˙zda dobrze opracowana dokumentacja zawiera zrzuty ekranów opisywanych fragmentów graficznego
interfejsu u˙zytkownika. W celu uzyskania lepszej ilustracji opisywanego fragmentu funkcjonalno´sci
zrzuty ekranów s ˛

a wzbogacane dodatkowymi elementami graficznymi takimi jak wyró˙znienia (np. za

pomoc ˛

a ramek).

Twoje zadanie b˛edzie polegało na rozszerzeniu funkcjonalno´sci rozwi ˛

azania

2.10.1

, którego celem b˛edzie

ułatwienie pracy osobom odpowiedzialnym za opracowanie dokumentacji u˙zytkowej.

Wci´sniecie prawego przycisku myszy na obszarze roboczym aplikacji powinno wy´swietli´c tzw. menu
kontekstowe, lub „wyskakuj ˛

ace” (ang. pop-up menu) zawieraj ˛

ace tylko jeden element: pole wyboru

(ang. check box) umo˙zliwiaj ˛

ace przeł ˛

aczanie aplikacji do trybu ułatwiaj ˛

acego prac˛e autorom dokumen-

tacji u˙zytkowej.

Tryb wsparcia autorów dokumentacji u˙zytkowej powinien obejmowa´c nast˛epuj ˛

ac ˛

a funkcjonalno´s´c:

1. ruch myszki w tzw. trybie „przeci ˛

agania” (ang. dragging) (poruszanie myszk ˛

a przy wci´sni˛etym

lewym przycisku) powinien by´c zaznaczany poprzez wykre´slanie czerwonej linii o nieregularnym
kształcie;

2. „przeci ˛

aganie” myszki przy jednoczesnym trzymaniu kombinacji przycisków

CTRL+M

powinno

umo˙zliwia´c u˙zytkownikowi zaznaczanie wybranego obszaru za pomoc ˛

a czerwonej ramki. Zwole-

nienie lewego przycisku myszki powinno wi ˛

aza´c si˛e z wy´swietleniem standardowego okna di-

c

E

DGAR

G

ŁOWACKI

background image

2.10 Zadanie X (termin oddania: 14/15 czerwca 2008)

22

alogowego umo˙zliwiaj ˛

acego wybór pliku (

JFileChooser

), w którym zostanie zapisany zaz-

naczony fragment obszaru roboczego aplikacji. Wybrany fragment okna aplikacji powinien by´c
utrwalony w postaci pliku graficznego w formacie

PNG

. UWAGA: Ramka powinna ogranicza´c

obszar, który mo˙ze zosta´c zapisany w pliku, co oznacza, ˙ze w przypadku, gdy podczas „przeci ˛

a-

gania” wska´znik myszki opu´sci obszar roboczy ramka powinna wyró˙znia´c obszar wewn ˛

atrz okna

aplikacji.

2.10.2.2

Paski narz˛edziowe (10 pkt)

Uzupełnij aplikacj˛e rozwijan ˛

a w ramach poprzednich zada´n

poprzez dodanie dwóch „pływaj ˛

acych”

4

pasków narz˛edziowych:

1. pierwszy pasek narz˛edziowy powinien posiada´c cztery przyciski, których funkcjonalno´s´c powinna

odpowiada´c funkcjonalno´sci przycisków panelu nawigacyjnego (patrz.

2.10.1

);

2. drugi pasek narz˛edziowy b˛edzie zawierał jeden przycisk zachowuj ˛

acy swój stan (wci´sni˛ety/zwolniony).

Stan przycisku powinien korespondowa´c ze stanem pola wyboru (ang. checkbox) opisanego w
zadaniu

2.10.2.1

, tj. jego wci´sni˛ecie powinno przeł ˛

acza´c aplikacj˛e w tryb wsparcia autorów po-

dr˛ecznika u˙zytkownika, natomiast zwolnienie powinno przywróci´c aplikacj˛e do trybu normalnego.

UWAGA: Zwró´c uwag˛e, ˙ze paski narz˛edziowe duplikuj ˛

a funkcjonalno´s´c opisan ˛

a w tre´sci zada´n

2.10.1

oraz

2.10.2.1

. Z tego wzgl˛edu implementacja akcji wywoływanych w chwili zgłoszenia zdarze´n za

pomoc ˛

a obydwu rodzajów interfejsów powinna by´c oparta o

javax.swing.AbstractAction

.

4

„pływaj ˛

acy” pasek narz˛edziowy (ang. floatable toolbar) umo˙zliwia u˙zytkownikowi aplikacji swobodne umieszczenie go

w dowolnym miejscu obszaru roboczego aplikacji, b ˛

ad´z wyci ˛

agni˛ecie poza ten obszar poprzez umieszczenie w osobnym oknie.

c

E

DGAR

G

ŁOWACKI

background image

2.11 Zadanie XI (termin oddania: 28/29 czerwca 2008)

23

2.11

Zadanie XI (termin oddania: 28/29 czerwca 2008)

2.11.1

Wzajemnie powi ˛

azane listy pojazdów i ich wła´scicieli (30 pts)

Rozszerz funkcjonalno´s´c aplikacji zrealizowanej w ramach zadania

2.10.1

poprzez dodanie kolejnej za-

kładki (ang. tab) zawieraj ˛

acej dwie listy prezentuj ˛

ace rekordy dwórch rodzajów: (1) wła´scicieli, oraz

(2) pojazdów.

Zasadnicza funkcjonalno´s´c nowego panelu b˛edzie sprowadzała si˛e do wizualizacji zale˙zno´sci wyst˛epuj ˛

a-

cych pomi˛edzy poszczególnymi elementami dwóch wymienionych kategorii. Wybranie rekordu prezen-
towanego na jednej z list powinno wi ˛

aza´c si˛e z automatycznym wyró˙znieniem powi ˛

azanych rekordów

na drugiej li´scie. Przykładowo, je´sli u˙zytkownik zaznaczy jednego b ˛

ad´z wi˛ecej wła´scicieli, aplikacja

powinna automatycznie wyró˙zni´c pojazdy stanowi ˛

ace własno´s´c wybranych wła´scicieli.

UWAGA: Zwró´c uwag˛e na sprz˛e˙zenie zwrotne wyst˛epuj ˛

ace pomi˛edzy obydwoma listami: (1) wybranie

danej osoby na li´scie wła´scicieli spowoduje (2) automatyczne wyró˙znienie wszystkich pojazdów stanow-
i ˛

acych jej własno´s´c, co z kolei b˛edzie wi ˛

azało si˛e z (3) zaznaczeniem wszystkich wła´scicieli wybranych

pojazdów, a nast˛epnie (4) wyró˙znieniem pojazdów b˛ed ˛

acych współwłasno´sci ˛

a wszystkich zaznaczonych

osób, itd.

UWAGA: Niniejsze zadanie wymaga wykorzystania wzorca projektowego Model-View-Controller omówionego
w trakcie wykładu.

c

E

DGAR

G

ŁOWACKI


Document Outline


Wyszukiwarka

Podobne podstrony:
Etap rejonowy 2007 2008 klucz
SZKOLNY KONKURS 2007 - 2008, Klasa VI(1)
embriologia test 2007 2008 plus odpowiedzi, Medycyna CMUJ, Embriologia
pytania z testowe z egzaminów 2007 2008, Prywatne, FIZJOLOGIA od LILI, pytania
Notatki - OWI - 08.04.2008, Filozofia UKSW 2007-2010, Rok I (2007-2008), Notatki, Semestr II, Ochron
wykłady z genetyki i parazytologii 2007-2008 część 2 - paraz, farmacja, parazytologia
Nie z tego świata s. 03 (2007 - 2008), Nie z tego świata s.03 2007-2008
Karta odpowiedzi - Międzyszkolne Zawody 2007-2008, Klasa IV(1)
Instytucje i pojecia prawa administracyjnego egzamin 2007-2008, pliki zamawiane, edukacja
so 2007 2008 wieczorowe, na socjologii
wykłady z genetyki i parazytologii 2007-2008 część 1 - syste, farmacja, parazytologia
opracowania, Ochrona Środowiska studia, 2 rok (2007-2008), Semestr IV (Rok 2), Kartografia Geologicz
Matura ustna polski 2007 2008, szkola

więcej podobnych podstron