1. Napisz program speªniaj¡cy poni»sze warunki (waga 1)
• Napisz klas¦ reprezentuj¡c¡ wielomian stopnia drugiego.
• Napisz 2 konstruktory.
• Wszystkie pola klasy sªu»¡ce do budowania wielomianu powinny by¢ prywatne i dost¦pne, po zbudowaniu obiektu, pól tych nie mo»na zmienia¢.
• Nadpisz metod¦ toString() tak, by mogªa sªu»y¢ do testowania klasy wielomianu.
• Napisz metod¦ obliczaj¡c¡ miejsca zerowe wielomianu (o ile s¡).
• Napisz metod¦ obliczaj¡c¡ ekstremum (minimum lub maksimum) wielomianu.
• Przetestuj zbudowan¡ klas¦, opisz w komentarzach wszystkie przeprowadzone testy.
• Wyniki dziaªania zbudowanych metod musz¡ by¢ dost¦pne w programach wykorzystuj¡cych t¦ klas¦.
2. Napisz program speªniaj¡cy poni»sze warunki (waga 1)
• Napisz klas¦ reprezentuj¡c¡ wektor (−
→
x ∈ Rn ), 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. 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 metody 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¦.
3
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, powinny by¢ widoczne w wybranym polu rysowania. Skalowanie jest przed-stawione poni»ej. (waga 2)
Skalowanie.
xmax − xmin
b − a
=
xmax − x1
b − x2
(xmax − x1)(b − a)
x2 = b −
xmax − xmin
ymax − ymin
d − c
=
ymax − y1
d − y2
(ymax − y1)(d − c)
y2 = d −
ymax − ymin
5. Wykonaj dwa poni»sze programy (waga 6)
• Przeksztaª¢ przykªad opisuj¡cy geometri¦ wg poni»szych punktów (5)
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.
5
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. Napisz program, który dla danej macierzy A o n wierszach i m kolumnach oraz wektor −
→
x ∈ Rm
policzy wektor −
→
y ∈ Rn 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)
7
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.
8
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.
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.