Monika Dekster

Laboratorium 6. Wprowadzenie do obiektowości.

Zadania

  1. Napisz klasę Fraction. Zaimplementuj:
    • konstruktor, który przyjmuje dwa parametry całkowite (licznik i mianownik); konstruktor powinien wypisać komunikat o błędzie w przypadku, gdy mianownik jest zerem
    • Fraction add(Fraction u) - dodawanie ułamków
    • Fraction mult(Fraction u) - mnożenie ułamków
    • void reduce() - skróć ułamek
    • double evaluate() - zwraca wartość ułamka w postaci liczby rzeczywistej
    • void print() - wypisuje ułamek
  2. Utwórz klasę Vector2d, która posiada dwa prywatne pola x i y typu int oraz następujące metody:

    • konstruktor akceptujący parametry x i y, które są przypisywane do pól x i y,
    • gettery umożliwiające odczyt wartości utworzonych atrybutów,
    • String toString(), która zamienia pozycję na napis (x,y), np. dla x = 1 oraz y = 2, napis ma postać (1,2),
    • bool precedes(const Vector2d& other), akceptująca inny obiekt tej klasy i zwracającą wartość true, jeśli oba pola mają wartość mniejszą bądź równą polom drugiego obiektu,
    • bool follows(const Vector2d& other), akceptująca inny obiekt tej klasy i zwracającą wartość true, jeśli oba pola mają wartość większą bądź równą polom drugiego obiektu,
    • Vector2d add(const Vector2d& other), która zwraca nowy obiekt klasy Vector2d, którego składowe są sumą odpowiednich składowych dodawanych pozycji,
    • Vector2d subtract(const Vector2d& other), która zwraca nowy obiekt klasy Vector2d, którego składowe są różnicą odpowiednich składowych odejmowanych pozycji,
    • Vector2d upperRight(const Vector2d& other), która akceptuje inny punkt i zwraca obiekt klasy Vector2d posiadający te składowe punktów, które mają większe wartości dla odpowiednich osi (innymi słowy jest prawym górnym rogiem prostokąta, który opisany jest na obu punktach, którego krawędzie są równoległe do osi X i Y),
    • Vector2d lowerLeft(const Vector2d& other), która akceptuje inny punkt i zwraca obiekt klasy Vector2d posiadający te składowe punktów, które mają mniejsze wartości dla odpowiednich osi (tzn. lewy dolny róg prostokąta),
    • Vector2d opposite(), która zwraca nowy obiekt tej klasy, posiadający zmienione znaki obu składowych,
    • bool equals(const Vector2d& other), która zwraca prawdę, jeśli obie pozycje są sobie równe.

    Sprawdź w funkcji main() czy metody te działają zgodnie z opisem.

  3. Napisz klasę Stack opisującą stos liczb całkowitych. Definicja klasy powinna zawierać implementację następujących funkcji:
    • konstruktor
    • void push(int t) - wstawienie elementu o wartości t na stos
    • int pop() - pobranie elementu ze stosu
    • bool empty() - sprawdź, czy stos jest pusty
    • bool full() - sprawdź, czy stos jest pełny