C++ programlama dilinde sınıflar, verileri ve operasyonları bir arada toplayarak daha anlaşılır bir yapı sunar Sınıf fonksiyonları, sınıfın özelliklerine göre davranışlar belirler ve parametre/geçirme işlemleriyle esneklik sağlar Kurucu fonksiyonlar, obje oluşturma işlemlerini yönetir ve parametreli versiyonları özellik atama imkanı sağlar Sınıflarda parametre kullanımı ve geri dönüş değeri dikkatli seçilmeli, iyi tasarlanmış bir sınıf programlama sürecini kolaylaştırır
C++ programlama dilinde sınıflar, nesne yönelimli programlamanın temel yapı taşlarından biridir. Sınıflar, verileri ve bunlar üzerinde operasyonları bir arada toplayarak daha anlaşılır ve yönetilebilir bir programlama yapısı sunar. Sınıflarda veri işlemlerinin yapılabilmesi için, parametre geçirme ve geri döndürme işlemlerinin doğru bir şekilde kullanılması önemlidir.
Parametre geçirme, sınıf içindeki fonksiyonlara dışarıdan veri girişi yapılabilmesine imkan tanır. Bu veriler, fonksiyonlar içinde farklı hesaplamalarda kullanılabilir. Geri döndürme işlemi ise sınıf fonksiyonlarından çıkan sonuçların ana programda kullanılabilmesini sağlar. Bu işlem, fonksiyonların ana programda geriye veri döndürebilmesine olanak tanır.
İyi yazılmış bir sınıf, parametre geçirme ve geri döndürme işlemlerini doğru bir şekilde kullanarak daha esnek ve fonksiyonel bir programlama yapısı sunar. Bu nedenle, C++ programlama dilinde sınıflara dair temel bilgileri öğrenerek parametre geçirme ve geri döndürme işlemlerini doğru bir şekilde kullanmayı öğrenmek, iyi yazılmış bir kod oluşturma açısından önemlidir.
Sınıf Fonksiyonları
C++ programlama dilinin en önemli yapı taşlarından biri olan sınıflar, içerisinde fonksiyonlar da barındırır. Sınıf fonksiyonları, diğer programlama dillerindeki metodlara benzer şekilde kullanılır ve sınıfların özelliklerine göre davranışlarını belirler.
Bir sınıf fonksiyonu, sınıfın içerisinde tanımlanmış bir fonksiyondur ve sınıfın üyelerine erişim sağlayabilir. Sınıf fonksiyonları, sınıfın verileri üzerinde işlemler gerçekleştirir. Bu işlemler sırasında fonksiyona parametreler geçilebilir ve geri dönüş değeri olabilir.
Bir sınıf fonksiyonu, örneğin birinci dereceden bir fonksiyon olarak tanımlanır ve genellikle üyelerin değerlerini değiştirebilen ve bir sonuç döndürebilen işlemler oluşturur. Sınıf fonksiyonlarının döndürdüğü veri, sınıfın kendisi veya sınıfın bir üyesi olabilir.
Sınıf fonksiyonlarında parametre kullanımı, sınıfların özelliklerine göre belirlenir. Bazı sınıflarda parametreli fonksiyonlar kullanılması gerekebilirken, diğerlerinde ise parametresiz fonksiyonlar yeterli olabilir. Parametre kullanımı, sınıfın yapısına göre değişebilir. Sınıfın üyelerine erişim sağlayacak işlemler gerçekleştirecek sınıf fonksiyonlarında parametre kullanımı genellikle zorunlu hale gelir.
Geri döndürme işlemleri, sınıf fonksiyonlarının döndürdüğü bir değer veya sınıfın kendisi olabilir. Geri döndürme işlemleri, sınıf içindeki fonksiyonların diğer fonksiyonlarca nasıl kullanılabileceğini belirler.
Sınıf fonksiyonlarının, sınıfın verilerinin düzenlenmesinde ve yönetilmesinde ne kadar önemli oldukları açıktır. Bu işlemlerin detaylarını iyi anlamak, programlama sürecinde sınıf kullanımını kolaylaştırır ve kodun okunabilirliğini artırır.
Kurucu Fonksiyonlar
Kurucu fonksiyonlar, sınıfın örneği oluşturulduğunda otomatik olarak çalışan özel bir fonksiyondur. Bu fonksiyonlar, sınıfın yapılanmasına ilişkin önemli bilgileri içerir. Kurucu fonksiyonlar, sınıfın yapısına göre farklılık gösterir ve objenin oluşturulması için gereklidir.
Kurucu fonksiyonlar, parametre alabilir ve geri döndürülebilir. Kurucu fonksiyonların parametreleri, objenin özelliklerini belirlemek için kullanılabilecek verilerdir. Örneğin, bir kitap sınıfındaki kurucu fonksiyona kitabın başlığı, yazarı ve yayınevi bilgileri gibi veriler aktarılabilir.
Ayrıca, kurucu fonksiyonlar geri döndürme değeri de verebilir. Bu, bir sınıfın bir parçası olabilen başka bir sınıfın objesinin oluşturulmasına olanak sağlar. Geri döndürülebilecek bir diğer değer de -1 ya da 0 gibi bir hata kodudur.
Kurucu fonksiyonlar, obje oluşturma işlemi sırasında otomatik olarak çağrılır ve sınıfın yapısına uygun şekilde veri aktarımı ve değer döndürümü yapabilir. Bu nedenle, doğru bir şekilde tasarlanmış bir kurucu fonksiyon, programın çalışması için hayati bir öneme sahip olabilir.
Parametreli Kurucu Fonksiyonlar
C++ sınıflarında, yapıcı fonksiyonlar (constructor functions) sınıfın objelerinin oluşturulmasını yönetirler. Kurucu fonksiyonlar, obje örneklendiğinde otomatik olarak çağrılır ve objenin oluşturulmasını sağlar. Burada, parametreli kurucu fonksiyonlar hakkında daha detaylı bilgiler vereceğiz.
Bir sınıfın kurucu fonksiyonu parametre alabildiği gibi, almayabilir de. Parametreli kurucu fonksiyonlar, objenin oluşturulması için gereken özellik veya nitelikleri içinde barındırır. Bu sayede, obje örneklenirken özelliklerine değer atanır ve obje hazır hale gelir.
Örneğin, bir araba sınıfını ele alalım. Araba sınıfının yapıcı fonksiyonu, araç tipi, modeli, renk, güç kaynağı vb. özellikleri içerir. Böylece, bir araba objesi oluşturulduğunda, bu özelliklere değer atanır ve obje hazır hale gelir. Parametreli kurucu fonksiyonlar, sınıfların niteliklerini ve özelliklerini parametre olarak alarak objelerin özelliklerini özelleştirme imkanı sunar.
Örnek: |
---|
class Araba { |
public: |
Araba(string tip, string model, string renk, int guc_kaynagi) { |
m_tip = tip; |
m_model = model; |
m_renk = renk; |
m_guc_kaynagi = guc_kaynagi; |
} |
private: |
string m_tip; |
string m_model; |
string m_renk; |
int m_guc_kaynagi; |
Yukarıdaki örnekte, Araba sınıfının yapıcı fonksiyonu dört parametre alıyor: tip, model, renk ve güç kaynağı. Bu parametreler objenin oluşturulduğu anda atanarak, objenin özellikleri belirleniyor.
Özetle, C++ sınıflarında parametreli kurucu fonksiyonlar, sınıf objelerinin özelliklerini belirleyen parametreler içerir. Bu özellikler objenin oluşturulması sırasında atanarak, objenin hazır hale gelmesini sağlar.
Varsayılan Parametre Değerleri
Kurucu fonksiyonları oluştururken, varsayılan parametre değerleri atanabilir. Bu sayede sınıfın kullanımı daha esnek hale getirilir. Varsayılan parametreler, bir değer atanmadığı takdirde kendilerine önceden belirlenen bir değer atanacak olan parametrelerdir. Örnek olarak, bir geometri sınıfı düşünelim. Bu sınıfın yapıcı fonksiyonlarına genişlik ve uzunluğun yanı sıra, renk parametresi de atanabilir. Ancak her seferinde renk belirtilmek zorunda kalınmaması için, renk parametresine bir varsayılan renk atanabilir. Böylece, renk belirtilmediği takdirde bu varsayılan renk otomatik olarak atanacak ve kullanıcıya renk belirleme zorunluluğu olmayacaktır.
Bu şekilde varsayılan parametre değerleri kullanarak, sınıfın kullanımı daha kolay ve daha okunaklı hale getirilebilir. Bunun yanı sıra, sınıfın içindeki fonksiyonlara da varsayılan parametre değerleri atanabilir. Böylece, fonksiyonun çağrıldığı yerlerde, ilgili parametrenin belirtilmemesi halinde varsayılan değer devreye girecek ve fonksiyon başarılı bir şekilde çalışacaktır.
Geri Döndürme İşlemleri
Kurucu fonksiyonlar, sınıfın ilk oluşturulması sırasında muhakkak çağrılan fonksiyonlardır. Bu nedenle, bu fonksiyonların geri döndürme değerleri oldukça önemlidir. Genellikle kurucu fonksiyonlar sayesinde sınıfın bazı özellikleri ve verileri ilk değerleri ile birlikte alırken, bazen de geri döndürme değerleri ile sınıfın oluşturulması ya da kullanımı sırasında işlemler yapılabilir.
Kurucu fonksiyonların geri döndürme değerleri farklı veri tiplerinde olabilir. Bu değerler, sınıfın içinde diğer fonksiyonlar tarafından kullanılabildikleri gibi, sınıf dışında da kullanılabilirler. Örneğin, bir kurucu fonksiyonun geri döndürdüğü bir integer değer, sınıfın dışındaki diğer fonksiyonlar tarafından da kullanılabilir ve gerektiğinde sınıfın yapısı değiştirilebilir.
Veri Tipi | Açıklama |
---|---|
Void | Bir değeri geri döndürmez. Sadece yapılması gereken işlemleri gerçekleştirir. |
Integer | Önceden belirlenmiş bir integer değeri geri döndürür. |
String | Bir string değeri geri döndürür. |
Boolean | Bir doğru ya da yanlış değeri geri döndürür. |
Kurucu fonksiyonların geri döndürme değerleri, sınıfın yapısına bağlı olarak kullanılabilirler. Örneğin, bir sınıf, içindeki fonksiyonlardan birinin geri döndürdüğü değeri kullanarak, bir diğer fonksiyonda işlem yapabilir. Bu şekilde, sınıfın kapsamı daha geniş bir hale getirilir ve verimli bir kullanım sağlanır.
Kurucusuz Sınıflar
Kurucu fonksiyonlar sınıf içindeki objelerin başlatılması ve sınıfın değişkenlerinin varsayılan değerlerle atanması için kullanılır. Ancak bazı durumlarda kurucu fonksiyonlar kullanılamayabilir. Bu gibi durumlarda, kurucusuz sınıflar devreye girer.
Kurucusuz sınıfların, sınıf içinde tanımlanmış değişkenlerin başlatılması ve sınıfın özelliklerinin kullanılması için kullanılabilecek bir çeşit "varsayılan kurucu fonksiyonu" olarak düşünülebilir. Kurucusuz sınıfları kullanarak sınıfın özelliklerini başlatmak yerine, sınıf içinde tanımlanmış başka bir fonksiyon yardımıyla özelliklerin başlatılması ve kullanılması mümkündür.
Kurucusuz sınıfların geri döndürme işlemleri ve parametre kullanımı kurucu fonksiyonlarla benzerlik gösterir. Kurucusuz sınıf fonksiyonları da sınıfın özelliklerine erişebilir ve bu özellikleri işleyebilirler. Ancak, kurucu fonksiyonlardan farklı olarak, kurucusuz sınıfların geri döndürme işlevi direkt olarak sınıf dışındaki işlevlerle etkileşimli olamaz. Bunun yerine, sınıf dışındaki bir işlev çağrısında geri döndürme işlemi sınıfın içinde belirlenen bir değişken tarafından yapılır.
Dışarıdan Erişim
C++ sınıflarının en önemli özelliklerinden biri sınıfın içindeki fonksiyonlara dışarıdan erişimdir. Bu sayede, sınıfın içindeki veri değerleri dışarıdan işleme tabi tutulabilir ve fonksiyonlar başka sınıflarla da kullanılabilir. Bu erişim sürecinde üç farklı yöntem kullanılır:
- Public Fonksiyonlar: Sınıfın herhangi bir yerinden erişebilinen fonksiyonlardır.
- Private Fonksiyonlar: Sadece sınıfın içindeki öğeler tarafından erişilebilir olan fonksiyonlardır.
- Protected Fonksiyonlar: Sınıfın içindeki öğeler ve kalıtım yoluyla türetilen sınıflar tarafından erişilebilir olan fonksiyonlardır.
Parametre geçirme ve geri döndürme işlemleri ise sınıfın içinde fonksiyonlarla birlikte kullanılabildiği gibi dışarıdan erişimde de kullanılabilir. Örneğin, sınıfın varsayılan olarak private olarak belirlenmiş bir değişkenine erişmek istediğimizde public bir fonksiyon kullanmamız gerekir. Bu fonksiyona dışarıdan erişirken, parametre kullanarak değişkenin değerini değiştirebilir ve geri dönüşüm sağlayabiliriz.
Sınıfın içinde yapılacak değişikliklerin, dışarıdaki fonksiyonlar ve sınıflarla nasıl uyumlu hale getirileceği mümkündür. Bunun için, dışarıdaki fonksiyonların parametre yapısının ve geri dönüşümünün değiştirilmesi gerekebilir.
Özetle, C++ sınıflarında dışarıdan erişim, fonksiyonların parametre geçirme ve geri döndürme işlemleri ile gerçekleştirilir. Bu işlemler, sınıfın içindeki verilerin dışarıdan erişilmesine ve fonksiyonların diğer sınıflarla birlikte kullanılmasına olanak tanır. Bunun için, public, private ve protected fonksiyonlar kullanılırken, parametrelerin ve geri dönüşümün değiştirilmesi ile uyumlu hale getirilir.
Friend Fonksiyonlar
C++ sınıfında friend fonksiyonlar, sınıfın private ve protected erişim belirleyicilerine sahip olan öğelerine dışarıdan erişebilmek için kullanılır. Böylece sınıfın private ve protected öğeleri başka bir sınıfın veya fonksiyonun kullanımına açılabilir. Friend fonksiyonlar, sınıfın içindeki öğeler gibi düşünülebilirler ama sınıfın bir parçası değillerdir.
Friend fonksiyonlar sınıfın içinde tanımlanmazlar. Bunun yerine fonksiyonun tanımı sınıfın dışında yapılır, ancak sınıfın tanımlamasındaki public bölümüne friend olarak eklenirler.
Örneğin, bir Banka Hesabı sınıfımız olduğunu ve bu sınıfın private ve protected öğelerine erişen bir dost fonksiyonun parametre geçirdiğini düşünelim. Dost fonksiyon şöyle olabilir:
class BankaHesabi { private: double bakiye; public: friend void dostFonksiyon(BankaHesabi &bHesabi, double paracek);}; void dostFonksiyon(BankaHesabi &bHesabi, double paracek){ bHesabi.bakiye -= paracek;}
Burada BankaHesabi sınıfını tanımladık ve içinde dostFonksiyon adında bir fonksiyon ekledik. Bu fonksiyonumuz, BankaHesabi sınıfının private bölgesindeki bakiye değişkenini dışarıdan kullanarak para çekme işlemi gerçekleştirir. Böylece sınıfın private öğelerine erişim sağlayan bir dost fonksiyon tanımlamış olduk.
Dost fonksiyonları kullanırken dikkat edilmesi gereken bir diğer önemli nokta ise, sınıfın korunan öğelerine işaret eden dost göstericilerdir. Bu göstericiler, sadece sınıfın kendisi ve kalıtım alan sınıflar tarafından kullanılabilir. Bunun nedeni, dost fonksiyonların sınıfın korunan öğelerine erişme izni vermesinden kaynaklanır.
Dışa Aktarma (Exporting) Fonksiyonları
Sınıflarda dışa aktarılmış fonksiyonlar diğer programlar tarafından erişilebilen ve kullanılabilen fonksiyonlardır. Bu nedenle, bu tip fonksiyonlarda parametre geçirme ve geri döndürme işlemleri oldukça önemlidir.
Sınıfın dışında kullanılacak fonksiyonlar, sınıfın içindeki öğeler ile aynı işlevi görmelidir. Bu nedenle, fonksiyona parametre geçirirken sınıfın özellikleri de göz önüne alınmalıdır. Ayrıca, fonksiyonun geri döndürdüğü veriler de diğer programların kullanımına uygun olmalıdır.
Dışa aktarılmış fonksiyonlar genellikle sınıfın tanıtımı ile birlikte bir "header" dosyasında bulunur. Bu dosyada fonksiyonların prototipleri, yani tanıtımları ve parametreleri yer alır. Daha sonra, bu dosya ile sınıf dosyası birleştirilerek kullanıcıların fonksiyonlara erişimi sağlanır.
Bazı durumlarda, dışa aktarılmış fonksiyonlara varsayılan parametre değerleri de atanabilir. Böylece, fonksiyonu kullanan programlarda parametrelerin esnek bir şekilde kullanılması sağlanır.
Bir diğer önemli konu da dışa aktarılmış fonksiyonların geri döndürme işlemleridir. Geri döndürülen veriler sınıf içinde de kullanılabilir ve diğer programlar tarafından işlenebilir. Bu nedenle, fonksiyonun geri döndürme değerleri de diğer programların kullanımına uygun olmalıdır.
Sınıf İçinde Geri Dönüşüm
C++ sınıflarında geri dönüşüm işlemi, sınıf içindeki fonksiyonlar ve diğer fonksiyonlar arasında veri akışını sağlar. Sınıfın bir fonksiyonundan geri döndürülen veri diğer fonksiyonlar tarafından kullanılabilir. Bunun yanı sıra, sınıfın bir fonksiyonu başka bir sınıfın bir fonksiyonunda kullanılabilir.
Bir örnek vermek gerekirse, bir sınıfta bir kare alanını hesaplayan bir fonksiyon olsun. Bu fonksiyondan geri döndürülen alan değeri, aynı sınıfta yer alan başka bir fonksiyonda kenar uzunluğu hesaplaması için kullanılabilir. Böylece, sınıf içinde geri dönüşüm işlemi yaparak veri akışı sağlanmış olur.
Bunun yanı sıra, C++ sınıflarında geri dönüşüm işlemi yapılırken gereksiz yere yeni bir nesne oluşturulmaması önemlidir. Bu sayede bellek kullanımı verimli bir şekilde gerçekleştirilebilir. Sınıf içinde geri dönüşüm yapılırken bu hususa dikkat edilmesi gerekir.
Sınıf içinde geri dönüşüm işlemi, sınıfın işlevselliğini artıran önemli bir özelliktir. Doğru kullanıldığında kodlama sürecinde kolaylık sağlar ve işlem verimliliğini artırır. Sınıfın bir fonksiyonundan geri döndürülen verinin diğer fonksiyonlar tarafından kullanılabilmesi, programlama sürecinde tümleşiklik sağlar ve kodlama sürecinde hatayı önler.
Dost Sınıflar
Dost sınıflar, C++ programlama dilinde oldukça önemli bir konudur. Dost sınıf, bir sınıfın erişebildiği ve içindeki öğeleri kullanabildiği diğer bir sınıftır. Dost sınıflar, sınıfın özel veya korunan üye fonksiyonlarına erişebilirler ve bu fonksiyonlara parametre geçirme işlemleri yapabilirler. Ancak, dost sınıfların geri dönüşüm işlemleri, sınıfın kendisinin geri döndürme işlemleri ile aynı değildir.
Bir sınıfın dost sınıfı olarak tanımlanabilmesi için, tanımlama işlemi sınıfın kendisinde yapılmalıdır. Bunun için "friend" anahtar kelimesi kullanılır. Dost sınıfların tanımlanması ve kullanımı, sınıfın içindeki özel veya korunan fonksiyonların görünürlüğü açısından avantaj sağlar. Ancak, bu tanımlamaların doğru yapılması gerekmektedir.
Dost Sınıf Tanımlama | Örnek Kullanımı |
---|---|
friend class DostSinif; | class DostSinif { ... }; |
Dost sınıfların geri dönüşüm işlemleri, normal bir sınıfın geri dönüşüm işlemlerinden farklılık gösterir. Dost sınıfın geri dönüşümü, sınıfın kendisi gibi değer veya referans olarak geri döndürülebilir. Bununla birlikte, parametre kullanımı için ise, sınıfın yapıcı fonksiyonlarına benzer bir yapı kullanılır.
- Bir sınıfın yapıcı fonksiyonları için kullanılan parametreler, dost sınıfın yapıcı fonksiyonları için de kullanılır.
- Dost sınıfın yapıcı fonksiyonu, sınıfın kendisi gibi geri döndürülebileceği gibi farklı bir nesne de geri döndürülebilir.
Dost sınıfların kullanımı, sınıfın diğer fonksiyonlarına göre daha riskli olabilir ve doğru bir şekilde kullanılması gerekmektedir. Ancak, uygun şekilde kullanıldığında, sınıfın özelliklerine erişim açısından önemli bir avantaj sağlar.
Kalıtım (inheritance)
C++ sınıflarında kalıtım, bir sınıfın özelliklerinin diğer sınıflara aktarılmasını sağlamaktadır. Kalıtım işlemi, sınıf hiyerarşisi oluşturmak için kullanılmaktadır ve bu sayede kodlar daha organize hale gelmektedir. Kalıtım yoluyla, bir sınıfın özellikleri, diğer sınıflarda da kullanılabilir hale gelmektedir.
Kalıtım işleminde, ana sınıfın özellikleri alt sınıflara aktarılırken, alt sınıflar üzerinde değişiklikler yapılabilmektedir. Bu sayede, alt sınıfların özellikleri ana sınıfın özelliklerinden farklılaşabilmektedir.
Kalıtım işlemi sırasında, parametre geçirme durumları da devreye girebilmektedir. Kalıtım alınan sınıfın yapısı değiştiğinde, parametrelerin de buna göre düzenlenmesi gerekmektedir. Kalıtım yoluyla aktarılan özelliklerin de kalıtım aldığı sınıftan alınması gerekmektedir. Bu sayede, birden fazla sınıfın kalıtım işlemi yapılması durumunda da, parametre geçişleri daha kolay ve anlaşılır hale gelmektedir.
Kalıtım Alınan Sınıf | Kalıtım Alan Sınıf | Parametre Durumu |
---|---|---|
Sınıf A | Sınıf B | Parametreler A sınıfından B sınıfına aktarılmaktadır. |
Sınıf B | Sınıf C | Parametreler B sınıfından C sınıfına aktarılmaktadır. |
Bu tablo, kalıtım yoluyla sınıfın geri dönüşümü için iki örnek sınıfın parametre geçişlerinin nasıl gerçekleştiğini göstermektedir.
Kalıtım işlemi, sınıfın parametre geçişleri ve geri dönüşümleri konusunda da işlevsel bir yapı sağlamaktadır. Kalıtım alınan sınıfın yapısal değişikliği, kalıtım alan sınıfta da etkili olmaktadır ve bu sayede daha esnek bir yapı sağlanmaktadır.