Java İle Nesne Yönelimli Programla 2 (Java Object Oriented Programming) Encapsulation (Kapsülleme)

Ver bir önce ki bölümde Kalıtım ne işe yarıyor onu görmüştük.Şimdi ise farklı bir konuyu ele alacak.Kapsülleme nedir ? Temel olarak Kapsülleme bir nesnenin sınıfın dışarıya ne şekilde erişeceğini ayarlamak için kullanır.

Bir sınıfın içeriğinin, onun üyelerini kullananlar tarafından bilinmesine gerek kalmadan sadece metodun verdiği hizmeti göstermesi işlemidir.

Farklı kaynaklar kapsülleme işlemi sarmalama veya paketlenme olarakta tanımlanır.Daha önce ki örnekte bazı temel kavramları görenmiş şimdi bu kavramlara tekrar bakalım.

  • Public : Public olan herhangi bir üye yazılım için de ki diğer fonksiyonlar tarafından erişilebilir.Bu demek oluyor ki farklı paket ve sınıflardan erişim var .
  • Private:Gizli veya özel manası ile kullanılır.Private olarak tanımlanan bir üye’ye sadece o Class’ın içersinde bir erişim vardır.Yanı farklı bir Class’tan erişim olmaz aynı paket içinde olsa bile.
  • Protected: Korulamalı erişim şu şekilde çalışır.Protected olarak tanımlamanan bir üye’ye aynı paket ve sınıf içersinden erişebilirim.Fakat şöyle bir durum var paket dışırsından erişmek istersek kalıtım ile oluşturulmuş alt sınıflar ile erişebilirim.Kalıtım konusunda ayrı olarak değineceğiz.
  • Default:Yukarıda ki 3 belirteçlerden herhangi bir özel olarak tanımlanmadıysa bu demek oluyor ki default bir üyedir.Default olarak tanımlanan bir üye’ye sadece tanımlandığı paket içersinden erişim sağlanır .

Kapsülleme Yapmanın Avantajı

Bize veriler üzerinde kontrol mekanizması sağlar.Örnek vermek gerekirse yalnızda 100 den büyük olası gerken degerleri ayarlama istiyoruz diyelim.Burada setter yönteminin içine yazabiliriz.Negatif sayıları setter yöntemlerinde saklamama mantığını yazabilirsiniz.

Şimdi Örneğimize bakalım:

  • Önce yeni bir proje açıp ardından yeni bir class oluşturdum.Oluşturduğum class üzerinde bir arabada olması gereken temel parametreleri ekledim.

Main Class

  • Ardından main class üzerinde bir nesne yarattım ve parametreleri ekledim.Artık nesnem üzerinden verileri ekleyebiliyorum.

Tamam Peki Biz Bunu Zaten Biliyoduk ?

Evet ama bu şekilde yaparsak verileri daha doğru ve güvenli bir şekilde işletmemiz gerekiyor.Bu şekilde bırakırsak hem değişkenlerde tutulan verilere her yerden erişim vardır. Çünkü String marka; diye bir değişken tanılarsan eğer varsayılan parlak public olarak gelir.

Public neydi ?

Public : Public olan herhangi bir üye yazılım için de ki diğer fonksiyonlar tarafından erişilebilir.Bu demek oluyor ki farklı paket ve sınıflardan erişim var .

Bankada ki para miktarımızın herkes tarafından bir şekilde görülmesini ister miyiz ? Tabi ki hayır.İşte bu yüzden kapsülleme yapmaz gerekir.

Temel Kapsülleme

Öncelikle değişkenlerimi Public ten Private olarak güncellemeliyim.

  • Private:Gizli veya özel manası ile kullanılır.Private olarak tanımlanan bir üye’ye sadece o Class’ın içersinde bir erişim vardır.Yanı farklı bir Class’tan erişim olmaz aynı paket içinde olsa bile.

Şimdi ardında main class kısmına bakayım bize bir şey diyor.Bakın şimdi değişkenleri private yaptığımız için bu şekilde erişemedik.Nasıl yani parametre atayacak mıyız ? Atayacaz ama bu şekilde değil.

Set ve Get Mehtodları

İşte artık veri okumak ve veri yazmak işin 2 adet method türünü bilmemiz gerekiyor.Set methodu bir değişkene veri atamak için kullanılır.Get methodu ise bir değişkende veri okumak için kullanılır .Temel olarak bu şekilde öğrenmeniz şimdilik yeterli.

Şimdi sıra geldi veri atama ve atanan veriyi okumaya.

  • Öncelike veriyi set etmem lazım ki get methodumu çağırdığımda bize bir null bir değer döndürmesin.
  • Şimdi ise set ettim veriler set methodları ile return ediyorum.

Şimdi bu bir 2. el araba ilanı projesi .O zaman 2. el olması için bazı kıstaslar olması lazım? Mesela bir arabaya 2. el dememiz için km değeri 1000 km bin üstünde olsun mesela.Yani set edilecek olan kilometre değerime bir koşul eklemem lazım.

  • Set olarak gelen değer 1000 ve üzeri ise bu veriyi set et dedik.
  • Eğer değilse bir uyarı mesajı basıyorum.

Set Kullanımı ve This Deyimi Kafamı Karıştırdı O Ne ?

Evet bunu anlatmadan kesinlikle olmaz.Biraz tahminiz vardır 🙂 Dikkat ettiyseniz sadece Set methodların da var .Çünkü set methodların da zaten bir atama iş yok önceden atanan veriyi bize göstermek için kullanılıyor .

This deyimi ileride çok daha fazla göreceğiz.Şöyle özetleyelimThis Deyimi ile nesnenin kendini referans etmesi için kullanırız.Bu sayede nesnelere ait global değişkenlere erişebilirim.Veya bir method içinde isim çakışması durgundan oluşabilecek hasarlın önüne geçmek için de kullanabilirim.Şöyle ki nesnenin kendine ait olan değişkenini özellikle belirtiyorum.

Örnek:

  • Standart bir This kullanımı : SetMarka(String marka) dan anladığımız girilen değer local değişken olan (String Marka) isimli değişkene aktarılır.Biz burada this.marka diyerek ilk önce Private String markayı işaret ederek diyoruz ki bu marka, local değişkenden gelen marka değişkenine eşit yani local değişken Private olarak tanımlanan marka değişkenin elinedeki veriyi atar.

This olmasaydı ?

This olmasaydı marka = marka ile aynı sonucu elde ederiz ama this daha kararlı bir kod blogu yazmış oluyoruz.

Get Methodu

Burada bilmeniz gereken şey Get methodunu çağırdan önce mutlaka set edilmiş bir veri gerektiğidir.Yoksa set methodu null bir sonuç verir.

  • Set methodu ile veri atandıktan sonra .GetMarka ile atanan veriyi String bir türde bana geri değer döndürüyor.Return marka ile de private olarak tanımladığımız değişkende veriyi bize geri döndürüyor.

Evet temel olarak kapsülleme ve setle set methodları bu şekilde .Bir sonra ki bölümde görüşmek üzere

Leave a Reply

*