- Nesne yönelimli programlama (OOP), PHP'de daha modüler ve yeniden kullanılabilir uygulamalar oluşturmanıza olanak tanır.
- OOP'nin dört temel direği kapsülleme, kalıtım, polimorfizm ve soyutlamadır.
- Kapsülleme, dahili verileri korur ve kodun sürdürülebilirliğini artırır.
- Polimorfizm, farklı sınıflardaki nesnelerin tek tip olarak ele alınmasını sağlar.
PHP ile nesne yönelimli programlamaya dair bu kapsamlı makalede, temel kavramları anlamanıza ve uygulamanıza yardımcı olacak pratik ve ayrıntılı örnekler bulacaksınız. PHP'de nesne yönelimli programlamayı etkili bir şekilde nasıl kullanacağınızı öğrenin ve geliştirme becerilerinizi geliştirin. Örnekleri inceleyin ve PHP ile OOP konusunda uzman olun!
Giriş
Nesne yönelimli programlama (OOP), uygulama ve web sitesi geliştirmede yaygın olarak kullanılan bir programlama paradigmasıdır. Bir programlama dili olarak PHP, (https://informatecdigital.com/php-orientado-a-objetos-ejemplos-guia-completa/) için de tam destek sunarak geliştiricilerin daha modüler, yeniden kullanılabilir ve sürdürülebilir kod oluşturmasına olanak tanır. Bu yazımızda PHP ile nesne yönelimli programlamayı kapsamlı örnekler üzerinden inceleyeceğiz. OOP'nin temel kavramlarını ve bunları PHP projelerinize nasıl uygulayacağınızı öğreneceksiniz. Programlama becerilerinizi bir üst seviyeye taşımaya hazır olun!
Nesne yönelimli programlama nedir?
Nesne yönelimli programlama (OOP), verileri ve davranışları kapsülleyen etkileşimli "nesneler" fikrine dayanan bir yazılım geliştirme yaklaşımıdır. Yapılandırılmış programlamada olduğu gibi fonksiyonlara ve prosedürlere odaklanmak yerine, OOP gerçek dünyadaki varlıkları veya soyut kavramları temsil eden nesneler arasındaki etkileşime odaklanır. Bu nesneler, bu nesnelerin örneklerini oluşturmak için şablon görevi gören sınıflar tarafından tanımlanır.
Tam Örnek: "Kişi" Sınıfı Oluşturma
İşte nesne yönelimli programlama kullanarak PHP'de "Kişi" sınıfının nasıl oluşturulacağına dair eksiksiz bir örnek:
sınıf Kişi {
// Özellikler
genel $isim;
kamu $yaşı;
// Yapıcı
genel fonksiyon __construct($name, $age) {
$this->isim = $isim;
$this->yaş = $yaş;
}
// Yöntemler
genel fonksiyon selamla() {
echo "Merhaba! Benim adım {$this->name} ve {$this->age} yaşındayım.»;
}
}
// "Kişi" sınıfının bir örneğini oluşturun
$kişi = yeni Kişi("Juan", 25);
// "greet" metodunu çağır
$kişi->selamla();
Bu örnekte, "isim" ve "yaş" olmak üzere iki özelliğe sahip "Kişi" adında bir sınıf oluşturduk. Ayrıca, sınıfın yeni bir örneği oluşturulduğunda bu özellikleri başlatmak için bir oluşturucu da tanımladık. Sınıfın ayrıca, özellik değerlerini kullanarak bir selamlama mesajı görüntüleyen "greet" adlı bir yöntemi de vardır.
Nesne yönelimli programlamanın dört temel direği
Nesne yönelimli programlama, sağlam ve verimli yazılım tasarımı sağlayan dört temel sütuna dayanmaktadır. Bu sütunlar şunlardır :
1. Kapsülleme
Kapsülleme, bir nesnenin iç ayrıntılarını gizleme ve onunla etkileşime girmek için yalnızca sınırlı bir arayüzü açığa çıkarma işlemidir. Bu, özelliklerin ve yöntemlerin genel, özel veya korumalı olarak tanımlanmasıyla gerçekleştirilir. Kapsülleme, kodun düzenli tutulmasına, hassas verilerin korunmasına ve kodun okunabilirliği ile sürdürülebilirliğinin iyileştirilmesine yardımcı olur.
Tam örnek: “BankAccount” sınıfında kapsülleme
Nesne yönelimli programlama kullanarak bir banka hesabını modellemek istediğimizi varsayalım. İşte PHP'de "BankAccount" sınıfında kapsüllemenin nasıl uygulanacağına dair eksiksiz bir örnek:
sınıf Banka Hesabı {
// Özel mülkler
özel $bakiye;
// Yapıcı
genel fonksiyon __construct($initialbalance) {
$this->bakiye = $ilkBakiye;
}
// Para yatırmanın genel yöntemi
genel fonksiyon mevduatı($miktar) {
$this->bakiye += $tutar;
}
// Para çekmenin genel yöntemi
genel fonksiyon geri çekme($miktar) {
eğer ($miktar <= $bu->bakiye) {
$this->bakiye -= $miktar;
} Else {
echo "Yetersiz bakiye.";
}
}
// Mevcut bakiyeyi almak için genel yöntem
genel fonksiyon getBalance() {
$this->balance'ı döndür;
}
}
// "BankAccount" sınıfının bir örneğini oluşturun
$hesap = yeni BankaHesabı(1000);
// İşlemleri gerçekleştir
$hesap->para yatırma(500);
$hesap->çek(200);
// Güncel bakiyeyi al
echo "Mevcut bakiye: " . $hesap->bakiyeyial();
Bu örnekte, “balance” özelliğini sınıfın dışından gizlemek için private olarak tanımladık. Bu mülkle etkileşim kurmak için "deposit", "withdraw" ve "getBalance" gibi herkese açık yöntemler oluşturduk. Bu yöntemler banka hesabınızda işlem yapmanıza olanak tanır, ancak "bakiye" özelliğine doğrudan erişime izin vermez.
2. Miras
Kalıtım, var olan bir sınıfa dayalı olarak yeni bir sınıf oluşturmanıza olanak sağlayan bir mekanizmadır. Mevcut sınıfa ana sınıf veya üst sınıf denirken, yeni sınıfa çocuk sınıf veya alt sınıf denir. Miras, kodun yeniden kullanılmasını ve alt sınıfların ana sınıftan özellik ve metotları miras aldığı sınıf hiyerarşilerinin oluşturulmasını kolaylaştırır.
Tam örnek: "Hayvan" ve "Köpek" sınıflarında kalıtım
Nesne yönelimli programlama kullanarak farklı hayvan türlerini modellemek istediğimizi varsayalım. İşte PHP'de "Animal" ve "Dog" sınıflarında kalıtımın nasıl uygulanacağına dair eksiksiz bir örnek:
sınıf Hayvan {
// Korunan mülk
korumalı $isim;
// Yapıcı
genel işlev __construct($name) {
$this->isim = $isim;
}
// İsmi almak için genel yöntem
genel fonksiyon getName() {
$this->name'i döndür;
}
// Genel bir ses çıkarmak için genel yöntem
genel işlev emitSound() {
echo "Hayvan bir ses çıkarır.";
}
}
sınıf Köpek Hayvanı genişletir {
// Havlama seslerini yaymak için genel yöntem
genel işlev emitSound() {
echo "Köpek havlıyor: Hav hav!";
}
}
// "Köpek" sınıfının bir örneğini oluşturun
$köpek = new Köpek("Firulais");
// Köpeğin adını al
echo "Köpeğin Adı:" . $köpek->getName() . «
";
// Köpeğin sesini çıkar
$köpek->sesçal();
Bu örnekte, ana sınıf görevi gören bir “Animal” sınıfı ve “Animal” sınıfından miras alan bir “Dog” sınıfı oluşturduk. "Hayvan" sınıfının korumalı bir özelliği "name" ve iki adet genel "getName" ve "playSound" metodu vardır. "Köpek" sınıfı, belirli bir havlama sesi çıkarmak için "emitSound" metodunu geçersiz kılar. “Köpek” sınıfının bir örneğini oluşturarak, “Hayvan” sınıfından “isim” özelliğini ve yöntemlerini miras alırız ve bunlara erişebiliriz.
3. Polimorfizm
Çok biçimlilik, bir nesnenin bağlama bağlı olarak farklı şekillerde davranmasına olanak tanır. Bu, farklı sınıflarda, aynı adı taşıyan yöntemlerin farklı uygulamalarla kullanılmasıyla gerçekleştirilir. Çok biçimlilik, farklı sınıflardaki nesnelerin tek tip şekilde ele alınmasına izin vererek kodun esnekliğini ve genişletilebilirliğini artırır.
Tam örnek: "Figure" ve "Circle"/"Rectangle" sınıflarıyla polimorfizm
Nesne yönelimli programlama kullanarak farklı geometrik şekilleri modellemek istediğimizi varsayalım. Aşağıda PHP'de "Shape", "Circle" ve "Rectangle" sınıflarında polimorfizmin nasıl uygulanacağına dair eksiksiz bir örnek verilmiştir:
soyut sınıf Şekil {
// Alanı hesaplamak için soyut yöntem
soyut genel fonksiyon alanı hesapla();
}
sınıf Circle Şekil'i genişletir {
özel $radyo;
// Yapıcı
genel işlev __construct($radyo) {
$this->radyo = $radyo;
}
// Soyut yöntemin uygulanması
genel fonksiyon alanı hesapla() {
pi() * pow($this->radyo, 2); döndür
}
}
sınıf Dikdörtgen Şekil'i genişletir {
özel $taban;
özel $yükseklik;
// Yapıcı
genel işlev __construct($taban, $yükseklik) {
$this->taban = $taban;
$this->yükseklik = $yükseklik;
}
// Soyut yöntemin uygulanması
genel fonksiyon alanı hesapla() {
$this->base * $this->height değerini döndür;
}
}
// "Circle" ve "Rectangle" sınıflarının örneklerini oluşturun
$daire = yeni Daire(5);
$dikdörtgen = yeni Dikdörtgen(4, 6);
// Polimorfizmi kullanarak alanları hesapla
echo "Dairenin alanı: " . $daire->alanıhesapla() . «
";
echo "Dikdörtgen alanı: " . $dikdörtgen->alanhesapla();
Bu örnekte, soyut bir metot olan “calculateArea” ile soyut bir sınıf olan “Figure” oluşturduk. Daha sonra, “Shape” sınıfından miras alan ve “calculateArea” metodunun somut uygulamalarını sağlayan “Circle” ve “Rectangle” adlı iki sınıf oluşturduk. Circle ve Rectangle sınıflarını örneklendirip CalculateArea metodunu çağırarak her geometrik şeklin belirli alanını elde edebiliriz.
4. Soyutlama
Soyutlama, bir nesnenin temel özelliklerini belirleme ve o nesnenin basitleştirilmiş bir temsilini bir sınıf biçiminde oluşturma sürecidir. Soyutlama, gereksiz ayrıntıları gizleyerek ve ilgili yönlere odaklanarak karmaşıklığı yönetmeye yardımcı olur. Soyut sınıflar ve arayüzler, nesne yönelimli programlamada soyutlamayı gerçekleştirmek için kullanılan yaygın araçlardır.
PHP ile nesne yönelimli programlamanın eksiksiz örnekleri
Aşağıda PHP ile nesne yönelimli programlamanın bir dizi tamamlanmış örneğini sunuyoruz. Bu örnekler farklı kavramları kapsayacak ve PHP projelerinizde OOP'yi anlamanıza ve uygulamanıza yardımcı olacaktır.
1. Özellikler ve yöntemler içeren bir “Ürün” sınıfı oluşturma
sınıf Ürün {
özel $isim;
özel $fiyat;
genel fonksiyon __construct($name, $price) {
$this->isim = $isim;
$this->fiyat = $fiyat;
}
genel fonksiyon getName() {
$this->name'i döndür;
}
genel fonksiyon getPrice() {
$this->fiyat'ı döndür;
}
genel işlev showDetails() {
echo "İsim: " . $this->isim . «
";
echo "Fiyat: $" . $this->fiyat . «
";
}
}
$product = new Product("Tişört", 29.99);
$ürün->ayrıntıları göster();
Bu örnekte, "name" ve "price" özel özelliklerine sahip bir "Product" sınıfı oluşturduk. Sınıfın bir örneği oluşturulduğunda bu özelliklerin başlatılmasından kurucu sorumludur. Sınıfta ayrıca ürün adını ve fiyatını almak ve ürünün tüm ayrıntılarını görüntülemek için yöntemler de bulunmaktadır.
2. "Araç" ve "Otomobil" sınıfları arasındaki kalıtım
sınıf Araç {
korunan $marka;
genel işlev __construct($mark) {
$this->marka = $marka;
}
genel fonksiyon getBrand() {
$this->marka'yı döndür;
}
genel fonksiyon sürücü() {
echo "Aracı sürerken...";
}
}
sınıf Otomobil Araç'ı uzatır {
özel $model;
genel işlev __construct($marka, $model) {
ebeveyn::__construct($marka);
$this->model = $model;
}
genel fonksiyon getModel() {
$this->model'i döndür;
}
genel işlev showDetails() {
echo "İşaretle: " . $this->marka . «
";
echo "Model: " . $this->model . «
";
}
}
$otomobil = yeni Otomobil("Toyota", "Corolla");
$otomobil->detayları göster();
$araba->sürücü();
Bu örnekte, korumalı bir "make" özelliğine sahip "Vehicle" adlı bir sınıf ve aracı markasını alıp sürmek için yöntemler oluşturduk. Daha sonra, “Vehicle” sınıfından miras alan ve özel bir “model” özelliği ve arabanın tüm ayrıntılarını görüntüleyen bir yöntem ekleyen bir “Car” sınıfı oluşturduk. “Car” sınıfının bir örneğini oluşturarak hem ana sınıfın metotlarına hem de alt sınıfın belirli metotlarına erişebiliriz.
3. “Hayvan” ve “Kedi” sınıflarında polimorfizmi uygulama
soyut sınıf Hayvan {
korumalı $isim;
genel işlev __construct($name) {
$this->isim = $isim;
}
soyut genel fonksiyon makeSound();
}
sınıf Köpek Hayvanı genişletir {
genel fonksiyon makeSound() {
echo "Köpek havlıyor: Hav hav!";
}
}
sınıf Kedi Hayvanı genişletir {
genel fonksiyon makeSound() {
yankı «Kedi miyavlıyor: Miyav!»;
}
}
$köpek = new Köpek("Firulais");
$cat = new Kedi("Garfield");
$köpek->sesyap();
$cat->makeSound();
Bu örnekte, soyut bir “makeSound” metoduyla soyut bir “Animal” sınıfı oluşturduk. Daha sonra, “Animal” sınıfından miras alan ve “makeSound” metodunun belirli uygulamalarını sağlayan “Dog” ve “Cat” sınıflarını oluşturduk. “Köpek” ve “Kedi” sınıflarının örnekleri üzerinde “makeSound” metodunu çağırarak her hayvanın nasıl farklı bir ses çıkardığını görebiliriz.
4. “Ödeme” ve “PayPal” sınıflarında arayüzlerin kullanılması
arayüz Ödeme {
genel fonksiyon processPayment($tutar);
}
sınıf PayPal Ödemeyi uygular {
genel fonksiyon processPayment($tutar) {
echo "$ ödemesi işleniyor" . $miktar . » PayPal aracılığıyla…»;
}
}
sınıf CreditCard Ödemeyi uygular {
genel fonksiyon processPayment($tutar) {
echo "$ ödemesi işleniyor" . $miktar . »kredi kartı ile…»;
}
}
$paypal = yeni PayPal();
$kart = yeni KrediKartı();
$paypal->işlemÖdemesi(100);
$kart->işlemÖdemesi(50);
Bu örnekte, “processPayment” metoduyla bir “Ödeme” arayüzü oluşturduk. Daha sonra, “Payment” arayüzünü uygulayan ve “processPayment” metodunun belirli uygulamalarını sağlayan “PayPal” ve “CreditCard” sınıflarını oluşturduk. Bu sınıfların örnekleri üzerinde “processPayment” metodunu çağırarak farklı ödeme yöntemlerini kullanarak ödemeyi işleyebiliriz.
Bu örnekler size PHP'de nesne yönelimli programlamayı nasıl kullanabileceğinize dair bir fikir verecektir. PHP ile nesne yönelimli programlama becerilerinizi geliştirmek için daha fazla örnek keşfedin ve pratik yapın.
Sık sorulan sorular
PHP ile nesne yönelimli programlamanın avantajları nelerdir?
PHP ile nesne yönelimli programlama, kodun yeniden kullanılabilirliği, modülerlik, kod okunabilirliği ve sürdürülebilirliği ve nesneler ve nesneler arasındaki etkileşimler kullanılarak sorunların daha doğru bir şekilde modellenebilmesi gibi çeşitli avantajlar sunar. Ayrıca OOP, uygulama ve web sitelerinin geliştirilmesinde daha fazla esneklik ve genişletilebilirlik sağlar.
PHP ile programlama yapabilmek için nesne yönelimli programlamayı öğrenmek gerekli midir?
PHP ile programlama yapmak için mutlaka nesne yönelimli programlamayı öğrenmeniz gerekmez, zira PHP yapılandırılmış programlamayı da destekler. Ancak nesne yönelimli programlama, PHP uygulamaları ve web siteleri geliştirmede yaygın olarak kullanılıyor ve bu dili öğrenmek daha modüler, yeniden kullanılabilir ve sürdürülebilir kodlara kapı açacaktır.
Nesne yönelimli programlamada sınıf ile nesne arasındaki fark nedir?
Nesne yönelimli programlamada sınıf, kendisinden oluşturulan nesnelerin sahip olacağı ortak özellikleri ve yöntemleri tanımlayan bir şablon veya kalıptır. Öte yandan bir nesne, bir sınıfın kendine özgü özellikleri olan ve sınıfta tanımlanan yöntemleri çalıştırabilen belirli bir örneğidir.
PHP ile nesne yönelimli programlamada kalıtım ne zaman kullanılmalıdır?
Kalıtım, nesne yönelimli programlamada, var olan bir sınıfa dayalı yeni bir sınıf oluşturmak, sınıfın özelliklerini ve yöntemlerini miras almak ve ek işlevsellik eklemek veya var olan davranışı değiştirmek istediğinizde kullanılır. Kalıtım, kodun yeniden kullanılmasını ve sınıf hiyerarşilerinin oluşturulmasını sağlayarak kodun düzenlenmesini ve sürdürülmesini kolaylaştırır.
PHP'de soyut sınıf ile arayüz arasındaki fark nedir?
Soyut sınıf, doğrudan örneklenemeyen, ancak alt sınıflar oluşturmak için temel olarak kullanılan sınıftır. Somut uygulamaları olan yöntemleri ve alt sınıflar tarafından uygulanması gereken soyut yöntemleri içerebilir. Öte yandan bir arayüz, onu uygulayan herhangi bir sınıf tarafından uygulanması gereken soyut metotların bir koleksiyonudur. Bir sınıf birden fazla arayüzü uygulayabilir, ancak yalnızca bir soyut sınıftan miras alabilir.
Nesne yönelimli programlamada kapsüllemenin önemi nedir?
Kapsülleme, nesne yönelimli programlamada temel bir kavramdır, çünkü bir nesnenin iç ayrıntılarını gizlemenize ve onunla etkileşime girmek için yalnızca sınırlı bir arayüzü açığa çıkarmanıza olanak tanır. Bu, hassas verilerin korunmasına, nesne durumu tutarlılığının sağlanmasına ve kod okunabilirliğinin ve sürdürülebilirliğinin iyileştirilmesine yardımcı olur. Kapsülleme aynı zamanda kod evrimini de kolaylaştırır, çünkü bir nesnedeki dahili değişiklikler onunla etkileşimde bulunan diğer nesneleri etkilemez.
Sonuç
PHP ile nesne yönelimli programlama, uygulamalar ve web siteleri geliştirmek için güçlü ve esnek bir yaklaşımdır. Sınıfları, nesneleri, kalıtımı, çok biçimliliği ve soyutlamayı kullanarak modüler, yeniden kullanılabilir ve sürdürülebilir kod oluşturabilirsiniz. Bu yazıda, PHP ile nesne yönelimli programlamanın temel kavramlarını ele alarak ve bunların pratik uygulamalarını göstererek kapsamlı örneklerini inceledik. Umarız bu örnekler nesne yönelimli programlamayı anlamanıza ve PHP projelerinizde uygulamanıza yardımcı olmuştur!
Indeks
- 1 Giriş
- 2 Nesne yönelimli programlama nedir?
- 3 Nesne yönelimli programlamanın dört temel direği
- 4 PHP ile nesne yönelimli programlamanın eksiksiz örnekleri
- 5 Sık sorulan sorular
- 5.1 PHP ile nesne yönelimli programlamanın avantajları nelerdir?
- 5.2 PHP ile programlama yapabilmek için nesne yönelimli programlamayı öğrenmek gerekli midir?
- 5.3 Nesne yönelimli programlamada sınıf ile nesne arasındaki fark nedir?
- 5.4 PHP ile nesne yönelimli programlamada kalıtım ne zaman kullanılmalıdır?
- 5.5 PHP'de soyut sınıf ile arayüz arasındaki fark nedir?
- 5.6 Nesne yönelimli programlamada kapsüllemenin önemi nedir?
- 6 Sonuç