mavzermete 1
mavzermete
darkbey42 1
darkbey42
xranzei 1
xranzei
Bvural41 1
Bvural41
PrimeAC 1
PrimeAC
Payidar2 1
Payidar2
Fethi Polat 1
Fethi Polat
Wizard' 1
Wizard'
shrpnl 1
shrpnl
Queinn 1
Queinn
NovaLst 1
NovaLst
InfernoShade 1
InfernoShade
Hikaye Ekle

Nesneye Yönelik Programlama (OOP) nedir?

  • Konuyu başlatan Konuyu başlatan ITJA
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 6
  • Görüntüleme Görüntüleme 746

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Nesneye Yönelik Programlama (OOP), işlevler ve prosedürler etrafında dönen prosedürel dillerin aksine, nesneler ve sınıflar etrafında kod düzenleyen popüler bir programlama modelidir .

Programcılar, sorunu çözmek için gereken prosedürler yerine bir sorunun nesnelerine odaklanarak, daha kolay sürdürülebilen karmaşık yapılandırılmış projeleri hızla oluşturabilirler . Bu göz önüne alındığında, OOP'nin hızla en popüler programlama paradigması haline gelmesi şaşırtıcı değil.

Bu paradigmanın yeteneklerini gerçekten bilmek için, ne olduğunu, neleri içerdiğini ve Nesne Yönelimli Programlamanın avantajlarını bilmek önemlidir. Gelin bu konuyu inceleyelim ve projelerinizde OOP'yi neden kullanmanız gerektiğini öğrenelim.

OOP'nin 3 ilkesi nedir?

Nesne yönelimli programlamanın ilkeleri

1. Miras

Sınıflar diğer sınıflardan miras alabilir. Bu durumda, diğerinden miras alınan sınıfa çocuk, ebeveynden miras alınan sınıfa ise çocuk adı verilir. Bu, OOP'de kodun yeniden kullanılabilirliğini sağlayan ana mekanizmadır.

Bir sınıfın herhangi bir sayıda çocuğu olabilir ve sahip olmanız gereken ayrıntı düzeyi, projenin ihtiyaçlarına bağlı olacaktır.

JavaScript gibi bazı diller, Prototyping biçiminde benzer bir yöntem kullanır . Prototipler, türetilecek diğer nesnelerden bir temel olarak kullanılabilir.

2. Kapsülleme

Kapsülleme, işlev görmesi için büyük ölçüde Soyutlamaya bağlıdır . Soyutlama, bir sınıfla ilgili tüm bilgilerin sınıf içinde bulunması gerektiğini tanımlar. Ayrıca, nesneler yalnızca dış nesnelerle ilgili bilgileri dışsallaştırmalı ve diğer tüm bilgileri dahili kullanım için gizlemelidir.

Dış nesnelerin bir nesnenin iç işleyişini değiştirmesine izin vermemeli, böylece sınıflarınızı ve kodunuzu kullanacak diğer programcıların hatalarından kaçınmalısınız . Nesnenin durumunu değiştiren değişkenlere ve yöntemlere sahip olabilirsiniz, ancak bu değişiklikler dış nesnelere karşı opak olmalıdır.

Kapsülleme daha sonra, bir sınıfın değişkenlerinin ve yöntemlerinin "tüm diğer nesneler tarafından kullanılabilir" ( genel ), "alt sınıflarım tarafından kullanılabilir" ( korumalı ) ve "yalnızca benim sınıfım tarafından kullanılabilir " gibi dış nesnelere erişilebilirliğini tanımlayarak Soyutlamayı zorlar. ”( özel ). Bununla, programcılar hangi bilgilerin görünür olduğunu kontrol edebilir ve dış nesneler tarafından manipüle edilebilir.

3. Polimorfizm

Polimorfizm, nesneleriniz türettikleri sınıfa göre davranışlarını değiştirdiğinde ortaya çıkar. Bu genellikle nesneleriniz aynı kalıtım ağacına ait olduğunda ve çocuğun yöntemleri ebeveynlerine aşırı yüklendiğinde ortaya çıkar.

Nesneye Yönelik Programlama Dili Nedir?

Günümüzde birçok dil, nesne ve sınıf kavramını desteklemektedir ve bu nedenle OOP projeleri geliştirmek için kullanılabilir. Yaygın ve popüler örnekler şunları içerir:

Örneklerle Nesne Yönelimli Programlama Nedir?

Artık OOP'nin ne olduğunu ve sütunlarının nasıl çalıştığını nasıl tanımladığını bildiğimize göre, bu kavramların bir örneğine bakmanın zamanı geldi. Bunu yapmak için bir C# örneği kullanacağız. Animal sınıfını ve içeriğini tanımlayarak başlayalım:

C#:
class Animal{
    int age;
    
    // Constructor
    Animal(){
    
    }
    
    // Destructor
    ~Animal(){
        Console.WriteLine("The animal was destroyed.");
    }
    
    
    void Move(){
        Console.WriteLine("The animal moves.");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Animal animal = new Animal();
        animal.Move();
    }
}

Ancak bu kod bir hata üretecektir. C#'ta, yapıcılar dahil tüm işlevlerin erişim değiştiricilerine sahip olması gerekir veya özel olarak kabul edilir. Bu, Program sınıfının Animal'ın yapıcısını çağıramayacağı anlamına gelir. Encapsulation kavramıyla bunu düzeltelim .

C#:
public class Animal{
    private int _age;
    
    // Constructor
    public Animal(){
        _age = 0;
    }
    
    // Destructor
    // Destructors are special in that they do not need access keywords.
    ~Animal(){
        Console.WriteLine("The animal was destroyed.");
    }
    
    public int GetHumanAge(){
        return _age;
    }
    
    public void Move(){
        Console.WriteLine("The animal moves.");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Animal animal = new Animal();
        animal.Move();
    }
}

Animal'ın yapıcısını public olarak ayarladığımıza göre, artık düzgün çalışıyor.

The animal moves.
Kodumuza biraz karmaşıklık ekleme zamanı. Animal sınıfından miras alacak üç farklı hayvan türü tanımlayalım :

C#:
public class Animal{
    private int _age;
    
    // Constructor
    public Animal(){
        _age = 0;
    }
    
    // Destructor
    // Destructors are special in that they do not need access keywords.
    ~Animal(){
        Console.WriteLine("The animal was destroyed.");
    }
    
    public int GetHumanAge(){
        return _age;
    }
    
    public void Move(){
        Console.WriteLine("The animal moves.");
    }
}

public class Person : Animal(){

}

public class Dog : Animal(){

}

public class Fish : Animal(){

}

class Program
{
    static void Main(string[] args)
    {
        Animal animal = new Animal();
        animal.Move();
        
        Person person = new Person();
        person.Move();

        Dog dog = new Dog();
        dog.Move();
        
        Fish fish = new Fish();
        fish.Move();
    }
}

Ancak alt sınıflarımızda belirli bir davranışı yeniden tanımlamadığımız için, üst sınıfın davranışını otomatik olarak benimserler:

The animal moves.
The animal moves.
The animal moves.
The animal moves.
Bunu değiştirelim. Polimorfizme izin vermek için metot aşırı yüklemesini tanımlamamız gerekecek . C#'da bu, virtual ve override anahtar sözcükleri aracılığıyla gerçekleştirilir. Alt sınıflarımızda _age değişkeninin kullanımına izin vermek için, onu private yerine korumalı olarak ayarlamamız gerekecek.

C#:
public class Animal{
    protected int Age;
    
    // Constructor
    public Animal(){
        Age = 0;
    }
    
    // Destructor
    // Destructors are special in that they do not need access keywords.
    ~Animal(){
        Console.WriteLine("The animal was destroyed.");
    }
    
    public virtual int GetHumanAge(){
        return Age;
    }
    
    public virtual void Move(){
        Console.WriteLine("The animal moves.");
    }
}

public class Person : Animal(){
    public override void Move(){
        Console.WriteLine("The person walks.");
    }
}

public class Dog : Animal(){
    public override int GetHumanAge(){
        int finalAge = 0;
        if(Age >= 1){ finalAge += 15; }
        if(Age >= 2){ finalAge += 9; }
        if(Age >= 3){ finalAge += 5 * (Age - 2);}
        return finalAge;
    }

    public override void Move(){
        Console.WriteLine("The dog trots.");
    }
}

public class Fish : Animal(){
    public override void Move(){
        Console.WriteLine("The fish swims.");
    }
}


class Program
{
    static void Main(string[] args)
    {
        Animal animal = new Animal();
        animal.Move();
        
        Person person = new Person();
        person.Move();

        Dog dog = new Dog();
        dog.Move();
        
        Fish fish = new Fish();
        fish.Move();
    }
}

Artık her hayvan, istendiğinde farklı bir hareket türü gösterecek:

The animal moves.
The person walks.
The dog trots.
The fish swims.

Nesne Yönelimli Geliştirme Yöntemlerinin Faydaları

Herhangi bir projeye OOP gibi bir programlama paradigmasını benimsemek istiyorsanız , avantajlarını ve dezavantajlarını bilmek önemlidir. OOP'nin faydaları, bir projenin bir araya gelmesine kolayca yardımcı olabilir, ancak doğru bağlamda kullanmamak projenizi gereksiz yere şişirebilir.

OOP Avantajları

  • Problem Bölümleme : OOP, programcıların problemleri kolayca çözülebilene kadar daha küçük problemlere bölmelerine izin verir. Sıfırdan yazılım geliştiriyorsunuz.
  • Kolay Genişletme : Bir önceki noktada genişleyen OOP projeleri, yeni sınıfların ve yöntemlerin entegrasyonu yoluyla işlevlerini genişletebilir.
  • Daha İyi Problem Haritalama : OOP, programcıların problemin konularını nesnelere yaklaştırmasına ve kodlarının içindeki gerçek problem için güçlü bir metafor oluşturmasına olanak tanır.
  • Artırılmış Güvenlik : İyi kapsülleme ilkelerini teşvik ederek, programlama ekibinin hatalarından kaçınırken aynı zamanda projenin genel güvenliğini artırırsınız.
  • Artan Kod Yeniden Kullanılabilirliği : Kalıtımı tanıtarak, kodunuzun birkaç sınıf arasında yeniden kullanılabilir olmasını sağlayarak geliştirme süresini ve olası hataları azaltırsınız. Ayrıca, programcılar kitaplıkları kullanarak ortak kodu projeler arasında kolayca paylaşabilirler.

OOP'nin Dezavantajları

  • Performans : OOP'nin çalışması için gereken nesnelerin miktarı, bir projeyi prosedürel bir yaklaşıma kıyasla şişirecektir. Bu kaçınılmaz olarak daha büyük program boyutlarına ve daha yavaş yürütme sürelerine yol açacaktır.
  • Planlama gerektirir : OOP kullanarak programlama yaparken, sorunları önlemek ve daha sonra her şeyi yeniden yapılandırmak için başlangıçta mimarinizin tasarımını iyi kavramanız zorunludur.

Çözüm

OOP, geliştiricileri bir projeyi organize etmek ve yapılandırmak için iyi bir yolla güçlendirerek yazılım oluşturmak için mükemmel bir yöntemdir. Mevcut pazarın düzenli güncellemeler talep etmesiyle, OOP, bir projenin genişlemeye devam etmesi için doğal büyümeye izin vermek için en iyi konumdadır.
 

En Çok Reaksiyon Alan Mesajlar

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst