Şimdi Ara

Nesne yönelimli programlama nedir

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4
Cevap
0
Favori
1.389
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Bilgisayar Mühendisliği birinci sınıf öğrencisiyim. Dersler çok boş geçiyor. Ben de kendi kendimi hem ileriki sınıflar için hem de kendi merakımdan geliştirmeye başladım. Sorum şu:

    OOP (Object Oriented Programming) = Nesne yönelimli programlama nedir?

    İnternette doğru düzgün bir açıklama bulamadım. Yeni dillerin çoğunun uyumlu olduğu..vs yazıyor ama ne olduğunu tam anlatmıyor bulduğum kaynaklar.



  • Fazla bildiğimden değil ama benim anladığım şu (yani buna doğruymuş gözüyle bakmayın) her şeye nesne olarak davranmak kısaca. Nasıl yani?
    Şöyle ki; nesne denen şey sınıflar, veri türleri. Çoğu örnekte işlenir gerçi ama ben bir daha göstereyim;
    Mesela Cips diye bir sınıfımız olsun (sınıf kavramı karışmasın derseniz nesne diyelim);
    Şimdi bir cipsin ne özellikleri olur?
    -Kütle
    -Baharat
    -Tuz
    -Paket
    Şimdi bunların her birinin bir türü vardır mesela kütle sayıdır, baharat yine farklı bir nesne türüdür onun için yine ayrı bir nesne oluşturulur. Tuz da yine baharat gibidir. Yine paket içinde farklı bir nesne oluşturulur.
    Ne oldu?
    Elimizde bir paket bir tuz bir baharat diye nesne oldu. Ama hepsini bir başlık altında topladık : Cips.
    Mesela farklı özellikleri olan cipsler var?
    Burada kalıtım olayını kullanıyoruz. Mesela bu yeni cipsimizin içinden bir tane taso çıksın.
    Ama yeni cipsimiz eskisiyle aynı özellikleri yine taşıyacak, ama ekstrası da olacak.
    Burada Yeni cipsimize diğer Cips nesnemizi örnek alarak oluşturuyoruz.
    Yine bir nesne oluşturuyoruz bu da Taso.
    Yani yeni cips nesnemiz tuz,baharat,paket ve bir de taso özellikleri içeriyor.
    Bir başka örnek: Kalem
    Kalemin özellikleri nelerdir?
    Kalemin bir dışı, bir de içindeki kurşunu vardır.
    Öyleyse ilk olarak iki tane nesne oluşturmalıyız kalemin dışı ve kurşun.
    Peki kalemin işlevleri nelerdir?
    Yazar.
    Ama nasıl yazar? Kurşun ile. Demekki yazmak kurşunun işlevi.
    Öyleyse yazma işlevini kurşun nesnesine kazandırmalıyız (Bu tür işlevler metodlar ve fonksiyonlar ile yönetilir)
    Peki kurşunumuz yazma işlevine sahip, dışının özelliği var mı? Pek yok. Öyleyse kalemimiz de hazır.
    Ama kaleme de yazma işlevi kazandırmamız lazım bunu yaparken Kalem nesnemize yazma metodu ekliyoruz ve bu metod direk olarak kurşuna yönleniyor, ve kalem yazıyor.
    Peki o zaman kalem kullanılmadan, direk olarak kalemin içindeki uçla yazım yapılır?
    Bunu engellemek için kalemin içine koyduğumuz uç özelliğini private yapıyoruz. Böylece dışarıdan kimse direk olarak kurşuna erişemiyor.
    Kalemi açmak için ise yine kaleme bir işlev ekleyebiliriz ve bu şekilde dolaylı olarak kalem açılır ve kurşun keskinleşir.

    Kafanız karışmamıştır umarım, ben sadece kendi fikirlerimi, anlayabildiklerimi yazdım.




  • Dilde yerleşik olan int, float gibi yerel tiplerin dışında kullanıcı tanımlı tip (sınıf) oluşturmaya yarar. Sınıfların öğeleri yerel tipler veya başka sınıflar olabilir.

    Nesne yönelimli programlama zorunluluk değil. Amaç verileri makinadan soyutlayıp insan algısına yakın hale getirmek ve bu sayede geliştirmeyi, bakımı vs. kolaylaştırmak. Mesela basit bir örnek olarak bir nokta verisi alıp üzerinde işlem yapan bir fonksiyon düşünelim... Fonksiyonumuz noktayı belirlemek için koordinat bilgisini alacaktır.

    void isle(int x, int y)
    {
    ...
    }
    Bu işlem kafa karıştırabilir çünkü x ve y nin ne olduğu hemen anlaşılmaz.

    class Point {
    int x;
    int y;
    // ve gerekirse üye fonksiyonlar...
    }

    void isle(Point nokta)
    {
    ...
    }
    Bu daha iyi görünüyor değilmi?

    Birde nesneleri dinamik olarak oluştururken kolaylık sağlar. Mesela yeni bir nokta için (örnek c++);
    int *x = new int;
    int *y = new int;

    yerine
    Point *nokta = new Point;




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.