Sınıf nedir?
Bir C ++ sınıfı, verileri tek bir sınıfta işlemek için verileri ve yöntemleri birleştirir. Sınıflar ayrıca nesnelerin biçimlerini de belirler. Bir sınıfta bulunan veriler ve yöntemler, sınıf üyeleri olarak bilinir. Sınıf, kullanıcı tanımlı bir veri türüdür. Sınıf üyelerine erişmek için sınıfın bir örneğini kullanıyoruz. Bir sınıfı, bir nesnenin taslağı olarak görebilirsiniz.
Bir sınıf, bir ev için bir prototip olabilir. Kapıların, pencerelerin, zeminlerin vb. Yerlerini ve boyutlarını gösterir. Bu açıklamalardan bir ev inşa edebiliriz. Ev nesneye dönüşüyor. Prototipten birçok ev yaratmak mümkün. Ayrıca, bir sınıftan birçok nesne oluşturmak mümkündür.
Yukarıdaki şekilde tek bir ev prototipimiz var. Bu prototipten farklı özelliklere sahip iki ev oluşturduk.
Bu eğitimde şunları öğreneceksiniz:
- Sınıf nedir?
- Sınıf Örneği
- Özel ve Genel Anahtar Kelimeler
- Nesne Tanımı
- Veri Üyelerine Erişim
- Sınıf Üyesi İşlevleri
- Yapıcılar ve Yıkıcılar
Sınıf Beyanı
C + 'da, class anahtar sözcüğü kullanılarak bir sınıf tanımlanır. Bunu sınıf adı takip etmelidir. Sınıf gövdesi daha sonra küme ayraçları {} arasına eklenir.
Sözdizimi:
class class-name{// data// functions};
- Sınıf adı, sınıfa atanacak addır.
- Veriler, normalde değişkenler olarak bildirilen sınıfa ait verilerdir.
- İşlevler, sınıf işlevleridir.
Özel ve Genel Anahtar Kelimeler
Bu iki anahtar kelimeye rastlamış olmalısınız. Erişim değiştiricilerdir.
- Özel:
Private anahtar sözcüğü bir işlevi veya sınıfı tanımlamak için kullanıldığında, özel hale gelir. Bunlara yalnızca sınıf içinden erişilebilir.
- Halka açık:
Öte yandan public anahtar sözcüğü, verileri / işlevleri herkese açık hale getirir. Bunlara sınıf dışından erişilebilir.
Nesne Tanımı
Nesneler sınıflardan oluşturulur. Sınıf nesneleri, değişkenlerin bildirilmesine benzer şekilde bildirilir. Sınıf adı başlamalı ve ardından nesne adı gelmelidir. Sınıf türünün nesnesi.
Sözdizimi:
class-name object-name;
- Sınıf adı, kendisinden bir nesnenin oluşturulacağı sınıfın adıdır.
- Nesne adı, yeni nesneye atanacak addır.
Bir sınıftan bir nesne oluşturma işlemi, örnekleme olarak bilinir.
Veri Üyelerine Erişim
Bir sınıfın genel üyelerine erişmek için (.) Nokta operatörünü kullanıyoruz. Bunlar, genel erişim değiştirici ile işaretlenmiş üyelerdir.
Örnek 1:
#includeusing namespace std;class Phone {public:double cost;int slots;};int main() {Phone Y6;Phone Y7;Y6.cost = 100.0;Y6.slots = 2;Y7.cost = 200.0;Y7.slots = 2;cout << "Cost of Huawei Y6 : " << Y6.cost << endl;cout << "Cost of Huawei Y7 : " << Y7.cost << endl;cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl;cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl;return 0;}
Çıktı:
İşte kodun bir ekran görüntüsü:
Kod Açıklaması:
- İşlevlerini kullanmak için iostream başlık dosyasını kodumuza ekleyin.
- Sınıflarını çağırmadan kullanmak için std ad alanını kodumuza dahil etmek.
- Telefon adlı bir sınıf bildirin.
- Oluşturmak üzere olduğumuz değişkenleri herkesin erişimine açık olarak işaretlemek için genel erişim değiştiriciyi kullanmak.
- Bir çift veri türünün değişken maliyetini belirtin.
- Yuvalar adlı bir tamsayı değişkeni bildirin.
- Sınıf gövdesinin sonu.
- Main () işlevi çağırılıyor. Program mantığı kendi bünyesine eklenmelidir.
- Telefon türünde Y6 adlı bir nesne oluşturun. Buna örnekleme denir.
- Telefon türünde Y7 adlı bir nesne oluşturun. Buna örnekleme denir.
- Telefon sınıfının değişken / üye maliyetine Y6 nesnesini kullanarak erişin. Değer 100.0 olarak ayarlanmıştır. Y6'nın maliyeti artık 100.0 olarak ayarlanmıştır.
- Y6 nesnesini kullanarak Telefon sınıfının değişken / üye yuvalarına erişin. Değer 2'ye ayarlanmıştır. Y6 yuvaları artık 2'ye ayarlanmıştır.
- Telefon sınıfının değişken / üye maliyetine Y7 nesnesini kullanarak erişin. Değer 200.0 olarak ayarlanmıştır. Y7'nin maliyeti artık 200,0 olarak ayarlandı.
- Y7 nesnesini kullanarak Telefon sınıfının değişken / üye yuvalarına erişin. Değer 2'ye ayarlanmıştır. Y7 yuvaları artık 2'ye ayarlanmıştır.
- Y6'nın maliyetini diğer metinlerin yanında konsola yazdırın.
- Y7'nin maliyetini diğer metinlerin yanında konsola yazdırın.
- Diğer metnin yanında Y6 için yuva sayısını yazdırın.
- Diğer metinlerin yanı sıra Y7 için yuva sayısını yazdırın.
- Program başarıyla tamamlandığında bir değer döndürmelidir.
- Main () işlevinin gövdesinin sonu.
Özel Sınıf nedir?
Özel olarak işaretlenen sınıf üyelerine yalnızca sınıf içinde tanımlanan işlevlerle erişilebilir. Sınıf dışında tanımlanan herhangi bir nesne veya işlev, bu tür üyelere doğrudan erişemez. Özel bir sınıf üyesine yalnızca üye ve arkadaş işlevleri tarafından erişilebilir.
Korumalı Sınıf nedir?
Korumalı olarak işaretlenen sınıf üyelerinin, özel olarak işaretlenenlere göre bir avantajı vardır. Tanımlarına göre sınıf içindeki fonksiyonlar tarafından erişilebilirler. Ek olarak, türetilmiş sınıflardan erişilebilirler.
Örnek 2:
#includeusing namespace std;class ClassA {public:void set_a(int val);int get_a(void);private:int a;};int ClassA::get_a(void) {return a;}void ClassA::set_a(int val) {a = val;}int main() {ClassA a;a.set_a(20);cout << "Value of a is: " << a.get_a();return 0;}
Çıktı:
İşte kodun bir ekran görüntüsü:
Kod Açıklaması:
- İşlevlerini kullanmak için iostream başlık dosyasını kodumuza ekleyin.
- Sınıflarını çağırmadan kullanmak için std ad alanını kodumuza dahil edin.
- ClassA adlı bir sınıf oluşturun.
- Oluşturulacak sınıf üyesini genel erişime açık olarak işaretlemek için genel erişim değiştiricisini kullanın.
- Val bir tamsayı değeri alan set_a () adlı işlevi oluşturun.
- Get_a () adında bir işlev oluşturun.
- Oluşturulacak sınıf üyesini özel olarak erişilebilir olarak işaretlemek için özel erişim değiştiricisini kullanın.
- A adlı bir tamsayı değişkeni bildirin.
- Sınıf gövdesinin sonu.
- Get_a () işlevine erişmek için sınıf adını ve kapsam çözümleme operatörünü kullanın. Fonksiyonun çağrıldığında ne yapacağını tanımlamak istiyoruz.
- Get_a () işlevi çağrıldığında a değişkeninin değerini döndürmelidir.
- Get_a () işlevinin tanımının sonu.
- Set_a () işlevine erişmek için sınıf adını ve kapsam çözümleme operatörünü kullanın. Fonksiyonun çağrıldığında ne yapacağını tanımlamak istiyoruz.
- A değişkenine val değişkeninin değerini atamak.
- Set_a () işlevinin tanımının sonu.
- Main () işlevini çağırın. Program mantığı bu işlevin gövdesine eklenmelidir.
- ClassA'nın bir örneğini oluşturun ve ona a.
- A değişkenine 20 değeri atamak için yukarıdaki sınıf örneğini ve set_a () işlevini kullanın.
- Konsolda a değişkeninin değerinin yanında bazı metinlerin yazdırılması. A değişkeninin değeri get_a () işlevi çağrılarak elde edilir.
- Program başarılı bir şekilde tamamlandığında değer döndürmelidir.
- Ana fonksiyon gövdesinin sonu ().
Örnek 3:
#includeusing namespace std;class ParentClass {protected:int value;};class ChildClass : public ParentClass {public:void setId(int x) {value = x;}void displayValue() {cout << "Value is: " << value << endl;}};int main() {ChildClass c;c.setId(21);c.displayValue();return 0;}
Çıktı:
İşte kodun bir ekran görüntüsü:
Kod Açıklaması:
- İşlevlerini kullanmak için iostream başlık dosyasını kodumuza ekleyin.
- Sınıflarını çağırmadan kullanmak için std ad alanını kodumuza dahil edin.
- ParentClass adlı bir sınıf oluşturun.
- Oluşturulacak sınıf üyesini korumalı olarak işaretlemek için korumalı erişim değiştiricisini kullanın.
- Value adlı bir tamsayı değişkeni oluşturun.
- Sınıf gövdesinin sonu.
- ParentClass'ı devralan ChildClass adlı yeni bir sınıf oluşturun.
- Oluşturulacak sınıf üyesini alt sınıflar için erişilebilir olarak işaretlemek için korumalı erişim değiştiricisini kullanın.
- Bir x tamsayı değeri alan setId () adlı işlevi oluşturun.
- X değişkeninin değerinin değişken değerine atanması.
- SetId () işlevinin tanımının sonu.
- DisplayValue () adında bir işlev oluşturun.
- Diğer metinle birlikte konsolda değer adlı değişkenin değerini yazdırın.
- DisplayValue () işlevinin gövdesinin sonu.
- ChildClass adlı sınıfın gövdesinin sonu.
- Main () işlevini çağırın. Program mantığı bu işlevin gövdesine eklenmelidir.
- Bir ChildClass örneği oluşturun ve ona c adını verin.
- X değişkenine 21 değerini atamak için yukarıdaki sınıf örneğini ve setId () işlevini kullanın.
- DisplayValue () adlı işlevi çağırmak için yukarıdaki sınıf örneğini kullanın.
- Program başarılı bir şekilde tamamlandığında değer döndürmelidir.
- Ana fonksiyon gövdesinin sonu ().
Sınıf Üyesi İşlevleri
Fonksiyonlar, verileri değiştirmemize yardımcı olur. Sınıf üyesi işlevleri iki şekilde tanımlanabilir:
- Sınıf tanımının içinde
- Sınıf tanımının dışında
Bir işlev, sınıf tanımının dışında tanımlanacaksa, kapsam çözümleme operatörünü (: :) kullanmalıyız. Buna sınıf ve işlev isimleri eşlik etmelidir.
Örnek 2:
#include#include using namespace std;class Guru99{public:string tutorial_name;int id;void printname();void printid(){cout << "Tutorial id is: "<< id;}};void Guru99::printname(){cout << "Tutorial name is: " << tutorial_name;}int main() {Guru99 guru99;guru99.tutorial_name = "C++";guru99.id = 1001;guru99.printname();cout << endl;guru99.printid();return 0;}
Çıktı:
İşte kodun bir ekran görüntüsü:
Kod Açıklaması:
- İşlevlerini kullanmak için programımıza iostream başlık dosyasını dahil edin.
- İşlevlerini kullanmak için dize başlık dosyasını programımıza dahil edin.
- Sınıflarını çağırmadan kullanmak için std ad alanını kodumuza dahil edin.
- Guru99 adlı bir sınıf oluşturun.
- Oluşturmak üzere olduğumuz sınıf üyelerini herkese açık olarak işaretlemek için genel erişim değiştiricisini kullanın.
- Tutorial_name adlı bir dize değişkeni oluşturun.
- İd adında bir tamsayı değişkeni oluşturun.
- Printname () adında bir işlev oluşturun. Bu işlev, sınıf tanımında tanımlanmamıştır.
- Printing () adlı bir işlev oluşturun. Bu işlev, sınıf tanımında tanımlanmıştır. Gövdesi, sınıf tanımına eklenmiştir.
- Konsoldaki diğer metnin yanında değişken kimliğinin değerini yazdırın. Bunun printid () işlevinin gövdesine eklendiğini unutmayın. Yalnızca printid () işlevi çağrıldığında çalıştırılacaktır.
- Printid () işlevinin gövdesinin sonu.
- Guru99 sınıfının gövdesinin sonu.
- Printname () işlevinin tanımının başlangıcı.
- Diğer metinle birlikte konsolda eğitici_adı değişkeninin değerini yazdırın. Bunun printname () işlevinin gövdesine eklendiğini unutmayın. Yalnızca printname () işlevi çağrıldığında çalıştırılacaktır.
- Printname () işlevinin tanımının sonu.
- Main () işlevini çağırın. Program mantığı bu işlevin gövdesine eklenmelidir.
- Guru99 sınıfının bir örneğini oluşturun ve ona guru99 adını verin.
- Tutorial_name değişkenine bir C ++ değeri atamak için yukarıdaki örneği kullanın.
- Değişken kimliğine 1001 değeri atamak için guru99 örneğini kullanın.
- Printname () işlevini çağırmak için örnek guru99'u kullanın.
- Konsolda yeni bir boş satır yazdırmak için bitiş (bitiş satırı) komutunu çağırın.
- Printid () işlevini çağırmak için örnek guru99'u kullanın.
- Program başarılı bir şekilde tamamlandığında değer döndürmelidir.
- Main () işlevinin gövdesinin sonu.
Yapıcılar ve Yıkıcılar
Yapıcılar nedir?
Yapılar, nesneleri başlatan özel işlevlerdir. C ++ derleyicileri, bir nesne oluştururken bir kurucu çağırır. Yapıcılar, sınıf üyelerine değer atamaya yardımcı olur. Elbette, bu onlara biraz bellek alanı tahsis edildikten sonra.
Yıkıcılar nedir?
Yıkıcılar ise sınıf nesnelerini yok etmeye yardımcı olur.
Yapıcı adı, sınıf adına benzer olmalıdır. Oluşturucuların dönüş türü yoktur.
Yapıcı, sınıf gövdesinin içinde veya dışında tanımlanabilir. Sınıf gövdesi dışında tanımlanmışsa, sınıf adı ve kapsam çözümleme operatörü (: :) ile tanımlanmalıdır.
Örnek 3:
#includeusing namespace std;class ClassA {public:ClassA() {cout << "Class constructor called"< Çıktı:
İşte kodun bir ekran görüntüsü:
Kod Açıklaması:
- İşlevlerini kullanmak için iostream başlık dosyasını koda ekleyin.
- Sınıflarını çağırmadan kullanmak için std ad alanını kodumuza dahil edin.
- ClassA adlı bir sınıf oluşturun.
- Oluşturmak üzere olduğumuz üyeyi genel erişime açık olarak işaretlemek için genel erişim değiştiriciyi kullanın.
- Sınıf için bir yapıcı oluşturun.
- Yapıcı çağrıldığında konsolda yazdırılacak metin. Endl, bitiş çizgisi anlamına gelen bir C ++ anahtar kelimesidir. Fare imlecini bir sonraki satıra taşır.
- Sınıf oluşturucunun gövdesinin sonu.
- Sınıf için bir yıkıcı oluşturun.
- Yıkıcı çağrıldığında konsolda yazdırılacak metin. Endl, bitiş çizgisi anlamına gelen bir C ++ anahtar kelimesidir. Fare imlecini bir sonraki satıra taşır.
- Yıkıcının cesedinin sonu.
- Sınıf gövdesinin sonu.
- Main () işlevini çağırın. Program mantığı bu işlevin gövdesine eklenmelidir.
- Bir sınıf nesnesi oluşturun ve ona a. Kurucu aranacak.
- P adında bir tamsayı değişkeni oluşturun ve ona 1 değerini atayın.
- P değişkenini kullanarak bir if ifade bloğu oluşturun.
- Bir sınıf nesnesi oluşturun ve ona adını verin b. Yıkıcı çağrılacak.
- İf ifadesinin gövdesinin sonu.
- Main () işlevinin gövdesinin sonu.
Özet:
- C ++ nesne odaklıdır.
- Sınıflar, C ++ 'ın nesneye yönelik olmasını sağlayan temel özelliklerini oluşturur.
- Bir C ++ sınıfı, verileri tek bir sınıfta işlemek için verileri ve yöntemleri birleştirir.
- Sınıf, bir nesnenin taslağıdır.
- Sınıflar bir nesnenin biçimini belirler.
- Bir sınıfta bulunan veriler ve yöntemler, sınıf üyeleri olarak bilinir.
- Sınıf üyelerine erişmek için sınıfın bir örneğini kullanmalısınız.
- Bir sınıf oluşturmak için class anahtar kelimesini kullanırız.
- Sınıf üyesi işlevleri, bir sınıfın içinde veya dışında tanımlanabilir.