1
1. Wielomian stopnia drugiego - trójmian (waga 1)
•
Napisz klas¦ reprezentuj¡c¡ wielomian stopnia drugiego (trójmian). Zmienne klasy powinny
by¢ wspóªczynnikami wielomianu.
•
Napisz 2 konstruktory (wg wªasnego uznania). Pamietaj o konstruktorze umo»liwiaj¡cym nada-
nie dowolnych warto±ci wszystkim wspóªczynnikom wielomianu.
•
Wszystkie pola klasy sªu»¡ce do budowania wielomianu powinny by¢ prywatne. Po zbudowaniu
obiektu mo»na przeczyta¢, za pomoc¡ odpowiednich metod, wspóªczynniki wielomianu. Po
zbudowaniu obiektu pól tych nie mo»na zmienia¢.
•
Nadpisz odpowiednio metod¦ toString(). Pami¦taj, metoda toString() nie sªu»y do wyprowa-
dzania warto±ci zwracanych przez dost¦pne metody, powinna by¢ tekstowym równowa»nikiem
obiektu.
•
Napisz metod¦ obliczaj¡c¡ warto±¢ trójmianu dla dowolnej warto±ci argumentu.
•
Napisz metod¦ obliczaj¡c¡ warto±¢ pochodnej trójmianu dla dowolnej warto±ci argumentu.
•
Napisz metod¦ obliczaj¡c¡ miejsca zerowe wielomianu. Rozpatrz 3 przypadki: zbudowany trój-
mian nie jest wielomianem stopnia drugiego, s¡ dwa rzeczywiste (by¢ mo»e takie same) roz-
wi¡zania, rozwi¡zania s¡ zespolone. Peªna informacja o tych trzech przypadkach powinna by¢
dost¦pna w metodach testuj¡cych.
•
Napisz metod¦ obliczaj¡c¡ ekstremum wielomianu. Informacja o ekstremum (dokªadniej: war-
to±¢ odci¦tej i rz¦dnej ekstremum) i o typie ekstremum (minimum, maksimum) powinna by¢
dost¦pna w metodach testuj¡cych.
•
Przetestuj zbudowan¡ klas¦, opisz w komentarzach wszystkie przeprowadzone testy.
•
Wyniki dziaªania zbudowanych metod musz¡ by¢ dost¦pne w programach wykorzystuj¡cych
t¦ klas¦.
•
Zadanie mo»e wymaga¢ zdeniowania dodatkowych klas.
•
Wszystkie klasy, wszystkie metody powinny by¢ udokumentowane.
2
2. Napisz program speªniaj¡cy poni»sze warunki (waga 1)
•
Napisz klas¦ reprezentuj¡c¡ wektor (−
→
x ∈ R
n
), zbuduj 2 konstruktory, pami¦taj o konstruk-
torze za pomoc¡ którego mo»liwe b¦dzie nadanie dowolnych warto±ci wspóªrz¦dnym wektora.
•
Napisz metod¦ dodaj¡c¡ 2 wektory (metoda z jednym argumentem).
•
Napisz metod¦ obliczaj¡c¡ iloczyn skalarny dwóch wektorów (metoda z jednym argumentem).
•
Napisz metod¦ obliczaj¡c¡ dªugo±¢ wektora (metoda bezargumentowa).
•
Napisz klas¦ reprezentuj¡c¡ macierz (rozmiar nxm), zbuduj 2 konstruktory, pami¦taj o kon-
struktorze, za pomoc¡ którego mo»liwe b¦dzie nadanie elementom macierzy dowolnych warto-
±ci.
•
Napisz metod¦ obliczaj¡c¡ sum¦ dwu macierzy (metoda z jednym argumentem).
•
Napisz metod¦ mno»¡c¡ macierz przez wektor (metoda z jednym argumentem - wektorem).
•
Przetestuj program dla danych wprowadzanych z klawiatury oraz dla danych zapisanych w
pliku.
•
Napisz dokumentacj¦ dla klas reprezentuj¡cych wektor i macierz.
3
3. Napisz program speªniaj¡cy poni»sze warunki (waga 2)
•
Napisz klas¦ reprezentuj¡c¡ punkt na pªaszczy¹nie (niech nosi nazw¦ Punkt), wspóªrz¦dne
powinny by¢ typu double.
•
Zbuduj 2 konstruktory w klasie Punkt.
•
Zbuduj metod¦ obliczaj¡c¡ odlegªo±¢ mi¦dzy dwoma punktami (ta metoda powinna mie¢ 1
argument).
•
Nie zapomnij o metodzie toString() i metodach pozwalaj¡cych pobra¢ wspóªrz¦dne punktu.
•
Napisz klas¦ reprezentuj¡c¡ trójk¡t (Trojkat) wykorzystuj¡c klas¦ Punkt - kompozycja. Zaªó»,
»e trójk¡t istnieje.
•
Napisz dwa konstruktory.
•
Napisz metody obliczaj¡ce pole, obwód, wysoko±¢, rysuj¡c¡ i okre±laj¡c¡ kolor wypeªnienia
trójk¡ta. Wystarczy policzy¢ jedn¡ z wysoko±ci. Na razie funkcja rysuj¡ca powinna wyprowa-
dza¢ tekst Rysuj¦ trójk¡t.
•
Napisz klas¦ reprezentuj¡c¡ czworok¡t (Czworokat) wykorzystuj¡c klas¦ Punkt (zaªó», »e jest
to czworok¡t wypukªy).
•
Napisz dwa konstruktory.
•
Napisz metody obliczaj¡ce pole, obwód, przek¡tn¡, rysuj¡c¡ i okre±laj¡c¡ kolor wypeªnienia
czworok¡ta. Wystarczy policzy¢ jedn¡ z przek¡tnych. Metoda rysuj¡ca na razie powinna wy-
prowadza¢ tekst Rysuj¦ czworok¡t.
•
Pami¦taj o metodzie toString() w ka»dej klasie.
•
Zbuduj klas¦ testuj¡c¡ powy»sze klasy.
•
W klasie testuj¡cej zbuduj tablice trojk¡tów i czworok¡tów. Wykonaj wszystkie dost¦pne me-
tody na elementach tych tablic.
•
Uporz¡dkuj rosn¡co trójk¡ty i czworok¡ty, jako kryterium porz¡dkowania przyjmij pole gury.
Do sortowania wykorzystaj metod¦ z klasy Arrays.
•
Napisz dokumentacj¦ klas Punkt, Trojkat Czworokat
•
Narysuj trójk¡t i czworok¡t - zbuduj aplikacj¦.
4
4. Zbuduj tablice zawieraj¡ce trójk¡ty i czworok¡ty i narysuj je. Wszystkie wielok¡ty, bez wgl¦du na
podane wspóªrz¦dne (np.: ujemne wspóªrz¦dne), powinny by¢ widoczne w wybranym polu rysowa-
nia. Skalowanie jest przedstawione poni»ej. (waga 2)
Skalowanie.
x
max
− x
min
x
max
− x
1
=
b − a
b − x
2
x
2
= b −
(x
max
− x
1
)(b − a)
x
max
− x
min
y
max
− y
min
y
max
− y
1
=
d − c
d − y
2
y
2
= d −
(y
max
− y
1
)(d − c)
y
max
− y
min
5
5. Wykonaj dwa poni»sze programy (waga 4)
•
Przeksztaª¢ przykªad opisuj¡cy geometri¦ wg poni»szych punktów
W przykªadzie tym, metody obliczaj¡ce pole, obwód, rysowanie s¡ wspólnymi cechami
wielok¡tów. Musz¡ by¢ tylko wypeªnione ró»n¡ tre±ci¡. Metoda okre±laj¡ca kolor mo»e
by¢ niezale»na o typu wielok¡ta. Zbuduj klas¦ abstrakcyjn¡ odzwierciedlaj¡c¡ ten fakt. W
klasie abstrakcyjnej zdeniuj dwa pola caªkowite pierwsze z nich powinno przechowywa¢
numer kolejny budowanego wielok¡ta, drugie powinno przechowywa¢ informacj¦ ile zosta-
ªo zbudowanych wielok¡tów, ka»dy wielok¡t musi mie¢ dost¦p do tej informacji. Napisz
odpowiedni konstruktor.
Zmodykuj klasy Trojkat i Czworokat tak, by dziedziczyªy z klasy Wielokat. Przetestuj
program.
W metodzie main(), oprócz testów z poprzedniego punktu, zbuduj tablic¦ klasy Wielokat
zapisz w niej kilka trójk¡tów i czworok¡tów zastosuj wszystkie zdeniowane w klasach
Trojkat i Czworokat metody do elementów tej tablicy.
•
Przeksztaª¢ poprzedni program wg poni»szych punktów
Zbuduj interfejs okre±laj¡cy dowoln¡ gur¦, zapisz w nim wszystkie, wspólne dla gur
metody (te, które zostaªy zdeniowane w poprzednich programach).
W klasie abstrakcyjnej Wielokat zaimplementuj ten interfejs.
W metodzie testuj¡cej zbuduj tablic¦ klasy interfejsu, zapisz w niej kilka trójk¡tów i
czworok¡tów, zastosuj wszystkie zdeniowane metody do elementów tej tablicy.
6
6. Napisz program, w którym po przyci±ni¦ciu lewego przycisku myszy b¦dzie rysowany trójk¡t.
Wszystkie narysowane w ten sposób trójk¡ty b¦d¡ widoczne na ekranie po dowolnej akcji na oknie.
Ostatnio narysowany trójk¡t b¦dzie miaª inny kolor ni» wszystkie poprzednie. Poni»ej przedstawio-
ne s¡ kolejne kroki wykonania tak sformuªowanego zadania. Stan poni»szych zrzutów ekranu ma
by¢ taki, gdy nast¡pi dowolna akcja na oknie. (waga 2)
Start programu
Po pierwszym klikni¦ciu
Po pi¡tym klikni¦ciu
Kolejne kroki:
•
Zbudow¢ JFrame, JPanel, narysow¢ jeden trójk¡t, naªo»y¢ JPanel na JFrame.
•
Zarejestrowa¢ panelu odpowiedniego sªuchacza.
•
Napisa¢ metod¦ wykonywan¡ po rozpoznaniu zdarzenia.
•
Nale»y przetestowa¢ dziaªanie programu w przypadku, gdy w metodzie paint() jest wywoªy-
wana metoda paint z klasy bazowej (super.paint();).
7
7. Napisz program, który dla danej macierzy A o n wierszach i m kolumnach oraz wektor −
→
x ∈ R
m
policzy wektor −
→
y ∈ R
n
przez
−
→
y = A−
→
x
Algorytm mno»enia macierzy nale»y zrealizowa¢ w k w¡tkach (np. n = 100, k = 3). W¡tki na-
le»y zorganizowa¢ przez dziedziczenie z klasy Thread i przez implementacj¦ interfejsu Runnable.
Przetestuj program na niewielkich rozmiarów macierzy. Po otrzymaniu poprawnych rezultatów,
przetestuj zadanie na wi¦kszej macierzy (np: n = 100, m = 200, macierz mo»na wygenerowa¢) i
dla kilku ró»nych warto±ci k. Porównaj czas oblicze« dla testowanej liczby przyjmowanych w¡tków.
(waga 3)
8
8. Napisz program, w którym na JFrame zostanie umieszczony na JPanel oraz 3 komponenty klasy
JButton. Na panelu b¦d¡ spadaªy w wybranej liczbie kulki. Kolory kulek b¦d¡ wybierane losowo.
Pr¦dko±ci spadania kulek b¦d¡ równie» losowe. Miejsca startu kulek b¦d¡ wybierane losowo. Poni»ej
umieszczone s¡ 2 zrzuty ekranu dla jednej kulki w dwóch ró»nych chwilach oraz 2 zrzuty ekranu
w dwóch ró»nych chwilach dla 10 kulek. Przyciski pozwalaj¡ na zatrzymanie spadania kulek, na
wznowienie pracy programu oraz zatrzymanie pracy programu. (waga 3)
Jedna kulka, pierwszy przykªad.
Jedna kulka, drugi przykªad.
Dziesi¦¢ kulek, pierwszy przykªad.
9
Dziesi¦¢ kulek, drugi przykªad.
Spadanie kulek zapisz w w¡tku.
Uzupeªnij program o sterowan¡ przez mysz belk¦ wyªapuj¡c¡ kulki, zliczaj zªapane kulki.
10
9. Napisz aplikacj¦ umo»liwiaj¡c¡ przegl¡danie zdj¦¢. Podstawowe funkcjonalno±ci tej aplikacji to:
wybór zdj¦¢ przez wskazanie pliku, wy±wietlenie zdj¦cia w panelu umo»liwiaj¡cym przewijanie,
skalowanie zdj¦¢, obracanie zdj¦¢ itp. (Waga 3)
Potrzebne elementy:
•
JMenuBar, JMenuItem, ActionListener
•
JScrollPane
•
JFileChooser, showOpenDialog(), APPROVE_OPTION, getSelectedFile(), getSelectedPath()
File
•
BueredImage, ImageIO.read()
•
JPanel, paint(), drawImage(), Image, getScaledInstance()
Kolejne kroki
•
JFrame + JMenuBar + JMenuItem + JFileChooser + JScrollPane
•
Do ka»dego JMenuItem doda¢ ActionListener i oprogramowa¢ zdarzenia.
•
Zaznaczenie pliku wymaga wykorzystania metody showOpenDialog(null), sprawdzenia rezul-
tatu wywoªania tej metody, je±li wynik jest równy staªej APPROVE_OPTION - plik wybrany,
to za pomoc¡ metody getSelectedFile() mo»na otrzyma¢ obiekt klasy File.
•
Obiekt klasy File pozwala na utworzenie obiektu klasy BueredImage przez przeczytanie go
za pomoc¡ metody ImageIO.read(). Utworzony obiekt klasy BueredImage nale»y wyswietli¢
na ekranie za pomoc¡ metody repaint().
•
Jpanel + paint() + drawImage(). Metoda paint() zapisana w klasie JPanel powinna wy±wietli¢
zdj¦cie.
•
Naªo»y¢ JPanel z obrazkiem na JFrame.
•
Metoda getScaledInstance() pozwala na skalownie obiektu klasy Image.
11
10. Rozszerz program wykonuj¡cy podstawowe operacje na tabeli autor (program zawieraj¡cy interjejs
graczny) przedstawiony na wykªadzie o wykonanie podstawowych dziaªa« na tabeli przedmiot.
(Waga 3)