NYP dersindeki düşük başarının, soruların “zor” olması nedeniyle olduğunu düşünen öğrenciler için bu yazıyı yazma ihtiyacı duydum. Bu “zor” soruları derste defalarca çözmüştük; ama bir de bu ortamda gösterelim.
Sadece “Örgün öğretim” sorularını ayrıntılı cevaplayacağım, zaten benzer kurallar 2. öğretim içinde geçerli, ayrıca sayfa sonunda word belgesi halinde sınav cevap kağıtlarını yayınlıyorum. 1. zor soru ile başlayalım:
Soru 1. 3D bir oyunda tasarlayan bir geliştirici bir cismi oyun çalışırken istediği koordinatlarda yaratmak istemektedir. OyunCismi adındaki sınıfta “Cisim_ID, X, Y Z” bilgileri tutulması düşünülmektedir. Oyun X, Y, Z sıfırdan küçük olursa 0’a, diğer taraftan X, Y, Z 1024’ten büyük olursa 1024 olmalıdır.(30)
a) Yapıcı (Constructor) kullanarak tüm bilgileri alın. (7)
b) X değerinin 0’dan küçük 1024’ten büyük olmamasını sağlayın. (8)
c) X koordinatında istenildiği kadar arttıran fonksiyonu yazın. (5)
d) X koordinatında istenildiği kadar azaltan fonksiyonu yazın. (5)
e) Nesnenin son koordinatlarını string türünden döndüren yordamı yazın. (5)
Tasarımı yaparken property veya fonksiyon kullanmada özgürsünüz. Sarmallama kuralına özen gösterin. (Y ve Z aynısı yazmaya gerek yok.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
public class OyunCismi { //Encapsulation'a uygun private değişkenler private int Cisim_ID, X, Y, Z; //Constructor (b) public OyunCismi(int _Cisim_ID, int _X, int _Y, int _Z) { Cisim_ID = _Cisim_ID; set_X(_ X); // X için Y = _Y; Z = _Z; } public void set_X(int deger) { if(deger<0) X=0; Elseif (deger>1024) X=1024; Else X=deger; } public void arttirma_X(int deger) { X = X + deger; set_X(X); } public void azaltma_X(int deger) { X = X - deger; set_X(X); } public string koordinatlari_goster() { Return X.toString(); //+ ile diğerleri eklenebilir. } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
01 class A 02 { 03 private int X; 04 private int Y; 05 static A( ) { 06 X = 10; 07 } 08 public A(int value) { 09 Y = 10; 10 } 11 public static A(int Z) { 12 Y = 10 * Z; 13 } 14 public int T(int value) { 15 get { return Y; } 16 } 17 } class B { static B() {} static void Main() { A _nesne01 = new A( ); //boş constructor parametresiz Console.WriteLine("Y: " + _nesne01.T); //property, değişken A _nesne02 = new A(17); //tek parametreli constructor Console.WriteLine("Y: " + _nesne02.T); //property, değişken Console.WriteLine("X: " + A.X); //static değer } } |
1 2 3 4 5 6 7 8 9 |
class B { static void Main() { A _nesne = new A(5, 6, 7); //constructor 3 parametreli int sonuc = _nesne.carp( ); //metod parametresiz int sonuc = A.s_carp(5, 5, 4); //static fonksiyon parametreli } } |
Öncelikle açıklama satırı şeklinde konuları yazdım. Çok basit bir soru…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Class A { public int X, Y, Z; public A(int a, int b, int c) { X=a; Y=b; Z=c; } public int carp() { return X*Y*Z; } public static int carp(int a, int b, int c) { return a*b*c; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public class A { public int karsilatirma(int[] x, int[ ] y) { int say =0; for(int i=0; i <=x.Length; i++) for(int j=0; j <=y.Length; j++) if(X[i]==Y[j]) say++; return say; } } class Program{ static void Main() { int[ ] array01 = { 5, 6, 7, 2, 1 }; int[ ] array02 = { 6, 7}; A _nesne = new A( ); int sonuc = _nesne. karsilatirma(array01, array02); } } |
Not: cevapların ilk karakterleri büyüktür, word ilk kelimeyi otomatik büyüttüğü için düzeltmeye gereği duymadım. Sınavda da önem verdiğim bir konu değil. İyi bir IDE zaten bu düzeltmeleri otomatik yapıyor.