Java’da Sınıflarda Metot Tanımlama ve Metotları Kullanma

1250
görünümler

Bir önceki dersimizde OOP mantığına giriş yapmıştık. Classları , objeleri ve referansları öğrendik. Bir classa nasıl özellik eklenir , objeler nasıl oluşturuluru öğrendik. Bu dersimizde ise class lara metotlar eklemeyi ve class lardaki özelliklerin neden private olması gerektiğini işleyeceğiz.

Büyük projelerde yazılımcılar direk olarak class ın özelliklerini bilemeyebilir. Örneğin Araba classında kapı özelliğine direk erişimi var ise değerini -2 verebilir. -2 değeri bir araba kapısı için anlamsız bir ifade. Bu sebepten dolayı java’da ve diğer programlama dillerinde direk olarak erişilmesi tehlikeli durum olarak gözüküyor. Özelliklerimiz public olduğundan dolayı bu şekilde risklerin oluşması mümkün. Peki bu özellikleri private yaptığımız zaman bu özelliklere nasıl değer vereceğiz? Dolaylı bir yoldan bunu yapmak mümkün. Classlarımıza metotları ekleyeceğiz ve metotlarımız public olacak. Public olacağı içinde direk olarak metotları kullanabiliriz. Ve metotlarımızın class ımızın içinde olacağı için direk olarak private olan alanlara erişebilecek. Bu yönteme encapsulation diyoruz. Detaylı bir şekilde öğrenimini sonraki derslerde işleyeceğiz.

Şimdi örneklerle anlamaya çalışalım;

Metodumuz public olacak çünkü erişebilir olması lazım. Ve static kullanmayacağız.Çünkü metotlarımızın objelerimize özgü olacak. Eğer static kullanırsak o zaman class lara özgü olacak. Bu detaylarıda daha sonraki derslerimizde göreceğiz.

setModel() ile model özelliğine erişmek istediğimizi belirttik. Buna bir değer göndereceğimiz için ve bu değer String olacağı için String model şeklinde yazdık. Sonrasında model özelliğini model metoduna ekledik. Burada dikkat edilmesi gereken konu her ikisininde adı Model olduğu için model özelliğini ayırt edebilmesi için this anahtar kelimesini kullandık. Eğer farklı bir isim olsaydı kullanmamıza gerek olmazdı.

Özelliği direk almak içinde getModel metodunu yazdık. Bu sefer void olmadı. Model değerini almak istediğimiz bu sefer fomnksiyonumuz String bir değer dönecek. İçinde herhangi bir değer olmayacak çünkü sadece biz özellikteki model değerini döndüreceğiz.

Be şekilde private alanlarına bir metot sayesinde erişebiliyoruz. Ve metot sayesinde o private alanımızın değerini elde edebiliyoruz.Şimdi bunları main metodumuz içinde kullanalım.

Araba objemizin araba1 referansı içinde ilk olarak setModel() metodumuzu çağırdık. Bu metot string bir değer alıyor ve değerini yazdık. Gördüğünüz gibi private bir özelliğe metotlar sayesinde dolaylı olarak erişebildik. Sonrasında ekrana yazdırdık. Ekrana yazdırırken de getModel() metodumuzu kullandık.

Yazmış olduğumuz setModel() ve getModel aslında javada özel metotlar. Java’da özelliğe erişmek için ve değerini almak için kullanılan metotlara setter ve getter metotları deniliyor. Diğer özellikleride yine aynı şekilde yazabiliriz. Ancak netbeans de ve diğer idelerde bunu her seferinde tek tek yazmayın kısa yol var.

Araba.java dosyasında sağ tıklıyoruz.

Encapsulate Fields” a tıklıyoruz. Karşımıza aşağıdaki ekran çıkıyor.

Burada model özelliğinin get ve set metodunu yazdığımız için işaretli diğer ise boş gözüküyor. Diğerlerini de aşağıdaki gibi işaretliyoruz.

Ve ardından “Refactor” butonuna tıklıyoruz. Bunu yaptığımızda java bize otomatik olarak getter ve setter metotlarını oluşturuyor.

Özellikleri private olarak tanımlamızın önemine şimdi biraz daha değinelim. Public olarak tanımladığımızda yukarıda da bahsettiğim gibi kapı değerini -2 olarak verebiliyorduk. Ancak özellikleri artık private yaptığımız için koşul ile metotların içinde bunu kontrol edebiliyoruz. setKapi() metodunu biraz düzenleyelim.

Kullanıcının girdiği kapı sayısı eğer 0 dan küçük ise uyarı çıkarıp yukarıdaki şekilde kontrol edebiliriz. Büyükse girdiği değeri gösterebiliriz. main metodu içine gelip test edelim.

-2 değerini girdik ve uyarı verdi.

Bir sonraki yazımızda constructorlar (yapıcı metotlar) konusunu öğreneceğiz. Sonraki derse geçmek için tıklayınız.

 

1 Yorum

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz