<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CETURK &#187; Nesne Tabanlı</title>
	<atom:link href="http://www.ceturk.com/etiket/nesne-tabanli/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ceturk.com</link>
	<description>Türkiye&#039;nin Bilişim Platformu</description>
	<lastBuildDate>Sun, 05 Sep 2010 21:36:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Nesne Yönelimli PHP – Bölüm 3</title>
		<link>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-%e2%80%93-bolum-3.html</link>
		<comments>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-%e2%80%93-bolum-3.html#comments</comments>
		<pubDate>Fri, 06 Nov 2009 12:22:56 +0000</pubDate>
		<dc:creator>Kurtman Çelik</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Teknolojileri]]></category>
		<category><![CDATA[Kurtman Çelik]]></category>
		<category><![CDATA[Nesne Tabanlı]]></category>
		<category><![CDATA[Nesne Yönelimli]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=3901</guid>
		<description><![CDATA[
Öncelikle
Tekrar merhaba, Nesne Yönelimli PHP dizisinin, son bölümüne hoşgeldiniz. Daha öncede bahsettiğim gibi eğer kendinizi bu konuda hazır hissetmiyorsanız, bölüm 1 ve bölüm 2 yazılarını tekrar etmenizi ısrarla tavsiye ediyorum. Temeller, bu konudaki en önemli parça.
Bu Yazıda
Bu yazıda, sürekli bahsettiğimiz MySQLi Veritabanı Sınıfını inşa edeceğiz ve bunu yaparken daha önceki konulardan öğrendiğimiz herşeyi kullanmaya çalışacağız.

Değişkenler [...]]]></description>
			<content:encoded><![CDATA[<p><img title="oop-php-part3-banner.jpg" src="http://www.ceturk.com/images/oop-php-part3-banner.jpg.png" alt="oop-php-part3-banner.jpg" width="600" height="160" /></p>
<h2>Öncelikle</h2>
<p>Tekrar merhaba, Nesne Yönelimli PHP dizisinin, son bölümüne hoşgeldiniz. Daha öncede bahsettiğim gibi eğer kendinizi bu konuda hazır hissetmiyorsanız, <a href="http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-1.html" target="_blank">bölüm 1</a> ve<a href="http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-2.html" target="_blank"> bölüm 2</a> yazılarını tekrar etmenizi ısrarla tavsiye ediyorum. Temeller, bu konudaki en önemli parça.<span id="more-3901"></span></p>
<h2>Bu Yazıda</h2>
<p>Bu yazıda, sürekli bahsettiğimiz MySQLi Veritabanı Sınıfını inşa edeceğiz ve bunu yaparken daha önceki konulardan öğrendiğimiz herşeyi kullanmaya çalışacağız.</p>
<ol>
<li>Değişkenler ve Yapıcı Metod,</li>
<li>Temel Fonksiyonlar.</li>
</ol>
<p>Başlıklarıyla ilglileneceğiz.</p>
<h2>1. Değişkenler ve Yapıcı Metod</h2>
<p><em>class.db.php</em> adında yeni bir dosya oluşturun ve içine aşağıdaki kod bloğunu girin:<br />
Açıklama satırlarını okumadan önce kodlara bakarak ne yapıldığını çözmeye çalışabilirsiniz.</p>
<pre class="brush:php">&lt;?php

/*
* class db
* @param Host
* @param User
* @param Password
* @param Name
*/
class db
{

var $host;       //MySQL Host
var $user;       //MySQL User
var $pass;       //MySQL Password
var $name;       //MySQL Name

var $mysqli;     //MySQLi Object

var $last_query; //Last Query Run

/*
* Class Constructor
* Creates a new MySQLi Object
*/
function __construct($host, $user, $pass, $name)
{

$host = $this-&gt;host;
$user = $this-&gt;user;
$pass = $this-&gt;pass;
$name = $this-&gt;name;

$this-&gt;mysqli = new mysqli($this-&gt;host, $this-&gt;user, $this-&gt;pass, $this-&gt;name);

}

}

$db = new db('localhost', 'root', '', 'blog');

?&gt;</pre>
<p>Öncelikle, Nesne Yönelimli PHP&#8217;nin en önemli meselelerinden birini tamamlamış bulunıyoruz: Organiazyon!. İlk önce, bir veritabanına bağlanmak için gereken tüm bilgileri birer değişken olarak tanımladık ve ardından yapıcı (constructor) metod yardımı ile kullanıcıdan bu bilgileri girmesini istedik. Veritabanı bilgilerini yapıcı metod ile almamızın sebebi; biz daha sonradan bu sınıfı kullanmaya başladığımız sırada veritabanı bilgilerinin girilmesine gerek kalmamasının sağlanmasıdır. Böylelikle kullanıcı, bizim sınıfımızı ilk çağırdığında bir kereye mahsus, veritabanı bilgilerini girecek ve daha sonraki kullanımlarda bu bilgilere ihtiyaç duymayacaktır.</p>
<p>En son satırda ise bu sınıfımızın bir nesnesini tanımlayarak, örnek veritabanı bilgileri giriyoruz.</p>
<h2>2. Temel Fonksiyonlar</h2>
<h3>Select</h3>
<p>Şimdi, yukarıdaki kod bloğu sayesinde veritabanı bağlantısını kurmuş olduk, sıra geldi; gönderdiğimiz &#8220;SELECT&#8221; sorgu cümlesini veritabanı üzerinde çalıştıran fonksiyonun yazımına.</p>
<p>Aşağıdaki kod bloğunu sınıfımızın sonuna ekleyin:</p>
<pre class="brush:php">/*
* Function Select
* @param fields
* @param from
* @param where
* @returns Query Result Set
*/
function select($fields, $from, $where)
{

$query = "SELECT " . $fields . " FROM `" . $from . "` WHERE " . $where;
$result = $this-&gt;mysqli-&gt;query($query);

$this-&gt;last_query = $query;

return $result;

}</pre>
<p>Böylelikle, bir MySQL tablosu üzerinde gönderdiğimiz sorguyu çalıştırıp, sonuçları bize geri getiren bir fonksiyon yazmış olduk.</p>
<p>Kullandığımız değişkenler; <em>$fields</em> &gt;alanlar, yani tablodan hangi alanların okunup geri döndürüleceği, <em>$from </em>&gt; tablo adı, yani sorgu cümlesinin hangi tablo üzerinde çalıştırılacağı, <em>$where</em> &gt; nereden, yani tablodan okunacak bilgilerin hangi kritere göre<em> filtreleneceği</em>.</p>
<p>Son olarak, sorgu çalıştırılır ve geri dönen değerler <em>$result</em> adındaki değişkende tutulur ve<em> return</em> komutu ile uygulamamıza geri gönderilir.</p>
<h3>Insert</h3>
<p>Veritabanına yeni veri kaydı göndermek istediğimizde kullanacağımız fonksiyonumuzu yazalım:</p>
<pre class="brush:php">/*
* Function Insert
* @param into
* @param values
* @returns boolean
*/
function insert($into, $values)
{

$query = "INSERT INTO " . $into . " VALUES(" . $values . ")";

$this-&gt;last_query = $query;

if($this-&gt;mysqli-&gt;query($query))
{
return true;
} else {
return false;
}

}</pre>
<p>En basit fonksiyonlardan bir tanesi. Kullanıcıdan sadece 2 değişken almamız yeterli; Tablo adı ve eklenecek değerler. Bu fonskyionda diğerine göre; geriye tablo kayıtları döndürmek yerine şöyle bir yol izledik: Sorguyu çalıştır, eğer kayıt ekleme başarılı olursa geriye <em>true</em> değeri döndür, eğer kayıt eklemede sorun çıkarsa geriye <em>false</em> değeri döndür.</p>
<h3>Delete</h3>
<p>En basit haliyle veritabanından kayıt giren fonksiyonumuz:</p>
<pre class="brush:php">&lt;?php

/*
* Function Delete
* @param from //Silinecek kayıdın hangi tablodan silineceği.
* @param where //Silme filtresi, hangi koşul uyuyorsa ona göre silme yap.
* @returns boolean //Eğer silme işlemi düzgün tamamlanmışsa geriye true döndür, hata oluşmuşsa geriye false döndür.
*/
function delete($from, $where)
{

$query = "DELETE FROM " . $from . " WHERE " . $where;

$this-&gt;last_query = $query;

if($this-&gt;mysqli-&gt;query($query))
{
return true;
} else {
return false;
}

}

?&gt;</pre>
<h2>Birkaç öneri</h2>
<p>Muhtemelen yazdığımız her fonksiyondaki $last_query (son sorgu) değişkenini, dikkatinizde kaçmamışdır. Sınıfımızın en başında tnımladığmız bu değişken, sınıfımız aracılığı ile çalıştırılmış en son sorguyu hafızada tutmak için kullanılıyor. Nedeni ise: son derece hayati önem kazanan sorguların, hata ayıklama işlemlerinin yapılmasına yardımcı olmasıdır. Bir hata meydana geldiğinde aynı sorguyu tekrar çalıştırmakdansa bu değişkene bakarak hatayı bulmaya çalışabilirsiniz. Diğer bir değişken ise $last_error (son hata), yazmış olduğumuz fonksiyonlardaki hata olma olasılıklarına karşı, kullanıcıyı bilgilendirmek amacıyla kullanılabilir. Bir hata meydana geldiğinde, hata mesajını bu değişkene aktarıp return komutu ile kullanıcıyı haberdar edebilirsiniz.</p>
<p>Update sorgusunu ise size bırakıyorum, ne kadar öğrendiğinizi ispatlamak adına update fonksiyonunu siz kendiniz yazmaya çalışabilirsiniz.</p>
<h2>Sonuç</h2>
<p>Bu yazıyla birlikte, Nesne Yönelimli PHP&#8221;de giriş seviyesinde bilgi birikimine sahip olmuş olduk. Umarım öğrendiğimiz bu temel bilgiler üzerine kendinizi daha çok geliştirir ve ileri konular hakkındada bilgi sahibi olursunuz. Takip ettiğiniz için teşekkürler, iyi çalışmalar.</p>
<p>Kurtman Çelik<br />
<a href="http://kurtmancelik.wordpress.com/" target="_blank">kurtmancelik.wordpress.com</a><br />
<strong>Kaynak: <a href="http://buildinternet.com/2009/07/an-introduction-to-object-oriented-php-part-3/" target="_blank">http://buildinternet.com/2009/07/an-introduction-to-object-oriented-php-part-3/</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-%e2%80%93-bolum-3.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nesne Yönelimli PHP &#8211; Bölüm 2</title>
		<link>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-2.html</link>
		<comments>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-2.html#comments</comments>
		<pubDate>Thu, 05 Nov 2009 12:40:44 +0000</pubDate>
		<dc:creator>Kurtman Çelik</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Teknolojileri]]></category>
		<category><![CDATA[Kurtman Çelik]]></category>
		<category><![CDATA[Nesne Tabanlı]]></category>
		<category><![CDATA[Nesne Yönelimli]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=3825</guid>
		<description><![CDATA[
Giriş
Bundan önceki yazımızda nesne yönelimli PHP&#8217;ye giriş yapmıştık. Bu yazımızda ise önceki yazıdaki örnekler üzerinden; ilerlemeye devam ediyoruz. Eğer başlangıç seviyesinde bilgiye sahip değilseniz, öncelikle 1. yazıyı okumanızı tavsiye ediyorum.

Bu Yazıda

Yapıcı (Constructors) ve Yıkıcı (Destrucktors) Metodlar,
Fonksiyonlardan değer döndürme,
Düzeni sağlama.

Konularını işliyoruz.
1. Yapıcı ve Yıkıcı Metodlar
Yapıcılılara, bir binanın yapımına başlanılması eylemi olarak bakabiliriz; yani bir sınıfın kullanıma [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-3826" title="oop-php-part2-banner" src="http://www.ceturk.com/images/oop-php-part2-banner.jpg" alt="oop-php-part2-banner" width="600" height="160" /></p>
<h2>Giriş</h2>
<p><a href="http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-1.html" target="_blank">Bundan önceki yazımızda</a> nesne yönelimli PHP&#8217;ye giriş yapmıştık. Bu yazımızda ise önceki yazıdaki örnekler üzerinden; ilerlemeye devam ediyoruz. Eğer başlangıç seviyesinde bilgiye sahip değilseniz, öncelikle 1. yazıyı okumanızı tavsiye ediyorum.</p>
<p><span id="more-3825"></span></p>
<h2>Bu Yazıda</h2>
<ol>
<li>Yapıcı (Constructors) ve Yıkıcı (Destrucktors) Metodlar,</li>
<li>Fonksiyonlardan değer döndürme,</li>
<li>Düzeni sağlama.</li>
</ol>
<p>Konularını işliyoruz.</p>
<h2>1. Yapıcı ve Yıkıcı Metodlar</h2>
<p>Yapıcılılara, bir binanın yapımına başlanılması eylemi olarak bakabiliriz; yani bir sınıfın kullanıma hazır olması için gereken işlemler olarak tanımlanabilir. Yıkıcılar ise binanın yani sınıfın yok edilmesi olarak tanımlanabilir.</p>
<p>Daha iyi anlaşılması için yapıcılara bir örnek verelim:</p>
<pre class="brush:php">&lt;?php
class MyClass
{
function __construct()
{
echo "MyClass Loaded!";
}
}
$MyClass = new MyClass();
?&gt;</pre>
<p>Bu örnekde; basitçe bir sınıf tanımladık ve içinde yapıcı bir metod yerleştirdik. Kodumuzda bu sınıfımızı çağırdığımız zaman hiç bir işlem yapmasak bile yapıcı metod çalışacak ve ekrana &#8220;Sınıf kullanıma hazır&#8221; mesajını yazıcaktır.<br />
Yıkıcı metodlara gelecek olursak; PHP&#8217;de sınıflarımızın her zaman bir yıkıcı metoda ihtiyacı yoktur. Zira siz bir nesne ile birkaç işlem yapıp o nesneyi yok ettiğinizde içindeki fonksiyon ve değişkenlerde yok olacaktır.</p>
<h2>2. Fonksiyonlardan değer döndürme</h2>
<p>Basit örneklerin dışında, gerçek projelerden bahsedecek olursak fonksiyonlarınızın her zaman ekrana birşey yazdırması gerekmez. Çoğu zaman geriye bir değer döndürülür ve bu değer ana programda istenilen yerde kullanılır.</p>
<p>Fonksiyonlardan geriye bir değer döndürmek için &#8220;<em>return</em>&#8221; anahtar kelimesi kullanılır ve formatı &#8220;<em>return</em> <strong><em>Geri Döndürülecek Değer</em></strong>&#8221; şeklindedir.</p>
<pre class="brush:php">&lt;?php

class Sinifim
{

var $mysqli;

function __construct()
{

$this-&gt;mysqli = new mysqli('localhost', 'root', '', 'blog');

}

function get_latest_posts()
{

//Do some database selection
$query = "SELECT * FROM `yazilar` ORDER BY `id` DESC";
$result = $this-&gt;mysqli-&gt;query($query);

return $result;

}

}

php?&gt;</pre>
<p>Yukarıdaki örnekde; en basitinden bir veritabanı bağlantısı kurduk ve ardından veritabanındaki &#8220;yazilar&#8221; tablosundaki verileri azalan sıra ile çekip, PHP uygulamamıza gönderdik. Bu noktadan itibaren veritabanından gelen bilgileri istediğimiz yerde kullanabiliriz.</p>
<h2>3. Düzeni Sağlama</h2>
<p><img class="alignnone size-full wp-image-3828" title="intro-oop-knex-boxes" src="http://www.ceturk.com/images/intro-oop-knex-boxes.jpg" alt="intro-oop-knex-boxes" width="600" height="250" /></p>
<p>Yukarıdaki resim &#8220;sınıf&#8221; terimine iyi bir örnek. Birbiri ile bağımsız her kutuya bir sınıf olarak bakacak olursak, kutuların içindekilerde o sınıfa ait fonksiyonlar ve değişkenlerdir.</p>
<p>Sınıfların en büyük avantajı, içindekileri kolay okunabilir ve düzenlenebilir şekilde tutmasıdır.<a href="http://core.trac.wordpress.org/browser/trunk/wp-includes/wp-db.php" target="_blank"> Wordpress&#8217;in veritabanı işlemlerini gerçekleştirmek için kullandığı sınıfı</a>na bakacak olursanız demek istediğimi daha iyi anlayacaksınız.</p>
<p>Gördüğünüz gibi her sınıf tanımının, fonksiyonun, değişkenin, yapıcının üst kısmında; ne işe yaradığını anlatan açıklama satırları mevcut. Bu, o sınıfı kullanan diğer programcılar için çok büyük bir avantaj sağlamaktadır.</p>
<p>Şimdi bu yapıyı kendi sınıfımıza da uygulayalım:</p>
<pre class="brush:php">&lt;?php

/*
* @name Sinifim
* @params none
* Bu sınıf, veritabanına bağlantıyı ve yeni kayıt ekleme işlemlerini gerçekleştirir.
*/
class Sinifim
{

/*
* MySQLi Bağlantısı
*/
private $mysqli;

/*
* __Yapıcı
* Yeni bir MySQL bağlantısı kurar.
*/
function __construct()
{

$this-&gt;mysqli = new mysqli('localhost', 'root', '', 'buildinternet');

}

/*
* Veri ekle
* @params Kullanici_Adi, Sifre
* @returns bool
*/
function Veri_ekle($Kullanici_Adi, $Sifre)
{

//Gelen bilgileri veritabanına kaydet.
if(success)
{
return true;
} else {
return false;

}
}
}
php?&gt;</pre>
<p>Gördüğünüz üzere, sınıfımızın ne olduğunu, hangi iş için yazıldığını belirtmiş olduk. Hangi fonksiyonun hangi parametrelere ihtiyaç duyduğunu ve yaptığı işlemden sonra geriye nasıl bir değer döndürdüğünü yazdığımı açıklama satırlarında belirttik.</p>
<p>Bundan sonraki yazımız için gerekli bilgiyi topladığımıza inanıyorum, 3. yazımızda veritabanı işlemleri yapmak için kullanacağımız basit bir sınıf yazacağız.</p>
<p>Kurtman Çelik<br />
<a href="http://kurtmancelik.wordpress.com/" target="_blank">kurtmancelik.wordpress.com</a><br />
<strong>Kaynak: <a href="http://buildinternet.com/2009/07/an-introduction-to-object-oriented-php-part-2/" target="_blank">http://buildinternet.com/2009/07/an-introduction-to-object-oriented-php-part-2/</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-2.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nesne Yönelimli PHP &#8211; Bölüm 1</title>
		<link>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-1.html</link>
		<comments>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-1.html#comments</comments>
		<pubDate>Wed, 04 Nov 2009 16:03:32 +0000</pubDate>
		<dc:creator>Kurtman Çelik</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Teknolojileri]]></category>
		<category><![CDATA[Kurtman Çelik]]></category>
		<category><![CDATA[Nesne Tabanlı]]></category>
		<category><![CDATA[Nesne Yönelimli]]></category>
		<category><![CDATA[oop]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=3769</guid>
		<description><![CDATA[
Makaleler Hakkında
3 Bölümden oluşacak makale dizisinde, Object Oriented (Nesne Yönelimli) PHP&#8217;nin temellerini; kodunuzu yönetmeyi, bileşenleri birbirinden ayrı tutmayı ve gerektiğinde bunlara kolaylıkla erişebilmeyi konu alacağız.
3. makale ile birlikte; genel veritabanı işlemlerini gerçekleştirmek üzere basit bir MySQLi (MySQL Improved) sınıfı yazacağız.
Bu Yazıda

Nesneler(Objects) ve Sınıflar (Classes) nedir?
İlk sınıfımızı yazalım.
Sınıfların kullanımı.
Sınıfların kişiselleştirilmesi (Dinamizm eklenmesi)

1. Nesneler ve Sınıflar
Sınıflar, basitçte; [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-179" title="oop-php-part1-banner" src="http://kurtmancelik.wordpress.com/files/2009/11/oop-php-part1-banner1.png" alt="oop-php-part1-banner" width="600" height="160" /></p>
<h2>Makaleler Hakkında</h2>
<p>3 Bölümden oluşacak makale dizisinde, Object Oriented (Nesne Yönelimli) PHP&#8217;nin temellerini; kodunuzu yönetmeyi, bileşenleri birbirinden ayrı tutmayı ve gerektiğinde bunlara kolaylıkla erişebilmeyi konu alacağız.<span id="more-3769"></span></p>
<p>3. makale ile birlikte; genel veritabanı işlemlerini gerçekleştirmek üzere basit bir MySQLi (MySQL Improved) sınıfı yazacağız.</p>
<h2>Bu Yazıda</h2>
<ol>
<li>Nesneler(Objects) ve Sınıflar (Classes) nedir?</li>
<li>İlk sınıfımızı yazalım.</li>
<li>Sınıfların kullanımı.</li>
<li>Sınıfların kişiselleştirilmesi (Dinamizm eklenmesi)</li>
</ol>
<h2>1. Nesneler ve Sınıflar</h2>
<p>Sınıflar, basitçte; fonksiyonlar deposu olarak tanımlanabilir. Başka türlü beznetmek gerekirse; Masaüstünüzdeki bir klasör sınıf ise o klasörün içindeki dosyalarda fonksiyonlardır.</p>
<p>Bir de klasik bir örnek üzerinden anlatalım:</p>
<p><img class="alignnone size-full wp-image-3771" title="oop-php-part1-dog-example" src="http://www.ceturk.com/images/oop-php-part1-dog-example.png" alt="oop-php-part1-dog-example" width="600" height="160" /></p>
<p>Resimde de gördüğünüz gibi köpek sınıfının, koşmak, yürümek, oyun oynamak, havlamak gibi fonksiyonları mevcut. Bu yapı bir sınıfın en genel tanımıdır.</p>
<p>Şimdi, sınıfın ne olduğunu az çok öğrendik. Peki bu sınıfı kodlarımızda nasıl kullanacağız. İşte bu noktada işin içine Nesneler giriyor. &#8220;Köpek&#8221; adındaki bir sınıfı kullanmak için bir bir değişken tanımlamamız gerekir.</p>
<p>Daha bağlantılı olması için sınıf yazımından itibaren kodumuza başlayalım:</p>
<h2>2. İlk sınıfımızı yazalım.</h2>
<p>İlk kodumuz olduğu için, olabildiğince basit ilerleyelim; Favori kod editörünüzü açın, myClass.php adına boş bir dosya oluşturun ve içine aşağıdaki kod bloğunu yazın:</p>
<pre class="brush:php">&lt;?php
class myClass
{
 function Merhaba()
 {
 echo "Merhaba!";
 }
}
?&gt;</pre>
<p>Eğer bu dosyayı sunucunuzda çalıştırmaya kalkarsanız, ekrana hiçbirşey yazmayacaktır. Çünkü yapmış oldumuz şey sadece bir sınıf tanımlamak, sınıfın içindekileri çalıştırmak adına şu an için birşey yapmadık.</p>
<p>Devamında yine boş bir dosya olışturup <em>myClass.php</em> ile aynı klasörün içine <em>index.php</em> adıyla  kaydedin.</p>
<h2>3. Sınıfların kullanımı.</h2>
<p><em>index.php</em> içinde, <em>myClass.php</em> içindeki sınıfımıza erişmek için, ilk önce sayfamıza <em>myClass.php</em>&#8216;nin referansını eklememiz gerek. Aşağıdaki kodda bunun nasıl yapıldığı gösterilmiştir:</p>
<pre class="brush:php">&lt;?php

 require_once('myClass.php');

 $myClass = new myClass();

 $myClass-&gt;Merhaba();

?&gt;</pre>
<p>Eğer bu sefer index.php&#8217;yi tarayıcınızda çalıştırırsanız ekranda &#8220;Merhaba dünya!&#8221; yazdığnı göreceksiniz. Şimdi yaptığımız çalışmanın üzerinden geçelim. Öncelikle  &#8220;<em>require_once(&#8216;myClass.php&#8217;)</em>&#8221; satırı ile <em>index.php</em> sayfamıza, içinde sınıfımızın bulunduğu <em>myClass.php</em> sayfamızı çağırdık. Bir sonraki satırda bu sınıfımızı bir değişken gibi kullanabilmemiz için gerekli olan <strong>nesne</strong> tanımlamasını yaptık, bu sayede <em>$myClass</em> nesnesi üzerinden sınıfımız içerisindeki &#8220;Merhaba()&#8221;  fonksiyonuna erişebiliyoruz. Son olarak tanımladığımız nesnenin <em>Merhaba()</em> fonksiyonunu çağırdık ve belirlediğimiz metin ekrana yazdırıldı.</p>
<h2>4. Sınıfların kişiselleştirilmesi</h2>
<p>Şimdi, elimizdeki hazır sınıfımızı kişiselleştirmek adına şöyle bir değişiklik yapalım: sitemize kullanıcı adı ve şifresiyle giriş yapmış birine adıyla hitap ederek merhaba diyelim. bunu yapmak için myClass.php&#8217;ye geri dönüp aşağıdaki değişiklikleri yapın:</p>
<pre class="brush:php">&lt;?php
class myClass
{
function Merhaba($kullanici)
{
echo "Hello " . $kullanici . "!";
}
}
?&gt;</pre>
<p>Bütün yaptığımız, ekrana  &#8220;Merhaba dünya&#8221; yazan fonksiyona bir parametre eklemekten ibaret. Bu sayede fonksiyonumuza <em>index.php</em>&#8216;den istediğimiz kullanıcı adını göndererek, o kişiye özel merhaba yazdırabiliriz.<em> index.php</em> sayfasına geri dönün ve aşağıdaki değişiklikleri uygulayın:</p>
<pre class="brush:php">&lt;?php

require_once('myClass.php');

$myClass = new myClass();

$myClass-&gt;Merhaba('Ali');

?&gt;</pre>
<p><em>index.php </em>sayfasını tarayıcınızda açtığınızda ekranda &#8220;Merhaba Ali!&#8221; yazdığını görürsünüz.</p>
<p>Bu çalışma ile de sınıflarımızı nasıl kişiselleştirip, dinamizm katabileceğimizi gördük.</p>
<p>Kurtman Çelik<br />
<a href="http://kurtmancelik.wordpress.com/" target="_blank">kurtmancelik.wordpress.com</a><br />
<strong>Kaynak: <a href="http://buildinternet.com/2009/07/an-introduction-to-object-oriented-php-part-1/" target="_blank">http://buildinternet.com/2009/07/an-introduction-to-object-oriented-php-part-1/</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-1.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NESNE TABANLI PROGRAMLAMA</title>
		<link>http://www.ceturk.com/programlama/c-sharp/nesne-tabanli-programlama.html</link>
		<comments>http://www.ceturk.com/programlama/c-sharp/nesne-tabanli-programlama.html#comments</comments>
		<pubDate>Thu, 27 Nov 2003 21:03:38 +0000</pubDate>
		<dc:creator>demirnazim</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Ayhan ERGUN]]></category>
		<category><![CDATA[Nesne Tabanlı]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=324</guid>
		<description><![CDATA[CLASS (SINIF) KAVRAMI
Class (sınıf) kavramının temelinde sınıflama gelir. Bazı nesneleri düşünelim; evler, arabalar, masalar, vb. Aslında &#8220;ev&#8221; deyince bütün evlerden söz ederiz. Böylece ortak davranış ve özelliklerin sınıflamasından söz edebiliriz.
Nesne tabanlı programlama kavramı içinde bu iki terim karşımıza çıkar: Nesneler (objects) ve sınıflar (classes).  Burada en belirgin ayrımı şu şekilde yapabiliriz: Sınıflar nesnelerin kopyasıdır. Programcıları bir [...]]]></description>
			<content:encoded><![CDATA[<p><strong>CLASS (SINIF) KAVRAMI</strong><br />
Class (sınıf) kavramının temelinde sınıflama gelir. Bazı nesneleri düşünelim; evler, arabalar, masalar, vb. Aslında &#8220;ev&#8221; deyince bütün evlerden söz ederiz. Böylece ortak davranış ve özelliklerin sınıflamasından söz edebiliriz.</p>
<p>Nesne tabanlı programlama kavramı içinde bu iki terim karşımıza çıkar: Nesneler (objects) ve sınıflar (classes).  Burada en belirgin ayrımı şu şekilde yapabiliriz: Sınıflar nesnelerin kopyasıdır. Programcıları bir ev planının (nesnesinin) kopyasını çıkartarak kullandıkları gibi ev nesnesinin işlevlerini kullanılırlar.</p>
<p>Nesne tabanlı programlamada; nesneler bir sınıfı temel alarak oluşturulur. Bir sınıftan bir nesne oluşturma işlemine örnekleme (instantiating) denir.</p>
<p><strong>Örnek:</strong></p>
<p>&lt;code&gt;Public static void Main(){</p>
<p>PersonelClass PersonelNesne = New PersonelClass ();</p>
<p>}</p>
<p>&lt;/code&gt;</p>
<p>Örnekte, PersonelNesne&#8217;si PersonelClass&#8217;dan örneklenerek (çoğaltılarak) oluşturulmuştur.</p>
<p>&lt;code&gt;Public static void Main(){</p>
<p>PersonelClass PersonelNesne1 = New PersonelClass ();</p>
<p>PersonelClass PersonelNesne2 = New PersonelClass ();</p>
<p>}</p>
<p>&lt;/code&gt;</p>
<p>Yukarıdaki örnekte ise PersonelClass&#8217;ınden iki ayrı nesne örneklenmiştir.</p>
<p><strong>Örnek: </strong></p>
<p>&lt;code&gt;class Hesap{</p>
<p>public void miktar(decimal tutar)</p>
<p>{</p>
<p>borc += tutar;</p>
<p>}</p>
<p>private decimal borc;</p>
<p>}</p>
<p>&lt;/code&gt;</p>
<p><strong>A. SINIFLARI TANIMLAMAK</strong><br />
C#&#8217;da sınıf tanımlamak için Class anahtar sözcüğü kullanılır. Ardından küme işaretiyle kodlar eklenir.</p>
<p><strong>Tanımı:</strong></p>
<p>&lt;code&gt;class Sınıf_adı{</p>
<p>üyeler;</p>
<p>}</p>
<p>&lt;/code&gt;</p>
<p><strong>Örnek: </strong></p>
<p>&lt;code&gt;class Personel{</p>
<p>private int personelno;</p>
<p>}</p>
<p>&lt;/code&gt;</p>
<p><strong>B. SINIF ÜYELERİ</strong><br />
Sınıfların başlıca üyeleri metotlar, özellikler (properties) ve olaylardır (events).  Yöntemler nesneler üzerinde çalışan kodlardır. Nesne ile bir eylemiş birleştireceksek, metotlar hazırlamamız gerekir. Özellikler yine nesnelerin çeşitli özelliklerini yansıtırlar. Olaylar ise kullanıcı ve sistemden alınan çeşitli tetikleyicilerdir. Örneğin kullanıcının bir alana tıklaması bir olaydır.</p>
<p>Bu arada sınıf üyeleri belli bir kapsama sahiptir:</p>
<p>Kapsam    Açıklama</p>
<p>public       Üyeye sınıfının dışından da erişilmesini sağlar.</p>
<p>protected   Üyenin sınıfının dışından görülmemesini sağlar. Ancak türetilen sınıflardan erişilebilir.</p>
<p>private     Üyenin sınıfının dışından görülmemesini sağlar. Ancak türetilen sınıflardan bile<br />
üyeye erişilemez.</p>
<p><strong>II. NESNE TABANLI PROGRAMLAMANIN ÜÇ TEMEL PRENSİBİ</strong><br />
Nesne tabanlı programlama dillerinin temel özellikleri vardır. Bunlar:<br />
<span style="color: #ff9900;"><br />
encapsulation (sarma)<br />
interitance (kalıtım)<br />
polymorphism (çok işlevlilik) </span></p>
<p>Sarma özelliği çok genel bir özelliktir. Bir nesnenin içinde yetenekler içermesi ve onları sergilemesi bu özelliğe girer. Bir sınıfı örnekleyerek türetilen bir nesne üyelerine erişmek bu prensibin sağladığı olanaktır.</p>
<p>Kalıtım ise, var olan bir sınıfı temel alan yeni bir sınıf geliştirme tekniğidir. Türetilen yeni sınıf, temel sınıfın tüm üyelerini devralır. Ardından türetilen sınıf üzerinde istenilen değişiklikler yapılabilir.</p>
<p>Çok işlevlilik ise biraz daha soyut bir kavramdır. Aynı işlemi birçok kez yapabilmek anlamına gelir. Türetilmiş sınıflar devraldığı işlemleri kendi bildiği şekilde uygular.</p>
<p><strong>A. KALITIM (INHERITENCE)</strong><br />
Kalıtım izni olan bir taban sınıftan yeni bir sınıf türetmeye (derive) kalıtım denir. Türetilen sınıflar, taban sınıfın sergilediği bütün metot ve öznitelikleri kullanırlar. Ardından türetilen sınıf üzerinde istenilen değişiklikler yapılabilir.</p>
<p>Kalıtımın en önemli özelliği bir sınıf hiyerarşisi oluşturmaktır.</p>
<p><strong>Tanımı:</strong></p>
<p>&lt;code&gt;class TuretilenSınıf: TabanSınıf{</p>
<p>&#8230;..</p>
<p>}</p>
<p>&lt;/code&gt;</p>
<p><strong>Örnek: </strong></p>
<p>&lt;code&gt;class Ornek{</p>
<p>private class</p>
<p>}</p>
<p>&lt;/code&gt;</p>
<p><strong>Örnek:</strong></p>
<p>&lt;code&gt;using System;class Programlar</p>
<p>{</p>
<p>public Programlar()</p>
<p>{</p>
<p>OrtakOzellik = &#8220;Evet&#8221;</p>
<p>}</p>
<p>public string OrtakOzellik;</p>
<p>public void OrtakMetot()</p>
<p>{</p>
<p>Console.WriteLine(&#8220;Programların ortak özellikleri&#8221;);</p>
<p>}</p>
<p>}</p>
<p>class Cdili : Programlar</p>
<p>{</p>
<p>public void CdiliMetodu()</p>
<p>{</p>
<p>Console.WriteLine(&#8220;Cdili metodu&#8221;);</p>
<p>}</p>
<p>}</p>
<p>class Kalitimlar</p>
<p>{</p>
<p>public static void Main()</p>
<p>{</p>
<p>Cdili bizimdil = New Cdili();</p>
<p>bizimdil.CdiliMetodu();</p>
<p>bizimdil.OrtakMetot();</p>
<p>}</p>
<p>}</p>
<p>&lt;/code&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/programlama/c-sharp/nesne-tabanli-programlama.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
