Kayıtlar

Şubat, 2018 tarihine ait yayınlar gösteriliyor

C++ Virtual nedir? Ne işe yarar?

Sanal fonksiyonları çok biçimli programlama tekniği (polymorphism) ile kullanılır. Bir sınıfın fonksiyonunun miras alan diğer sınıflar tarafından kullanılmasını sağlamak için virtual anahtar kelimesiyle tanımlarız. Bunun nedenini bir örnek ile açıklayalım. Diyelim ki bir kare sınıfımız var. Bu sınıf için alan hesaplayabiliriz, çizim yaptırabiliriz , çevre hesaplayabiliriz. Diğer bir sınıf olan üçgen ise kare’den miras alsın. Üçgen içinde aynı fonksiyonları kullanabiliriz.Bunu yapabilmemiz için kare sınıfımızdaki fonksiyonlarımızı virtual anahtar kelimesiyle deklare etmemiz gerekir yani prototiplerini virtual ön eki ile yazarız. Örnek  ile olayı biraz somutlaştıralım. class dortgen { public: virtual int alan(int taban, int yukseklik){ return taban*yukseklik; } int cevre(int taban, int yukseklik){ return 2*(taban+yukseklik); } }; class ucgen : public dortgen { public: int alan(int taban, int yukseklik){ return (taban*yukseklik)/2; }

Sınıfın Tanımları (Class Definition)

Sınıfın Tanımları (Class Definition) Class: Nesne yönelimli programlama dillerinde nesnelerin özelliklerini, davranışlarını ve başlangıç durumlarını tanımlamak için kullanılan şablonlara verilen addır. Public: Bu erişim türü ile tanımlanmış sınıf üyelerine her yerden erişim izni verilmiş olur. Private: Bu erişim türünde tanımlanmış üyelere sadece aynı sınıf içerisinde tanımlanmış diğer üyeler tarafından erişim izni verilmiş olur. Protected: Bu erişim türünde tanımlanmış üyelere tanımlandık sınıf ve bu sınıftan türetilmiş diğer sınıflardan erişim izni verilmiş olur. Constructors (Kurucular): Bir sınıfın örneği oluşturulduğunda kendiliğinden çalışan özel bir metottur. Sınıf ile aynı ada sahip olmak zorundadır, parametreler alabilir ama geri değer döndürmez. Tüm sınıfların bir kurucusu olmak zorundadır. Destructor (Yıkıcı / Yok Edici): Constructor fonksiyonunun yaptığı işin tersini yaparlar. Görevi biten nesneyi yok ederler. Bir sınıfın(class) üyesi olan bir değişken göre

NYP'nin Öğeleri(Encapsulation,Inheritance,Polymorphism)

NYP'nin Öğeleri Encapsulation : Bir nesnenin bazı özellik ve işlevlerini diğerlerinden saklanabilmesi, erişimin sınırlandırılabilmesidir. Yani private tanımladığımız alanları kullanıcıdan saklamamız anlamına gelir ki zaten kullanıcının bunu kullanmasına gerek yoktur ve hatta kullanmaması gerekmektedir. Encapsulation’u bir telefona benzetebiriz. Telefonun düğmeleri ortada (‘public’) dururuken bir çok parça telefonun içerisinde gizildir (private). Zaten kullanıcının bunları kullanması gerekmez hatta dokunmaması gerekir. Aynı şekilde bir nesnenin kendinde bulunan bileşenleri kötü niyetli veya bilinçsiz kullanımlardan gizlemesi gerekir. Encapsulation programcıya nesneleri koruma gücünü verir.. Inheritance : Kalıtım (inheritance), bir nesnenin diğer bir nesnenin özelliklerini kazanması işlemidir. Diğer bir deyişle bir class’ın başka bir class’daki property ve method’lara sahip olmasına inheritance denir.. Bu önemlidir, çünkü hiyerarşik sınıflandırmayı destekler. Bir class’

Public,Private,Protected

Public:  Bu erişim türü ile tanımlanmış sınıf üyelerine her yerden erişim izni verilmiş olur. Private:  Bu erişim türünde tanımlanmış üyelere sadece aynı sınıf içerisinde tanımlanmış diğer üyeler tarafından erişim izni verilmiş olur. Protected:  Bu erişim türünde tanımlanmış üyelere tanımlandık sınıf ve bu sınıftan türetilmiş diğer sınıflardan erişim izni verilmiş olur.

Örnek Program

- Merhaba C++ Yazalım Genelde programlama giriş yapan herkes “Merhaba Dünya” yazarak başlar, bizde biraz farklılık yapalım ve çalıştığında ekranda “Merhaba C++” yazan programı yapalım. 1 2 3 4 5 6 7 8 9 10 // ilk program #include<iostream> using namespace std ; int main ( ) { cout << "merhaba C++" ; return 0 ; }

New Operatörü ve Delete Operatörü

Dinamik Bellek Yönetimi Şu ana kadar küçük boyutta değişkenler kullandık ancak eğer belleğin daha büyük boyuttaki değişkenler için kullanımı gerekecekse dinamik bellek yönetimini kullanmak daha pratik olacaktır. Bu nedenle new ve delete operatörlerini kullanacağız. NEW Operatörü  Bellekten yer atırmak istenildiği zaman new operatörü kullanılır. Bir tamsayı gösteren işaretçi için bir tamsayılık yer aşağıda ki şekilde bellekte kendisine yer edinir. int *sayi; sayi=new int; Eğer değişkene başlangıç değeri de vermek istiyorsak; Sayi=new int(10); //sayi değişkenine 10 değerini atamış oluruz. Eğer bellekte bir dizi oluşturacak şekilde yer ayırmak istiyorsak: int *dizi; dizi=new int[3]; //bellekte 3 elemanlı bir dizi için yer ayırır ve bellekte bu dizinin bulunduğu yerin başlangıç adresini dizi işaretçisine atar. Ancak dizilerdeki elemanlara başlangıç adresi veremiyoruz. DELETE Operatörü  new operatörü ile bir değişken için yer ayırdığımızı varsayalım. Ayırdığımız bu yeri geri vermek

Nesne İşaretçileri

C++ Nesne İşaretçileri - Nesne işaretçileri artırıldığında, diğer tür işaretçilerde olduğu gibi sıradaki nesneyi işaret ederler. - Nesne işaretçisi oluşturulduğunda bir nesne oluşturulmaz. Sadece var olan bir nesne için işaretçi oluşturulur. myclass ob(120); myclass *p; p=&ob;

Destructor(Yıkıcı veya Yok edici)

Destructor(Yıkıcı veya Yok edici) Nedir? Destructor(Yıkıcı veya Yok edici) olarak adlandırılan fonksiyonlar ise,constructor fonksiyonunun yaptıgı işin tersini yaparlar,yani gorevi biten nesneyi yok ederler.Bir sınıfın(class) uyesi olan bir degisken(orn:string tipli) gorevini noktaladigi durumda ~destructor() fonksiyonu otomatik cagrilarak,uzerinde calistigi nesneyi devre dışı bırakır.C++ programlama dili icerisinde destructor'lar bulunurken,java dilinde bu fonksiyonlar kaldırılmıştır.Nedeni ise,programlama zafiyeti acısından eger iyi tasarlanmazsa,bu fonksiyonlar programa ciddi zararlar verebilirler. Destructor() fonksiyonları olmasada,constructor() fonksiyonlari aşırı yuklenebilir.Bu durumu fonksiyon parametrelerini degistirerek uygulayabilirsiniz.Ancak bu fonksiyonlarin donus tipi belirtilmemektedir.  C++ programlama dilinde bu sistemlerin initalize edilmesi asagidaki gibi tasarlanır. class class_name { // Bir class class_name(); // Bir constructor class_name(int,float); /

Constructor (Yapıcı)

Constructor (Yapıcı) Nedir? Nesne yönelimli programlama yaklaşımında bir nesnenin oluşturulması sırasında ilk çalışan fonksiyonun ismidir. Buna göre bir nesnenin oluşturulması demek, nesneyi tarif eden sınıftan bir türün hafızada (RAM) bir kopyası için yer açılması ve bu nesnenin bütün değişken ve metodlarının tanımlanan kısıtlamalarla erişilebilir olması demektir. Bilindiği üzere nesne yönelimli programlamada bir nesnenin kendisi ve bir de nesneyi gösteren nesne atıfı (object referrer) bulunmaktadır. Nesne atıfı, içersidinde tanımlandığı nesne ile atıfta bulunduğu nesne arasında bir münasebet (aggregation) kurmaktadır. Yapıcı (constructor) ise nesnenin bizzatihi kendisinin oluşturulması sırasında çalışmaktadır.

GPL Nedir?

GPL Nedir? GNU GPL (General Public License - Genel Kamu Lisansı) açık kaynağı destekleyici bir lisans türü olup, ilk defa açık kaynak kodlu yazılımların kapalı kaynak kodlu hale getirilerek satılmasından rahatsız olunmasıyla öneri olarak geliştirildi. GPL, "Özgür yazılım, özgür lisans" kavramlarında sürekliliği sağlaması sebebiyle başrolde yer aldı. GPL lisansı, aynı lisans şartlarının korunması kaydıyla her türlü kullanıma imkan veren yapısı sayesinde, açık kaynak kodlu yazılımların gelişiminde büyük katkı sahibidir. GPL'in avantajları Kullanıcı yazılımının içinde ne olduğunu bilir. Bazı üretici firmaların yaptığı öne sürülen arka kapı (backdoor) yerleştirme vakaları imkânsızdır. Bu özellikle askeri kurumlar için önemli olmaktadır. GPL ile lisanslanan yazılımın kaynak kodu ortada olduğu için gerekli inceleme yapıldıktan sonra rahatlıkla kullanılabilir. Yazılım çok büyük bir kitle tarafından kullanılması sonucunda hataların keşfedilmesi ve yine çok büyük bir kitle taraf

GUI Nedir?

GUI Nedir? Açılımı "Graphical User Interface" olan GUI, grafiksel kullanıcı arayüzü anlamına gelir. C ve C++ ile ilgilendiyseniz konsol ekranını bilirsiniz. C++'da bir uygulama yaptığımızda bu uygulama siyah bir konsol ekranından ibaret olacaktır. Uygulamamızda buton, checkbox, radiobutton gibi nesneler olmayacaktır. Bu simsiyah konsol ekranı kullanıcıların işini zorlaştıracak ve oluşturduğunuz programın görünüşünü kötü etkileyecektir. Grafiksel kullanıcı arayüzü ile siyah konsol ekranına komut girerek uygulamayı harekete geçirmeye gerek yok. GUI sayesinde, uygulama geliştirirken butonlar, etiketler (yani label), pencereler gibi bir çok şey kullanabiliriz. Sadece fare ve klavye ile kontrol edilebilen bir uygulama, konsol ekranına komutlar girilerek işleyen bir konsol uygulamasından çok daha iyidir.

Linker(Bağlayıcı)

Linker(Bağlayıcı) Nedir? Bir derleyici tarafından üretilmiş olan kodları bağlayarak işletim sisteminin çalıştırabileceği tek bir kod üreten programdır. Günümüzde hızla gelişen programlama ihtiyaçları sonucunda programlamada modüler yaklaşıma geçilmiştir. Buna göre büyük bir yazılım küçük alt parçalara bölünmekte ve her parça ayrı ayrı işlenerek büyük program elde edilmektedir. Yapısal programlamanın da çıkış sebeplerinden birisi olan bu yaklaşıma göre dillerde fonksiyon desteği gelmiş ve değişik parametrelere göre aynı kodun farklı sonuçlar üretmesi sağlanmıştır. Daha sonradan gelişen nesne yönelimli programlama bu konuda bir sonraki nesil olarak kabul edilebilir. Nesne yönelimli programlamada, programlar nesnelere bölünerek farklı bir yaklaşım izlenmiştir. Bu yaklaşımların derleyicilere yansıması da uzun sürmemiş, daha yapısal programlamanın ilk geliştiği günlerde derleyiciler de farklı kütüphaneler ve bu kütüphaneleri birleştirmeye yarayan harici programlar kullanmaya baş

Debugger Nedir?

Debugger nedir, debugger ne işe yarar? Debugger programlarda hata ayıklamaya yaramaktadır. Kısaca debugger hata ayıklayıcıdır. Kodları yazdığımız derleyici arka planda kodları derlerken kodlar arasında hataları inceler, eğer hata bulunmakta ise hata vermektedir. Bu hata ve hataların bulunması, bulunduktan sonra da düzeltilmesi sürecine debug denir. Debug Uygulamaları Eclipse, C, C++, PHP, Notepad++ olarak örnek verebiliriz.

Process ve Thread Arasındaki Farklar

Resim
Process(İşlem) ve Thread(İplik Kullanımı) Proses oluşturmak işletim sistemi için bazı sebeplerden dolayı çok maliyetli bir iştir. Bu sebeple bir programın birden çok işlem yapması gerekiyorsa eğer birden fazla proses üretmesi yerine Thread yani iplik kullanımının işletim sistemi açısından daha avantajlıdır. İpliklerin Özellikleri ve Proses'ten Farkları Thread'ler, proses içinde bulunurlar ve aynı adres uzayını paylaşırlar. Bir proses içerisinde birden fazla iş yürütebilirler. İplikler prosesler gibi birbirlerinden bağımsız değildirler. Kendi aralarında kaynakları ve bazı verileri birbirleriyle paylaşırlar.  Yani kısacası;  İşler birbirinden tamamen bağımsız ise : PROSES İşler birbirine bağlı ve birlikte yürütülüyorsa : THREAD (İplik)  diyebiliriz.

Argument ve Parameter Arasındaki Farklar

Argument ve Parameter Arasındaki Farklar Argüman: Bir metoda iletilen ifadelerin değerleri. Parameter ve argument çoğu zaman birbirleri yerine kullanılabilir.Ancak bu ikisi farklı kavramlardır. Method definition'ında , methodun alabileceği parameter type ve variable name 'i belirtiriz.Method'u çağırırken methoda gönderdiğimiz değerler argument'tir. (Parametreler, arayanın yerel adlarına karşılık gelir. Bağımsız değişkenler, arayan tarafından iletilen değerlere atıfta bulunur.) Örnek:  int add( int a, int b )    {    // a and b are 'parameters', the variables the callee uses to accept inputs.    return a + b;    } // 2 and 3 are 'arguments', the values passed by the caller. int result = add( 2, 3 );