Crystal El Kitabı
  • Crystal El Kitabı: Sadelik ve Güç Bir Arada
  • Bölüm 1: Başlangıç
  • Bölüm 2: Crystal Dilinin Temelleri
  • Bölüm 3: Nesne Yönelimli Programlama (OOP)
  • Bölüm 4: Fonksiyonel Programlama
  • Bölüm 5: Gelişmiş Konular
  • Bölüm 6: Crystal ile Web Geliştirme
  • Bölüm 7: Crystal ile Proje Yönetimi ve Paket Yönetimi
  • Bölüm 8: Test Yazma ve Hata Ayıklama
  • Bölüm 9: Gerçek Dünya Projeleri
  • Ekler
  • Teşekkürler
  • Bana Ulaşın
Powered by GitBook
On this page

Bölüm 3: Nesne Yönelimli Programlama (OOP)

Nesne Yönelimli Programlama veya bilinen adıyla OOP, programlama dünyasında büyük bir projeyi daha yönetilebilir parçalara ayıran bir yaklaşımdır. Bu bölümde, Crystal dilinde OOP'nin nasıl işlediğini sade, anlaşılır ve açıklayıcı bir dille ele alacağız.

3.1 Sınıflar ve Nesneler

OOP'nin temel yapı taşı "sınıf" kavramıdır. Sınıflar, bir nesnenin özelliklerini (değişkenler) ve yeteneklerini (fonksiyonlar) tanımlayan şablonlardır. Bir sınıfın örneğini alarak bir "nesne" yaratabiliriz, bu da o sınıfın bir örneğini temsil eder.

class Kisi
  property isim : String
  property yas : Int32
  
  def initialize(@isim, @yas)
  end
  
  def selam_ver
    puts "Merhaba, ben #{@isim}"
  end
end

ahmet = Kisi.new("Ahmet", 30)
ahmet.selam_ver

3.2 Miras Alma

Miras alma, bir sınıfın başka bir sınıfın özelliklerini "miras" almasını sağlar. Bu, kodu yeniden kullanmamızı ve düzenli bir şekilde organize etmemizi sağlar.

class Ogrenci < Kisi
  property not : Int32
  
  def initialize(@isim, @yas, @not)
    super(@isim, @yas)
  end
end

ali = Ogrenci.new("Ali", 20, 90)
ali.selam_ver

3.3 Polimorfizm (Polymorphism)

Polimorfizm, farklı sınıfların aynı arayüzü veya metodları kullanmasını sağlar. Bu, farklı sınıfların aynı metodu farklı bir şekilde uygulamasını mümkün kılar.

class Ogretmen < Kisi
  def selam_ver
    puts "Merhaba, ben öğretmen #{@isim}"
  end
end

ayse = Ogretmen.new("Ayşe", 40)
ayse.selam_ver

3.4 Kapsülleme (Encapsulation)

Kapsülleme, bir sınıfın iç detaylarını gizleyerek sadece belirli metod ve özelliklerin dış dünyaya açık olmasını sağlar. Bu, daha güvenli ve hata tolere edilebilir kodlar yazmamıza olanak tanır.

class Muhasebeci < Kisi
  @maas : Int32 = 0
  
  def maas_ata(maas : Int32)
    @maas = maas
  end
  
  def maas_goster
    puts "#{@isim} adlı kişinin maaşı: #{@maas}"
  end
end

mehmet = Muhasebeci.new("Mehmet", 50)
mehmet.maas_ata(5000)
mehmet.maas_goster

3.5 Sonuç

Bu bölümde, Nesne Yönelimli Programlama'nın temel prensiplerini — sınıflar, nesneler, miras alma, polimorfizm ve kapsülleme — Crystal dilinde nasıl kullanacağınızı öğrendiniz. Şimdi elde ettiğiniz bu bilgilerle daha organize, yeniden kullanılabilir ve etkili programlar yazabilirsiniz.

PreviousBölüm 2: Crystal Dilinin TemelleriNextBölüm 4: Fonksiyonel Programlama

Last updated 1 year ago