Atsakymas parašytas: 2009-12-29 19:32:40
[#633]
Ilgalaikė nuoroda į atsakymą #1
Sveikas,
objektai programavimo ir skriptinimo kalbose yra labai svarbūs. Jie leidžia kurti nuoseklias, struktūrizuotas programas ar skriptus. Objektiniu programavimu tu ne tik sumažinsi kodo kartojimasi (angl. „
repetition“), bet ir lengviau orientuosiesi savo parašytame kode. Plačiai rašyti apie objektus nenoriu, nes apie tai jau perskaitei. Na, parodysiu pavyzdį PHP 5 programavimo kalboje.
class Zmogus
{
private $vardas;
private $gyvybe;
private $sotumas;
// PHP 5 konstruktorius.
public function __construct()
{
$this->vardas = '';
$this->gyvybe = FALSE;
$this->sotumas = FALSE;
}
public function zmogaus_vardas($vardas = '')
{
$this->vardas = $vardas;
}
public function koks_mano_vardas()
{
return $this->vardas;
}
public function gyvena()
{
$this->gyvybe = TRUE;
}
public function mirtis()
{
$this->gyvybe = FALSE;
}
public function ar_gyvas()
{
return $this->gyvybe;
}
public function valgyti()
{
for($i = 0; $i < 5; $i++)
{
echo 'Valgau.';
echo '<br />';
}
$this->sotumas = TRUE;
}
public function ar_sotus()
{
if($this->sotumas == TRUE)
{
echo 'Sotus!';
echo '<br />';
}
else
{
echo 'Dar nepavalgiau...';
echo '<br />';
}
}
}
$ME = new Zmogus(); // Sukuriame žmogų (save).
$ME->gyvena(); // Duodame jam gyvybę.
// Tiesiogiai negalime priskirti vardo (klasės kintamajui $vardas),
// nes prie jo yra žodis private. Tai reiškia, kad su kintamuoju
// veiksmai atliekami tik klasės viduje. Vardą priskirti ir išspausdinti
// ekrane galime per neprivačius (public) klasės metodus. Šiuo atveju
// tai atlieka metodai zmogaus_vardas() ir koks_mano_vardas().
// Užkomentavau neteisingą priskyrimą, kad PHP nerodytų klaidos pranešimo.
//$ME->vardas = 'Edmundas';
$ME->zmogaus_vardas('Edmundas'); // Suteikiame žmogui vardą.
// Jeigu žmogus gyvas, tai jis gali atlikti kažkokius veiksmus.
if($ME->ar_gyvas())
{
// Patikriname, ar žmogus sotus.
// Kadangi jo nepavalgidinome, jis, žinoma, nėra sotus.
$ME->ar_sotus();
$ME->valgyti(); // Pavalgidinkime.
$ME->ar_sotus(); // Dabar žmogus turėtų būti sotus.
echo $ME->koks_mano_vardas(); // Žmogus pamiršo savo vardą...
echo '<br />';
}
$ME->mirtis(); // Pagyvenome ir užteks.
echo '<br />-----<br /><br />';
// Vėl tikriname, ar žmogus gyvas.
// Regis, ne, todėl viskas, kas sąlygos viduje, nebus vykdoma.
if($ME->ar_gyvas())
{
$ME->valgyti();
}
$draugas = new Zmogus(); // Sukuriame dar vieną žmogų.
$draugas->gyvena();
$draugas->zmogaus_vardas('Irmantas');
if($draugas->ar_gyvas())
{
echo 'Sveiki, mano vardas '. $draugas->koks_mano_vardas() .'!';
echo '<br />';
$draugas->valgyti();
$draugas->mirtis(); // Pavalgė ir numirė...
}
if($ME->ar_gyvas() == FALSE AND $draugas->ar_gyvas() == FALSE)
{
echo 'Abieju zmoniu gyvenimas baigesi...';
}
Kaip matai, su viena klase galima sukurti daug objektų (šiuo atveju sukūriau 2), o tai labai naudinga, kai yra tūkstančiai eilučių kodo ir jo kartojimasis yra netoleruotinas. Na pabandyk pats išbandyti šį pavyzdį, turėtų veikti, jei neįvėliau kur klaidos.
Šiaip visas E-grafika.lt skriptas būtent ir paremtas objektiniu programavimu. Be jo neįsivaizduoju programavimo.