37 - Classlarla ilgili Temel Prensipler

SOYUTLAMA (Abstraction): Karmaşıklığın azaltılması anlamına gelir. Örneğin otomobillerde gaz pedalına basıldığında otomobil hızlanır ancak arka planda olan bitenler çoğu kişi için önemsizdir.

Günlük hayattan örnekler: 

  • akbili bastık arka plandaki kodları bilmiyoruz.
  • atm'de işlem yapmak
  • miktofon kullanma
  • benzin alış verişi
  1. Akıllı Bilet Kullanımı:

    • Soyutlama: Bir toplu taşıma aracında akıllı biletinizi okutduğunuzda, arka planda bu işlem için yazılmış kodları ve bilet kontrol sistemini düşünmezsiniz. Sadece kartınızı okutarak işleminizi halledersiniz.
  2. ATM İşlemleri:

    • Soyutlama: ATM'de işlem yaparken, hesap bakiyenizi kontrol eder, para çeker veya yatırırsınız. Ancak işlemlerin finansal sistem içindeki karmaşıklığı sizin için soyutlanmıştır. Sadece gerekli adımları takip edersiniz.
  3. Mikrofon Kullanımı:

    • Soyutlama: Bir mikrofon kullanırken, ses dalgalarının nasıl yakalandığını veya dijital sinyallere nasıl dönüştürüldüğünü düşünmezsiniz. Sadece konuştuğunuzda sesin kaydedildiğini veya yayınlandığını bilirsiniz.
  4. Benzin Alışverişi:

    • Soyutlama: Benzin istasyonunda yakıt alırken, pompaya basarak tankınızı doldurursunuz. Ancak benzinin nasıl işlendiği, depolandığı veya pompaya nasıl ulaştığı gibi teknik detaylar sizin için soyutlanmıştır. Sadece yakıt almanın basit bir süreç olduğunu bilirsiniz.
KAPSÜLLEME(Encapsulation)

Günlük hayattan örnekler: 
  • Sadece kamera çalışsın, 
  • telefon şifre girilmediği sürece açılmasın

Kapsülleme (encapsulation), nesne yönelimli programlamada bir nesnenin içerdiği verileri (alanlar) ve bu verilere ulaşmak için kullanılan metotları bir arada gruplamayı sağlayan bir kavramdır. Kapsülleme, nesne içindeki detayları gizleyerek, dışarıdan sadece belirli bir arayüzle etkileşime izin verir.

Kapsüllemenin temel prensipleri şunlardır:

  1. Veri Gizleme (Data Hiding): Bir nesnenin içerdiği verilere doğrudan erişimi kısıtlamak, sadece belirli metotlar aracılığıyla erişime izin vermek. Bu, nesnenin iç yapısının dışarıdan gizlenmesini sağlar ve nesnenin daha güvenli ve sürdürülebilir olmasına yardımcı olur.

  2. Metotlarla Erişim Kontrolü: Nesnenin içindeki verilere ulaşmak veya bu verileri değiştirmek için özel metotlar kullanarak, bu metotlar üzerinden gerekli kontrolleri yapmak. Bu, verilere güvenli ve kontrol edilmiş bir erişim sağlar.

  3. Sınıfların ve Nesnelerin Kullanımı: Kapsülleme, sınıfların ve nesnelerin kullanımını kolaylaştırır. Nesne, sınıf içindeki özelliklere ve metotlara erişerek işlevselliğini yerine getirir, ancak bu özelliklerin iç yapısı dışarıdan gizlenmiştir.

Örnek bir C# kodunda kapsülleme şu şekilde gösterilebilir:

public class Ogrenci { private string ad; private int yas; public void SetAd(string yeniAd) { // Ad değişkenine değer atama ad = yeniAd; } public string GetAd() { // Ad değişkenine erişim return ad; } public void SetYas(int yeniYas) { // Yas değişkenine değer atama yas = yeniYas; } public int GetYas() { // Yas değişkenine erişim return yas; } } class Program { static void Main() { Ogrenci ogrenci = new Ogrenci(); ogrenci.SetAd("Ahmet"); ogrenci.SetYas(20); Console.WriteLine($"Öğrenci Adı: {ogrenci.GetAd()}, Yaşı: {ogrenci.GetYas()}"); } }


Bu örnekte, Ogrenci sınıfında ad ve yaş değişkenleri özel (private) olarak tanımlanmıştır. Bu değişkenlere erişim ve bunları değiştirme işlemleri sınıf içindeki Set ve Get metotları aracılığıyla gerçekleştirilir. Bu sayede verilerin erişim ve değişimini kontrol edebiliriz.


soyutlama, karmaşıklığı gizleme prensibini ifade ederken; kapsülleme, nesnenin iç detaylarını gizleyerek dışarıdan erişimi kontrol etme prensibini ifade eder. Soyutlama, tasarımın sadece önemli özelliklere odaklanmasını sağlar, kapsülleme ise bu özelliklere kontrollü erişimi sağlar. 


KALITIM(Inheritance): Var olan özelliklerin aktarılması anlamına gelir. Örneğin bütün kedi türlerinin dört ayaklı olması ortak bir özelliktir. Bir Van kedisi, kedilerin tüm özelliklerini taşırken ayrıca kendine has özellikleri de barındırır.

    Günlük hayattan örnekler : 
  • Kedigiller
    • kaplan : aynı: davranışlar,etobur
      • çizgiler farklı
      • güçlü
      • kemik yapısı
      • çevikliği
    • kedi: aynı: davranışlar,etobur
      • tüyler
      • ebatı farklı
      • evcil
ÇOK BİÇİMLİLİK (Polymorphism): Çok biçimlilik (polimorfizm), aynı isme sahip ancak farklı davranışlara sahip olan nesnelerin kullanılabilmesine olanak tanıyan bir nesne yönelimli programlama konseptidir. Günlük hayattan bir örnek olarak, bir "Taşıt" sınıfını düşünelim. Bu sınıf, genel bir taşıtı temsil eder. Ancak, farklı taşıt türleri (araba, bisiklet, uçak) bu genel taşıt sınıfından türemiş olabilir.

  • using System;

    // Genel Taşıt sınıfı
    class Tasit
    {
        public virtual void HareketEt()
        {
            Console.WriteLine("Taşıt hareket ediyor.");
        }
    }

    // Araba sınıfı, Taşıt sınıfından türetilmiştir
    class Araba : Tasit
    {
        public override void HareketEt()
        {
            Console.WriteLine("Araba ilerliyor.");
        }
    }

    // Bisiklet sınıfı, Taşıt sınıfından türetilmiştir
    class Bisiklet : Tasit
    {
        public override void HareketEt()
        {
            Console.WriteLine("Bisiklet pedallanıyor.");
        }
    }

    // Uçak sınıfı, Taşıt sınıfından türetilmiştir
    class Ucak : Tasit
    {
        public override void HareketEt()
        {
            Console.WriteLine("Uçak havalandı.");
        }
    }

    class Program
    {
        static void Main()
        {
            // Farklı taşıt türlerini kullanma
            Tasit araba = new Araba();
            Tasit bisiklet = new Bisiklet();
            Tasit ucak = new Ucak();

            TaşıtHareketEttir(araba);
            TaşıtHareketEttir(bisiklet);
            TaşıtHareketEttir(ucak);
        }

        static void TaşıtHareketEttir(Tasit tasit)
        {
            tasit.HareketEt();
        }
    }

Yorumlar

Bu blogdaki popüler yayınlar

14 - Dizi Oluşturma, Değer Atama

12 - Bir Boyutlu Diziler - Çalışma Soruları

27 - Koleksiyonlar: ArrayList()