Cuprins
- Obiectivul temei
- 2. Analiza problemei, modelare, scenarii, cazuri de utilizare
- 3. Proiectare (diagrame UML, structure de date, proiectare clase, interfete, relatii, packages, algoritmi, interfata utilizator)
- 4. Implementare si testare
- 5. Cazuri de testare
- 6. Concluzii, ce s-a invatat din tema, dezvoltari ulterioare
Extras din proiect
1. Obiectivul temei
Enunt: Propuneti, proiectati si implementati un sistem de procesare a polinoamelor de o singura variabila cu coeficienti intregi.
Aceasta tema are ca obiectiv crearea unui calculator de polinoame. La fel ca si calculatorul de buzunar, calculatorul sistemului de operare pe care il folositi sau orice alt tip de calculator existent, acesta trebuie sa implementeze operatii precum, adunarea, scadearea, inmultirea, impartirea a doua polinoame, precum si derivarea unuia, integrarea lui si chiar valoarea unui polinom intr-un punct dat. La fel ca si orice sistem de calcul si acesta are date de intrare si data de iesire date de rezultatul calculelor.
Imi propun sa implementez un calculator cat mai functional, usor de inteles si util pentru orice tip de utilizator.
2. Analiza problemei, modelare, scenarii, cazuri de utilizare
Pentru realizarea acestei teme avem nevoie de cumularea cunostintelor anterioare de java dar si de matematica.
Calculatorul care trebuie implementat trebuie sa aiba coeficienti intregi. Aceasta constrangere ne poate pune problem la operatiile de impartire si integrare. La impartire, pentru calcularea catului avem nevoie sa impartim doi cate doi intregi care de cele mai multe ori ne vor da un numar real. La integrare coeficientul va fi dat de vechiul coeficient care e un numar intreg, si vechea putere care e tot un intreg. La fel ca la impartire este probabil sa obtinem un numar real pentru noul coeficient. Din aceste cauze la cele doua operatii mai sus mentionate putem avea erori deoarece numarul real rezultat va fi “salvat” ca si partea lui intreaga. Pentru celelalte operatii constrangerea nu ne pune nici un fel de problema.
Pentru a se putea implementa problema trebuie sa vedem de ce date avem nevoie, cum vrem sa primim datele de intrare, cum salvam polinoamele, cum le creem o structura in interiorul softului cu care putem sa le manavram usor pentru operatiile cerute, cum efectuam operatiile pentru a utiliza functii cat mai usoare si mai putin spatiu pentru stocare. Trebuie sa vedem avem in considerare sa creem o interfata cat mai practica si usor de folosit.
Pentru a efectua oricare din operatiile dorite, avem nevoie de date precum coeficientul si gradul fiecarui monom din polinom. Pentru aceasta am ales sa folosim introducerea polinoamelor ca si stringuri de tipul(“2x^3-5x^1-3x^0”). Am ales aceasta metoda pentru ca utilizatorul vede exact coeficientul si gradul pentru fiecare monom si pentru ca e metoda clasica de reprezentare a oricarui polinom. Ca data de intrare am ales sa pun si gradul polinomului pentru a aloca spatial maxim necesar fiecarui polinom.
Pentru rezolvarea acestei probleme trebuie sa luam in considerare procesarea polinoamelor(parsarea stringului), modelarea fiecarei operatii si afisarea rezultatului dorit.
3. Proiectare (diagrame UML, structure de date, proiectare clase, interfete, relatii, packages, algoritmi, interfata utilizator)
In realizarea problemei am decis ca am nevoie de 4 clase: Polinom, Operatii, GUI, Test.
In clasa Polinom folosesc un vector in care imi salvez coeficientul pentru fiecare monom.
Folosesc un constructor cu un parametru (int grad), pentru ca sa aloc spatiu maxim necesar fiecarui polinom. De aceea am ales sa introduce gradul polinomului de la tastatura. Nu salvez gradul polinomului deoarece de fiecare daca cand gasesc un coeficent pentru un animit grad, acel coefficient va fi pus pe pozitia gradului in sir. In aceasta clasa am metode de setCoeficient(int exp,int coef) care imi pune pe pozitia exponentului coeficientul gasit, getCoeficient(int exp) care returneaza coeficientul pentru gradul dorit, getGrad() returneaza gradul polinomului.
In clasa Operatii lucram cu Obiecte de tip Polinom. Avem implementate operatiile: aduna(polA, polB), scade(polA, polB), inmulteste(polA, polB), imparte(polA, polB), deriveaza(polA), integreaza(polA), getValue(polA,int x), afiseaza(Polinom A), pune(string c, int d).
Operatiile au de obicei ca parametrii polinomamele cu care se face calculul. Metoda afiseaza are ca parametru polinomul pentru care se doreste afisarea rezultatului. Metoda pune(string c, int d), primeste ca si parametrii stringul polinomului introdus de la tastatura cat si gradul acestuia. In aceasta metoda realiza descompunerea stringului pentru a afla fiecare coefficient si pentru a-l pune pe pozitia gradului intr-un obiect de tip Polinom.
In Clasa GUI ne creem interfata, si transmitem fiecare cerinta a utilizatorului care soft.
Utilizatorului I se prezinta o interfata usor de utilizat si in care isi poate implementa operatiile dorite. Interfata este formata din 5 TextField-uri, 6 butoane pentru fiecare operatie, si cateva JLabel-uri care il ajuta sa introduca date. Rezultatul operatiilor este afisat in un JLabel.
La fiecare operatie am ales sa salvam rezultatul in un nou polinom rezultat pentru a mai putea efectua si alte operatii cu polinoamele de intrare.
Algoritmii folositi la implementarea operatiilor:
a)Pentru operatia de adunare se aloca spatiu Polinomului rezultat, in functie de gradul polinomului de intrare mai mare. Pe pozitiile polinomului rezultat pana la gradul polinomului mai mic efectuam suma intre coeficientii de acelasi grad, iar pe restul pozitiilor copiem in rezultat coeficientii respective.
Preview document
Conținut arhivă zip
- Procesare Polinoame.pdf