Monika Dekster

Laboratorium 4: Klasy

Zadania:

  1. Napisz klasę Polynomial opisującą wielomian n-tego stopnia.

    Pola klasy to:

    1. int n - stopień wielomianu
    2. double[] coefficients - tablica współczynników wielomianu skonstruowana tak, że coefficients[0] oznacza wyraz wolny, coefficients[1] jest współczynnikiem przy pierwszej potędze x itd.

    Zaimplementuj następujące funkcje składowe klasy:

    1. Konstruktor, przyjmujący jeden parametr typu całkowitego (określający stopień wielomianu) powinien zainicjalizować współczynniki wielomianu wartościami losowymi
    2. String toString()
    3. Polynomial derivative() - zwraca wielomian będący pochodną argumentu
    4. Polynomial add(Polynomial p) - zwraca sumę 2 wielomianów
    5. Polynomial multiply(Polynomial p) - zwraca iloczyn 2 wielomianów

    Funkcja main() tworzy dwa obiekty typu Polynomial, p1 i p2, a następnie drukuje współczynniki wielomianów:

    1. p1(x)
    2. p2(x)
    3. p1'(x)
    4. p2'(x)
    5. p1(x) + p2(x)
    6. p1(x) * p2(x)
  2. Zaimplementuj klasę Student, zawierającą następujące pola:

    1. id (string składający się z dokładnie 6 cyfr bez wiodącego 0
    2. firstName
    3. lastName
    4. faculty
    5. kolekcję par (subject, mark), ocena ma być liczbą całkowitą z przedziału $[2,\, 5]$
    6. averageMark

    Napisz odpowiedni konstruktor, gettery, settery. Konstruktor i settery mają sprawdzać poprawność danych. Zaimplementuj metody:

    1. calculateAverage()
    2. changeMark()
    3. toString()

    Metoda main() powinna stworzyć tablicę kilku studentów (wykorzystując losowe wartości), wypisać ją i przetestować pozostałe metody

  3. Napisz program, który definiuje klasę Vector3D a następnie klasę Tetrahedron (definiującą czworościan o krawędziach danych przez trzy wektory - obiekty składowe klasy Vector3D).

    Klasa Vector3D powinna zawierać:

    1. trzy współrzędne typu double
    2. konstruktor, inicjalizujący te współrzędne
    3. funkcję toString()
    4. funkcję obliczającą iloczyn skalarny dwóch wektorów
    5. funkcję obliczającą iloczyn wektorowy dwóch wektorów

    Iloczyn wektorowy:

    $$\begin{aligned}\mathbf {a\times b} &={\begin{vmatrix}a_{y}&a_{z}\\b_{y}&b_{z}\end{vmatrix}}\mathbf {i} -{\begin{vmatrix}a_{x}&a_{z}\\b_{x}&b_{z}\end{vmatrix}}\mathbf {j} +{\begin{vmatrix}a_{x}&a_{y}\\b_{x}&b_{y}\end{vmatrix}}\mathbf {k} \\&=(a_{y}b_{z}-a_{z}b_{y})\mathbf {i} -(a_{x}b_{z}-a_{z}b_{x})\mathbf {j} +(a_{x}b_{y}-a_{y}b_{x})\mathbf {k} ,\end{aligned}$$ Klasa Tetrahedron powinna zawierać:
    1. trzy wektory definiujące krawędzie typu Vector3D
    2. konstruktor
    3. funkcję obliczającą objętość czworościanu ze wzoru: $V = |(v_1 \times v_2) \cdot v_3| / 6$
    4. funkcję drukującą współrzędne wektorów składowych i objętość czworościanu (wyznaczoną przez funkcję z poprzedniego punktu)