Python clasa a 9-a · Manual Python
Laborator Python
LECȚIE · CAPITOLUL 4

4.2. Utilizarea claselor predefinite

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

ElementExempluRol
Bibliotecă/modulfractionsgrupează instrumente pentru fracții
ClasăFractiondefinește reprezentarea unei fracții
ObiectFraction(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

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

  1. Identifică tipul de date/model necesar.
  2. Alege clasa predefinită potrivită.
  3. Importă clasa din modulul corespunzător.
  4. Construiește obiectele cu datele de intrare.
  5. Aplică operațiile sau metodele disponibile.
  6. 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

Pasxysp
inițializare3/45/6——
suma3/45/619/12—
produs3/45/619/125/8

Testare

CazDateRezultat așteptat
normal3/4 și 5/6suma 19/12; produs 5/8
simplificare2/4 și 1/4suma 3/4; produs 1/8
numărător zero0/5 și 2/3suma 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

  1. Folosește Fraction pentru a reprezenta 12/18 și afișează forma simplificată, numărătorul și numitorul.
  2. Construiește două obiecte Fraction pentru 7/8 și 1/4 și afișează suma, diferența și produsul.
  3. Folosește Decimal pentru 12.50 + 3.75 - 1.20.
  4. Creează două obiecte date și verifică care dată este mai recentă.
  5. Calculează cu Fraction valoarea expresiei 1/2 + 2/3 - 1/6.
  6. Folosește Fraction pentru expresia 3/4 + 5/6 - 1/3 și verifică rezultatul manual.
  7. Creează data de 1 ianuarie 2027 și afișează separat anul, luna și ziua.
09
EXERCIȚII DE APROFUNDARE

Justifică alegerea clasei

  1. Compară două fracții construite în forme diferite, dar echivalente.
  2. Construiește două date și determină care este mai recentă. Testează și cazul datelor egale.
  3. Realizează un program care calculează o expresie cu cel puțin patru fracții și verifică independent rezultatul.
  4. Explică de ce este mai potrivită o clasă predefinită atunci când toate operațiile necesare sunt deja oferite.
  5. Determină fracția maximă și suma a trei fracții folosind Fraction.
  6. Citește două date calendaristice și determină numărul de zile dintre ele. Testează și ordinea inversă.
  7. Realizează un calculator pentru două valori Decimal; tratează separat împărțirea la zero.
  8. 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ă.

  1. Creează cel puțin cinci activități cu date diferite.
  2. Reprezintă fiecare durată prin Fraction.
  3. Afișează activitatea cu cea mai mare durată.
  4. Calculează durata totală.
  5. Compară două date.
  6. 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.