Davut KARA

Bilişim Sistemleri Mühendisi

Bu blog, 5 yıl önce, bilişim ve diğer konularda hakkında, makalelerime yer vermek amacı ile açılmıştır.

Compe 225 | C++ Ders 1 – Object ve Class Nedir ?

C++ BannerOOP: Object Oriented Programming : Nesne tabanlı programlama

Class nedir ? Bir tür konsept tanımı gibi düşünebilir içinde fonksiyonlar olan değişkenler olan.  Bir tanım gurubu diyebiliriz.

Object nedir ? Tanımladığımız class ı kullanmak için belirttiğimiz değişkene object nedir.

Örneklersek:  evegit adında bir class tanımladığımızı varsayalım, içinde saat değişkeni olsun ve durumne fonksiyonu olsun saat 8 e eşitse eve git yazsın.

class Evegit{
	public:
	int saat = 0;
	void durumne(){
	if(saat  > 8)
		printf(“Eve GİT”);
	else
		printf(“Daha Vakit Var”);
        }
};

(Not: yukardaki kod bloğu mantığı anlamak için yazıldı eksik kısmı varsa takılmayın..)

Şimdi class ı yukarıda hallettik yani fonksiyon gibi düşünülebilir ancak fonksiyonun daha gelişmiş hali olarak düşünün. Yukardaki class ı kullanabilmek için bir değişkene atamalıyız.  Çünkü yukarda yaptığımız şey bir tanımdır.

Objeye atama yaparken, normal bir değişkeni ele alalım mesela 8 rakamını x e atıyoruz.

İnt x = 8;

Yazdığımızda çözümlersek  data_tipi    değişken_adı =   değişkene atanacak veri;

O halde classı değişkene atarken de benzer mantık yürütmeliyiz. O zaman atamayı yapalım.

Evegit davut;

İlk bakışta int,double vb veri tiplerini görmeye alışık olduğumuz için yukardaki atama şekli bize bir tuhaf bu nasıl atama der gibi gelebilir. Ancak aslında aynı şeyi yaptık.  Yani

data_tipi    değişken_adı =   değişkene atanacak veri;

  Evegit             davut         (=   atanacak değer yok);

O halde ne oluyor. Bizim classımız aslında bir data_tipi oluyor. İnt, double la uzaktan yakından bağlantı kuramamış olabilirsiniz çok kurcalamanıza da gerek yok, içinde bir çok özellik barındıran bir data_tipi gibi düşünebilirsiniz.

Şimdi artık objemizi oluşturduğumuza göre class ımızı kullanabiliriz. Şuan yapmak istediğimiz şey.  Evegit classının içinde bulunan durumne() fonksiyonuna erişmek ve çalıştırmak.

Mini Hatırlatma: [ fonksiyonlarda değişkenlerde isimlerden oluşur peki nasıl ayırt ederiz ? değişkenler direk yazılırken fonksiyonlar parametre alabileceği için kelime sonunda () parantezler konulur eğer parametre alacaksa içi param1,param2 şeklinde virgülle ayrılarak doldurulur eğer paramete almıyorsa boş bırakılır. Bir kelimenin değişken mi yoksa fonksiyon çağırmamı olduğunu böyle anlarız.]

Nasıl erişebiliriz ? Programlama da genel olarak her şey bir birinin içine girebilir mesela 2×3 lük bir arrayin 1. Satır 1. Sütün indexine girmek istiyorsak. Arr[0][0] (! İndex 0 dan başlar) buradaki köşeli parantezleri bir bağlaç olarak kullanırız, ve böyle iç içe olan her şeyin bir bağlaç operatörü vardır. (Operatör: işlemi gerçekleştirecek karaktere verilen isim.)

Dolayısıyla class ın içindeki fonksiyona erişmek içinde nokta . operatörünü kullanırız. O halde buraya kocaman yazıyorum

davut.durumne();

Artık classımızın içindeki fonksiyonu kullanabiliyoruz.

Ekran çıktısı da : Daha vakit var olacaktır.

Aşağıya tam kodu  yazıyorum bunu inceleyiniz..

#include <iostream>
class Evegit{
	public:
	int saat = 0;
	void durumne(){
	if(saat  > 8)
		printf(“Eve GİT”);
	else
		printf(“Daha Vakit Var”);
        }
};

int main(void){
	Evegit Davut; // Classı objeye aktar.
	Davut.durumne(); // Objemiz artık class özelliklerine büründü içindeki fonksiyona erişiyor
	return 0;
}

/*
Output::
Daha vakit var
*/

Şimdi mantığı anladığımıza göre bir genelleme yapalım ve class nasıl tanımlanır, kuralları ile yazalım.

class isim{
	private:
		//genellikle değişkenler yazılır.
	public:
		//genellikle fonkisyonlar yazılır.
};

Önemli ve karıştırılabilecek kısımları koyu olarak yaptım. Class ın C sini kesinlikle kodda büyük yazmayın hata alırsınız, class isimi yazarken Türkçe karakter alt tire harici özel karakterler ve rakamla başlama yasaktır kısaca klasik kurallar. Son olarak da kod bloğu yazdığımız süslü parantezleri kapatırken noktalı virgülü unutmayın.