Advanged Issues in Classes
Advanced Programming
Gelişmiş Programlama dersinde, sınıflarla ilgili ileri düzey konuları ele alacağız. Bu süreçte, Set sınıfı adını verdiğimiz özel bir sınıfı kullanarak örnekleri uygulamalı olarak inceleyeceğiz. Bu sınıf, öğrendiğimiz kavramları pekiştirmek için bize bir temel sağlayacak.
Set Sınıfının Açıklaması
Set sınıfı, bizim tarafımızdan yazılmış özel bir sınıftır ve ileri düzey sınıf konularını örneklendirmek için kullanılacaktır. Bu sınıf üzerinden farklı özellikleri ve kavramları uygulamalı olarak göreceğiz. Öğreneceğimiz her şeyi bu sınıfın yapısı ve işlevleri üzerinden pratik edeceğiz.
Constructor'lar
Constructor (yapıcı) fonksiyonlar, bir sınıftan nesne oluşturulduğunda otomatik olarak çağrılan özel fonksiyonlardır. İki tür constructor'ı inceleyeceğiz:
- Default Constructor: Parametresiz olarak nesne oluşturmayı sağlar.
- Parametrik Constructor: Nesnenin başlangıç değerlerini belirlemek için parametreler alır.
Constructor'lar sayesinde nesnelerimize başlangıç değerleri atayabilir ve istenilen şekilde başlatabiliriz.
Destructor'lar
Destructor (yıkıcı) fonksiyonlar, bir nesnenin ömrü sona erdiğinde otomatik olarak çağrılan özel fonksiyonlardır. Özellikle dinamik bellek yönetiminde, bellekte kullanılan alanların serbest bırakılması için önemlidirler. Destructor'lar sayesinde bellek sızıntılarının önüne geçebiliriz.
~Set() {
// Temizleme işlemleri
}
Yukarıdaki örnekte, ~Set()
bizim destructor fonksiyonumuzu temsil etmektedir.
Shallow Copy ve Deep Copy
Kopyalama işlemleri sırasında nesnelerin içeriğinin nasıl kopyalandığı önemlidir:
-
Shallow Copy: Nesnenin sadece üst düzey bilgileri kopyalanır. Alt nesneler veya dinamik olarak tahsis edilen bellek alanları kopyalanmaz.
-
Deep Copy: Nesnenin tüm içeriği, alt nesneler ve dinamik bellek alanları dahil olmak üzere tamamen kopyalanır.
Shallow Copy, bazı durumlarda beklenmeyen davranışlara yol açabilir. Örneğin, bir nesnenin dinamik olarak tahsis edilmiş bir dizisi varsa ve sadece adresi kopyalanırsa, farklı nesneler aynı belleği paylaşabilir ve bu da sorunlara neden olabilir. Deep Copy ile bu sorunların önüne geçilir.
Operator Overloading
Operator Overloading (Operatör Aşırı Yükleme), sınıflarımıza standart operatörlerin yeni anlamlar kazanmasını sağlar. Böylece, nesnelerimizle matematiksel ve mantıksal işlemleri doğrudan yapabiliriz.
Örneğin, +
operatörünü aşırı yükleyerek iki Set nesnesini birleştirebiliriz:
Set Set::operator+(const Set &other) {
// Birleştirme işlemleri
}
Friend ve This Kullanımları
Friend anahtar kelimesi, bir fonksiyona veya başka bir sınıfa, private
ve protected
üyelerimize erişim izni verir. Bu, iki sınıf arasında yakın bir ilişki kurmak istediğimizde kullanışlıdır.
friend Set operator+(const Set &s1, const Set &s2);
This işaretçisi, içinde bulunduğumuz nesneyi işaret eder. Özellikle metotlarımızda, nesnenin kendi üyelerine erişmek veya geri dönüş değeri olarak kendimizi döndürmek istediğimizde kullanılır.
Set& Set::operator+=(const Set &other) {
// Kendi üyelerimizi güncelle
return *this;
}
Bu örnekte, *this
ifadesi, mevcut nesnenin referansını döndürmektedir.
Sonuç
Bu bölümde, sınıflarla ilgili ileri düzey konuları inceledik. Set sınıfı üzerinden constructor'ları, destructor'ları, shallow copy ve deep copy farkını gördük. Ayrıca, operator overloading ile operatörleri nasıl aşırı yükleyebileceğimizi ve bu süreçte friend ve this kullanımını öğrendik. Bu kavramlar, nesne yönelimli programlamada daha esnek ve güçlü sınıflar yazmamızı sağlayacaktır.
Unicourse ile sınavlardan istediğin notları al.
Türkiye'nin en iyi üniversitelerinden 20.000'den fazla öğrenci sınavlarına Unicourse ile hazırlanıyor. Sen de aramıza katıl.