Üye v e sınıf bildirimleri

45
Üye Üye v v e e Sınıf Sınıf Bildirimleri Bildirimleri

Upload: affrica

Post on 22-Jan-2016

86 views

Category:

Documents


0 download

DESCRIPTION

Üye v e Sınıf Bildirimleri. Üye vs. Sınıf Bildirimleri. Aptal olmayın. Bir değişken sırf sınıf içerisindeki bir alan olarak tanımlandığı için üye değişken olacak diye bir şart yok. Ya sınıf değişkenidir ya da, üye değişkeni (instance variable) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Üye  v e Sınıf Bildirimleri

ÜyeÜye v vee Sınıf BildirimleriSınıf Bildirimleri

Page 2: Üye  v e Sınıf Bildirimleri

Aptal olmayın. Bir değişken sırf sınıf içerisindeki bir alan olarak tanımlandığı için üye değişken olacak diye bir şart yok.

1. Ya sınıf değişkenidir ya da, 2. üye değişkeni (instance variable)

Benzer şekilde, bir metod sırf sınıf tanımı içerisinde tanımlandığı için üye metod olacak diye bir şart yok.

1. Ya sınıf metodudur ya da, 2. Üye metodu (instance method)

“Sınıf değişkeni” ve “sınıf metodu” ifadeleri özel birşeyler ifade eder.

ÜyeÜye vs. vs. Sınıf BildirimleriSınıf Bildirimleri

Page 3: Üye  v e Sınıf Bildirimleri

Değişkenlere ve metodlara uygulanan bir ayırımdır.

Bir üye değişkeni o sınıfa ait bir nesneye aittir. Yani, üye değişken olarak tanımlanan alanlar, oluşturulan her nesne için ayrı ayrı oluşturulurlar.

Sınıf değişkeni ise, sınıfın kendisine aittir. Yani, sınıf değişkeni olarak tanımlanan alanlar, sadece bir kez oluşturulur; oluşturulan her nesne için ayrı ayrı oluşturulmazlar. Ancak, her nesne bu ortak sınıf değişkenine erişim hakkına sahiptir.

“static” ifadesi:

• değişkenin veya metodun bir sınıf değişkeni veya metodu olduğunu belirtir.

• bu ifade kullanılmadığı takdirde, değişken veya metod bir üye değişkeni veya metodudur.

ÜyeÜye vs. vs. Sınıf BildirimleriSınıf Bildirimleri

Page 4: Üye  v e Sınıf Bildirimleri

Her üye için String türünde ve “ad” adında bir üye alanı oluşturur. Böylece her (Insan) kendine ait bir isme sahip olacaktır. Fakat aynı zamanda, her

insan için ayrı ayrı “nufus” adında bir alan ayrılıyor.

ÜyeÜye vs. vs. Sınıf BildirimleriSınıf Bildirimleri

Farzedelim ki, programımızda oluşturulan nesnelerin sayısını tutmak istiyoruz :

class Insan {String ad;int nufus = 0;

public Insan (String ad) {

this.ad = ad; nufus++; //HATA! } // yapılandırıcı sonu

} // sınıf sonu Bu yüzden, her insan değeri 1 olan kendi “nufus” değişkenine sahip

olacaktır. Bu hiçbir şey ifade etmez!

Page 5: Üye  v e Sınıf Bildirimleri

class Insan {String ad;static int nufus = 0;

public Insan (String ad) {

this.ad = ad; nufus++; } //yapılandırıcı sonu

} // sınıf sonu

ÜyeÜye vs. vs. Sınıf BildirimleriSınıf Bildirimleri

Her nesne, kendine ait String türünden “ad” alanına sahip olacaktır. Dolayısıyla her insan kendi ismine sahip olacaktır.

NOTE: Her Insan kendine ait bir nufusa sahip olmayacaktır. .

Insan sınıfına ait tek bir nufus değişken alanı oluşturulacaktır. İşte, bu bir sınıf değişkenidir.

Böylece, her Insan ortak nufus alanını 1 artıracaktır. .

Bir değişiklik!

Page 6: Üye  v e Sınıf Bildirimleri

ÜyeÜye vs. vs. Sınıf BildirimleriSınıf BildirimleriHangisini ne zaman kullanacağız

Üye değişkenleri, her nesnenin kendine ait bir değişkene ihtiyaç olduğu durumlarda kullanılır.

Örnek, bir nesnenin özellikleri: adı, yaşı, kilosu

Sınıf değişkeni ise, sınıfın kendisine ait sadece bir kopyasının olacağı bir veri alanına sahip olması gerektiği ve bütün üye nesnelerin bu alana erişeceği durumlarda kullanılır.

Örnek,

Nüfus sayımları, paylaşılan kaynaklar, vb..

Quiz Alarm

ı!

Quiz Alarm

ı!

Page 7: Üye  v e Sınıf Bildirimleri

ÜyeÜye vs. vs. Sınıf BildirimleriSınıf Bildirimleri

Sabitlere geri dönüş:

class SabitOrnegi{ final int iMaksBoyut = 10;}

class SabitOrnegi { static final int iMaksBoyut = 10;}

Her nesne için ayrı fakat aynı değere sahip bir sabit tanımlanıyor.

Hiç bir işe yaramayan bir israftır.

Bütün üyelerin kullanacağı ortak, tek bir sabit tanımlanıyor.

Şimdi, hemen hemen bütün bütün sabitlerin neden static ve final tanımlandığını göreceğiz.

Page 8: Üye  v e Sınıf Bildirimleri

Kendinizi sınayın!Kendinizi sınayın!

public class Test {

public void sayHello() {

System.out.println (“Hello”);

}

public static void main (String arg[]){

sayHello();

}

}

Aşağıdaki kodun neden çalışmayacağını tartışın:

Page 9: Üye  v e Sınıf Bildirimleri

Sınıflar ve NesnelerSınıflar ve Nesneler• Oluşan hata:

“Can't make static reference to method void sayHello() in class test.”

Yani:“test sınıfı içindeki void sayHello() metoduna static referans yapılamamaktadır.”

• Neden? Cevap nesneler ile sınıflar arasındaki farkta yatmaktadır. Daha önceki slaytlarda belirtildiği üzere, sınıflar üye nesnelerden, temel türlerden ve metodlardan oluşur. Doğru düzgün düzenlendiği takdirde, sınıflar nesnelere ait durumları ve davranışları ifade eder.

• Nesneye yönelik bir programlama olarak, veriyi işlemek için Java, nesneleri kullanmayı empoze eder. Bu yüzden, programlarımızı yazabilememiz için, sınıflara ait nesneleri oluşturmamız gerekmektedir.

Page 10: Üye  v e Sınıf Bildirimleri

public class Test {

public void sayHello() {

System.out.println (“Hello”);

}

public static void main (String arg[]) {

sayHello(); // WRONG!

}

} }//class Test

public class Test {

public void sayHello() {

System.out.println (“Hello”);

}

public static void main (String arg[]) {

sayHello(); // WRONG!

}

} }//class Test

public class Test {

public void sayHello() {

System.out.println (“Hello”);

}

public static void main (String arg[]) {

sayHello(); // WRONG!

}

}//class Test

Başka bir bakışBaşka bir bakış

public class Test {

public void sayHello() {

System.out.println (“Hello”);

}

public static void main (String arg[]) {

sayHello(); // HATA!

}

}//class Test

Test sınıfını oluşturduğumuz zaman, potensiyel olarak sonsuz sayıda bu sınıfa ait nesne oluşturabiliriz.

Test t1 = new Test(); Test t2 = new Test(); // vb..

t1

t2

t3

Page 11: Üye  v e Sınıf Bildirimleri

public class Test {

int x;

static int y = 2;

}//class Test

SINIF ÜYELER

Test t1 = new Test();t1.x = 5; // erişici kullanılmalı

Test t2 = new Test();t2.x = 3; // erişici kullanılmalı

public class Test {

int x; // now 5

static int y; // 2

}//class Test

public class Test {

int x; // now 3

static int y; // 2

}//class Test

Yeni oluşturulan sınıf örnekleri static ya da sınıf değişkenleri hariç diğer her üye değişkenden bir kopyaya sahip olurlar. Static ifadesini sadece bir kopya anlamında düşünebiliriz.

static int y;

static int y;

t1

t2

Page 12: Üye  v e Sınıf Bildirimleri

Öyleyse, Java bizim sınıfımıza baktığında şunu görür:

* sonsuz sayıda oluşturulabilecek Test üyeleri, hepsi de kendi sayHello() metoduna sahip ve,

*sadece bir adet (static) main metodu ki bu metod bütün üyeler tarafından paylaşılacak.

public class Test {

public void sayHello() {

System.out.println (“Hello”);

}

public static void main (String arg[]) {

sayHello(); // WRONG!

}

}//class Test

public class Test {

public void sayHello() {

System.out.println (“Hello”);

}

public static void main (String arg[]) {

sayHello(); // HATA!

}

}//class Test

t2

t1

Page 13: Üye  v e Sınıf Bildirimleri

public class Test {

public void sayHello() {

System.out.println (“Hello”);

}

public static void main (String arg[]) {

sayHello(); // HATA!

}

}//class Test

Öyleyse, bir metoda static referansta bulunrken yapılan bir hatayı “belirsizlik” olarak adlandırabiliriz.

Javaya muhtemel pek çok Test sınıfı nesnesinden hangisinin “sayHello()” demek istediğini söylemedik

Sadece bir adet

Sonsuz sayıda olabilir

Page 14: Üye  v e Sınıf Bildirimleri

Sınıflar ve NesnelerSınıflar ve Nesneler

class test {public void sayHello(){ // etc. etc.}

}//class test

class test {public void sayHello(){ // etc. etc.}

}//class test

class test {public void sayHello(){ // etc. etc.}

}//class test

“sınıf” ya da “static” üye değişkenleri bütün üye nesneler için tanımlanır. Bütün üye nesneler, bu static alanlara ulaşabilir ve bu alanı diğer bütün nesneler için değiştirebilir.

SINIFÜYE

NESNELER

HEPSİ TARAFINDAN PAYLAŞILIR

class test { public void sayHello(){ // etc. etc }

public static void main (String[] argv) {

}

}

Page 15: Üye  v e Sınıf Bildirimleri

ÇözümÇözüm 11

public class Test {

public void sayHello() {

System.out.println (“Hello”);

}

public static void main (String arg[]) {

Test t = new Test();

t.sayHello(); // Doğru

}

}//class Test

Bu belirsizlik ortadan kalkarsa programımızda sorun kalmaz. Öyleyse, sınıfa ait örnek (üye) bir nesne oluşturun ve nesnenin elemanlarına referansta bulunun.

Page 16: Üye  v e Sınıf Bildirimleri

YA DAYA DAYA DAYA DA

Page 17: Üye  v e Sınıf Bildirimleri

Çözüm Çözüm 22

public class Test {

public static void sayHello() {

System.out.println (“Hello”);

}

public static void main (String arg[]) {

sayHello(); // Doğru

}

}//class Test

Ya da sadece, metodu static yapın.

Page 18: Üye  v e Sınıf Bildirimleri

UyarıUyarı

Daha önceki slaytları anlamadıysanız bu dersteki konular size çok zor gelebilir.

Static konusunun daha önceki konularda su istimal edilmesi ikinci en büyük öldürücü hatadır.

Page 19: Üye  v e Sınıf Bildirimleri

Aşağıdaki örneğe bakalımAşağıdaki örneğe bakalımpublic class Ouch { int w = 0; static int x = 0; final int y = 0; final static int z = 0;

public static void main(String [] args) { Ouch one = new Ouch(); Ouch two = new Ouch(); Ouch three = new Ouch(); // sorulara bakın } // main} // Ouch

Bellekte kaç adet w oluşturuldu?Kaç adet x? Kaç adet y? Kaç adet z? Sabit var mı?

Page 20: Üye  v e Sınıf Bildirimleri

Küçük sırlarKüçük sırlarSınıf değişkenleri ve metodları hiç bir nesne

oluşturulmasa bile kullanılabilir.

Üye değişkenleri ve metodları ise kendi başlarına var olamazlar, mutlaka bir üye nesneye ait olmalıdırlar.

Nesneler, hem sınıf hem de üye elemanlara erişmek için kullanılabilirler.

Sınıflar ise sadece sınıf elemanlarına erişim için kullanılabilirler!

Page 21: Üye  v e Sınıf Bildirimleri

SorularSorular??

Page 22: Üye  v e Sınıf Bildirimleri

DuyurularDuyurular

• Web sayfasını sürekli olarak takip edin!

Eğer takip etmezseniz riske girersiniz!

Page 23: Üye  v e Sınıf Bildirimleri

StringString

Page 24: Üye  v e Sınıf Bildirimleri

StringStringler ve Nesnelerler ve NesnelerHer String daha önceden Java’da oluşturulmuş String sınıfının bir

üyesidir.

Öyleyse, String ‘ler birer nesnedir.

Java, String ‘ler için ekstra bir destek sağlar. Bunun sebebi, String ifadelerin çokça kullanılmasıdır.

(Bu ayrıca, String ‘lerin neden temel (primitive) tür olarak görüldüğüne nedendir ama aslında onlar birer nesnedir.

String ‘lere verilen 3 aşikar destek:

1. String ‘leri ilk yapılandırırken ‘new’ deyimini kullanmanız gerekmez.

Java otomatik olarak String nesnesini yapılandırır, yani “ ” işaretleri arasında kalan ifadeyi ilk değer olarak atar.

Örneğin . . .

Page 25: Üye  v e Sınıf Bildirimleri

StringStringler ve Nesnelerler ve NesnelerAssignment w/References to Strings/Objects: Kod: Bellek:

String str1;Box box1;

str1box1

str2 = “Glib Folksies”; str2

Glib Folksies

?default?

str1 = “Hello World”;box1 = new Box(iLn, iWd, iHt);

Hello World str1box1 iLn, iWd, iHt

str1 = “Hello World”;

box1 = iLn, iWd, iHt;

Hello World str1box1

HATAHATA: “new” : “new” ifadesi kullanılmalı ve yapılandırıcı çağırılmalı ifadesi kullanılmalı ve yapılandırıcı çağırılmalı

str2 ?default?str2 = new String();

Page 26: Üye  v e Sınıf Bildirimleri

Önemli !!Önemli !!Verilen:String s = new String();

İlk değer olarak ne atandığı hakkında nasıl emin olabiliriz?

API ifadesini hatırlayın? Download edin!(http://www.javasoft.com/docs)

1. String sınıfına gidin2. Yapılandırıcıları tıklayın3. Default bir tanesini tıklayın ve dokümantasyonu

okuyun 4. Gizem çözüldü!

Şimdi gösteriye geri dönelim…..

Page 27: Üye  v e Sınıf Bildirimleri

StringStringler ve Nesnelerler ve Nesneler

Ne dediğimizi hatırlayalım: Java otomatik olarak String nesnesini yapılandırır, yani “ ” işaretleri arasında kalan ifadeyi ilk değer olarak atar.

Öyleyse, aşağıdaki kodda:

String str1 = “Hello World”;

3 şeyi başarır:

1. str1 adında String türünden bir alana referans oluşturur. 2. String türünden bir üye nesne oluşturur. 3. Bu nesneyi ilk yapılandırır ve ilk değer olarak “Hello World” ifadesini atar..

Bu, Java ‘nın diğer standart nesnelere nasıl davrandığını bakarsak tutarsızlık gibi gelebilir.

Standart nesneleri kulanırken açıkça:new ifadesini kullanarak ilk örneklemeyi ve yapılandırıcıyı çağırarak ilk yapılandırmayı yapmanız gerekmektedir.

Page 28: Üye  v e Sınıf Bildirimleri

3. Daha önceden tanımlanmış ve bizim kullanımımıza sunulan String sınıfına ait birçok metod mevcuttur. Bunlardan bazıları:

length( ) // bir string kendi uzunluğunu bilir. charAt(iIndex) // String ifadede iIndex pozisyonundaki harfi geri döndürür; // birinci karakterin pozisyonu 0 ‘dır. substring(iStartIndex) // String ifadede iStartIndex pozisyonundan başlayan ve sona // kadar devam eden alt string ifadeyi geri döndürür. substring(iStartIndex, iEndIndex) // String ifadede iStartIndex pozisyonundan // başlayan ve iEndIndex pozisyonuna kadar (dahil // değil) devam eden alt string ifadeyi geri // döndürür.

String ‘lere verilen 3 aşikar destek:

1. String ‘leri ilk yapılandırırken ‘new’ deyimini kullanmanız gerekmez.

String String StuffStuff

2. ‘+’ operatörü overload edilerek yani String ler için yeniden tanımlanarak birleştirme işlemi desteklenmiştir. örneğin,

System.out.println(“This string is an example of” + “ one that is too long to fit on one line. Your TAs take off points” + “ for lines that exceed 80 column characters.”);

Page 29: Üye  v e Sınıf Bildirimleri

String Stuff -- String Stuff -- ÖrneklerÖrnekler

H e l l o0 1 2 3 4

char c = strExample.charAt(1); // c deki değer ‘e’

String strBritishHowdy = strExample.substring(1);

strBritishHowdy ---> “ello”

String strTemperatureOutside = strExample.substring(0, 4);

strTemperatureOutside --> “Hell”

String strExample = “Hello”;

Page 30: Üye  v e Sınıf Bildirimleri

Ayrıca . . .

String nesnelerin içeriği değiştirilemez.

Size String ‘in içerisini değiştiriyorsunuz gibi gelebilir. Ancak, aslında bellekte meydana gelen hadise:

1. Yeni bir String oluşturuluyor2. String referansınızı bu yeni oluşana yönlendirmiş

oluyorsunuz3. Eski String çöp oluyor; eskisine ait bir referansınız artık yok.

Örneğin:

Hello World str1String str1 = “Hello World”

str1 = str1.substring(4)

Hello World

o World

str1

Opsiyonel: Bu sınırlandırmadan kurtulmak için StringBuffer sınıfına bakın.

StringStringler ve Nesnelerler ve Nesneler

Page 31: Üye  v e Sınıf Bildirimleri

Nesneler ve ReferanslarNesneler ve Referanslar: : String ‘e özel bir durumString ‘e özel bir durum

Dikkat: Birazdan gelecek slaytlarda öğrenciler için çok karıştırılan konulara bakacağız. Bu yüzden biraz tekrar yapalım:

1. 1. Temel türleri karşılaştırırken Temel türleri karşılaştırırken (int, float, etc.), ‘==‘ kullanın (int, float, etc.), ‘==‘ kullanın

2. 2. Nesneleri karşılaştırırken Nesneleri karşılaştırırken (String, (String, ya da oluşturduğunuz ya da oluşturduğunuz herhangi bir sınıfa aitherhangi bir sınıfa ait), equals() ), equals() metodunumetodunu kullanın kullanın. .

3. 3. Bir veri türü ya da kayıt olarak kullanacağınız bir sınıf Bir veri türü ya da kayıt olarak kullanacağınız bir sınıf oluşturuyorsanız, equals() metodu oluşturmayı unutmayın.oluşturuyorsanız, equals() metodu oluşturmayı unutmayın.

Birazdan “==“ ifadesinin bazı olağanüstü durumlarda nesneleri karşılaştırmak için de kullanılabileceğini göstereceğiz fakat her zamanda değil.

Şüpheye düşerseniz yukarıdaki prensiplere uyun.

Page 32: Üye  v e Sınıf Bildirimleri

Nesneler ve ReferanslarNesneler ve Referanslar : Normal Durum için

Önceki örneğin modeline bakalım:

box1 = new Box(1, 2, 3);box2 = new Box(8, 5, 7);box1 = box2;System.out.println(box1 == box2); // ekrana true basar// box1 , box2 ile aynı nesneye mi referans etmektedir?

System.out.println(box1.equals(box2)); // ekrana true basar // box1 içeriği kendisi ile aynı olan bir nesneye mi işaret ediyor? // box2 nesnesi gibi?

box1 box2

L=8, W=5, H=7

L=1, W=2, H=3memory

Page 33: Üye  v e Sınıf Bildirimleri

Hello

Hello

Javanın karakteristiği olarak Stringler özeldir. Her zaman olmamakla birlikte bazı durumlarda “==“ ifadesini .equals() gibi, nesneleri karşılaştırmak için kullanabiliriz.Bakınız:

String strHello1 = “Hello”;String strHello2 = “Hello”;

Yukarıdaki iki ifadeinin bllekte şu şekilde bir değişiklik oluşturacağını düşünebiliriz:

Aslında bellekte olan hadise şudur:

strHello1strHello2

HellostrHello1strHello2

Nesnelere referanslarda eşitlik:Stringler özeldir

Page 34: Üye  v e Sınıf Bildirimleri

Stringlere neden farklı davranılıyor?

Derleyici, aşağıdaki ifadeler ile karşılaştığında :

String strHello1 = “Hello”;String strHello2 = “Hello”;

İki String ifadenin de aynı olduğunu anlayacak kadar zekidir. Böylece, bellekte ayrı bir yer harcamamak için aynı yeri gösterir. Aşağıdaki ifadeyi yazarsanız da aynı sonuçla karşılaşırsınız:

String strHello2 = “Hell” + “o”;

Bu, şu anlama geliyor ki, equals() ve ‘==‘ ikisi de çalışır:System.out.println (strHello1.equals(strHello2)); // doğruSystem.out.println (strHello1 == strHello2); // bu da doğru

// fakat tehlikeli

Page 35: Üye  v e Sınıf Bildirimleri

Stringlerde istisnanın istisnası

Fakat bu özel durum her zaman çalışmaz . . .

Bakınız: Eğer Stringlerden biri “new” ifadesi kullanılarak oluşturlmuş ise bu Stringler artık bellekte aynı alanı paylaşmazlar. Yani, “==” bu defa çalışmaz ancak .equals() eğerki nesnelerin içerikleri eşit ise çalışır.

DERS: Bazı durumlarda izin verilse bile Stringler dahil nesneleri karşılaştırırken “==” kullanmayın

Hatırlayın: Sadece temel türleri karşılaştırırken “==“ kullanın ; nesneler için .equals() kullanın!

Page 36: Üye  v e Sınıf Bildirimleri

toString()toString()olma ya daolma ya da totoStringString

olmamaolmama......

Debugging:

Page 37: Üye  v e Sınıf Bildirimleri

Hata ayıklama stratejileriHata ayıklama stratejileriAdım adım:

Anafikir: Hatayı küçükken yakalayın(yılanın başını küçükken ezmek gerekir) Yoksa başa çıkmak zor olabilir. Hata bulmak zordur. Bu nedenle yazdıkça hata testi de yapılmalıdır.

Şunları yapmayın:• Bütün programı bir oturuşta yapmak• ve sonra test etmek

Bunun yerine:• küçük parçalara odaklanıp bunları test ettikten sonra büyük parçaları oluşturun

Page 38: Üye  v e Sınıf Bildirimleri

Hata ayıklama stratejileriHata ayıklama stratejileriİhtiyaç: Nesnenin o anki durumunu gözlemekAnlamı: public String toString ( )

• Her sınıf için bir tane “toString” metodu oluşturun.

• Bunu yaptıktan sonra nesneye bir stringmiş gibi referansta bulunabiliriz. Aşağıdaki ifadeye parametre olarak gönderebiliriz:

System.out.println ( );

Page 39: Üye  v e Sınıf Bildirimleri

toString kullanımına örnekler:

Box sınıfı için bir metod yazalım:

public String toString ( ) {

String returnStr; returnStr = new String(“Box: length = “ + iLength +

“, Width = “ + iWidth + “height = “ + iHeight); return (returnStr);

}

O zaman şunu yapabliriz: Box subwooferBox = new Box(40, 50, 60); … System.out.println ( subwooferBox ); // nasıl???????? // peki “toString” metodunu çağırmadan mı????

Hata ayıklama stratejileriHata ayıklama stratejileri

Page 40: Üye  v e Sınıf Bildirimleri

toString metodunun çağırıltoString metodunun çağırıldığı özel durumdığı özel durum

• String gerekli olduğu durumda bir nesneye referans ediliyorsa toString metodu otomatik olarak alt tarafta çağırılır. Bonus!

• Bu yüzden, tanımladığınız her sınıf için anlamlı bir toString() metodu oluturmanız son derece önemlidir.

• Hata ayıklama için mükemmel bir yöntem!

Page 41: Üye  v e Sınıf Bildirimleri

Hata ayıklama stratejileriHata ayıklama stratejileri

Her sınıf için bir adet “main” metodu• Javaya göre sizin sadece bir adet main metoduna ihtiyacınız vardır her sınıf için bir tane değil

• Fakat Java, nasıl program yazılacağını bilemez!

• Her sınıfı test etmek ve hata ayıklamak için o sınıfa ait bir main metodu oluşturun. . .

• Bu test mainleri içerisinde değişkenlerin tanımlarını ve metodları çağırarak sınıfın aslında ne yaptığını kontrol edin (örneğin: toString() metodunu kullanmak gibi)

• Daha sonra, main metodunu çağırarak sınıfı test edin.

• main metodu sınıfınızın bir parçası olarak kalabilir, sadece test amaçlı çağırın.

Page 42: Üye  v e Sınıf Bildirimleri

NasılNasıl??Farzedelim ki, A, B, ve C diye 3 adet sınıfımız olsun; herbirinin test amaçlı main metodları olsun

C sınıfı, A ve B sınıflarının da kullanımını içeren tüm programınızı çalıştıracak main metoduna sahip olsun.

Kısmi bir main metodunu nasıl çağırabilirsiniz o zaman?javac A.java <- A sınıfını derlejava A <- A’nın main metodunu çağırırjavac B.java <- B sınıfını derlejava B <- B’nin main metodunu çağırır javac C.java < C sınıfını derle java C <- C’nin main metodunu çağırır

Page 43: Üye  v e Sınıf Bildirimleri

Hata ayıklama stratejileriHata ayıklama stratejileri

• Her sınıf için boolean türünde DEBUG adında bir sabit tanımlayın

public static final boolean DEBUG = true;

• Nerede uygunsa kullanın..if(DEBUG)

System.out.println("method>var = "+var);

Page 44: Üye  v e Sınıf Bildirimleri

SorularSorular??

Page 45: Üye  v e Sınıf Bildirimleri