Yordamsal Tabanlı Programlama Procedural Programming (Yordamsal Programlama) Subprograms, functions/procedures kullanarak programı kısımlara ayırma prensibiyle çalışır. Programlamadaki karmaşıklık yordamlar içerisine gizlenir. Data karmaşıklığı oluşmaktadır (built-in data types, user-defined data types, static type checking, runtime type checking ve abstract data type) Verinin ve veri üzerinde işlem yapan fonksiyonların aynı modulde olması gerekir. 15.09.2007 Nesneye Yonelik Programlama 1.1
Object-Oriented Oriented Design (OOD) Nesne Yönelimli Y Tasarım Nesneye Yönelik Tasarım Object-Nesneler programlamada gerçek dünya nesnelerini temsil ederler (gerçek nesnelerin soyut temsili). Object, state information (local variables - yerel değişkenler) ve bu yerel değişkenler üzerinde işlem yapan metotlardan oluşur. Nesneler arasındaki benzerlikler class (sınıflar) lar ve sınıfların hiyerarşileriyle belirlenir. Sistem analizi, dizaynı ve gerçeklenmesi bir biriyle etkileşen bir dizi nesnelerle olur. 15.09.2007 Nesneye Yonelik Programlama 1.2
OOD Ana Özellikleri Encapsulation - Çevrimleme Kodu ve kodun işlediği verileri bir araya getiren ve onları dış etkilerden, yanlış kullanımlardan koruyan mekanizmadır. Inheritance - Miras Yazılımın tekrar kullanılabilirliğini artırır, yani var olan yazılım üzerine yeni düzenlemelerin kolayca eklenebilmesini sağlar. Var olan sınıflara yeni yeteneklerin kazandırılması sağlanır. 15.09.2007 Nesneye Yonelik Programlama 1.3
OOD Ana Ozellikleri Polymorphism - Çok biçimcilik Farklı durumlarda değişken, fonksiyon ve nesneler gibi varlıklara farklı formlar (anlamlar) kazandırılabilmektedir. 15.09.2007 Nesneye Yonelik Programlama 1.4
Programlama Dillerinin Tarihçesi 15.09.2007 Nesneye Yonelik Programlama 1.5
C Programming Language 1969 da Bell Lab. larında PDP-11 minicomputer için system programları geliştirmek amacıyla geliştirildi. UNIX operating system (isletim sistemi) nin yazılması ve geliştirilmesinde kullanıldı. UNIX in önemli bir kısmının (%90) C diliyle yazılması onun diğer bilgisayarlara taşınmasını kolaylastırmıştır (portability). UNIX şu an akademik ortamlarda en çok kullanılan işletim sistemidir. 15.09.2007 Nesneye Yonelik Programlama 1.6
K&R C 1978'de Dennis Ritchie ve Brian Kernighan The C Programming Language (C Programlama Dili) kitabının ilk baskısını yaptılar. C programcıları tarafından "K&R" olarak bilinen bu kitap, C dilinin gayri resmi standardı olarak kullanıldı. C'nin bu versiyonu bugün "K&R C" olarak adlandırılır. 15.09.2007 Nesneye Yonelik Programlama 1.7
C++ nin orijini 1980 yılında Bjarne Stroustrup (Bell Lab.) nesne yönelimli özelliklerini destekleyen ve C nin halefi olarak adlandırılan C++ yi geliştirdi. C++ tamamıyla yeni bir dil olmaktan ziyade C nin bir superseti olarak dizayn edilmiştir. İlk versiyonu 1985 de çıkmıştır. 15.09.2007 Nesneye Yonelik Programlama 1.8
C++ in önemli özellikleri C++ nin bir supersetidir. Kullanıcı yeni veri tiplerine sahip sınıftanımlayabilir data hiding (veri saklama) Nesnelere ilk değer ataması kullanıcı kod yazmasa bile otomatik olarak yapılabilmektedir. Implicit type conversion Kapalı olarak tip dönüşümü Sınıflar arasında kalıtım desteklenmektedir Kullanıcı kontrollü bellek yönetimi vardır Operator overloading (operatör aşırı yüklemesi) için mekanizmalar vardır. Taşınabilir ve optimize edilebilir kodlara destek için standart kütüphaneler mevcuttur. 15.09.2007 Nesneye Yonelik Programlama 1.9
C++ özellikleri (devam ) Symbolic constants (sabitler) Inline functions (yerel fonksiyonlar) Default function arguments (varsayılan fonksiyon argümanları) Function isimlerinin aşırı yüklenebilme yeteneği Reference type (nesneler için takma isimler tanımlayabilme) Exception handling (İstisnai durumları işleyebilme) Generic programming desteği (templates, şablonlar) Standart Template Library (STL), Standart Şablon Kütüphanesi vardır. 15.09.2007 Nesneye Yonelik Programlama 1.10
C++ İçin Genel Gözlemler C++ saf nesne yönelimli bir dil değildir. Hybrid bir dildir (hem procedure-oriented, hem de object-oriented özelliklere sahiptir) C++ kodu eğer itina ile yazılmazsa anlaşılması oldukça zor olabilmektedir. Eğer kod uygun bir şekilde yazılırsa, kompleks ve büyük projelerin oluşturulmasında C++ ın oldukça güçlü bir dil olduğu gözlenebilir. 15.09.2007 Nesneye Yonelik Programlama 1.11
Java Programlama Dili 1995 yılında Sun Microsystems tarafından taşınabilir kod geliştirmek için geliştirildi (bir platform için yazılan Java kodu değiştirilmeksizin başka bir platformda çalışabilme yeteneği vardır). Genellikle Java programları bytekod olarakderlenip sürüme çıkartılır. Her bir platform byte kodları yorumlayan bir standard virtual machine (sanal makineye) sahiptir. Makine dilinde çalışan kod ile kıyalandığında 3-20 kez daha yavaş çalıştığı gözlenmiştir. Java, C ve C++ nin özelliklerinin bir kısmını almıştır. En büyük fark pointer (işaretçi) işlemlerinin olmayışı ve automatic garbage collection özelliklerine sahip olmasıdır. 15.09.2007 Nesneye Yonelik Programlama 1.12
15.09.2007 Nesneye Yonelik Programlama 1.13
Preprocessor Directives C++ ile yazılan bir program genelde compile edilmeden önce preprocessor (önişleme) aşamasından geçer. Preprocessor directives (önişlemci talimatları) # ile başlar. macro definitions makro tanımamalar conditional compilation Koşullu derleme inclusion of standard header files standart başlık dosyalarının programa dahil edilmesi #include <iostream> derleme esnasında standart giriş/çıkış işlemlerini yerine getiren iostrem.h başlık dosyasının göz önünde tutulmasını sağlar. 15.09.2007 Nesneye Yonelik Programlama 1.14
main( ) fonksiyonu Her C++ program main( ) fonksiyonunu tanımlamalıdır. int main( ) { } bir fonksiyon tanımlamasıdır. return 0; main( ) fonksiyonunun başarılı bir şekilde işlevini yerine getirdiğini ifade etmek için kullanılır ve 0 değerini geri döndürür. 15.09.2007 Nesneye Yonelik Programlama 1.15
cout cout << Welcome to C++!\n ; tırnak içerisindeki yazıyı standard output stream object (screen) ine görüntülenmesi için yollar. << stream insertion operator u olarak adlandırılır. \n escape sequence kaçış karakteridir. \n yeni satır başına git (new line) \t yatay girinti (horizontal tab) \r aynı satırın başına git \a bell sound \\ backslash (\) character \ double quote ( ) character 15.09.2007 Nesneye Yonelik Programlama 1.16
15.09.2007 Nesneye Yonelik Programlama 1.17
15.09.2007 Nesneye Yonelik Programlama 1.18
Stream input - cin cin >> intl; intl değişkeninin input stream object (cin) okununmasını sağlar >> stream extraction operator endl satır sonunu ifade eder (\n) ve output buffer (çıkış tamponunun) flush (akmasını) olmasını sağlar. 15.09.2007 Nesneye Yonelik Programlama 1.19
Variable Declaration Değişken isimleri harf, rakam ve altçizgi ( _ ) karakterlerinden oluşan bir karakter dizisi ile belirlenir. Değişken isimleri rakamla başlamaz. Not: altçizgi ile değişken ismi başlatmak iyi değildir, çünkü compiler altçizgiyle başlayan değişkenler kullanabilmektedir. 15.09.2007 Nesneye Yonelik Programlama 1.20
15.09.2007 Nesneye Yonelik Programlama 1.21
15.09.2007 Nesneye Yonelik Programlama 1.22
Default streams Dosyalar üzerindeki işlemler stream (akışlar) vasıtasıyla olur. Stream (akış) data flow (veri akışı) anlamına gelir. 3 tane standard stream vardır, bunlar default olarak şu akışlara (devices) yonlendirilmistir. cout (ekran) cin (klavye) cerror (ekran) Akışlar iostream.h başlık dosyasında deklere edilmişlerdir C++ daakışlar nesnelerle temsil edilirler. 15.09.2007 Nesneye Yonelik Programlama 1.23
C++ Arithmetic Operators Operation C++ Operator Ornek Toplama + f + 7 Çıkarma - p - c Çarpma * b * m Bölme / x / y Kalan % r % s 15.09.2007 Nesneye Yonelik Programlama 1.24
Equality ve Relational Operators Operators Örnek Anlamı == x == y x, ye eşit!= x!= y x, y den farklı > x > y x, y den büyük < x < y x, y den kücük >= x >= y x, y den büyük eşit <= x<=y x, y den küçük eşit 15.09.2007 Nesneye Yonelik Programlama 1.25
15.09.2007 Nesneye Yonelik Programlama 1.26
15.09.2007 Nesneye Yonelik Programlama 1.27
Yeni tarz Headers ve Namespaces Yeni C++ standartlara göre başlık dosyaları.h takısını atarlar. #include <iostream> Çoklu kullanılan değişkenlerdeki karmaşayı önlemek için C++ namespaces kavramı getirdi. cin ve cout u kullanabilmek için Using namespace std; yada sdt::cin ve std::out 15.09.2007 Nesneye Yonelik Programlama 1.28
# include <iostream> using namespace std; // creates new namespace namespace somenumbers{ int a =20; float b = 0.00; } int main (void) { int a = 100; float b = 3.1421; a. somenumbers::a somenumbers::b } 15.09.2007 Nesneye Yonelik Programlama 1.29