Am văzut că putem avea mai multe valori grupate în șiruri, fiecare fiind identificată prin poziția sa în șir. În Swift, elementele șirurilor trebuie să aibă același tip.
Dar, poate dorim să grupăm valori de tipuri diferite și/sau să nu știm exact pe ce poziție am pus o anumită valoare. Sunt cazuri în care este logic ca anumite valori să fie împreună. De exemplu, am putea avea o persoană pentru care dorim să știm numele și vârsta; numele ar fi un string, iar vârsta un număr întreg. Am putea lucra cu două variabile, dar nu ar exista nicio legătură clară între ele.
Dacă am complica puțin problema și am dori să creăm un șir de persoane, atunci am avea un șir de nume și un șir de vârste. Ar trebui să avem grijă ca, în cele două șiruri, numărul de ordine să fie același pentru o anumită persoană. Totuși, ar fi mult mai simplu să avem un șir de persoane, nu?
În Swift putem crea așa-numitele obiecte; un obiect poate avea diferite proprietăți. În cazul nostru am avea un obiect care reprezintă o persoană și obiectul respectiv ar avea două proprietăți: numele și vârsta.
Pentru a putea utiliza astfel de obiecte, în Swift trebuie mai întâi să definim structura lor. Practic, trebuie să spunem că persoanele au nume și vârstă. Este un fel de șablon care ne spune ce conțin obiectele noastre; acest șablon se numește clasă. Clasele ajung să fie foarte complicate și au multe utilizări, dar deocamdată ne limităm la elementele de bază.
Pentru a defini o clasă va trebui să precizăm numele său, precum și tipul și numele proprietăților obiectelor care fac parte din clasa respectivă. Clasa noastră ar fi definită astfel:
1 2 3 4 |
class Persoana { var nume : String = "" var varsta : Int = 0 } |
Observați că am folosit cuvântul class urmat numele clasei și apoi, între acolade, am specificat tipurile și numele proprietăților, separate prin semnul ;, precum și niște valori (numite valori implicite sau inițiale). Proprietățile sunt declarate la fel ca variabilele; diferența față de variabilele obișnuite este faptul că ele nu există independent, ci doar în interiorul obiectelor. În Swift, este obligatoriu ca proprietățile să aibă, într-un fel sau altul, valori.
Dacă am definit clasa, putem crea acum obiecte. Pentru fiecare obiect vom avea o variabilă care va fi utilizată pentru a lucra cu obiectul respectiv. Tipul acestei variabile este chiar numele clasei. Un exemplu pentru declararea unei astfel de variabile este:
1 |
var elev : Persoana |
Acum trebuie să dăm o valoare variabilei respective; îi putem atribui un obiect existent sau putem va trebui să creăm un nou obiect. Deocamdată nu avem niciun obiect, deci vom crea unul. Acest lucru se realizează folosind numele clasei și o pereche de paranteze rotunde (vom vedea în episoadele următoare care este rolul parantezelor respective):
1 |
elev = Persoana() |
Putem folosi și variante prescurtată (inițializarea obiectului împreună cu declararea sa):
1 |
var elev = Persoana() |
Acum avem un obiect elev care reprezintă o persoană, dar nu am precizat încă numele și vârsta sa. Trebuie să accesăm cumva proprietățile respective. Pentru aceasta va trebui să precizăm numele obiectului (nu al clasei), urmat de semnul . și apoi de numele proprietății. Dacă dorim să spunem că Dragoș are 17 ani, putem folosi următoarele instrucțiuni:
1 2 |
elev.nume = "Dragoș" elev.varsta = 17 |
Pentru a folosi informațiile respective, le putem accesa folosind aceeași construcție:
1 2 |
println(elev.nume); println(elev.varsta); |
Să vedem cum ar arăta un program complet:
1 2 3 4 5 6 7 8 9 10 11 12 |
class Persoana { var nume : String = "" var varsta : Int = 0 } var elev = Persoana() elev.nume = "Dragoș" elev.varsta = 17 print(elev.nume) print(elev.varsta) |