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, @bakiye = isim,bakiye
end
End
Bu sınıftan hesap adında bir nesne oluşturalım:
>>hesap = BankaHesabi.new ("Ali Kara" , 1000)
=>#<BankaHesabi:0x29145f0 @isim="Ali Kara", @bakiye=1000>
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>
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

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir