Mart 26, 2023
11 11 11 ÖÖ
2048 Old Game Privacy Policy
Scan Text – Metin Tarayıcı Terms & Conditions
Scan Text – Metin Tarayıcı Privacy Policy
Calculator – Hesap Makinesi Privacy Policy
Calculator – Hesap Makinesi Terms & Conditions
QR Code Reader – Kare Kod Okuyucu Terms & Conditions
QR Code Reader – Kare Kod Okuyucu Privacy Policy
Show PDF – PDF Görüntüleyici Terms & Conditions
Show PDF – PDF Görüntüleyici Privacy Policy
Photo Editor – Resim Düzenleme Uygulaması Terms & Conditions
Son Yazılar
2048 Old Game Privacy Policy Scan Text – Metin Tarayıcı Terms & Conditions Scan Text – Metin Tarayıcı Privacy Policy Calculator – Hesap Makinesi Privacy Policy Calculator – Hesap Makinesi Terms & Conditions QR Code Reader – Kare Kod Okuyucu Terms & Conditions QR Code Reader – Kare Kod Okuyucu Privacy Policy Show PDF – PDF Görüntüleyici Terms & Conditions Show PDF – PDF Görüntüleyici Privacy Policy Photo Editor – Resim Düzenleme Uygulaması Terms & Conditions
java

Kapsülleme (Encapsulation) ve Paketler

Paylaşım , Takip İçin

Kapsülleme (Encapsulation) Nedir?

  • Kapsülleme kısaca bir sınıfın içersindeki metot ve değişkenleri korumasıdır.
  • Bünyesindeki metot veya değişkenlere erişmenin sakıncalı olduğu durumlarda Kapsülleme mekanizması kullanılır.
  • Kapsülleme sayesinde sınıf üyeleri dış dünyadan gizlenirler.
  • Tabi bu gizliliğin dereceleri vardır ve bu dereceyi Erişim belirleyiciler (Access Modifiers) tanımlar.

Erişim Belirleyiciler

  • public: Bu anahtar kelimeye sahip üye değişkenler ve metotlar diğer bütün değişken ve sınıflar tarafından erişilebilir hale gelirler.
  • Herkes erişebilir.
  • private: Bu anahtar kelime önüne getirildiği üye değişken yada metodu dışarıdaki sınıflara görünmez kılmak için kullanılır. Yani bu metot ve değişkenler sadece sınıf içerisinde kullanılabilir.
  • O sınıftan türetilen sınıflar yada aynı paketten sınıflar erişemez.
  • protected: Bu anahtar kelime bir üye değişken yada metoda sadece tanımlandığı sınıf ile aynı paket içerisinde olan sınıflar tarafından erişim sağlar. Diğer sınıflar ise bu üye değişken ve metotlara erişemezler.
  • O sınıftan türetilen sınıflar yada aynı paketten sınıflar erişebilir.
  • Herhangi bir tanımlama yapılmazsa default olarak kabul edilir. Protected gibi davranır.

Örnek

public class Access {

  int a;

  public int b;

  private int c;

  protected int d;

  public void setc(int i) {

    c=i;

  }

  public int getc() {

    return c;

  }

  private int sum() {

    return a+b+c+d;

  }

  public void result() {

   System.out.println("Sayıların   toplamı="+sum());

  }

}
public class AccsessTest {

  public static void main(String[] args) {

    // TODO Auto-generated method stub

    Access ob=new Access();

    ob.a=10;

    ob.b=20;

    //ob.c=30 Erişilemez

    ob.d=40;

    ob.setc(30);//Setter Metodu

    //ob.sum(); Erişilemez

    ob.result();

    //Getter Metodu

    System.out.println("c nin değeri="+ob.getc());

  }

}

Getter/Setter Metotlar

  • Kapsülleme ile iç içe olan bir diğer konuda getter ve setter metotlardır.
  • Erişim belirleyici anlattığımızda private bir elamana erişmenin bir yolu getter/setter metotlarını kullanmaktır.
  • Getter metotlar okuma yaptığı için parametre almazlar.
  • Setter metotlar ise private değişkene değer atadığı için parametre alırlar.
  • private bir elamana değer atamanın bir diğer yolu ise Yapılandırıcı Metot üzerinden üye değişkene ilk değer vermektir.

Örnek

public class gettrerSetter {

  private int sayi;

  private String ad;

  public int getSayi() {

    return sayi;

  }

  public void setSayi(int sayi) {

    this.sayi = sayi;

  }

  public String getAd() {

    return ad;

  }

  public void setAd(String ad) {

    this.ad = ad;

  }
  public static void main(String[] args) {

     gettrerSetter getSet=new gettrerSetter();

     getSet.setAd("Emre");

     getSet.setSayi(25);

     System.out.println("Nesnenin       Adı="+getSet.getAd());

     System.out.println("Nesnenin   sayi="+getSet.getSayi());

  }

}

this Anahtar Kelimesi

  • this anahtar kelimesi o anda işlem yapan nesnenin referansını döndürür. Bu referans ile biz nesne değişkenine erişiriz.
  • Sonuç olarak this kelimesi aynı adı taşıyan sınıf değişkenleri ile parametreler arasındaki karışıklığı önlemek amacıyla kullanılır.
  • this anahtar kelimesini tüm metotlarda kullanabilirsiniz.
  • Son olarak this anahtar kelimesi bir metodan geriye değer olarak döndürülebilir.
  • return this;
  • Bu şekilde kullanıldığında o anda kullanılmakta olan nesnenin referansını döndürürür.

Örnek

public class thisOrnegi {

  private String ad;

  private String soyad;

  public thisOrnegi(String ad) {

  this(ad,"Kocatepe"); //Burada this metodu iki parametre alan           //Yapılandırıcı Metoda erişmek için kullanılıyor.

  }

  public thisOrnegi(String ad, String soyad) {

  //Burada this  metodu Üye değişkene değer atamak için kullanılıyor.  

  this.ad=ad;

  this.soyad=soyad;

  }

  public static void main(String[] args) {

    // TODO Auto-generated method stub

    thisOrnegi ob=new thisOrnegi("Burak");

  System.out.println(ob.ad+" "+ob.soyad);

  }

}

Paket Kavramı (Package)

  • Bir program yada yazılım geliştirileceğimiz zaman program içerisinde birden fazla modül varsa bunlar arasında bir hiyerarşi kurmak isteriz.
  • Java Paket kavaramı ilgili modüle ait sınıfları bir araya toplamamızı ve diğer modüller ile arasında bir hiyerarşi kurmamızı sağlar.
  • Paketlerin bir diğer faydası da derleyici için tek başına bir sınıfın bir şey ifade etmemesi sınıfın içinde bulunduğu paketinde göz önünde bulundurulmasıdır.
  • Farklı paketler içerisinde aynı isme sahip sınıflar bulunabilir.
  • Paket kullanımı Java’da zorunludeğildir, fakat çok kolaylık sağlar.
  • Java’da geliştireceğimiz uygulamada bir paket belirlemezsek, Java bizim için default package oluşturur ve sınıflarımızı burda tutar.
  • Burada iki yeni paket ve bu paketlerin altında

   iki yeni sınıf oluşturduk.

  • Yeni oluşturulan paketlerimizin ismi ders6 ve

   ders6.demo

Paketleri Import Etmek

  • Eğer projemize başka bir sınıfa ait bir projeyi dahil eymek istiyorsak bu diğer sınıfın içinde bulunduğu paketi mevcut sınıfımıza import etmemiz gerekir.
  • Eğer bir sınıf import edeceksek:

  import ders6.PaketDemo;

  • Eğer bir paket ve altındaki tüm sınıfları import edeceksek:

  import ders6.*;

  • import anahtar kelimesi package tanımlamasının bir alt satırında yapılmalıdır.

Örnek

package ders6;

public class PaketDemo {

  public int num;

  private int secret;

  protected int myNum;

  public PaketDemo(int num, int secret, int myNum) {

    this.num = num;

    this.secret = secret;

    this.myNum = myNum;

  }

  public void setSecret(int secret) {

    this.secret=secret;

  }

  public int getSecret() {

    return secret;

  }

  public static void main(String[] args) {

     // TODO Auto-generated method stub

     System.out.println("Yeni bir paket oluşturduk");

  }

}
package ders6.demo;

import ders6.*;

import ders6.PaketDemo;

public class altDemo {

  public static void main(String[] args) {

     PaketDemo ob=new PaketDemo(10, 11, 12);

     ob.num=18;

     //ob.myNum=19; //Protected metod başka     sınıftan erişilemez.

     ob.setSecret(20);

     System.out.println("num="+ob.num+"          secret="+ob.getSecret());

  }

}

enum Kavramı

  • enum‘lar sınıflara benzer. Kendi yapılandırıcıları vardır.
  • Bünyesinde üye değişkenler barındırır.
  • enum içerisinde tıpkı sınıflar gibi metot tanımlanabilir.
  • C\C++ dillerindeki struct yapısına benzemektedir.

Örnek

package ENUM;

enum Arabalar{

AUDI(210,"Kırmızı"),MERCEDES(200,"Beyaz")

,BMW(240,"Siyah");

 public int hiz;

 public String renk;

 Arabalar(int hiz,String renk){

   this.hiz=hiz;

   this.renk=renk;

 }

 int hizGoster() {

    return hiz;

 }

}
public class Enum {

public static void main(String[] args) {

 // TODO Auto-generated method stub

 Arabalar.AUDI.hiz=230;

 Arabalar.BMW.renk="Lacivert";

 for (Arabalar A:Arabalar.values()) {

    System.out.print(A.name()+" ");

    System.out.println(A.hiz+" "+A.renk);

 }

 System.out.println(Arabalar.BMW.hizGoster());

 System.out.println(Arabalar.MERCEDES.ordinal());

 }

}

Paylaşım , Takip İçin
0 0 votes
Article Rating

Bir Cevap Yazın

0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
HAYALİNDEKİ YAZILIM
%d blogcu bunu beğendi: