C++ Dersi: Nesne Tabanlı Programlama 2. Baskı ³ Bölüm 1: Giriş
İçerik 1.1 Bilgisayar Sistemleri 1.1.1 Donanım 1.1.2 Yazılım 1.2 Programlama 1.2.1 Program GelişGrme 1.2.2 Nesne- tabanlı Programlama 1.2.3 C++ Programlama Dili 2
Hedefler Bilgisayar sisteminin yazılım ve donanım bileşenlerine örnek verme Program çalışprma yöntemlerini örneklerle açıklama Programlama dillerinin tarihi gelişimini anlatma Nesne- tabanlı programlama yaklaşımını diğer programlama yaklaşımları ile karşılaşprma Nesne- tabanlı programlama yaklaşımının temel prensiplerini anlatma C++ programlama dilinin genel özelliklerini anlatma C++ versiyon geçmişini anlatma 3
1.1 Bilgisayar Sistemleri Kısaca, bilgisayarları verileri saklayıp üzerlerinde işlem yapabilen, programlanabilir elektronik cihazlar olarak tanımlayabiliriz. Bilgisayar sistemleri donanım (hardware) ve yazılım (soyware) bileşenlerinden oluşur. 4
1.1.1 Donanım Bilgisayarın tüm fiziksel, elle tutabildiğimiz, görebildiğimiz elemanlarına donanım adı verilir. 5
1.1.1 Donanım... 6
1.1.1 Donanım... Merkezi İşlem Birimi (Central Processing Unit / CPU): Bilgisayarın beyni olarak adlandırılan, programdaki komutları çalışprmakla görevli birimdir. Bu birim AritmeGk/ManPk Birimi ve Kontrol Birimi adlı iki bileşenden oluşur: Kontrol Birimi (Control Unit): Bilgisayarda yapılan tüm işlemleri koordine etmekle görevlidir. Yeni komut alımı, veri ilegşimi ve diğer bileşenlerin koordinasyonunu sağlar. AritmeEk/ManGk Birimi (ArithmeGc/Logic Unit /ALU): Tüm aritmegk (toplama, çıkarma, vs.) ve manpksal (karşılaşprma) işlemlerini gerçekleşgrir. 7
1.1.1 Donanım... Ana Bellek (Main Memory): RAM olarak da adlandırılan, programdaki komutları ve program taraendan kullanılan verileri saklamakla görevli birimdir. Ana bellek, geçici verileri saklamak için kullanılır ve bilgisayar kapapldığında tüm içeriği silinir. 8
1.1.1 Donanım... İkincil Bellek (Secondary Storage): Uzun süreli verileri tutmak için kullanılan bellek türüdür. Bilgisayar kapansa bile kaybolmasını istemediğimiz tüm bilgileri ikincil bellekte saklamamız gerekir. İkincil belleklere örnek olarak sabit disk (hard disc), flash bellek, CD ve DVD gösterilebilir. 9
1.1.1 Donanım... Girdi Birimleri (Input Devices): Bilgisayarın dışarıdan okuduğu verilere girdi denilir. Bu bilgileri okuyan bileşenler, girdi birimleri olarak adlandırılır. En fazla kullanılan girdi birimlerine örnek olarak klavye (keyboard), fare (mouse), dijital kamera ve mikrofonu gösterebiliriz. 10
1.1.1 Donanım... ÇıkG Birimleri (Output Devices): Bilgisayarın dışarıya yolladığı tüm veriler çıkp birimleri ile ileglir. En yaygın çıkp birimlerine örnek olarak ekran (monitor), yazıcı (printer), hoparlör (speaker) gösterilebilir. Aynı zamanda CD/DVD ler, sabit veya flash bellek de çıkpları alabildikleri için çıkp birimi olarak sınıflandırılırlar. 11
1.1.2 Yazılım Yazılım, bilgisayar üzerinde belirli bir işi gerçekleşgrmek için hazırlanmış programlara verilen genel addır. Bir program, bilgisayara ne yapacağını ve nasıl yapacağını anlatan komutları içerir. Yazılım terimi, aynı zamanda elektronik olarak kaydedilen bilgileri tanımlamak için de kullanılır. 12
1.1.2 Yazılım... Bilgisayar yazılımları; uygulama yazılımları ve sistem yazılımları olmak üzere iki kategoriye ayrılır: Uygulama yazılımları, kelime işlemci, muhasebe, İnternet tarayıcısı, çizim programları gibi doğrudan kullanıcının ihgyacına yönelik olarak gelişgrilmiş yazılımlardır. Sistem yazılımları ise, uygulama yazılımlarının bilgisayarın sahip olduğu donanım bileşenleri ile uyumlu çalışmasını olanaklı kılan yazılımlardır. 13
1.2 Programlama Bir problemi çözmeye yarayan ve bir programlama dili kullanılarak yazılmış komut dizisine bilgisayar programı adı verilir. Günümüzde kullanılan 2000 den fazla programlama dili, yordamsal (procedural), fonksiyonel (funcgonal), mangksal (logical) ve nesne- tabanlı (object- oriented) olmak üzere farklı kategorilere bölünürler. 14
1.2 Programlama... 15
1.2 Programlama... 16
1.2 Programlama... 17
1.2.1 Program GelişErme Bir problemi çözmek için yazdığımız C++ programını öncelikle bir meen editörü (text editor) yardımı ile bilgisayara yazmamız gerekir. Genellikle bu megn editörü kullandığımız derleyicilerin içinde bulunmaktadır. Yazdığımız programa kaynak kodu (source code) adı verilir. 18
1.2.1 Program GelişErme... Oluşturulan kaynak kodun bilgisayar taraendan çalışprılma sürecinde kullanılan programlama diline bağımlı olarak farklı yöntemler uygulanmaktadır. En çok kullanılan iki yöntem derleme (compilagon) ve yorumlama (interpretagon) yaklaşımlarıdır. 19
20
1.2.2 Nesne- tabanlı Programlama Nesne- tabanlı programlama yaklaşımı, insanların çevrelerindeki her şeyi birer nesne olarak algıladıkları varsayımına dayanır. Bir nesne (object), fiziksel, kavramsal ya da yazılım anlamında tanımı olan bir varlığı niteler. Örneğin, araba, öğrenci ya da fotosentez kavramı, birer nesne örneğidir. Her nesnenin bir durumu, özelliği ve davranışı vardır. Örneğin, bir arabanın özellikleri arasında plaka, renk, model sayılabilirken, hareket etme ve durma da davranışları olarak görülebilir. 21
1.2.2 Nesne- tabanlı Programlama... Nesne- tabanlı programlama yaklaşımı aşağıdaki dört prensibi temel alır: Modülerlik (modularity) Soyutlama (abstracgon) Sarmalama / Kapsülleme (encapsulagon) Miras (inheritance ) Çoklu İşlev (polymorphism) 22
1.2.2 Nesne- tabanlı Programlama... Modülerlik: Yazılımın mümkün olduğunca birbirinden bağımsız modüller halinde gelişgrilmesi hedeflenir. Soyutlama: Yazılım probleminin çözümüne yönelik uygulama detayına girmeden üst seviyede nesnelerin modellenmesini kapsar. Sarmalama / Kapsülleme: Nesnelerin sahip oldukları özellik ve davranışları tek bir yapı alpnda toplanması ve bu özellik ve davranışların detaylarının diğer nesnelerden gizlenmesi olarak tanımlanabilir. Miras: nesneler arasında özellik ve davranışların miras yoluyla paylaşımı gerçekleşir. Çoklu İşlev : aynı davranışı farklı formlarda gerçekleşgren nesnelerin esnek bir yapıda kullanılmasını hedefler. 23
1.2.3 C++ Programlama Dili C programlama dilini temel alır C programlama dili, Dennis M. Ritchie AT&T Bell Laboratuvarları 1970 li yıllar yordamsal bir dildir 24
1.2.3 C++ Programlama Dili... C++ programlama dili, Bjarne Stroustrup AT&T Bell laboratuvarı Nesne- tabanlı programlama C dilinde yazılmış programlar C++ dili ile uyumludur, ancak C++ dilinde yer alan nesne- tabanlı programlama özellikleri C dilinde yer almaz. 25
1.2.3 C++ Programlama Dili... 26