Fundamentele programării (XX) - Python

Acesta este ultimul episod al serialului dedicat fundamentelor programării. Ne vom ocupa tot de obiecte, mai exact de obiectul curent.

Am spus că obiectele au funcții; funcțiile pot accesa sau modifica proprietățile obiectului. Există situații în care avem nevoie să folosim obiectul cu totul; câteva dintre ele sunt:

  • dorim să facem distincție între proprietățile obiectului și eventuale variabile sau eventuali parametri cu același nume;
  • dorim să apelăm o funcție (posibil a altui obiect) și care are nevoie de un parametru de tipul obiectului nostru și dorim să folosim ca argument obiectul curent;
  • avem o funcție care returnează un obiect care are tipul respectiv și dorim să returnăm obiectul curent.

În Python putem accesa obiectul curent folosind cuvântul self. E ca și cum am avea o variabilă a cărei valoare este chiar obiectul curent.

Accesarea proprietăților obiectului curent

În episodul anterior am avut următorul constructor pentru obiectul  Scor:

Ar fi interesant să setăm valorile proprietăților fără să folosim cuvântul  self , însă nu se va întâmpla nimic, gazde  și  oaspeti fiind doar simple variabile.

Evident, nu doar în constructori se poate folosi acest  self. Am putea avea o funcție care stabilește valoarea unei proprietăți (o astfel de funcție se numește setter) și am folosi aceeași idee:

Transmiterea obiectului curent ca argument

Să presupunem că avem un obiect care reprezintă tabela de marcaj a unui stadion. Pentru a afișa scorul curent al partidei tabela ne-ar putea pune la dispoziție o funcție care să aibă ca parametru un obiect de tip Scor. O implementare simplă ar putea fi:

Clasa nu are proprietăți, doar o funcție. Nu întâlnim foarte des așa ceva, dar este suficient atât pentru a arăta cum transmitem obiectul curent ca argument.

Acum, în interiorul clasei  Scor trebuie să avem un obiect de tip  Tabela. Poate fi o proprietate sau poate apărea într-o funcție (ca argument sau variabilă locală). Oricum ar fi, dacă la un moment dat avem o variabilă  t , o instanță a clasei  Tabela, scorul curent ar putea fi afișat pe tabelă folosine apelul:

Un exemplu ar fi:

Observăm o referință circulară aici: scorul folosește tabela care folosește scorul. Așa ceva nu este recomandat, deși este corect. Aici am introdus referința pentru a ilustra cât mai simplu transmiterea obiectului curent, dar practica trebuie evitată.

Returnarea obiectului curent

Uneori dorim ca o funcție să returneze obiectul curent: de exemplu, dacă scorul se modifică, am putea dori să returnăm noul scor. Să modificăm puțin funcțiile apelate atunci când se înscriu goluri:

Putem rescrie acum partea de inițializare astfel:

La final

Acesta a fost versiunea Python a serialului dedicat fundamentelor programării. Scopul nu a fost prezentarea limbajului Python, ci doar exemplificarea elementelor de bază folosind acest limbaj. Am încercat să prezentăm elemente comune majorității limbajelor de programare. Vă mulțumim că ne-ați urmărit pe parcursul acestui serial și așteptăm sugestiile voastre pentru a completa informațiile prezentate.