OOP nedir ?
OOP nedir ?

OOP, yani Object-Oriented Programming (Nesne Yönelimli Programlama), bir programlama paradigmasıdır.

OOP, programlama problemlerini nesneler (objects) olarak ele alır ve bu nesneler arasındaki ilişkileri ve etkileşimleri tanımlar.

OOP, programlama sürecini daha modüler ve esnek hale getirir. Nesneler, programlama problemlerine doğrudan uyan bileşenleri temsil eder ve bu bileşenler birbirleriyle etkileşim içinde çalışabilir. Bu, bir programın daha kolay anlaşılmasını, bakımını ve genişletilmesini sağlar.

OOP'ye ait temel kavramlar arasında sınıflar (classes), nesneler (objects), kalıtım (inheritance), çok biçimlilik (polymorphism) ve kapsülleme (encapsulation) yer alır.

Sınıflar, bir nesnenin özelliklerini ve davranışlarını tanımlar. Nesneler, bir sınıftan türetilen bir örnektir ve sınıfın özelliklerini ve davranışlarını sergiler. Kalıtım, bir sınıfın özelliklerini ve davranışlarını başka bir sınıfa aktarırken, çok biçimlilik, bir nesnenin farklı durumlarda farklı davranışlar sergileyebilmesini sağlar. Kapsülleme ise, bir nesnenin özelliklerinin ve davranışlarının dış dünyadan saklanmasını ve sadece belirlenmiş bir arabirimle erişilebilmesini sağlar.

OOP, özellikle büyük, karmaşık programların geliştirilmesi için ideal bir yaklaşımdır. Ancak, doğru kullanılmazsa veya gereksiz yere kullanılırsa, programın performansını etkileyebilir veya gereksiz karmaşıklığa neden olabilir.

 

+-----------------+
|   BankAccount   |
+-----------------+
| - accountNumber |
| - balance       |
| - owner         |
+-----------------+
| + deposit(amount: float)   |
| + withdraw(amount: float)  |
| + getBalance() -> float    |
| + transfer(toAccount: BankAccount, amount: float) |
+-----------------+

Bu diyagramda, BankAccount adında bir sınıf tanımlanmıştır. Bu sınıfın üç özelliği (accountNumber, balance, owner) ve dört metodu (deposit, withdraw, getBalance, transfer) vardır.

Özelliklerin önünde - işareti vardır, bu da özelliklerin özel (private) olduğunu belirtir. Metodların önünde + işareti vardır, bu da metodların kamuya açık (public) olduğunu belirtir.

deposit, withdraw, getBalance ve transfer metodları, BankAccount sınıfının müşterilerinin hesaplarını yönetmek için kullanılabilir. Örneğin, deposit metodu bir hesaba para yatırmak için kullanılırken, withdraw metodu bir hesaptan para çekmek için kullanılabilir. transfer metodu ise, bir hesaptan diğerine para transferi yapmak için kullanılabilir.

Bu diyagram, BankAccount sınıfının özelliklerini ve davranışlarını açıklayan basit bir örnektir. Gerçek dünyadaki programlarda, sınıflar ve metodlar çok daha karmaşık ve sayıca daha fazla olabilir.

 

BankAccount sınıfının C# kodu aşağıdaki gibi olabilir:

public class BankAccount 
{
    private int accountNumber;
    private float balance;
    private string owner;
    
    public BankAccount(int accountNumber, float balance, string owner)
    {
        this.accountNumber = accountNumber;
        this.balance = balance;
        this.owner = owner;
    }

    public void Deposit(float amount) 
    {
        balance += amount;
    }

    public void Withdraw(float amount)
    {
        if (balance >= amount)
        {
            balance -= amount;
        }
        else
        {
            throw new Exception("Insufficient funds");
        }
    }

    public float GetBalance()
    {
        return balance;
    }

    public void Transfer(BankAccount toAccount, float amount)
    {
        if (balance >= amount)
        {
            Withdraw(amount);
            toAccount.Deposit(amount);
        }
        else
        {
            throw new Exception("Insufficient funds");
        }
    }
}