Biblioteci și clase pentru situații practice și noțiuni matematice
BIBLIOTECĂ
→
CLASĂ
→
OBIECT
→
MEMBRI
→
VERIFICARE
01
OBIECTIVE
La finalul lecției vei putea...
să explici ce este o clasă predefinită și cum se deosebește de o clasă definită de programator;
să recunoști relația dintre bibliotecă, clasă și obiect;
să creezi și să utilizezi obiecte ale unor clase predefinite din bibliotecile Python;
să utilizezi clasa Fraction pentru fracții exacte;
să utilizezi Decimal pentru valori zecimale controlate și date pentru date calendaristice;
să identifici constructorul, datele și metodele unei clase folosind documentația.
02
EXPLICAȚIE
Biblioteci și clase predefinite
2.1. De ce folosim clase predefinite?
Python și bibliotecile sale conțin clase deja definite pentru multe situații. Nu este necesar să construim de fiecare dată de la zero un model pentru o fracție, o dată calendaristică sau o valoare zecimală.
2.2. Bibliotecă, clasă, obiect
Element
Exemplu
Rol
Bibliotecă/modul
fractions
grupează instrumente pentru fracții
Clasă
Fraction
definește reprezentarea unei fracții
Obiect
Fraction(3,4)
reprezintă o fracție concretă
2.3. Fraction
Clasa Fraction reprezintă numere raționale sub formă de fracții și efectuează operații aritmetice păstrând reprezentarea exactă.
from fractions import Fraction
a = Fraction(3, 4)
b = Fraction(5, 6)
print(a + b)
print(a * b)
print(a.numerator)
print(a.denominator)
numerator și denominator sunt membri ai obiectului. Operatorul punct permite accesarea lor.
2.4. Decimal
Clasa Decimal este utilă când vrem să lucrăm controlat cu valori zecimale.
from decimal import Decimal
a = Decimal("0.1")
b = Decimal("0.2")
print(a + b)
2.5. date
Clasa date din modulul datetime reprezintă o dată calendaristică.
from datetime import date
zi = date(2026, 9, 5)
print(zi.year)
print(zi.month)
print(zi.day)
2.6. Cum alegem clasa?
Pentru fracții exacte folosim Fraction, pentru calcule zecimale controlate Decimal, iar pentru date calendaristice date. Alegerea se face după natura datelor și operațiile necesare.
03
EXEMPLU INTUITIV
Un instrument specializat
CLASĂ
Gândește-te la un calculator de buzunar specializat. Îl folosim fără să reconstruim mecanismul intern.
O clasă predefinită funcționează asemănător: folosim interfața oferită de bibliotecă. Fraction este potrivită pentru valori raționale, Decimal pentru calcule zecimale controlate, iar date pentru date calendaristice.
Activitate
Ce obiect reprezintă Fraction(12, 18) după simplificarea automată?
04
PYTHON
Import, constructor și membri
4.1. Importul unei clase
Instrucțiunea from fractions import Fraction aduce clasa în program.
from fractions import Fraction
f = Fraction(8, 12)
print(f.numerator)
print(f.denominator)
4.2. Compararea obiectelor
from fractions import Fraction
a = Fraction(1, 2)
b = Fraction(2, 4)
print(a == b)
Rezultatul este True, deoarece obiectele reprezintă aceeași valoare matematică.
4.3. Operații cu Fraction
from fractions import Fraction
x = Fraction(2, 3)
y = Fraction(1, 6)
s = x + y
print(s)
print(s.numerator, s.denominator)
4.4. Date calendaristice
from datetime import date
a = date(2026, 9, 5)
b = date(2026, 9, 20)
print(b - a)
print(a < b)
Simulează rezultatul
Pentru Fraction(2,3) + Fraction(1,6), ce se afișează?
05
ALGORITM / PSEUDOCOD
Utilizarea unei clase predefinite
Identifică tipul de date/model necesar.
Alege clasa predefinită potrivită.
Importă clasa din modulul corespunzător.
Construiește obiectele cu datele de intrare.
Aplică operațiile sau metodele disponibile.
Afișează și verifică rezultatele.
citește a, b, c, d
creează x ca fracția a/b
creează y ca fracția c/d
s ← x + y
scrie s
scrie numărătorul și numitorul lui s
Pseudocodul nu reproduce sintaxa importului Python; descrie operațiile de prelucrare și folosirea modelului de date.
06
ATENȚIE!
Erori și confuzii frecvente
Nu confunda modulul cu clasa: fractions este modulul, Fraction este clasa.
Pentru Fraction, numitorul nu poate fi zero.
Alegerea dintre float și Decimal depinde de cerințele problemei.
Pentru Decimal, când precizia zecimală contează, construirea din șir, precum Decimal("0.1"), este preferabilă construirii din float.
Un obiect date reprezintă o dată calendaristică validă; year, month și day sunt membri ai obiectului.
Nu inventa numele metodelor unei clase. Consultă documentația.
07
EXEMPLU REZOLVAT
Calcul exact cu Fraction
Problemă
Se citesc două fracții a/b și c/d, cu numitori nenuli. Folosind clasa Fraction, determinați suma și produsul lor.
Analiză
Construim două obiecte Fraction. Clasa simplifică automat rezultatele, astfel încât nu implementăm manual reducerea fracțiilor.
Algoritm/pseudocod
citește a, b, c, d
x ← Fraction(a, b)
y ← Fraction(c, d)
s ← x + y
p ← x * y
scrie s
scrie p
Python
from fractions import Fraction
a = int(input("a = "))
b = int(input("b = "))
c = int(input("c = "))
d = int(input("d = "))
x = Fraction(a, b)
y = Fraction(c, d)
s = x + y
p = x * y
print("Suma:", s)
print("Produs:", p)
Urmărirea variabilelor
Pas
x
y
s
p
inițializare
3/4
5/6
—
—
suma
3/4
5/6
19/12
—
produs
3/4
5/6
19/12
5/8
Testare
Caz
Date
Rezultat așteptat
normal
3/4 și 5/6
suma 19/12; produs 5/8
simplificare
2/4 și 1/4
suma 3/4; produs 1/8
numărător zero
0/5 și 2/3
suma 2/3; produs 0
Verificare
Pentru 3/4 + 5/6, numitorul comun este 12: 9/12 + 10/12 = 19/12. Pentru produs: 15/24 = 5/8. Rezultatele coincid cu cele obținute prin Fraction.
08
EXERCIȚII DE BAZĂ
Folosește clasele potrivite
Folosește Fraction pentru a reprezenta 12/18 și afișează forma simplificată, numărătorul și numitorul.
Construiește două obiecte Fraction pentru 7/8 și 1/4 și afișează suma, diferența și produsul.
Folosește Decimal pentru 12.50 + 3.75 - 1.20.
Creează două obiecte date și verifică care dată este mai recentă.
Calculează cu Fraction valoarea expresiei 1/2 + 2/3 - 1/6.
Folosește Fraction pentru expresia 3/4 + 5/6 - 1/3 și verifică rezultatul manual.
Creează data de 1 ianuarie 2027 și afișează separat anul, luna și ziua.
09
EXERCIȚII DE APROFUNDARE
Justifică alegerea clasei
Compară două fracții construite în forme diferite, dar echivalente.
Construiește două date și determină care este mai recentă. Testează și cazul datelor egale.
Realizează un program care calculează o expresie cu cel puțin patru fracții și verifică independent rezultatul.
Explică de ce este mai potrivită o clasă predefinită atunci când toate operațiile necesare sunt deja oferite.
Determină fracția maximă și suma a trei fracții folosind Fraction.
Citește două date calendaristice și determină numărul de zile dintre ele. Testează și ordinea inversă.
Realizează un calculator pentru două valori Decimal; tratează separat împărțirea la zero.
Afișează primele n fracții de forma k/(k+1), pentru k=1,...,n, folosind Fraction.
10
VERIFICARE
Verifică ce ai înțeles
Item algoritmic
Pentru expresia 1/2 + 2/3 - 1/6, descrie pașii de construire a obiectelor, operațiile efectuate și verificarea manuală a rezultatului.
11
MINI-PROIECT
Planificator de activități și calcule
MISIUNE
Combină două clase predefinite
Realizează un program care lucrează cu activități planificate. Pentru fiecare activitate memorează o dată și o durată exprimată ca fracție de oră. Folosește date pentru calendar și Fraction pentru durata exactă.
Creează cel puțin cinci activități cu date diferite.
Reprezintă fiecare durată prin Fraction.
Afișează activitatea cu cea mai mare durată.
Calculează durata totală.
Compară două date.
Testează durata zero, durate egale și activități în aceeași zi.
Criterii
Alegerea claselor25%
Obiecte și membri25%
Cod și claritate25%
Testare și verificare25%
Ai terminat lecția?
Marchează lecția numai după ce poți explica diferența dintre modul, clasă și obiect și poți justifica alegerea unei clase predefinite.