By_Nimetullah
- 10 Şub 2023
- 1,718 Mesaj
Aktiflik
Seviye
Deneyim
Herkese merhaba.
Nesne Yönelimli Programlama, yazılımla uğraşan herkesin bilmesi gereken en önemli konulardan biridir. İlk olarak başlamak gerekirse, bu programlama yaklaşımında her şeyi bir nesne olarak ele alırız. Örneğin, bir araba düşünelim ve bu arabanın özellikleri olsun: rengi, modeli vb. Programımızda kullanılacak bu arabanın özelliklerini bir sınıf içinde tanımlarız. Sonrasında, o sınıfı hangi sınıflarda kullanacaksak, orada bir nesne örneğini alırız. Böylece her seferinde değişkenleri tanımlamaktan ve kodu uzatmaktan kurtuluruz. Bu programlama yaklaşımını kullanarak maliyeti, zamanı ve çabayı azaltırız. Peki, nedir bu nesne yönelimli programlama ve bize sağladığı faydalar nelerdir?
public: Bir özelliği public olarak tanımlayarak, o özelliğe herhangi bir yerden erişilebilir olmasını sağlarız.
protected: Bir özelliği protected olarak tanımlamak, o özelliğe bulunduğu sınıf ve ondan türetilen diğer sınıflar içinden erişilebilir olmasını sağlar.
internal: Bir özelliği internal olarak tanımlamak, aynı program içerisinden erişilebilir, fakat farklı bir program içerisinden erişilemez olmasını sağlar.
Bu erişim belirleyicileri, bir sınıfın içindeki özelliklerin ve metotların hangi düzeyde erişilebilir olacağını kontrol etmek için kullanılır.
c# dilinde Inheritance (Kalıtım) ve Polymorphism (Çokbiçimlilik) örneği :
Nesne Yönelimli Programlama, yazılımla uğraşan herkesin bilmesi gereken en önemli konulardan biridir. İlk olarak başlamak gerekirse, bu programlama yaklaşımında her şeyi bir nesne olarak ele alırız. Örneğin, bir araba düşünelim ve bu arabanın özellikleri olsun: rengi, modeli vb. Programımızda kullanılacak bu arabanın özelliklerini bir sınıf içinde tanımlarız. Sonrasında, o sınıfı hangi sınıflarda kullanacaksak, orada bir nesne örneğini alırız. Böylece her seferinde değişkenleri tanımlamaktan ve kodu uzatmaktan kurtuluruz. Bu programlama yaklaşımını kullanarak maliyeti, zamanı ve çabayı azaltırız. Peki, nedir bu nesne yönelimli programlama ve bize sağladığı faydalar nelerdir?
Nesne Yönelimli Programlamanın Faydaları
- Sadece bir sınıf oluştururuz ve projemizin geri kalan tüm dosyalarında o sınıfı kullanabiliriz.
- Sınıfın bir kez yazılması sayesinde gereken maliyeti, zamanı ve çabayı azaltıyoruz.
- Sınıflar sayesinde eğer bir değişiklik yapmak istersek, sadece o sınıfta değişiklik yapmamız yeterli oluyor
Sınıf Nedir?
Değişkenler ve metotları bir başlık altında saklayan bir sistemdir. Örnek olarak daha önce bahsettiğim araba sınıfının C# dilinde yazılmış bir örneği:
C#:
public class Araba
{
public string Renk { get; set; }
public string Model { get; set; }
public int Fiyat { get; set; }
public void Calistir()
{
Console.WriteLine("Araba çalıştı");
}
public void Durdur()
{
Console.WriteLine("Araba durdu");
}
}
Nesne Yönelimli Programlamanın Özellikleri Nelerdir?
Birçok özelliği vardır. Bunlardan dört temel özelliği şunlardır:- Inheritance (Kalıtım): Kalıtım, bir sınıfın başka bir sınıftan özelliklerini ve davranışlarını miras almasını sağlar. Miras alınan sınıf, temel özellikleri kalıtım yapan sınıf tarafından kullanılabilir ve bu sayede kodun tekrarını önler. Alt sınıflar, üst sınıflardan gelen özellikleri genişletebilir veya üzerine ek özellikler ekleyebilir.
- Polymorphism (Çokbiçimlilik): Polimorfizm, aynı isme sahip metotların farklı şekillerde çalışabilmesini ifade eder. Yani aynı isimli metotlar farklı sınıflar tarafından farklı şekillerde uygulanabilir. Bu sayede, aynı türden farklı nesneleri bir arada kullanmak ve bu nesnelerin farklı davranışlarını yönetmek mümkün olur.
- Abstraction (Soyutlama): Soyutlama, karmaşık sistemleri basitleştirmek ve sadece gerekli olan bilgileri ortaya çıkarmak amacıyla kullanılır. Soyutlama, bir sınıfın yalnızca gerekli özelliklerini ve davranışlarını belirtirken diğer detayları gizler. Bu sayede, programcılar karmaşık sistemleri daha kolay anlayabilir ve kullanabilir.
- Encapsulation (Kapsülleme): Nesne yönelimli programlamada, veri ve ilgili işlevselliği bir araya getirerek kapsülleme sağlanır. Bir sınıf içinde değişkenler ve bu değişkenlere erişimi kontrol eden metotlar (get/set) bir arada bulunur. Bu sayede verilerin gizliliği korunur ve dışarıdan doğrudan erişim engellenir.Kapsülleme sayesinde, bir sınıfta tasarladığımız özelliklerin hangi sınıflarda kullanılabileceğini kontrol edebiliriz. Örneğin, bir özelliği private olarak tanımlayarak sadece o sınıf içinde kullanılmasını sağlayabiliriz. Bunun için programlama diline göre erişim belirleyicilerini kullanmamız gerekir. C# dilindeki erişim belirleyiciler şunlardır:
public: Bir özelliği public olarak tanımlayarak, o özelliğe herhangi bir yerden erişilebilir olmasını sağlarız.
protected: Bir özelliği protected olarak tanımlamak, o özelliğe bulunduğu sınıf ve ondan türetilen diğer sınıflar içinden erişilebilir olmasını sağlar.
internal: Bir özelliği internal olarak tanımlamak, aynı program içerisinden erişilebilir, fakat farklı bir program içerisinden erişilemez olmasını sağlar.
Bu erişim belirleyicileri, bir sınıfın içindeki özelliklerin ve metotların hangi düzeyde erişilebilir olacağını kontrol etmek için kullanılır.
c# dilinde Inheritance (Kalıtım) ve Polymorphism (Çokbiçimlilik) örneği :
C#:
public class Araba
{
public string Renk { get; set; }
public string Model { get; set; }
public int Fiyat { get; set; }
public virtual void Calistir()
{
Console.WriteLine("Araba çalıştı");
}
public virtual void Durdur()
{
Console.WriteLine("Araba durdu");
}
}
public class Otomobil : Araba
{
public override void Calistir()
{
Console.WriteLine("Otomobil çalıştı");
}
public override void Durdur()
{
Console.WriteLine("Otomobil durdu");
}
}
public class Kamyon : Araba
{
public override void Calistir()
{
Console.WriteLine("Kamyon çalıştı");
}
public override void Durdur()
{
Console.WriteLine("Kamyon durdu");
}
}
class Program
{
static void Main(string[] args)
{
Araba araba1 = new Otomobil();
Araba araba2 = new Kamyon();
araba1.Calistir(); // Otomobil çalıştı
araba2.Calistir(); // Kamyon çalıştı
araba1.Durdur(); // Otomobil durdu
araba2.Durdur(); // Kamyon durdu
}
}
