Yazan : Şadi Evren ŞEKER

Bu yazının amacı, C++ dili üzerinden, bazı sınıf ve nesne ilişkilerini anlatmaktır.

Örnek olarak, aşağıda, şekli verilen diyagramı ele alalım:

Yukarıdaki bu şekilde, köşeli kutular içerisinde yazılan bilgiler, sınıf (class) bilgileridir. Yuvarlak köşeli kutular içerisinde ise, bu sınıflardan türetilmiş nesneler (objects) görülmektedir.

Son olarak kalın ok, ISA ilişkisini, yani miras (kalıtım, inheritance) gösterirken, kalın çizgi, HASA ilişkisini ifade etmektedir.

Bu ilişkilerin modellendiği kod aşağıda anlatılmıştır.

Yukarıdaki kodun 1-5. Satırlarında, gerekli olan include işlemleri yapılmış ve namespace tanımlanmıştır.

Sonraki 6-27 satırları arasında sınıf tanımlamaları yapılmıştır. Bu sınıf tanımlamaları, diyagramda verildiği üzere her sınıfın ve her sınıftaki özelliklerin kodlanması şeklindedir.

Dikkat edilecek bir husus, 24. Satırda, öğrenci sınıfı için tanımlanan özelliklerden birisi olan Bölüm değişkeninin, bolum tipinde olmasıdır. Bunun anlamıd, öğrenci sınıfının, bölüm tipinde bir sınıfı bulunmaktadır (HASA).

Ayrıca kodun 22. Satırında bulunan “class ogrenci : public insan” tanımından anlaşılacağı üzere, öğrenci sınıfı, insan sınıfından miras almıştır. Dolayısıyla, insan sınıfında bulunan bütün özellikler, öğrenci sınıfına da geçebilmektedir. Ayrıca bu satırda bulunan ve insan sınıfı, miras alınmadan önce yazılan “public” kelimesi, bu miras ilişkisi üzerinden, insan sınıfında bulunan özelliklerin, öğrenci sınıfına açık olduğudur.

Yukarıda, kodumuzdan nesnelerin üretildiği, main fonksiyonu alıntılanmıştır. Bu kodun, 32 , 33 ve 43. Satırlarında, daha önceden tanımlanmış olan sınıflardan birer nesne üretilmiştir. Burada dikkat edilecek bir husus, üretilen nesnelerin ” new ” operatörü ile tanıtılmıştır. Bu durumda tanıtımı bir değişkene atayabilmemiz için, nesne atfına (object referrer) ihtiyaç duyulur. Bu nesne atıfları tanımlanırken, * operatörü ile pointer olarak tanımlanmasının sebebidir.

Tagged:

Yorumlar

ali için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir