Bölüm 9 Alıştırmalar

9.1 Nesne ile sınıfın tanımı arasındaki ilişkiyi açıklayınız?

9.2 Sınıf nasıl tanımlanır?

9.3 Bir nesneye ait referans değişkeni nasıl bildirilir?

9.4 Nesne nasıl yaratılır?

9.5 constructor ve metot arasındaki farklar nelerdir?

9.6 Bir sınıf ne zaman bir varsayılan constructor’a sahip olur.

9.7 Nesnenin bir veri elemanına ya da metoduna erişmek için hangi operatör kullanılır?

9.8 Anonim nesne nedir?

9.9  NullPointerException nedir?

9.10  Dizi, bir nesne mi,bir temel veri türü müdür? Bir nesne türünden elemanlar içerebilir mi?

 Bir dizinin elemanlarının varsayılan değeri nedir?

9.11 Aşağıdaki programlardaki hata nedir?

9.12 Aşağıdaki programdaki hata nedir?

1 class Test {

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

3                 A a = new A();

4                 a.print();

5         }

6 }

7

8 class A {

9         String s;

10

11         A(String newS) {

12         s = newS;

13         }

14

15         public void print() {

16         System.out.print(s);

17 }

18 }

9.13 Aşağıdaki kodun çıktısı nedir?

public class A {

boolean x;

public static void main(String[] args) {

A a = new A();

System.out.println(a.x);

}

}

9.14 Şu anki zamanı gösteren bir  Date nasıl yaratılır? Şu anki zamanı nasıl gösterirsiniz?

9.15  Point2D nasıl yaratılır?  p1 ve p2 ‘nin Point2D sınıfından nesneler olduğunu varsayarsak, bu iki nokta arasındaki mesafeyi nasıl hesaplarsınız?

9.16  Date, Random, Point2D, System, ve Math sınıfları hangi paketlerin içerisindedir?

9.17 F sınıfının tanımı (a)’da verilmiştir. f, F türünden bir nesne olsun. (b)’de verilen deyimlerden hangileri doğrudur?

       

9.18  ? olan yerlere eğer uygunsa static anahtar sözcüğü ekleyiniz.

public class Test {

int count;

public ? void main(String[] args) {

}

public ? int getCount() {

return count;

}

public ? int factorial(int n) {

int result = 1;

for (int i = 1; i <= n; i++)

result *= i;

return result;

}

}

9.19 Bir instance metodu ya da bir instance değişkenine ait referansı, static bir fonksiyondan çağırabilir misiniz?

 Bir static metodu ya da bir static değişken referansını, instance metodundan çağırabilir misiniz? Aşağıdaki kodda bulunan hata nedir?

1 public class C {

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

3                 method1();

4         }

5

6         public void method1() {

7                 method2();

8         }

9

10         public static void method2() {

11                System.out.println(”Yarıçap  " + c.getRadius());

12         }

13

14         Circle c = new Circle();

15 }

9.20 Erişim (accessor) metodu nedir? Değiştiren(mutator) metot nedir? Erişim metotları ile değiştiren metotların isimlendirilmesinde nasıl bir biçim kullanılır?

9.21 Veri elemanlarının encapsule edilmesinin faydaları nedir?

9.22 Aşağıdaki kodda, radius, Circle sınıfının private veri elemanıdır ve myCircle, Circle sınıfı türünden bir nesnedir. Aşağıda, işaretlenmiş olan kod herhangi bir hataya neden olur mu? Eğer öyleyse, neden?

public class Circle {

private double radius = 1;

/** Çemberin alanı */

public double getArea() {

return radius * radius * Math.PI;

}

public static void main(String[] args) {

Circle myCircle = new Circle();

System.out.println("Radius is " + myCircle.radius);

}

}

9.23 Parametrenin referans türü olarak ya da temel türlerden biri olarak geçilmesi arasındaki fark nedir?

 Aşağıdaki programların çıktıları nedir?

9.24 Aşağıdaki kodun çıktısı nedir?

public class Test {

public static void main(String[] args) {

Circle circle1 = new Circle(1);

Circle circle2 = new Circle(2);

swap1(circle1, circle2);

System.out.println("After swap1: circle1 = " +

circle1.radius + " circle2 = " + circle2.radius);

swap2(circle1, circle2);

System.out.println("After swap2: circle1 = " +

circle1.radius + " circle2 = " + circle2.radius);

}

public static void swap1(Circle x, Circle y) {

Circle temp = x;

x = y;

y = temp;

}

public static void swap2(Circle x, Circle y) {

double temp = x.radius;

x.radius = y.radius;

y.radius = temp;

}

}

class Circle {

double radius;

Circle(double newRadius) {

radius = newRadius;

}

}

9.25 Aşağıdaki kodun çıktısı nedir?

9.26 Aşağıdaki programların çıktısı nedir?

9.27 Aşağıdaki programdaki hata nedir?

1 public class Test {

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

3                 java.util.Date[] dates = new java.util.Date[10];

4                 System.out.println(dates[0]);

5                 System.out.println(dates[0].toString());

6         }

7 }

9.28 Eğer bir sınıfın tüm veri elemanları private ve hiç bir setter metodu yoksa bu sınıf değişmez sınıf mıdır?

9.29 Eğer bir sınıfın tüm veri elemanları temel veri türlerinden ve private ise ve bunun yanında hiç bir setter metodu yoksa bu sınıf değişmez sınıf mıdır?

9.30 Aşağıdaki sınıf değişmez sınıf mıdır?

public class A {

private int[] values;

public int[] getValues() {

return values;

}

}

9.31 Aşağıdaki programın çıktısı nedir?

public class Test {

private static int i = 0;

private static int j = 0;

public static void main(String[] args) {

int i = 2;

int k = 3;

{

int j = 3;

System.out.println("i + j is " + i + j);

}

k = i + j;

System.out.println("k is " + k);

System.out.println("j is " + j);

}

}

9.32  this anahtar sözcüğünün kullanımını açıklayınız.

9.33 Aşağıdaki programdaki hata nedir?

1 public class C {

2         private int p;

3

4         public C() {

5                 System.out.println("C's no-arg constructor invoked");

6                 this(0);

7         }

8

9         public C(int p) {

10                 p = p;

11         }

12

13         public void setP(int p) {

14                 p = p;

15         }

16 }

9.34 Aşağıdaki programdaki hata nedir?

public class Test {

private int id;

public void m1() {

this.id = 45;

}

public void m2() {

Test.id = 45;

}

}