Obiektowość Javy 1


Zadanie 1
(3p)

Zaprojektować i testować klasę Odcinek (odcinki na płaszczyźnie) zawierającą m. in. następujące metody:

double dlugosc()
: oblicza długość naszego odcinka,
double odleglosc(int x, int y): oblicza odległość od środka naszego odcinka do punktu (x,y),
boolean dluzszy(Odcinek od): sprawdza, czy nasz odcinek jest dłuższy niż odcinek od,
Odcinek rzutX()
, Odcinek rzutY(): zwracają rzuty naszego odcinka na os. X, Y,
public String toString(): wyprowadza informacje o odcinku (przedefiniowanie metody toString() z klasy Object).

Każdy odcinek powinien mieć swój unikalny numer (zaczynając od 1), nadany automatycznie przy tworzeniu.

Zadanie 2 (6p)

Napisać program symulujący operacje na prostych kontach bankowych.
Każde konto (obiekt klasy
Account) ma właściciela (obiekt klasy Person), stan konta, limit debetu. Dostępne są cztery operacje na koncie: wpłata, wypłata, przelew oraz obliczenie stanu konta po dodaniu odsetek, w skali rocznej. Aktualna stopa procentowa - wspólna dla wszystkich kont jest ustalona statycznie w klasie Account.

Stworzyć klasy
Person, Account w taki sposób, aby następujący program:

public class Test {

    public static void main(String[] args)
    {
            Person klient1 = new Person("prg1"), klient2 = new Person("wpr");
            Account  acc1 = new Account(klient1), acc2 = new Account(klient2);

            acc1.setDebit(0);
            acc2.setDebit(-100);
        
            acc1.deposit(500);
            acc2.deposit(900);
         
            acc2.withdraw(300);
            acc1.transfer(acc2, 200);
        
            System.out.println(acc1);
            System.out.println(acc2);
        
            acc2.transfer(acc1, 950);
         
            Account.setInterest(2);
            acc1.addInterest();
            acc2.addInterest();
        
            System.out.println(acc1);
            System.out.println(acc2);
    }
}

wyprowadził na konsolę poniższe wyniki:

prg1, stan konta: 300.0
wpr, stan konta: 800.0
Operacja niedozwolona: przelew!
prg1, stan konta: 306.0
wpr, stan konta: 816.0