Ruby ENCAPSULATION (kapsülleme) nedir örnekleri

Ruby ENCAPSULATION (kapsülleme) nedir örnekleri

Kapsülleme prensibinin asıl amacı, sınıfımızın içerisindeki verilerin yanlış veya gereksiz
kullanılmasının önüne geçilmesidir. Programınızı tek başınıza yazıyorsanız, sarmalama prensibi
sizin için çok fazla anlam ifade etmeyebilir. Ancak bir yazılım grubunun parçasıysanız, oluşturmuş
olduğunuz sınıflardaki verilerin yanlışlıkla değiştirilmesinin istemezsiniz.
 
class BankaHesabi
  def initialize(isim, bakiye = 0)
    @isim = isim
    @bakiye = bakiye
  end
end

# Bu sınıftan hesap adında bir nesne oluşturalım:
hesap = BankaHesabi.new("Ali Kara", 1000)
puts hesap.inspect
Ruby

Oluşturduğumuz nesnenin, isim veya bakiye verilerine dışarıdan rahatça erişilmesi ve

değiştirilmesi uygun olmaz. Örneğin:
>>hesap.bakiye = 15000
NoMethodError: undefined method 'bakiye' for #<BankaHesabi:0x29145f0 @
isim="Ali Kara", @bakiye=1000>
JavaScript

Java yada C++ gibi dillerin aksine, ruby bizi sarmalama ilkesine bağlı kalmamız konusunda

zorlamaktadır. Bununla birlikte, örnek değişkenlerine Object sınıfına ait olna instance_variable_get

veya instance_variable_set metotlarını kullanarak erişebiliriz.

hesap.instance_variable_set(:@bakiye,50)

puts hesap.instance_variable_get(:@bakiye) #50

Not: yukarıdaki hatayı incelediğimze bakiye= adında bir metodun olmamasından yakınıldığını

görürüz. Bu metodu attr_writer veya attr_accessor kullanarak kolayca oluşturabileceğimizi

hatırlayınız.

Bir yanıt yazın