Java - Set ve Get Methodları

Cuma, Mayıs 22, 2015 kustemura 0 Yorum


Bu yazımdaki örnekleri this anahtar sözcüğü üzerinden devam etmek istiyorum.
Önceki programlarda oluşturduğumuz yapılar kullanışlı olsada tam olarak yeterli değildir.Hiçbir değişkene direk erişim mümkün olmamalıdır.Nesneye Yönelimli Programlama'nın en önemli özelliklerinden olan Encapsulation ( Kapsülleme ) kavramını tam olarak uygulamamız için değişkenlerimizin Set ve Get methodlarını oluşturmalıyız.
Örnek üzerinden devam edelim.


class Rectangle {
 double width;
 double height;
 double depth;

 Rectangle(double width, double height, double depth) {
  this.width = width;
  this.height = height;
  this.depth = depth;
 }
}
Buradaki değişkenler default değer olarak sadece kendi paketleri içerisinde çağrılabilirler , fakat direkt olarak çağrılıp üzerinde işlem yapılabilir durumdadırlar.Bu kullanım oldukça tehlikeli ve yanlıştır.Aşağıdaki programı inceleyelim:
package com.blogger_project;

class Rectangle {
 private double width;
 private double height;
 private double depth;

 Rectangle(final double width, final double height, final double depth) {
  setWidth(width);
  setHeight(height);
  setDepth(depth);
 }

 Rectangle() {
  setWidth(-1);
  setHeight(-1);
  setDepth(-1);
 }

 double volume() {
  return width * height * depth;
 }

 public double getWidth() {
  return width;
 }

 public void setWidth(final double width) {
  this.width = width;
 }

 public double getHeight() {
  return height;
 }

 public void setHeight(final double height) {
  this.height = height;
 }

 public double getDepth() {
  return depth;
 }

 public void setDepth(final double depth) {
  this.depth = depth;
 }
}

class RectangleDemo {
 public static void main(final String args[]) {
  final Rectangle myRectangle = new Rectangle(5, 12, 6);
  System.out.println("Genişlik :" + myRectangle.getWidth());
  System.out.println("Yükseklik :" + myRectangle.getHeight());
  System.out.println("Derinlik :" + myRectangle.getDepth());
  System.out.println("Hacim : " + myRectangle.volume());

 }
}
Programın Çıktısı : 
Genişlik :5.0
Yükseklik :12.0
Derinlik :6.0
Hacim : 360.0
Bir önceki kullanımda
        
 this.width = width;
 this.height = height;
 this.depth = depth;
olarak constructor'e uygulayarak değerlerimizi atamıştık.Fakat burada set< Değişken Adı> isimli methodlarımızda yaptığımız işlemler aslında üstteki üç işlem ile aynı işi yapar. ( set < Değişken Adı> ve get < Değişken Adı> kullanımı programcılıkta bir standart haline geldiği için bu örnekte bu şekilde kullanılmaktadır.Eclipse -> Sağ Tık -> Source -> Generate Setters and Getters işlemini uygulayarak Set ve Get methodlarını otomatik oluşturabilirsiniz.Eclipse standart kullanımı yapmakla beraber method isimlerini değiştirmenize olanak sağlar. )Ayrıca değişkenleri gizler ve dışardan herhangi bir değişime izin vermezler.Burada değişken değerini değiştirmek için sadece değişkenin set methodu kullanılabilir.Bu yapıyı kullanarak artık değişkenlere direkt bir şekilde erişilemez.Sadece get< Değişken Adı> methodu kullanılarak erişilebilir.

0 yorum :