C#’ta Sınıf (Class) ve Nesne (Object) Kavramı

Nesne tabanlı programlama (Object Oriented Programming – OOP) kavramında kullanılan sınıf ve nesne kavramları, birbiriyle yakında ilişkilidir ve her şey bu iki olgu üzerine kurulmuştur.

Her bir nesne (object), bir sınıftan (class) türetilerek oluşturulmuştur. Sınıflar aracılığıyla yazılımlarımız daha modüler hale gelir. Yazılım güncelleme işlemleri daha kolay gerçekleştirilebilir ve aynı proje üzerinde birçok kişinin ortak çalışma ortamı daha kolay sağlanabilir.

“Nesneler Sınıflardan Türetilir”

Sınıf ile nesne arasındaki en net ilişki şu şekilde ortaya konmaktadır: “Nesneler sınıflardan türetilir.” Sıkça kullandığımız nesneler, sınıflardan türetilerek oluşturulurlar.

Yukarıdaki kullanım, sıkça karşılaştığımız yapıya benziyor. Bazı durumlarda sınıflara, daha nesne oluşturulurken parametre gönderilmesi gerekebilir. Bu durumda nesne oluştururken aşağıdaki şekilde bir kullanım gerçekleştirilir:

Yukarıdaki kullanımda nesne oluşturulurken  sınıfın kurucu metoduna “yeni” içerikli string bir değer gönderildi. Bu değeri karşılayabilen örnek sınıf şu şekildedir:

Sınıflarda Kurucu Metotlar

Bir kurucu metot, sınıf adıyla aynı ada sahip, public olarak erişilebilir bir yapıdadır. Parametre alma zorunluluğu yoktur. Bir sınıfın birden fazla tipte kurucu metodu da olabilir, buna metot aşırı yüklemesi (method overloading) denir. Metot aşırı yüklemesi ile çok şekillilik (polymorphism) sağlanabilir.

Yukarıdaki şekilde tanımlı bir sınıftan iki şekilde nesne türetmek mümkündür:

veya

Dikkat edilirse, metot tanımlarken metodun döndüreceği int, string gibi tipler veya değer döndürmüyorsa void olarak kullanılan anahtar kelimeler kurucu metotlarda kullanılmaz. Bunnu sebebi kurucu metodun yalnızca nesne türetilirken kullanılabilmesidir, dolayısıyla değer döndürme veya döndürmeme gibi bir amaç taşımamaktadır.

Temel Sınıf Bileşenleri

Sınıflar değişken olarak kullanılan alanlar, özellikler ve metotlardan oluşabilir. (Terminolojinin aksine, alan (field) terimi yerine değişken terimi kullanılacaktır.)

Yukarıda kurucu metodu olmayan bir sınıf örneği gösterilmiştir. Bu örnekte 3 temel yapı bulunmaktadır.

1. Değişkenler

Değişkenlerin sınıftaki görevleri yine aynı şekildedir: Değer tutmak… Değişkenlerin değer tutması dışında bu değeri kontrol edebilme veya mantıklı olup olmadığına karar verebilme yetiler yoktur. Kısacası kendi değer aralığı içinde olan her veriyi doğal olarak kabul eder ve taşıyabilir. Peki, int olarak tanımlı ve yaş tutan bir değişkene, 2 milyar gibi bir sayı girilmesi nasıl engellenir? Bunun için en kullanışlı yöntem, değişken gibi görünen ancak değişkene aktaracağımız içeriği kontrol edebildiğimiz özellikler kullanılabilir.

2. Özellikler (Properties)

Özellikler, değişkenlere çok benzerler. Tıpkı değişkenler gibi tipleri vardır. Ancak özellikten değer çekme veya değer aktarma gibi durumlarda bazı kısıtlamalar koyulabilir. Ayrıca özellikler değer tutamazlar, değişkenlere değer aktarır veya okurken kontrol mekanizması geliştirmemizi sağlarlar.

Değişken ve örnek arasındaki şu farka dikkat edilmelidir: Özellikler, get ve set blokları barındırabilir!

get bloğu ile bir özelliğin dışarıya aktardığı değerin kontrol edilmesi sağlanır. Eğer get bloğu yoksa, aşağıdaki bir kullanım mümkün olmayacaktır:

Ozellik olarak tanımlanan özelliğin dışarıya değer aktarabilmesi için get { … } bloğunun varlığı zorunludur.

Benzer şekilde, bir özelliği değiştirmek, ancak ve ancak içinde set { … } bloğu varsa mümkün olmaktadır. Bu sayede şu şekilde bir kullanım mümkün hale gelir:

3. Metotlar (Methods)

Metotlar, prosedürel programlamada kullanılan fonksiyonlara verilen isimdir. Değer döndüren metotların isminin önüne döndüreceği değer tipi yazılır. Eğer değer döndürmeyecekse void anahtar kelimesi kullanılır. İstenirse metodlara parametre dediğimiz değişkenler ile gönderilen verinin karşılanması da mümkündür.

Aşağıda int tipinde değer döndürüp hiç parametre kabul etmeyen metot örneği verilmiştir:

int tipinde değer döndürüp string tipinde parametre olarak veri kabul eden metot:

Değer döndürmeden string ve int tiplerinde parametre olarak veri kabul eden metot:

Değer döndürmeyen ve parametre kabul etmeyen metot:

Metotlar hakkında daha kapsamlı kullanım detayları “Metot Nedir? C#’te Metotlar ve Çeşitleri” başlıklı yazıda mevcuttur.

177
Oluşturulma tarihi: - Hürkal HÜSEM

Nesne Tabanlı Programlama Sınav Soruları

Sınıf ve nesne kavramları ile ilgili sınavlarda karşılaşılabilecek sorular

1 / 4

Nesneler, sınıflardan türetilir.

2 / 4

Aşağıdakilerden hangisi veya hangileri, sınıf içerisindeki özellik (property) bloğu içinde bulunabilir?

3 / 4

Parametre olarak belirtilen, dışarıdan değer alabilen yapı aşağıdakilerden hangisidir?

4 / 4

Kurucu metotlar için aşağıdakilerden hangisi yanlıştır?

Sonuç:

Ortalama puan 68%

0%

 

About Hürkal HÜSEM

2010 yılından bu yana Bilişim Teknolojileri Öğretmeni olarak meslek liselerinde görev yapmaktayım.

View all posts by Hürkal HÜSEM →

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.