BİL-142 Bilgisayar Programlama II
(C/C++)
Hazırlayan: [Link] Akcayol
Gazi Üniversitesi
Bilgisayar Mühendisliği Bölümü
Konular
Giriş
Sınıflar Nesneler
Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri
Sınıf ve Fonksiyon Üyeleri
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
Nesneleri Başlatma ve Constructor Fonksiyonu
Sınıflar ve Ayrı
y Dosyalarda
y Kullanılması
Interface ve Implementation
Set Fonksiyonuyla Veri Geçerleme
1
Giriş
Bir program main() fonksiyonuyla bir veya daha
fazla sınıftan oluşabilir.
Her sınıf veri üyeleri ve fonksiyon üyelerine sahiptir
sahiptir.
Bir sınıf kendisiyle ilişkili tüm veriler ve fonksiyonları
içerir.
Konular
Giriş
Sınıflar Nesneler
Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri
Sınıf ve Fonksiyon Üyeleri
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
Nesneleri Başlatma ve Constructor Fonksiyonu
Sınıflar ve Ayrı
y Dosyalarda
y Kullanılması
Interface ve Implementation
Set Fonksiyonuyla Veri Geçerleme
2
Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri
Bir sınıf yapılan işlemleri fonksiyonları kullanılarak
gerçekleştirir.
Fonksiyonlar gerekirse veri üyelerini (data member)
kulanabilir.
Sınıf üzerinde çalışan kullanıcı fonksiyonların yaptığı
işin karmaşıklığından etkilenmez.
Kullanıcı bir sınıfın tanımlanmış arayüzüne (interface)
erişir
erişir.
Bir sınıftan birçok nesne (object) üretilebilir. Her nesne
kendisine ait özellikler ve fonksiyonlara sahip olur.
Konular
Giriş
Sınıflar Nesneler
Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri
Sınıf ve Fonksiyon Üyeleri
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
Nesneleri Başlatma ve Constructor Fonksiyonu
Sınıflar ve Ayrı
y Dosyalarda
y Kullanılması
Interface ve Implementation
Set Fonksiyonuyla Veri Geçerleme
3
Sınıf ve Fonksiyon Üyeleri
Sınıf ve Fonksiyon Üyeleri
Satır 9-17 arasında GradeBook adlı bir sınıf
tanımlanıyor.
Satır 13-16 arasında ekrana mesaj yazan
dislayMessage() adlı bir fonksiyon tanımlanıyor.
main() fonksiyonu GradeBook sınıfından
myGradeBook adlı bir örnek (instance, object)
oluşturmaktadır.
myGradeBook nesnesinin displayMessage()
fonksiyonu çağırılarak ekrana mesaj yazdırılmaktadır.
public anahtar kelimesi (erişim belirleyicisi-access
specifier) bu üyeye herkes tarafından ulaşılacağını
ifade eder. (gelecek derslerde ayrıntılı görülecektir.)
8
4
Konular
Giriş
Sınıflar Nesneler
Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri
Sınıf ve Fonksiyon Üyeleri
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
Nesneleri Başlatma ve Constructor Fonksiyonu
Sınıflar ve Ayrı
y Dosyalarda
y Kullanılması
Interface ve Implementation
Set Fonksiyonuyla Veri Geçerleme
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
10
5
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
11
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
12
6
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
Ekran çıktısı
13
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
Satır 15-40 arasında GradeBook adlı bir sınıf
tanımlanıyor.
public ve private olarak iki kısımdan oluşmaktadır.
oluşmaktadır
private üyelere sadece GradeBook sınıfının
fonksiyon üyeleri (setCourseName,
getCourseName, displayMessage) tarafından
erişilebilir.
Private bir üyeye dışarıdan erişmek istendiğinde
([Link]) aşağıdaki hata oluşur:
cannot access private member declared in class 'GradeBook'
Satır 45’teki string değişkeni <string> header
file içinde tanımlıdır.
14
7
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
Satır 54’teki getline fonksiyonu birden fazla boşluk
içeren girişleri almak için kullanılır. (cin ilk boşluğa
kadar alır. cin >> nameOfCourse)
Satır 19, setCourseName fonksiyonu courseName
değişkenine değer atar.
Satır 25, getCourseName fonksiyonu courseName
değişkeninin değerini geri döndürür.
Satır 31
31, displayMessage fonksiyonu ekrana mesaj
metni yazar.
Satır 36, endl satır sonu yapmak için kullanılır.
15
Konular
Giriş
Sınıflar Nesneler
Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri
Sınıf ve Fonksiyon Üyeleri
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
Nesneleri Başlatma ve Constructor Fonksiyonu
Sınıflar ve Ayrı
y Dosyalarda
y Kullanılması
Interface ve Implementation
Set Fonksiyonuyla Veri Geçerleme
8
Nesneleri Başlatma ve Constructor Fonksiyonu
Bir sınıftan oluşturulan nesneye ilk tanımlandığında
başlangıç değeri atanabilir.
Başlangıç değeri atamak için kullanılan fonksiyonun
(constructor) adı sınıf adıyla aynıdır
Constuctor bir veya birden fazla data member veya
function member çağırabilir.
17
Nesneleri Başlatma ve Constructor Fonksiyonu
18
9
Nesneleri Başlatma ve Constructor Fonksiyonu
19
Nesneleri Başlatma ve Constructor Fonksiyonu
Ekran çıktısı
20
10
Nesneleri Başlatma ve Constructor Fonksiyonu
Satır 17-20 GradeBook sınıfının constructor’ını
tanılamaktadır.
Yeni bir nesne oluşturulduğunda constructor
constructor’da
da
belirlenen parametreler verilir (satır 49-50).
Constructor ‘lar herhangi bir değer döndürmezler. O
yüzden return kullanılmaz.
21
Konular
Giriş
Sınıflar Nesneler
Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri
Sınıf ve Fonksiyon Üyeleri
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
Nesneleri Başlatma ve Constructor Fonksiyonu
Sınıflar ve Ayrı
y Dosyalarda
y Kullanılması
Interface ve Implementation
Set Fonksiyonuyla Veri Geçerleme
11
Sınıflar ve Ayrı Dosyalarda Kullanılması
Bir sınıfı, main() fonksiyonu ile birlikte
oluşturduğumuzda başka programlarda include
yaparak kullanamayız.
Derleyici iki tane main() fonksiyonu olduğu için hata
mesajı verir.
Header file tanımlayarak başka programlarda include
ederek kullanabiliriz.
Bir header file .h
h uzantılıdır ve main() fonksiyonu
bulundurmaz.
Bir header file run yapılmaya çalışılırsa derleyici hata
aşağıdaki gibi bir mesaj verir.
undefined reference to 'main' 23
Sınıflar ve Ayrı Dosyalarda Kullanılması
24
12
Sınıflar ve Ayrı Dosyalarda Kullanılması
// Header file tanımı sonu.
25
Sınıflar ve Ayrı Dosyalarda Kullanılması
26
13
Sınıflar ve Ayrı Dosyalarda Kullanılması
Header file <> yerine “” ile gösterilir.
Header file satırına geldiğinde derleyici önce
programın source code’unun
code unun bulunduğu dizine bakar
bakar.
Orda yoksa library file (<> ile gösterilen) dizinine
bakar.
Header file’ların program kaynak koduyla aynı dizinde
olması veya library file dizininde yer almalıdır.
Header file kullanımı ile reusability artmaktadır.
artmaktadır
27
Konular
Giriş
Sınıflar Nesneler
Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri
Sınıf ve Fonksiyon Üyeleri
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
Nesneleri Başlatma ve Constructor Fonksiyonu
Sınıflar ve Ayrı
y Dosyalarda
y Kullanılması
Interface ve Implementation
Set Fonksiyonuyla Veri Geçerleme
14
Interface ve Implementation
Header file sadece bir sınıfın prototipini belirleyebilir.
Sınıfın tüm fonksiyon üyelerinin kodu ayrı bir kaynak
kodu ile oluşturulabilir.
oluşturulabilir
Header file interface, diğer kaynak kod ise
implementation kısmını oluşturur.
Kaynak kodun adı ile header file’ın adı aynıdır, uzantısı
farklıdır (.h, .cpp).
29
Interface ve Implementation
Prototip sınıf tanımlaması fonksiyonların yaptığı işlerin
farklı kullanıcılar tarafından değiştirilmesine olanak
sağlar.
Prototip içinde fonksiyon tanımlamaları sonuna ;
konulur.
Prototip sınıf tanımlamalarında fonksiyonların değişken
adlarının yazılması opsiyoneldir.
30
15
Interface ve Implementation
Prototip sınıf tanımlaması
31
Interface ve Implementation
Fonksiyon üyelerin tanımlaması - 1
32
16
Interface ve Implementation
Fonksiyon üyelerin tanımlaması - 2
33
Interface ve Implementation
Tanımlanan sınıfın kullanılması
34
17
Interface ve Implementation
Ekran çıktısı
35
Compile ve link işlemi
36
18
Konular
Giriş
Sınıflar Nesneler
Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri
Sınıf ve Fonksiyon Üyeleri
Sınıf ve Veri Üyeleri, Get ve Set Fonksiyonları
Nesneleri Başlatma ve Constructor Fonksiyonu
Sınıflar ve Ayrı
y Dosyalarda
y Kullanılması
Interface ve Implementation
Set Fonksiyonuyla Veri Geçerleme
Set Fonksiyonuyla Veri Geçerleme
Bir sınıfın data üyelerinin değerlerinin geçerliliği set
fonksiyonları tarafından yapılabilir (validation).
Atama işlemi yapılırken istenen şartlar kontrol edilir.
edilir
İstenen şartlar sağlanmıyorsa kullanıcıya mesajla uyarı
verilebilir.
38
19
Set Fonksiyonuyla Veri Geçerleme
Sınıf prototip tanımı
39
Set Fonksiyonuyla Veri Geçerleme
Sınıf fonksiyonlarının tanımı - 1
40
20
Set Fonksiyonuyla Veri Geçerleme
Sınıf fonksiyonlarının tanımı - 2
41
Set Fonksiyonuyla Veri Geçerleme
Sınıf fonksiyonlarının tanımı - 3
42
21
Set Fonksiyonuyla Veri Geçerleme
length() fonksiyonu bir string içindeki karakter
sayısını verir.
substr() fonksiyonu bir string içinden bir kısmı
almak için kullanılır.
setCourseName() fonksiyonu name değişkeninin
karakter sayısını kontrol eder.
name değişkeninin karakter sayısı 25’ten büyükse ilke
25 karakteri alır
alır.
Aşağıdaki satırla karakter sayısı 25’ten büyükse
kullanıcıya mesaj verilir.
43
Set Fonksiyonuyla Veri Geçerleme
Tanımlanan sınıfın kullanılması - 1
44
22
Set Fonksiyonuyla Veri Geçerleme
Tanımlanan sınıfın kullanılması - 2
45
Set Fonksiyonuyla Veri Geçerleme
Ekran çıktısı
46
23
Ödev
Bir hesap makinesi sınıfı oluşturunuz.
Hesap makinesi sınıfını prototip ve kaynak kodla geliştiriniz.
Bir program ile include yaparak çalıştırınız.
Hesap makinesi
ki i toplama,
l çıkarma,
k çarpma ve böl
bölme işlemleri
i l l i yapacaktır.
k
İşlemler aşağıdaki gibi ardarda girilen iki sayı kullanılarak yapılacaktır.
[Link]ıyı giriniz:20
[Link]ıyı giriniz:10
İki sayı girildikten sonra ekrana aşağıdaki işlem menüsü gelecek ve yapılan
girişe göre işlem yapılarak sonuç ekrana yazılacaktır.
1- Toplama
1
2- Çıkarma
3- Çarpma
4- Bölme
İşlem türünü seçiniz (1,2,3,4) : 2
İşlem sonucu = 10 47
24