C++ oop ( Nesne tabanlı programlama)

ioscan

Kodcu Enginar
Geliştirici
Editör
Üye
Mesaj
29
Çözümler
1
Beğeni
137
Puan
708
Merhaba arkadaşlar. Çoğunuz c++ biliyorsunuzdur. Peki oop biliyor musunuz? Oop Object Oriented Programming yani nesne tabanlı programlama demektir. Esas amacı karmaşık ve uzun programlarda bizlerin işlerini kolaylaştırmaktır. Güvenli , dayanıklı , uyarlanabilir olmasının yanı sıra geliştirilebilir olması sayesinde daha az karmaşık programlar yazmayı başarabiliriz. (Bir nevi fonksiyon oluşturmak gibi . ) Nesne tabanlı programlamanın isminden çıkarılması gereken en temel sonuç bu tekniğin nesneleri kabul etmesidir.

Tüm oop dillerinin sahip olduğu 3 özellik vardır :
1.) Depolama
2.) Kalıtım
3.) Çok biçimlilik

1.) Depolama, kod kısmını ve kodun işlem yaptığı verileri bir araya getiren ve onları dış etmenlerden koruyan bir yapıdır. (Örneğin çikolatayı dış etmenlerden koruyan şey ambalajıdır .) Bu konuda dikkat etmemiz gereken bir nokta vardır. Bu da verilerin ve kodların tanımlanma şeklidir. Verilerimiz içinde bulundukları nesneye public (genel) veya private (özel) olarak tanımlanabilirler. Public kod verileri tanımlandıkları nesnelerin dışında da çağırılıp kullanılabilirler. Private kod verileri ise sadece o nesneye ait bileşenler tarafından kullanılabilir.

2.) Kalıtım, bir nesnenin diğer nesnelerin özelliklerini alabilmesidir. Bu sayede hiyerarşik bir yapı oluşur ve birçok bilgi bu sayede kullanılabilir. (Örneğin bütün kuşlar uçabilir ama sadece papağanlar konuşabilir. Yani bütün kuşlar uçma özelliğini kullanabilir ama konuşma özelliğini kullanamaz.)

3.) Çok biçimlilik, genel anlamda bir metodun farklı nesnelerde veya farklı ortamlarda farklı sonuçlar üretmesidir. (Yine kuştan örnek vereyim bütün kuşlar öter ama korktuğu bir durumda yüksek tonda, normal bir durumda normal tonda öter)

Şimdi normal bir kodlama şekliyle kısa bir şekilde yazılabilecek bazı problemleri oop ile çözelim (Not --> kodları ingilizce yazmaya alışmaya çalışıyorum o yüzden kodlar ingilizce :) )

Örnek 1 : Uzun ve kısa kenarı girilen bir dikdörtgenin alanının ve çevresinin bulunup ekrana yazdırılması -->

C++:
#include <iostream>

using namespace std;


class rectangle //sınıf belirtiyoruz
{
public: //verilerimizin türünü belirtiyoruz
    int short_edge;
    int long_edge;

    int area()  // bir nevi alan bulan fonsiyon yazıyoruz ve recursive (sürekli) fonksiyon gibi geriye değer dönderiyoruz.
    {
        return short_edge * long_edge;
    }

    int perimeter()
    {
        return 2 * (short_edge + long_edge);
    }
}x;

int main()
{
 
    cout << "Please enter the length of short edge --> ";
    cin >> x.short_edge;

    cout << "Please enter the length of long edge --> ";
    cin >> x.long_edge;

    if (x.short_edge == x.long_edge)
    {
        cout << "\nTwo sides of a rectangle cannot be equal\n";
    }
    else
    {
        cout << "\nArea of the rectangle --> " << x.area() << endl;
        cout << "Perimeter of the rectangle --> " << x.perimeter() << "\n" << endl;
    }

    system("pause");

}

Örnek 2: Bir işçinin adını ve yaş bilgisini kullanıcıdan alıp ekrana yazdıran kod -- >

C++:
#include <iostream>
#include <string.h>

using namespace std;

class worker //sınıfımızı belirtiyoruz
{

    int age;
    string name; // public içini fazla meşgul etmemek için kodun dış kısmına yazıp heryerde bu değişkenleri çağırabilmek için kodun duşına yazıyoruz

public:

    void enter_the_age(string Name, int Age) //değişkenlerin girildiği ve tanımlandığı fonksiyonu yazıyoruz
    {
        name = Name;
        age = Age;
    }

    int output() // girilen bilgilerin yazdırıldığı fonksiyonu yazıyoruz
    {
        cout << "This workers names is --> " << name;
        cout << "\nThis workers age is --> " << age;
        cout << "\n";
        return 1;
    }

}x;


int main()
{
    int a;

    string b;

    cout << "Please enter your name --> ";
    cin >> b;

    cout << "Please enter your age --> ";
    cin >> a;
  
    cout << "\n";

    x.enter_the_age(b, a);

    x.output();

    system("pause");

    return 0;

}

evet arkadaşlar elimden geldiğince açıklamaya ve anlatmaya çalıştım umarım sizin için yararlı olmuştur. Hepinize bol kodlu günler dilerim :)
 
Son düzenleme:
Geri
Üst