Category: CPP

  • CPP 047 – Interface

    Birbirinden miras alan sınıflar birbirine mantıksal olarak bağlıdır. Örneğin Öğretmen sınıfı İnsan sınıfından miras alabilir. Çünkü bir öğretmen aynı zamanda bir insandır. Öğretmen insana ait olan özellikleri ve davranışları taşır fakat öte yandan At sınıfı, İnsan sınıfından miras alamaz. Çünkü atlar birer insan değildir. Atların insan olmaması bu iki canlı arasında benzerliklerin olmayacağı anlamına gelmiyor.…

  • CPP 046 – Inheritance 

    Bir oyun yaptığımızı düşünelim. Oyunumuzda düşman NPC’lerin olmasını istiyoruz. Kodlamaya başladık 1 düşman için bir sınıf yazdık, 2. düşman türü için bir sınıf, 3. düşman türü için bir sınıf derken belli bir süre sonra şunu farkediyoruz. Düşman NPC’ler birbirinden ne kadar farklı olsa da aslında hepsi aynı temel özelliklere sahip: Aynı şeyleri tekrar tekrar yazmanın…

  • CPP 045 – Encapsulation

    Kapsülleme, gereksiz detayların sınıfın dışından gözükmesini engellemek. Kendisine verilen sayıları toplayıp istediğimizde bize toplamı veren bir sınıf oluşturalım: Sınıfımız şuanlık doğru çalışıyor. Fakat bir problemimiz var: Sınıfımızı kullanan birisi value değişkenine direk olarak erişebilir. Erişsin sorun ne? Sorun sınıfın amacına uygun olmaması. Başta ne demiştik: “Kendisine verilen sayıları toplayıp istediğimizde bize toplamı veren bir sınıf…

  • CPP 044 – Access Specifiers

    Sınıfımızdaki değişken ve fonksiyonların görünürlülüğünü belirliyor. 3 türdür Default olarak sınıfımızın etiketi private dır x ve y private alanda olduğu için 10. satırdaki mc.x; ifadesi hata verecektir. Sınıfı kullanan kişilerin dışardan erişime ihtiyacı olan şeyleri public yapıyoruz. Dışardan müdahale olmamasını istediğimiz şeyleri private yapıyoruz. gibi Sınıf ögelerine erişmek Şuana kadar sınıfa ait değişken ve fonksiyonlara…

  • CPP 043 – Yapıcılar & Yıkıcılar

    Yapıcılar ve yıkıcılar objemizin oluşturulma ve yok edilme aşamalarında çalışan fonksiyonlarımızdır.

  • CPP 042 – OOP Nedir?

    Object Oriented Programlama (Nesne Yönelimli Programlama), en temelinde karmaşık yapıları mantıksal sınıflar oluşturarak basite indirgemektir. Şimdi 3D uzayda iki tane vektörü daha önceki bilgilerimizle toplamaya çalışalım: Sadece 2 tane vektörü toplamak istedik ama ~30 satırlık bir kodumuz oldu. İşin daha da kötüsü başka vektörleri toplamak istesem kat be kat daha fazla emek harcamamız gerekecek. Bu…

  • CPP 041 – Insertion Sort

    Bubble sort’dan sonra başka bir sıralama algoritması olan insertion sort a bakacağız.

  • CPP 040 – Union

    Aynı bellek alanında farklı zamanlarda farklı veri tiplerini tutmaya yarayan şey. Otel gibi düşünebilirsiniz. Aynı otel odasında 5 farklı müşteri farklı zamanlarda kalabilir. Örneğin odamız 4 kişilik olsun. 4 kişilik odada 4 kişi kalabilir ama 1 kişi de kalabilir. Unionda da durum aşağı yukarı böyle.

  • CPP 039 – Arrays & Pointers

    Dynamic memory allocation konusu işlediğimize göre şimdi boyutları değişebilen bir array oluşturabiliriz. Kendi kullanım amacınıza göre farklı şekillerde yazabilirsiniz. Kesin bir kuralı yok. Tabi bu tip temel şeyleri zamanın %99’unda biz yazmıyoruz. std::vector gibi hazır sınıfları kullanıyoruz. Fakat en azından daha derinlerde olayın nasıl gerçekleştiği hakkında bir fikir vereceğini umuyorum.

  • CPP 038 – Dynamic Memory Allocation

    Bellekte yer ayırmak için kullanıyoruz. Eeee daha önce bunu yapmıyor muyduk? Evet, OS bize bahçeli bir köy evi verdi. Ne güzel değil mi? Fakat artık biz bitki yetiştirmek istiyoruz ve dolayısıyla evin bahçesi bu iş için pek uygun değil. Dolayısıyla bize daha büyük alan lazım. Gidiyoruz OS’e diyoruz ki “Eyyy operating system bana tarla ver…

  • CPP 037 – Enumeration 

    Durumları tutmak için enum kullanıyoruz. Örneğin hava durumunu tutmak istersek şöyle bir enum kullanabiliriz: Peki nasıl kullanacağız? Tıpkı normal değişkenleri kullandığımız gibi kullanıyoruz. Enumlar aslında tıpkı bir integer gibi sayıdır. Sayı olarak durumları tutmak yerine böyle kelime olarak tutmak biz programcılar için çok daha kullanışlı ve anlamlı. Bir de enum class larımız vardır. Farkı: An enum just…

  • CPP 036 – main function & command-line arguments

    Şimdi kadar main fonksiyonumuzu int main() şeklinde gördük ama aslında bir alternatif kullanımı da var: Yani iki tane argüman alıyor. Bunlardan biricisi aldığı parametre sayısını, ikincisi ise bir parametreleri string olarak tutan bir array argcAn integer that contains the count of arguments that follow in argv. The argc parameter is always greater than or equal to 1. argvAn…

  • CPP 035 – Array Of Pointers Vs Pointer To An Array

    Pointerları tutan bir array ile bir array’i referans eden pointerın farkını göreceğiz. Pointerları tutan array – Array Of Pointers Nasıl birden fazla değişken kullanmak yerine array kullanıyorsak. Birden fazla pointer kullanmamız gereken durumlarda da array kullanabiliriz. Array’i referans eden pointer Bunda ise pointerlar nasıl int, string, bool, … gibi çeşitli değişkenleri referans edebiliyorsa, gösteriyorsa aynı…

  • CPP 034 – Pass by value, reference, pointer

    Bir fonksiyona parametre atarken nasıl davranması gerektiğini belirliyebiliriz. Temel olarak şey yapabiliriz. Değişkenin kopyasını oluşturduğumuzda fonksiyon içinde yapılan işlemler kopyanın üzerinde yapılacağı için ana değşikeni etkilemez. Reference ile attığımızda ise direk olarak ana değişkeni gönderdiğimiz için fonksiyon içinde yapılan işlemler ana değişkeni etkiler. Bir de pass by pointer seçeneğimiz var. Bu aslında 3. bir seçenek…

  • CPP 033 – Function Call Stack

    Bu konu hakkında diyecek çok bi şey yok aslında. Sadece mantıksal olarak kavramanız yeterli. Her fonksiyon çağrısında gerekli olan veriler belleğe kaydedilir. Bunlar üst üste gelerek bir yığın (stack) oluşturur. Fonksiyonlar geri dönerken bu stacktaki bilgileri kullanarak kaldığı yerden işlemine devam eder. Anlamamız gereken temel şey

  • CPP 032 – Function Overloading

    Farklı değişkenler alan temelde aynı işi yapan aynı isimli fonksiyonlar. Örneğin: Eskiden bu olmadığı için mantıksal olarak aynı işi yapan farklı isimlerde fonksiyonları görmek mümkündü. Artık böyle bir şeye gerek kalmadı. Bir takım bilinmesi gereken hususlar var: