Junior
Nesne yönelimli programlamanın (OOP) ilkeleri hakkında bilgi verin.
sobes.tech yapay zeka
AI'dan gelen yanıt
Nesne yönelimli programlama (OOP), dört temel ilke üzerine kuruludur:
-
Kapsülleme: Veriler (özellikler) ve bu verilerle çalışan metodların (fonksiyonların) tek bir nesne içinde birleştirilmesi. Bu, uygulama detaylarını gizler ve kontrollü erişim sağlar.
<?php class BankAccount { private float $balance = 0; // Gizli veriler public function deposit(float $amount): void { // Erişim sağlayan metodlar if ($amount > 0) { $this->balance += $amount; } } public function getBalance(): float { return $this->balance; } } ?> -
Soyutlama: Bir nesnenin temel özelliklerini vurgulama ve önemsiz detayları gizleme. Gerçek dünyanın basitleştirilmiş bir modeli.
<?php abstract class Shape { // Soyut sınıf abstract public function area(): float; // Soyut metod // Somut metodlar da olabilir: public function getDescription(): string { return "This is a shape."; } } class Circle extends Shape { private float $radius; public function __construct(float $radius) { $this->radius = $radius; } public function area(): float { // Soyut metodun uygulanması return M_PI * $this->radius * $this->radius; } } ?> -
Kalıtım: Var olan bir sınıf (ebeveyn) temel alınarak yeni bir sınıf (çocuk) oluşturma ve özellikleri ile metodları miras alma. Bu, kodun tekrar kullanılmasını teşvik eder.
<?php class Animal { protected string $name; public function __construct(string $name) { $this->name = $name; } public function eat(): void { echo "{$this->name} is eating.\n"; } } class Dog extends Animal { // Dog, Animal'den kalıtım alır public function bark(): void { echo "{$this->name} says Woof!\n"; } } $dog = new Dog("Buddy"); $dog->eat(); // Miras alınan metodu kullanma $dog->bark(); ?> -
Çok Biçimlilik: Farklı sınıflardan nesnelerin, aynı metod çağrısına farklı şekillerde yanıt verme yeteneği. "Çok biçim".
<?php interface Speakable { // Çok biçimlilik örneği için arayüz public function speak(): void; } class Cat implements Speakable { public function speak(): void { echo "Meow!\n"; } } class Duck implements Speakable { public function speak(): void { echo "Quack!\n"; } } function makeSound(Speakable $animal): void { // Farklı nesne tiplerini kabul eden fonksiyon $animal->speak(); // Aynı metodun çağrısı } $cat = new Cat(); $duck = new Duck(); makeSound($cat); // Cat::speak() metodunun çağrısı makeSound($duck); // Duck::speak() metodunun çağrısı ?>