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
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.
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.
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.
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.
- 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:
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.
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.
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.
- 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
- 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ştirclass Araba : Tasit{public override void HareketEt(){Console.WriteLine("Araba ilerliyor.");}}// Bisiklet sınıfı, Taşıt sınıfından türetilmiştirclass Bisiklet : Tasit{public override void HareketEt(){Console.WriteLine("Bisiklet pedallanıyor.");}}// Uçak sınıfı, Taşıt sınıfından türetilmiştirclass Ucak : Tasit{public override void HareketEt(){Console.WriteLine("Uçak havalandı.");}}class Program{static void Main(){// Farklı taşıt türlerini kullanmaTasit 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
Yorum Gönder