1. Se va elabora programul clasei Complex, respectand urmatoarea specificatie:
Conceptual orice instanta a clasei Complex este un numar complex z=a+bi in care a si b sunt numere reale, care reprezinta respectiv partea reala si partea imaginara a numarului complex z. Numarul complex se caracterizeaza, de asemenea, prin modulul sau |z|=sqrt(a*a+b*b) si prin argumentul arg(z)=arctg(b/a). Asupra numerelor complexe se pot aplica operatiile de adunare, scadere, inmultire, impartire.
Campuri:
private double re - partea reala a numarului
complex;
private double im - partea imaginara a
numarului complex;
Constructori:
public Complex() - se creeaza un nou numar
complex cu partea reala si cea imaginara egale cu zero;
public Complex(double a) - se creeaza un
numar complex cu partea reala a si partea imaginara 0;
public Complex(double re, double im) - creeaza
un nou numar complex, fiind date partea reala re si partea imaginara
im.
Metode publice:
public double real() - intoarce partea
reala a numarului complex;
public double imag() - intoarce partea
imaginara a numarului complex;
public double modul() - intoarce
modulul numarului complex;
public double arg() - intoarce argumentul
numarului complex;
public Complex plus(Complex z) - intoarce
suma dintre acest numar complex si parametrul z;
public Complex minus(Complex z) - intoarce
diferenta dintre acest numar complex si parametrul z;
public Complex inmultitCu(Complex z) - intoarce
produsul dintre acest numar complex si parametrul z;
public Complex impartitLa(Complex z) - intoarce
catul impartirii acestui numar complex la parametrul z;
public Complex laPuterea(int n) - intoarce
acest numar complex ridicat la puterea intreaga n;
public String toString() - intoarce un
sir de caractere care contine acest numar complex pus sub forma (re+im*i)
in care re si im sunt valorile numerice ale partii reale
si partii imaginare a numarului complex;
public static Complex complexValue(double mod,
double arg) - intoarce un numar complex care are modulul mod
si argumentul arg;
public static Complex complexValue(String str)
throws Exception - primeste ca argument un sir str care contine
un numar complex sub forma (re+im*i), unde re si im
sunt numere reale, verifica daca este corect sintactic si intoarce numarul
complex corespunzator; daca sirul dat nu este corect, se genereaza o exceptie
de eroare de sintaxa.
Clasa Complex va implementa interfata Serializable.
2. Se va elabora un program simplu de testare a clasei Complex
(fara interfata grafica) in care se vor testa atat toate metodele acestei
clase, cat si situatiile in care:
- intr-o operatie binara, primul operand este complex,
iar al doilea este real;
- intr-o operatie binara, primul operand este real,
iar al doilea este complex;
- se calculeaza o expresie mai complicata, de exemplu,
daca a, b si c sunt numere complexe, se calculeaza 2*(a+b)*c-a/c;
- se salveaza intr-un fisier mai multe numere complexe,
apoi se citesc din fisier si se afiseaza (se vor folosi clasele ObjectOutputStream
si ObjectInputStream).
3. Se va elabora un program cu interfata grafica de testare a clasei Complex, in care interfata permite atat introducerea operanzilor si alegerea operatiei, cat si vizualizarea rezultatului
4. Se va scrie programul clasei Fractie, respectand urmatoarea specificatie:
Conceptual orice instanta a clasei Fractie este o fractie ordinara ireductibila, in care numaratorul si numitorul sunt numere de tip long, iar numitorul este pozitiv. Asupra fractiilor se pot aplica operatiile aritmetice de adunare, scadere, inmultire si impartire.
Clasa implementeaza interfata Comparable, deci instantele ei pot fi comparate dupa valoare.
Campuri:
private long numarator, numitor;
Constructori:
public Fractie() - construieste o fractie
cu valoarea 0/1;
public Fractie(long valoare) - construieste
fractia valoare/1;
public Fractie(long n1, long n2) - construieste
o fractie, a carei valoare este egala cu n1/n2, dar este ireductibila;
daca n2 este nul, este generata o exceptie.
Metode:
public static long cmmdc(long n1, long n2) -
intoarce cel mai mare divizor comun al numerelor n1 si n2 (se foloseste
algoritmul lui Euclid);
public double valoare() - intoarce valoarea
fractiei, convertita in double;
public long numarator() - intoarce numaratorul;
public long numitor() - intoarce numitorul;
public Fractie plus(Fractie f) - intoarce
suma dintre aceasta fractie si fractia f;
public Fractie minus(Fractie f) - intoarce
diferenta dintre aceasta fractie si fractia f;
public Fractie ori(Fractie f) - intoarce
produsul dintre aceasta fractie si fractia f;
public Fractie supra(Fractie f) - intoarce
raportul dintre aceasta fractie si fractia f;
public int compareTo(Object obj) - implementarea
metodei cu acelasi nume a interfetei Comparable;
public boolean equals(Fractie f) - verifica
daca aceasta fractie este identica cu fractia f;
public String toString() - intoarce fractia
convertita intr-un sir de caractere, sub forma (numarator/numitor),
unde numarator si numitor sunt valorile numerice corespunzatoare.
Clasa Fractie va implementa interfata Serializable.
5. Se va elabora o aplicatie cu interfata grafica pentru testarea clasei Fractie.
6. Se va scrie si se va testa programul pentru clasa Persoana, respectand urmatoarele specificatii:
Conceptual, instantele clasei persoana contin datele generale referitoare la o persoana oarecare.
Campuri:
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() - intoarce numele;
public String prenume() - intoarce prenumele;
public String codNumeric() - intoarce codul
numeric;
public char sex() - intoarce sexul;
public int anNastere() - intoarce anul
nasterii.
Clasa persoana va implementa interfata Serializable.
6. Se va scrie un program in care se vor stoca intr-un fisier mai multe instante ale clasei Persoana, apoi se vor citi din fisier si se vor afisa. Se vor folosi clasele ObjectOutputStream si ObjectInputStream.
7. Se va elabora o aplicatie (preferabil cu interfata grafica), in care se ordoneaza prin diferite metode un tablou de numere reale, apoi se cauta diferite valori in tabloul ordonat.
8. Se va elabora o aplicatie (preferabil cu interfata grafica), in care se ordoneaza prin diferite metode un tablou de numere complexe, apoi se cauta diferite valori in tabloul ordonat;
9. Se va elabora o aplicatie (preferabil cu interfata grafica) in care se ordoneaza un tablou de fractii si apoi se cauta diferite valori in tabloul ordonat.