Uygulamanın yollarından biri veri kapsülleme erişimcilerin ve mutasyoncuların kullanılmasıdır. Erişimcilerin ve mutasyon yapanların rolü, bir nesnenin durumunun değerlerini döndürmek ve ayarlamaktır. Şimdi erişimcileri ve mutatörleri nasıl programlayacağınızı öğrenelim Java. Örnek olarak, bir Kişi sınıfı durum ve kurucu zaten tanımlanmışken:
Erişimci Yöntemleri
bir erişimci yöntemi, özel bir alanın değerini döndürmek için kullanılır. Yöntem adının başına "get" kelimesinin önüne bir adlandırma düzeni uygular. Örneğin, ad, middleNames ve soyad için erişimci yöntemleri ekleyelim:
Bu yöntemler her zaman karşılık gelen özel alanlarıyla (örneğin, String) aynı veri türünü döndürür ve daha sonra bu özel alanın değerini döndürür.
Artık değerlerine bir Person nesnesinin yöntemleri aracılığıyla erişebiliriz:
Mutatör Yöntemleri
Özel bir alanın değerini ayarlamak için bir mutasyon yöntemi kullanılır. Yöntem adının başına "set" kelimesinin önüne bir adlandırma düzeni uygular. Örneğin, adres ve kullanıcı adı için mutatör alanları ekleyelim:
Bu yöntemlerin bir dönüş türü yoktur ve karşılık gelen özel alanlarıyla aynı veri türünde bir parametreyi kabul eder. Parametre daha sonra bu özel alanın değerini ayarlamak için kullanılır.
Artık Person nesnesindeki adres ve kullanıcı adı değerlerini değiştirmek mümkündür:
Neden Erişimciler ve Mutasyon Araçları Kullanmalı?
Sınıf tanımının özel alanlarını herkese açık olarak değiştirebileceğimiz ve aynı sonuçları elde edebileceğimiz sonucuna varmak kolaydır. Nesnenin verilerini olabildiğince gizlemek istediğimizi hatırlamak önemlidir. Ekstra tampon bu yöntemlerle sağlananlar:
- Verilerin perde arkasında nasıl ele alınacağını değiştirin.
- Alanların ayarlandığı değerlere doğrulama uygulayın.
Diyelim ki ikinci adları saklama şeklimizi değiştirmeye karar veriyoruz. Sadece bir String yerine artık bir String dizisi kullanabiliriz:
Nesnenin içindeki uygulama değişti, ancak dış dünya etkilenmedi. Yöntemlerin çağrılma şekli tamamen aynıdır:
Ya da, Person nesnesini kullanan uygulamanın yalnızca en fazla on karakterden oluşan kullanıcı adlarını kabul edebileceğini varsayalım. SetUsername mutator'ında, kullanıcı adının bu gereksinime uyduğundan emin olmak için doğrulama ekleyebiliriz:
Şimdi setUsername mutator'a iletilen kullanıcı adı on karakterden uzunsa, otomatik olarak kesilir.