PHP – Klase i objekti

Klase predstavljaju opštu kategoriju u objektno-orijentisanom programiranju, koja opisuje grupu posebnih elemenata koji se nazivaju objekti i nalaze se unutar grupe. Klasa je opisni element, i u programiranju služi za definisanje skupa atributa ili skupa akcija (funkcija) koje su dostupne drugim delovima programa, a karakteristične su za sve članove jedne klase. Definisanje klasa u objektno-orijentisanom programiranju je vrlo slično definisanju tipova podataka u strukturnom programiranju.

U PHP-u jedna klasa je, najjednostavnije rečeno, kolekcija varijabli i funkcija koje manipulišu ovim varijablama. U sledećim redovima videćemo način definisanja jedne klase:


<?php
class Racun {
var $stavke;
// Stavke koje se kupuju

// Dodavanje odredj. br $kom artikala na racun br. $ser_br
function dodaj_stavku ($ser_br, $kom) {
$this->stavke[$ser_br] += $kom;
}

// Skidanje odredj. br $kom artikala sa racuna br. $ser_br
function ukloni_stavku ($ser_br, $kom) {
if ($this->stavke[$ser_br] > $kom) {
$this->stavke[$ser_br] -= $kom;
return true;
} else {
return false;
}
}
}
?>


Kao što možete videti, definisali smo klasu „Racun“ (kupovni račun) koja sadrži određeni broj artikala – stavki (niz $stavke) i dve funkcije:
  • dodaj_stavku() – funkcija za dodavanje određeneog broja (kom) artikala (ser_br) na račun
  • ukloni_stavku()– funkcija za skidanje, takođe, određenog broja (korisnik ne mora poništiti kupovinu svih) stavki sa računa.

Pošto smo rekli da su klase kao tipovi podataka, da bi ih upotrebili u programiranju, potrebno je da deklarišemo varijable na osnovu klase:


$racun = new Racun;
$racun->dodaj_stavku(„10“, 1);

Ovaj kod će kreirati objekat $racun koji pripada klasi Racun. Zatim smo funkcijom „dodaj_stavku()“, na račun dodali 1 komad artikla sa serijskim brojem 10.

Klase inače mogu biti proširenja drugih klasa. Pri tome, proširena klasa ima sve varijable i funkcije osnovne klase (kroz tzv. nasleđivanje) i može da ima dodatne sopstvene varijable i funkcije. Da naglasimo i to da višestruko nasleđivanje nije podržano. Evo primera proširivanja prethodno definisane klase Racun:


class Kupovni_Racun extends Racun {
var $kupac;

function unos_kupca ($ime) {
$this->kupac = $ime;
}
}


Ovim smo definisali novu klasu – Kupovni_Racun, koja ima sve varijable i funkcije kao i klasa Racun, kao i dodatnu varijablu $kupac i funkciju unos_kupca().

Pratite Krstaricu na www.krstarica.com