IRCRehberi.Net- Türkiyenin En iyi IRC ve Genel Forum Sitesi  
 sohbet
derya sohbet


6Beğeni(ler)
  • 1 Post By Reyhan
  • 1 Post By ArDa
  • 1 Post By WildCat
  • 1 Post By KuzenKit
  • 1 Post By Ruyanur
  • 1 Post By LaviNia


 
 
Seçenekler Stil
Alt 05 Mayıs 2021, 00:25   #1
Standart C++ ve Nesne Yönelimli Programlamaya Giriş

C++ ve Nesne Yönelimli Programlamaya Giriş

İyi Bir Programın Özellikleri

  • Doğruluk (Correctness); Verilen görevin tam olarak yerine getirilmesidir. Bir yazılımı yazmaya başlamadan önce yazılımdan beklenenlerin belirtilmesi gerekir. Yazılım ortaya çıktıktan sonra bu belirlenen özellikler tam olarak sağlanmalıdır.
  • Güvenilirlik (Robustness); Beklenmedik nedenlerden dolayı programın çalışması kesilmemeli, yanlış işlemler yapmamalıdır. Program iyi yönde bile olsa kendinden beklenmeyen işlemler yapmamalıdır. Programcı hataları yüzünden kesintiye uğramaması için önlem
  • Genişleyebilme (Extendibility); İleri aşamalarda verilen görevlerin değiştirilmesi veya yenilerinin ilave edilmesi kolay olmalıdır. Bunun için basit tasarımlar yaparak karmaşık tasarımlardan uzak durmak gerekir.
  • Tekrar kullanım (Reusability); Yapılan tasarım şeklinin yazılan programın veya hiç olmassa modüllerin başka programlar içinde kullanılabilmesidir. Örneğin, bir konuda bir proje içinde kullanılan elamanların /veya modüllerin yeni bir projede tekrar kullanılabilmesi gerekir
  • Uygunluk (Compatibility); farklı bilgisayar sistemlerinde aynı ortak özelliklere sahip olunması. Bunun için çeşitli standartların kabul edilip uygulanması gerekir: örnek olarak
- veri dosyası formatının uygunluğu
- veri yapılarının uyumluluğu
- menu, diyalog, resim, tuş gibi kullanıcı ara yüzünün (user interface) uyumluluğu
  • Kaynakların kullanımı (Efficiency); bilgisayarın sahip olduğu ve ulaşabildiği tüm ekipmanları en iyi şekilde kullanmak. Eksik kullanmamak, kullanmadığı halde diğer programlara kullandırmamazlık etmemek.
  • Taşınabilirlik (Portability); çoğu zaman bir yazılım ürünün geliştirildiği bilgisayar ortamından farklı bilgisayar ortamına taşınarak çalıştırılması gerekir. Bu iki şekilde olabilir:
- Kaynak uyumlu (Source Compatable); yazılan programın yazıldığı bilgisayar sisteminden farklı bir sistemde tekrar derlenerek çalıştırılabilmesi.
- İkili kod uyumlu (Binary Compatable); programın yazıldığı ortamda derlenip, icra edilebilir dosyası (executable file) elde edildikten sonra farklı bir ortama taşınarak çalıştırılması.
Yazılım geliştirilmesi acısından asıl üzerinde durulması gereken kaynak kodun taşınabilirliğidir.
  • Kontrol edilebilirlik (Verifiability); bir yazılımın hatalı durumlar ile karşılaşması halinde programın devam etmesine engel olan ve hatta programı çalıştırmayan hatalar ortaya çıktığında kullanıcıya ve programcıya hatanın ne olduğu konusunda yeterli bilginin verilebilmesidir.
  • Bütünlük (Integrity); istenmeyen erişimler ve değiştirmeler karşısında program, veri, dokümantasyon gibi yazılım birleşenlerinin korunması. Bir programcının veri veya index dosyalarının programın bilgisi dışında kaybolması programın çalıştığında bunu anlayıp rapor etmesi buna örnek olarak verilebilir
  • Kolay kullananım (Easy use); yazılım ürününü kullanan kişinin ürünü kolayca öğrenmesi, sorunsuz kullanabilmesi, sonuçlarını yorumlayabilmesi, hatalarını düzelterek işlerini fazla zahmete girmeden yapabilmesidir.
  • Beraber çalışma (Interoperability); bir yazılım ürünün ihtiyaç duyduğu bir diğer yazılımı çağırabilmesi veya diğer bir yazılım tarafından çağrılabilmesi özelliğidir. Bu durumda iki program ard arda çalışma dışında bir birleri ile veri alışverişinde bulunabilmelidirler.

Programlama Dilleri


Makine Dili:
Tüm komutlar sayılar şeklindedir.
+1300042774
+1400593419
+1200274027
Assembler:
Temel bilgisayar işlemleri kısaltmalarla ifade edilir.
LOAD BASEPAY
ADD OVERPAY
STORE GROSSPAY
Yüksek Seviyeli Diller: Komutlar konuşma dili gibidir. Genel matematik notasyonu kullanılır.
grossPay = basePay + overTimePay
C++’ nin Tarihçesi
  • C++, C’den geliştirilmiştir.
  • ANSI C, C için dünyaca kabul edilen bir standarttır.
  • C++, C’ ye ‘Nesneye Yönelik Programlama (OOP)’ yetenekleri kazandırmıştır. Bu ise daha kolay anlaşılabilir ve düzeltilebilir bir program yazabilmeyi kolaylaştırır !

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

C++’ ın yapısı
  • C++ programları, class (sınıf) ve function (fonksiyon) denilen parçalardan oluşturulur.
  • C ++ Standart Kütüphanesi, tüm programcıların kullanabileceği zengin bir sınıf (class) ve fonksiyon (function) kolleksiyonu sunar.

Bir Programın Aşamaları:
  1. Yazım
  2. Önişleme
  3. Derleme
  4. Bağlama
  5. Yükleme
  6. Çalıştırma


3 g++ -c test.cpp 4
g++ -o test test.o -lm
6 ./tes

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


C++ Programlamaya Giriş
  • C ve C++ platformlar arasında taşınabilir kodlar üretir.
  • C++, nesne yönelimli programlama yeteneklerinin yanısıra yapısal ve disiplinli programlamaya olanak veren özellikler sağlar

Bir C++ Programı

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

İlk Programımız: Bir yazı yazdırmak
  • std::cout
-standart ‘output stream’ nesnesidir,
-ekrana çıktı verir.
-std:: ‘ namespace ’ in adını gösterir, ‘using’ kullanılırsa yazılması gerekmez.
  • <<
-stream ekleme operatörüdür.
-sağındaki değeri ‘output stream’e gönderir.
-std::cout << “Welcome to C++!\n”;
  • \ ‘ escape ’ karakteri özel karakterleri yazdırmak için kullanılır:

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Karşılaştırma Operatörleri


[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Nesne Yönelimli Programlama (OOP)

  • Dünyayı düşündüğümüz doğallıkla programlama yapabilmemizi sağlar.
  • Nesne yönelimli programlama tekniği kullanarak geliştirilmiş programlar daha güvenilir, dayanıklı ve kolay geliştirilebilirler.
  • Nesne’yi, belirlenmiş bir işlevi yerine getirebilecek altyapıyı hazırlayan, bu amaçla çeşitli fonksiyonlar içeren bir yapı olarak tanımlayabiliriz

Nesne Nedir?
  • Gerçek dünyadaki nesnelere benzeyen tekrar kullanılabilir yazılım parçalarıdır.
  • Tek başlarına bir anlamları vardır: zaman, ses, video nesnesi, boyacı, sekreter gibi.
  • Daha anlaşılır, değiştirilmesi daha kolay bir yapı sunarlar.
  • Belirlenmiş işlevleri yerine getiren, bunun içinde çeşitli fonksiyonlar içeren bu yapı değişkenleri de bünyesinde bulundurabilir. Fakat asıl, işlevini belli edecek fonksiyonları bünyesinde bulundurmasıdır. Bu özelliğe Paketleme (Encapsulation) adı verilir.
  • Paketlenecek fonksiyonların nasıl bir işlev göstereceği belirtilmeksizin, sadece nasıl kullanılacağının belirtilmesine Soyutlama (Abstraction) adı verilir.
  • Paketleme ve Soyutlama bir nesneyi belli etmek için yeterli iki özelliktir.

Nesne Nedir? (Türeme & Kalıtım)

Bir oto tamircisi nesnesi düşünelim. Bu oto tamircisinin üç oğlu olduğunu ve bunların her birini yetiştirdikten sonra , birer konuda uzmanlaşmalarını sağladığını düşünelim.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Burada Oto Boyacısı, Oto Kaynakçısı ve Oto Elektrikcisi türeyen nesnelerdir. Oto tamircisi ise taban nesnedir. Türeyen nesneler taban nesnenin özelliklerini göstereceklerdir. Oto boyayacaklar, kaynak yapacaklar, karbüratör ayarlayacaklar. Yeni nesne kendisine yeni özellikler katabileceği gibi devraldığı özellikleri de geliştirebilir. Bu özelliğe Türeme (Derivation), özellikleri devralmaya da Miras alma veya Kalıtım (Inheritance) adı verilir.

Nesne Nedir? (Benzerlik)

Oto tamircisi örneğine devam edersek, Burada üç önemli özellik göze çarpar:
  1. Türeyen nesneler taban nesnenin özelliklerini koruyarak devam ettirip kullanabilirler
  2. Türeyen nesneler türedikleri nesnelerin (taban nesnelerin) özelliklerini değiştirebilirler
  3. Türeyen nesneler yeni özellikler kazanabilir veya mevcut özellikleri kaybedebilirler
O zaman bir sistem içerisinde ister bir nesneden türemiş nesneler bulunsun, isterse bir birinden farklı nesneler bulunsun, bu nesnelerin benzer özellikleri olabilir ve bu özellikler aynı isim ile anılır. Buda benzer isimde fakat farklı nesnelerin üyesi olan üyelerin ortaya çıkmasına neden olur. Bu durum nesneler arasındaki benzerlikleri yansıtır. Bu duruma Çoklubenzeşim (Polymorphism) adı verilir.
Nesne
  • Özellikleri (Attributes, Properties) vardır: renk, şekil, boyut, genişlik, yükseklik vb.
  • Davranışları (Behaviors, Actions) vardır: her nesnenin kendine özgü davranışları vardır. Top yuvarlanır, ağaç yanar.
  • Yeni nesneler Mirasla (Inheritance) eski (parent) nesnelerin bazı özellik ve yöntemlerine sahip olurlar.
  • Bilgiler Gizlenebilir: Nesnelerin iş görmesi için diğer nesneler hakkında bilgi sahibi olması şart değildir.
  • Soyutlama (Abstraction) sayesinde bir nesne, spesifik tanımlamalar ve sadece o nesneye ait olabilecek detaylardan kaçınarak, ayrıntılarda boğulmadan kullanılabilir.
  • Sınıflar (Class) nesnelerin temelini oluşturulurlar.

Yapısal Programlama (Structured-Programming)
  • Anlaması, test etmesi, değiştirmesi kolay programlar yazmayı teşvik eder ve kolaylaştırır.
  • Her zaman sadece bir girişi, bir çıkışı olan program yapıları kullanır.
  • Kurallar:
  1. En basit şema (flowchart) ile başla,
  2. Her hangi bir işlem birbirini takip eden iki işlem şeklinde yazılabilir.
  3. Her hangi bir işlem, bir kontrol yapısı (döngü, koşul, komut bloğu vb.) ile değiştirilebilir.
  4. Kural 2 ve 3, birçok kere tekrarlanabilir.


Yapısal Programlama Kurallarının uygulanışı



[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Yapısal Programlama

Tüm programlar:
  • Komut Bloğu,
  • Koşul / Seçim (if, if/else, switch),
  • Döngü (for, while, do/while
)
Parçalarına bölünebilir, yada diğer bir değişle bu parçalardan oluşturulabilir
Nesne Yönelimli Programlama (OOP)

  • Veri ve Fonksiyonlar Sınıf (Class) paketlerinin içine saklanır.
  • Class’lar mimari planlar gibidir.
  • Tekrar tekrar kullanılabilirler.
  • Class (plan) kullanılarak yeni nesneler (evler) oluşturulur.
  • Planlarda değil, evlerde otururuz.
  • Nesne Yönelimli Programlamada
  • Veri (attributes) ve
  • Fonksiyonlar (behavior) Sınıf olarak adlandırılan paketler içinde korunurlar, ve birbirleri ile son derece sıkı ilişki içindedirler

Struct Yapısı

  • Diğer data tiplerini birleştirerek, yeni bir data tipi oluşturur
.

[
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Struct Yapısı

  • Bir struct yapısındaki her üyenin adı farklı olmalıdır.
  • İki farklı struct yapısı aynı üyelere sahip olabilir.
  • Struct tanımı mutlaka ‘ ; ’ ile bitirilir.
  • Kendisini üye olarak alan bir struct yazılabilir ve genelde liste, stack vb. yapılar programlamada kullanılır.
  • Struct yeni bir değişken tipi oluşturur, yani bu ‘yeni’ tipte değişkenler kullanılarak başka değişkenler tanımlayabilirsiniz:
Time timeObject, timeArray[ 10 ],
*timePtr, &timeRef =timeObject;
  • Normal üyelere erişirken ‘.’, pointer üyelere erişirken ‘->’ operatörleri kullanılır.
  • timeObject struct yapısının hour üyesine erişirken:
cout << timeObject.hour;
timePtr = &timeObject;
cout << timePtr->hour;
  • Burada ‘timePtr->hour’ ile ‘(*timePtr ).hour’ tamamen aynıdır.

Örnek (struct)


[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Time Class (Sınıf) Deklarasyonu

  • Sınıf ‘{ }’ işaretleri arasında tanımlanır.
Tanım ‘;’ işareti ile sonlandırılmalıdır.
  • Örnek:

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Üye (Member) Erişim Kısıtlamaları
  • Sınıf’lar kendi üyelerine (veri ve fonksiyonlarına) dışarıdan erişimi sınırlayabilirler.
  • Public: sınıf’a erişilen her yerde bu üyelere de erişilebilir.
  • Private: sadece sınıf’ın kendi üye fonksiyonları bu üyeye erişebilir.
  • Protected: private’a benzer. Daha sonra ayrıntılı olarak anlatılacak.

Constructor
  • Sınıf yapısının özel bir fonksiyonudur. Sınıf’la aynı isimdedir.
  • Sınıf’tan bir nesne oluşturulurken çalıştırılır. Sınıf üyelerini hazırlar.
  • Geri dönüş değeri olmaz ama parametre alabilir.
  • Bir kez sınıf tanımlanınca, bir değişken tipi gibi kullanılır. Dizi, pointer yada normal bir değişken tanımlanabilir.


Örnek (Sınıf)

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Ekran Çıktısı :

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Destructor Fonksiyonlar


  • Destructor’ fonksiyon sınıf isminin önüne ‘~’ işareti konularak isimlendirilir.
  • Nesne yok edilmeden önce yapılması gerekenleri yapar.
  • Fonsiyon aşırı-yüklemesi (overloading) yapılamaz. Parametresi olamaz
.
  • class time {
  • public:
  • time(); // constructor
  • ~time(); // destructor
  • };
‘Binary scope resolution’ Operatorü (::)

  • Sınıf’ın üyelerine erişirken sınıf isminin de kullanılabilmesini sağlar.
  • Başka sınıf’ların da aynı isimli üyeleri olabileceği için gereklidir.
dönüştipi ClassAdı::ÜyeFonksiyonAdı( )
{

}
Erişim Alanı
  • ‘Class scope’ : Bir sınıfın veri ve fonksiyon üyeleri bu sınıf alanına aittir.
  • ‘File scope’: Üye olmayan fonksiyonlar bu alanda tanımlanır.
  • Erişim alanı (scope) içinde iken üye fonksiyonlara adları ile erişilebilir.
  • Erişim alanı dışında ise üye fonksiyonlara başka bir nesne yada pointer aracılığı ile ulaşılır.
  • ‘Function Scope’: Bir üye fonksiyon içinde tanımlanan değişkenler sadece tanımlandıkları fonksiyon tarafından bilinirler. Fonksiyon çağırıldığında oluşturulup, fonksiyondan çıkışta yok edilirler.
  • Üyelere erişim aynı struct yapısındaki gibidir. Normalde ‘.’, Pointer’larla ise
‘->’ operatörleri kullanılır:
t.hour yada timePtr->hour gibi.
Örnek (‘ . ’ ve ‘->’)

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

‘Interface’-‘Implementation ’ Bölümlerinin Ayrılması

  • Sınıf yapısının tanımlanması bir başlık dosyasında (header file) yapılır.
  • Üye fonksiyonlar, program dosyasında tanımlanır.
  • Bu programların değiştirilmesini kolaylaştırır.

Örnek (Başlık Dosyası)

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Üyelere Erişim
  • Public: bu bölümdeki veri ve fonksiyonlara erişilebilir.
  • Private: bu bölümdekilere sadece üye yada friend fonksiyonlar üzerinden erişilebilir.
  • Hiçbiri yazılmazsa her şey private kabul edilir

Örnek (scope)

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Örnek (Ekran Çıktısı)
  • Private olarak tanımlanan hour değişkenine erişim ve değiştirme çabası derleme aşamasında hataya sebep olur:

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Hizmet-Erişim Fonksiyonları

  • Hizmet fonksiyonları: Nesnenin yapması gereken işleri bu özel (private) fonksiyonlar yaparlar ve erişim fonksiyonlarına destek verirler.
  • Erişim fonksiyonları: Nesnenin özel (private) fonksiyon ve verilerine bir ara yüz oluşturan ve bu erişimin güvenli ve kolay olmasını sağlayan fonksiyonlardır

Örnek (Erişim Fonk.)
// Fig. 6.7: salesp.h
// SalesPerson class definition
// Member functions defined in salesp.cpp
#ifndef SALESP_H
#define SALESP_H
class SalesPerson {
public:
SalesPerson(); // constructor
void getSalesFromUser(); // get sales figures from keyboard
void setSales( int, double ); // User supplies one month's
// sales figures.
void printAnnualSales();
private:
double totalAnnualSales(); // utility function
double sales[ 12 ]; // 12 monthly sales figures
};
#endif
Örnek (Erişim Fonk.)

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Constructor’lar

  • Sınıf üyelerini hazırlarlar. Ancak zorunlu değildir.
  • Sınıf’la aynı adlıdırlar ve geri dönüş değerleri yoktur.
  • Sınıf tanımlanırken default parametreler tanımlanabilir.
  • Yada nesne tanımlanırken parametre geçilebilir:

sınıf-adı nesne-adı( parametreler,…);

Örnek (Constructor’lar)

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]



Alıntı
Kaynak
C++ Ders Programları 1

________________

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
 
Alt 05 Mayıs 2021, 00:41   #2
Cumhuriyet Kadını
Reyhan - ait Kullanıcı Resmi (Avatar)

Standart

Baya emek verilmiş bir konu emeğinize sağlık

________________

bazen insanlar iyilesmek istemez.
cünkü ,
icindeki acı sevdiklerinin son hatirasidir..


per aspera ad astra ✨
 
Alt 05 Mayıs 2021, 00:44   #3
Standart

Alıntı:
Reyhan Nickli Üyeden Alıntı Mesajı göster
Baya emek verilmiş bir konu emeğinize sağlık
Teşekkür ederim @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

________________

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
 
Alt 05 Mayıs 2021, 00:46   #4
Standart

emeginize saglik

________________

No MoRe DramA
 
Alt 05 Mayıs 2021, 00:54   #5
Standart

Paylaşım için teşekkürler, emeğine sağlık.

________________

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
 
Alt 05 Mayıs 2021, 01:13   #6
Mutena
Ruyanur - ait Kullanıcı Resmi (Avatar)

Standart

Emeğinize sağlık paylaşım icin teşekkürler.

________________

"hakikâte giden yolda, meşakkatsiz bir varış yoktur."




 
Alt 05 Mayıs 2021, 01:21   #7
~Ölüm Çiçeği~
LaviNia - ait Kullanıcı Resmi (Avatar)

Standart

Emeğinize sağlık

________________

Bazen de yıldızlar bakar.
İnsanlar kayar hayatımızdan..

 


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı





Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 14:56.