1. Learn
  2. /
  3. Cursuri
  4. /
  5. Programare orientată pe obiecte în Python

Connected

Exercițiu

Scrie o clasă de la zero

Ești un dezvoltator Python care lucrează la un pachet de vizualizare. Pentru orice element dintr-o vizualizare, vrei să poți determina poziția elementului, distanța față de alte elemente și să aplici cu ușurință o oglindire orizontală sau verticală.

Cel mai simplu element al oricărei vizualizări este un punct. În acest exercițiu, vei scrie de la zero o clasă pentru un punct în plan.

Instrucțiuni

100 XP

Definește clasa Point care să aibă:

  • Două atribute, x și y – coordonatele punctului în plan;
  • Un constructor care acceptă două argumente, x și y, ce inițializează atributele corespunzătoare. Aceste argumente trebuie să aibă valoarea implicită 0.0;
  • O metodă distance_to_origin() care returnează distanța de la punct la origine. Formula este \(\sqrt{x^2 + y^2}\).
  • O metodă reflect(), care oglindește punctul față de axa x sau y:
    • acceptă un argument axis,
    • dacă axis="x", setează atributul y (nu este o greșeală de scriere!) la valoarea negativă a atributului y,
    • dacă axis="y", setează atributul x la valoarea negativă a atributului x,
    • pentru orice altă valoare a lui axis, afișează un mesaj de eroare. Reflection of a point with respect to y and x axes

Notă: Poți folosi funcția sqrt() din pachetul numpy sau math, dar indiferent de pachetul ales, nu uita să-l imporți înainte de a începe definiția clasei!


Pentru a-ți verifica soluția, ar trebui să poți rula următorul cod fără erori:

pt = Point(x=3.0)
pt.reflect("y")
print((pt.x, pt.y))
pt.y = 4.0
print(pt.distance_to_origin())

și să obții rezultatul

(-3.0,0.0)
5.0