Diskusijų forumai
Diskusijų forumai     Tinklalapių kūrimas ir programavimas     PHP/MySQL     Objektinis programavimas



Objektinis programavimas

audrys0218
Bendruomenės narys

 
Sveiki,
mokausi javascriptinimą ir priėjau prie savokos Objektai, nuodugniai skaičiau apie objektinį programavimą, taigi man iškilo toks klausimas, kam reikalingi tie visi objektai, bent jau kaip aš supratau tai leidžia mažiau kreipti dėmesį į vardų kartojimasi ir pnš, nu jeigu galite man tik pačia esmę perteikint ir aš busiu dėkingas, ačių.
 


Atsakymai į temą

Edmundas
Tinklalapio šeimininkas

 
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. smile

Šiaip visas E-grafika.lt skriptas būtent ir paremtas objektiniu programavimu. Be jo neįsivaizduoju programavimo. smile
audrys0218
Bendruomenės narys

 
Dėkui, šiek tiek aiškiau, bet vistiek, man čia kažkaip sunku suvokti. :nope: O jūs mokėtės viso šito iš knygų ar iš kokio nors puslapio? Būtų gerai jeigu parašytumėte knygos pavadinimą ar nuorodą, ačiū :h:
Edmundas
Tinklalapio šeimininkas

 
Aš mokiausi savarankiškai, tiek iš knygų, tiek internete. Pradėjau nuo paprastų, nesudėtingų skriptų rašymo, kiek vėliau susipažinau su PHP ir MySQL sąveika. Galiausiai priėjau objektinį programavimą, kaip ir tu dabar. Iš pradžių ir man atrodė neįprastas dalykas tas objektinis programavimas, tačiau dėl to pernelyg nesirūpink. Viskam įsisavinti reikia laiko. Aš anais laikais turėjau (ir tebeturiu) PHP 4 vadovą, ten labai stora knyga (kažkur virš 700 psl). Iš jos įgavau PHP ir bendrus programavimo pagrindus. Internetinėse svetainėse, kurios, beje, dabar jau nebeegzistuoja, nagrinėjau daug įvairių PHP skriptų pavyzdžių, bandžiau atkartoti jų veikimą rašydamas savo kodą. Šiuo metu turiu knygą „PHP 5 vaizdžiai“, kurią naudoju kaip „reference“, jei nėra interneto prieigos.

Prie objektinio programavimo mokymosi praleidau nemažai laiko, pradžioje praktikavausi paprastus variantus (panašius į šioje temoje pateiktą pavyzdį), analizavau, kokiais atvejais ir kaip atsiranda PHP klaidos ir t. t. Žodžiu, jeigu dabar mano pavyzdys vis dar nelabai aiškus, pasiskaityk papildomos informacijos, prakikuokis ir bandyk pats rašyti kodą, o tada vėl peržvelk mano pavyzdį. Per laiką viskas taps kur kas aiškiau. wink
audrys0218
Bendruomenės narys

 
Ačiū tu tikrai padedi. Respectas tau, kad viską išmokai savarankiškai. O dbr keliauju toliau mokintis funny