• Nie Znaleziono Wyników

- usuwa z listy element o wskazanym indeksie k

N/A
N/A
Protected

Academic year: 2021

Share "- usuwa z listy element o wskazanym indeksie k "

Copied!
2
0
0

Pełen tekst

(1)

Laboratorium z informatyki sem. II/ ćw. 12 Wydział Transportu PW - 2020/21

Materiały do użytku wewnętrznego strona 1

MATERIAŁY POMOCNICZE DO ĆWICZENIA 12

Klasa

ArrayList z pakietu java.util- zastosowanie w ćwiczeniu

Klasa ArrayList umożliwia tworzenie struktur danych w postaci tablicy o dynamicznie zmieniających się rozmiarach.

Obiekt klasy ArrayList może przechowywać obiekty dowolnego typu a jego rozmiar zmienia się automatycznie przy wywoływaniu metod dodawania i usuwania elementów z tablicy.

Aby zadeklarować i utworzyć nowy obiekt klasy ArrayList o nazwie LK, zastosowaliśmy konstrukcję:

List <KULA> LK = new ArrayList < > ();

Zapis <KULA> oznacza, że elementami listy będą obiekty klasy KULA

W programie wykorzystaliśmy następujące podstawowe metody klasy ArrayList:

ArrayList() – konstruktor klasy,

tworzy pustą listę

add( e ) – dołącza obiekt e jako nowy element na koniec listy

clear() - usuwa z listy wszystkie jej elementy Klasa udostępnia też inne metody, na przykład:

remove( e )

- usuwa z listy pierwsze wystąpienie podanego obiektu e

remove( k )

- usuwa z listy element o wskazanym indeksie k

size()

- zwraca rozmiar listy, odpowiednik własności

length

w przypadku tablic

get( k )

– zwraca element o wskazanym indeksie k

Klasa ArrayList jest implementacją interfejsu List, który wchodzi w skład architektury Java Collections Framework., Jest ona przykładem tzw. kolekcji (kontenera), czyli obiektu przechowującego grupę obiektów (elementów kolekcji) o określonej strukturze i udostępniającego operacje na tej strukturze, takie jak dodawanie i usuwanie elementów, pobieranie elementów, sortowanie itp.

Rozszerzona instrukcja pętli for

Jeśli chcemy wykonać jakieś operacje dla każdego elementu tablicy lub kolekcji, można zbudować pętlę

wykorzystując instrukcję for w rozszerzonej postaci (enhanced for lub for-each). Dla zbioru elementów tego samego typu można do przeglądania elementów zastosować pętlę:

for ( typ zmienna : nazwa_zbioru) {

// instrukcje wykonywane dla każdego elementu zbiorui }

Instrukcje pętli są wykonywane dla kolejnych wartości zmiennej, pobieranych ze zbioru wartości (tablicy lub kolekcji).

W naszym programie zastosowaliśmy tę zwięzłą postać instrukcji for aby narysować wszystkie obiekty klasy Kula

zapisane na liście ArrayList o nazwie LK:

for(Kula K : LK){

K.rysuj(g); }

Równanie ruchu wahadła

Ruch wahadła matematycznego w próżni dla małych wychyleń (<30 ) jest opisany równaniem : gdzie  - kąt odchylenia od położenia równowagi,

d- długość wahadła g- przyspieszenieziemskie

0wychylenie początkowe t - czas

Położenie (x, y) środka ciężarka zawieszonego w punkcie (x0, y0), obliczamy za pomocą wzorów:

x = x0 + d * sin() y = y0 + d * cos()

Wybrane funkcje matematyczne klasy Math

Do symulacji ruchu wahadła można wykorzystać metody klasy Math, zwracające wartości typu double:

sqrt(double x) pierwiastek kwadratowy z liczby x

sin(double x ), cos(double x ) –funkcje trygonometryczne, parametr x jest wartością kąta w radianach

atan2(double y, double x)

funkcja zamienia współrzędne kartezjańskie(x, y)

n

a współrzędne biegunowe (tzn. kąt i promień) i zwraca kąt (w radianach)

W klasie Math jest też dostępna wartość stałej matematycznej

:

Math.PI

( )

 

= 

t

d t

0

cos

g

(2)

Laboratorium z informatyki sem. II/ ćw. 12 Wydział Transportu PW - 2020/21

Materiały do użytku wewnętrznego strona 2

Konwersja typów liczbowych

W przypadku gdy zmiennej typu double przypisujemy wartość całkowitą, zamiana tej wartości całkowitej na typ rzeczywisty jest dokonywana automatycznie. W przypadku przeciwnym, gdy zmiennej typu całkowitego chcemy przypisać wartość wyrażenia, która jest liczbą rzeczywistą, konieczna jest jawna konwersja typu. Operacja ta wymaga umieszczenia przed wyrażeniem nazwy typu docelowego w nawiasach okrągłych. Na przykład, aby obliczyć całkowitą wartość współrzędnej x (w pikselach) zastosowaliśmy instrukcję:

int x = x0 + (int)(d*Math.sin(alfa));

W wyniku tej konwersji zawsze jest obcinana część dziesiętna liczby rzeczywistej. Jeśli wartość rzeczywista ma być zaokrąglona do najbliższej liczby całkowitej, można oprócz konwersji zastosować metodę round() klasy Math:

int x = x0 + (int)Math.round((d*Math.sin(alfa)));

Interfejs KeyListener i klasa KeyEvent

Do obsługi klawiatury wykorzystujemy interfejs KeyListener, który zawiera metody obsługujące zdarzenia

wciśnięcia/zwolnienia klwiszy.. Interfejs KeyListener zawiera trzy metody i podobnie jak interfejs MouseListener należy do pakietu Javy java.awt.event oraz dziedziczy od zdefiniowanego w pakiecie java.util (pustego) interfejsu

EventListener.

public interface KeyListener extends EventListener { public void keyPressed(KeyEvent e); //wciśnięcie klawisza public void keyTyped(KeyEvent e); //wpisanie znaku public void keyReleased(KeyEvent e); //zwolnienie klawisza }

Parametrem każdej z powyższych metod jest obiekt klasy KeyEvent, reprezentujący zdarzenie związane z użyciem klawiatury.

Klasa KeyEvent udostępnia m.in. metody:

int getKeyCode() - metoda zwracająca kod naciśniętego klawisza

char getKeyChar()- metoda zwracająca znak związany z klawiszem Klasa KeyEvent dziedziczy też metody klasy InputEvent, są to m.in.:

boolean isControlDown()- metoda zwracająca wartość true, gdy wciśnięty jest klawisz <Ctrl>, w przeciwnym przypadku metoda zwraca wartość false.

analogicznie metody isAltDown() i isShiftDown()dotyczą klawiszy <Alt> i <Shift>

Do określenia kodu klawisza można wykorzystać stałe zdefiniowane w klasie, tzw.klawisze wirtualne, są to np:

VK_A – klawisz A, ... VK_Z – klawisz Z, VK_0 – klawisz 0, ... VK_9 – klawisz 9,

VK_ALT – klawisz Alt, VK_BACK_SPACE – klawisz Backspace,

VK_SPACE – klawisz spacji, VK_ENTER – klawisz Enter,

VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN – klawisze strzałek

Aby wykorzystać w klasie interfejs KeyListener należy:

• dopisać w nagłówku klasy słowa: implements KeyListener

• zaimportować ten interfejs

• zaimplementować wszystkie jego abstrakcyjne metody, usunąć w ich treściach instrukcje throw ...

• w konstruktorze tej klasy dopisać instrukcje umożliwiające obsługę i nasłuch zdarzeń klawiatury:

setFocusable(true);

addKeyListener(this);

Menedżer układu graficznego, metoda setLayout

Dla kontenera wewnątrz którego będą umieszczane inne komponenty (takiego jak ramka lub panel) można określić układ, od którego zależy wygląd i rozmieszczenie komponentów w pojemniku.

Metoda setLayout określa menedżer układu dla pojemnika.

Java udostępnia szereg menedżerów układu, zarządzających rozmieszczeniem komponentów w kontenerach. Są to m.in.

BorderLayout – dzieli obszar pojemnika na 4 regiony brzegowe i 1 centralny; w każdym umieszcza jeden komponent,

GridLayout – dzieli obszar pojemnika na dwuwymiarową siatkę do której dodawane są kolejne komponenty.

FlowLayout – dodaje komponenty od lewej do prawej, przenosząc w razie potrzeby do nowego „wiersza”,

BoxLayoutdodaje komponenty do pojemnika, umieszczając po jednym w „wierszu”.

Jeśli chcemy samodzielnie rozmieścić komponenty w kontenerze i zmieniać dowolnie ich rozmiary, można odłączyć menedżer układu za pomocą metody setLayout(null).

Cytaty

Powiązane dokumenty

Autor sylwetki zdaje się mówić czytelnikowi: skoro straciłem kogoś tak niezwykłego, chcę go wspominać w nietypowy sposób, chcę, aby for- ma portretu była

sprawozdania zarządu z działalności Spółki oraz sprawozdania finansowego Spółki - za rok obrotowy, którego Wynagrodzenie Zmienne dotyczy oraz udzieleniu

W przypadku zbiegu prawa do zasiłku rodzinnego z prawem do walutowego dodatku rodzinnego przysługującego pracownikom polskich placówek dyplomatycznych i urzędów

Strony umowy ustalają, iż poza innymi przypadkami wynikającymi z przepisów Kodeksu cywilnego, Odbiorca ma prawo do odstąpienia od niniejszej umowy w

W pracy porównano wyniki rekonstrukcji drzew genealogicznych uzyskane dwiema metodami: największej oszczędności oraz największej wiarygodności, przy dodatkowym

 wyznacza wzór funkcji liniowej, której wykres przechodzi przez dany punkt i jest równoległy do wykresu danej funkcji liniowej.  wyznacza wzór funkcji liniowej, której

o spółdzielczych kasach oszczędnościowo-kredytowych (t.j. W zbiorczej informacji wskazuje się podmiot, który prowadzi albo prowadził rachunek, numery rachunków

się w synagodze w Kafarnaum. Słuchacze od samego początku zauważają różnice w nauczaniu Jezusa: uczył ich bowiem jak ten, który ma władzę, a nie jak uczeni w Piśmie,