1. Se va elabora programul clasei Complex, respectând urmatoarea specificație:
Conceptual orice instanță a clasei Complex este un număr complex z=a+bi în care a și b sunt numere reale, care reprezintă respectiv partea reală și partea imaginară a numărului complex z. Numărul complex se caracterizează, de asemenea, prin modulul său |z|=sqrt(a*a+b*b) și prin argumentul arg(z)=arctg(b/a). Asupra numerelor complexe se pot aplica operațiile de adunare, scădere, înmulțire, împărțire.
Campuri:
private double re - partea reală a numărului complex;
private double im - partea imaginară a numărului complex;
Constructori:
public Complex() - se creează un nou număr complex cu
partea reală și cea imaginară egale cu zero;
public Complex(double a) - se creează un număr complex cu
partea reală a și partea imaginară 0;
public Complex(double re, double im) - creează un nou
număr complex, fiind date partea reală re și partea imaginară im.
Metode publice:
public double real() - întoarce partea reală a numărului
complex;
public double imag() - întoarce partea imaginară a
numărului complex;
public double modul() - întoarce modulul numărului
complex;
public double arg() - întoarce argumentul numărului
complex;
public Complex plus(Complex z) - întoarce suma dintre
acest număr complex și parametrul z;
public Complex minus(Complex z) - întoarce diferenta
dintre acest număr complex și parametrul z;
public Complex inmultitCu(Complex z) - întoarce produsul
dintre acest număr complex și parametrul z;
public Complex impartitLa(Complex z) - întoarce câtul
împărțirii acestui număr complex la parametrul z;
public Complex laPuterea(int n) - întoarce acest număr
complex ridicat la puterea întreagă n;
public String toString() - întoarce un șir de caractere
care conține acest număr complex pus sub forma (re+im*i)
în care re si im sunt valorile numerice ale părții reale
și părții imaginare a numărului complex;
public static Complex complexValue(double mod, double arg) - întoarce
un număr complex care are modulul mod si argumentul arg;
public static Complex complexValue(String str) throws Exception
- primește ca argument un șir str care conține un număr
complex sub forma (re+im*i), unde re si im
sunt numere reale, verifică dacă este corect sintactic și întoarce
numărul complex corespunzător; dacă șirul dat nu este corect, se
generează o excepție de eroare de sintaxă.
Clasa Complex va implementa interfața Serializable.
2. Se va elabora un program simplu de testare a clasei
Complex (fără interfață grafică) în care se vor testa atât toate
metodele acestei clase, cât și situațiile în care:
- într-o operație binară, primul operand este complex, iar al
doilea este real;
- într-o operatie binară, primul operand este real, iar al doilea
este complex;
- se calculează o expresie mai complicată, de exemplu, dacă a, b si
c sunt numere complexe, se calculează 2*(a+b)*c-a/c;
- se salvează într-un fișier mai multe numere complexe, apoi se
citesc din fișier și se afisează (se vor folosi clasele
ObjectOutputStream si ObjectInputStream).
3. Se va elabora un program cu interfața grafică de testare a clasei Complex, în care interfața permite atât introducerea operanzilor și alegerea operației, cât și vizualizarea rezultatului
4. Se va scrie programul clasei Fractie, respectând urmatoarea specificație:
Conceptual orice instantă a clasei Fractie este o fracție ordinară ireductibilă, în care numărătorul și numitorul sunt numere de tip long, iar numitorul este pozitiv. Asupra fracțiilor se pot aplica operațiile aritmetice de adunare, scădere, înmulțire și împărțire.
Clasa implementează interfața Comparable, deci instanțele ei pot fi comparate după valoare. Se implementează, de asemenea, interfața Serializable.
Câmpuri:
private long numarator, numitor;
Constructori:
public Fractie() - construiește o fracție cu valoarea 0/1;
public Fractie(long valoare) - construiește fracția valoare/1;
public Fractie(long n1, long n2) - construiește o
fracție, a carei valoare este egala cu n1/n2, dar este
ireductibilă; dacă n2 este nul, este generată o exceptie.
Metode:
public static long cmmdc(long n1, long n2) - întoarce cel
mai mare divizor comun al numerelor n1 si n2 (se foloseste algoritmul
lui Euclid);
public double valoare() - întoarce valoarea fracției,
convertită în double;
public long numarator() - întoarce numărătorul;
public long numitor() - întoarce numitorul;
public Fractie plus(Fractie f) - întoarce suma dintre
această fracție și fracția f;
public Fractie minus(Fractie f) - întoarce diferența
dintre această fracție și fracția f;
public Fractie ori(Fractie f) - întoarce produsul dintre
această fracție și fracția f;
public Fractie supra(Fractie f) - întoarce raportul
dintre această fracție și fracția f;
public int compareTo(Object obj) - implementarea metodei
cu același nume a interfeței Comparable;
public boolean equals(Fractie f) - verifică dacă această
fracție este identică cu fracția f;
public String toString() - întoarce fracția convertita
într-un șir de caractere, sub forma (numarator/numitor), unde numarator
și numitor sunt valorile numerice corespunzătoare.
5. Se va elabora o aplicație cu interfață grafică pentru testarea clasei Fracție.
6. Se va scrie și se va testa programul pentru clasa Persoana, respectând urmatoarele specificații:
Conceptual, instantele clasei Persoana conțin datele generale referitoare la o persoană oarecare.
Câmpuri:
private String nume, prenume, cod_numeric;
private char sex;
private int an_nastere;
Constructor:
public Persoana(String nume, String prenume, char sex, int
an_nastere, String cod_numeric)
Metode:
public String nume() - întoarce numele;
public String prenume() - întoarce prenumele;
public String codNumeric() - întoarce codul numeric;
public char sex() - întoarce sexul;
public int anNastere() - întoarce anul nașterii.
Clasa Persoana va implementa interfața Serializable.
6. Se va scrie un program în care se vor stoca într-un fișier mai multe instanțe ale clasei Persoana, apoi se vor citi din fișier și se vor afișa. Se vor folosi clasele ObjectOutputStream și ObjectInputStream.
7. Se va elabora o aplicație (preferabil cu interfață grafică), în care se ordonează prin diferite metode un tablou de numere reale, apoi se caută diferite valori in tabloul ordonat.
8. Se va elabora o aplicație (preferabil cu interfață grafică), în care se ordonează prin diferite metode un tablou de numere complexe, apoi se caută diferite valori în tabloul ordonat;
9. Se va elabora o aplicație (preferabil cu interfață grafică) în care se ordonează un tablou de fracții și apoi se caută diferite valori în tabloul ordonat.