ALANLAR(FIELDS)
Bir alan, sınıf içinde tanımlanmış herhangi türden (int, string vb.) bir değişkendir.
public class Ucgen
{
public int a; //ALANLAR
public int b;
public int c;
}
Sınıfa ait alanlar tanımlanırken başına “public” erişim belirleyicisi yazılmıştır. Bu erişim belirleyicisi, alan bilgisine sınıf dışından erişim için gereklidir. Ancak Alanlar yalnızca özel ve gizli kalması gereken değişkenler için kullanılmalıdır. Sınıf içinde tanımlanmış bir değişkenin başına yazılan “public” erişim belirleyicisi ile alanı dış dünyaya açmak uygun değildir. Bu şekilde yapıldığında değişkene değer atama ya da değişkenin değerinin okunması işlemlerinde kontrol mekanizması işletilemez.
Örneğin üçgenin kenarlarını negatif girersek aslında bir üçgen çizilemez. Bu da aslında programın doğru çalışmayacağı anlamına gelir. Bu durumun önüne geçmek için PROPERTY – Özellik kullanılır. Genellikle kullanacağımız değişkenin ilk harfini büyük harf yaparak o değişkenin Property’sini (Özellik) oluştururuz.
Yani değişkenimizin adı a ise – > Property adını A yapabilirsiniz.
değişken adı marka ise – > Property adını Marka yapmak gibi.

ÖZELLİKLER(PROPERTIES)
İşte; bir değişkeni dış dünyaya açmak (diğer sınıflardan, programlardan vb. erişmek) için bu değişkene ait bir
özellik eklenir. Bu sayede, sınıfın üyesi olan private özellikli değişkenler dış dünyaya açılmış olur ve kolaylıkla bu değişkenlere değer atama(set) ve değişken değerini programa döndürme(get) özelliklerini kullanmış oluruz.
Aslında Property’yi de bir metod gibi düşünebiliriz. Ancak metotlardan farkı property isminden sonra () parantez yoktur.!!! Ayrıca get ve set bölümlerinden ikisi de olmak zorunda değildir. Sadece get bölümü olan property’ler – Read Only – Sadece Okunabilir Özellikler olarak adlandırılır. Sadece set bölümü olan property’ler – Write Only – Sadece Yazılabilir Özellikler olarak adlandırılır.
Örneğin;
class Kisi()
{
int yas; // değişkeni alan(field) - Başında erişim belirleyici olmayınca varsayılan olarak hangi belirteç sayılıyordu? (private)
public int Yas // Property - Özellik
{
get{return yas;}
set{yas=value;} // Burada value denilen, kullanıcının ='den sonra girdiği değerdir. Yani kullanıcının girdiği değeri alarak yas değişkenine direkt atamayı sağlar. Bunu main kısmında yapıyoruz.
}
--- Artık Main içerisinde nesnemizi oluşturup property'mizi kullanabiliriz. ---
Kisi kisi1 = new Kisi() // Nesnemizi oluşturduk.
kisi1.Yas=12; // Dediğimizde property'nin set bölümü çalışır. yas'ı 12 yapar.
kisi1.Yas = Convert.ToInt32(Console.ReadLine()); // diyerek kullanıcıdan da değeri isteyebiliriz.
Console.WriteLine(kisi1.Yas); // Dediğimizde property'nin get bölümü çalışır. Yani yas değişkeninin değeri get edilir ve ekrana yas değerini yazar.
}
YAPICI METOTLAR ( CONSTRUCTORS)
Nesneler oluşturulduğunda ve yok edilme anında otomatik olarak çalıştırılan metotlar vardır. Nesneler
oluşturulurken otomatik olarak çalıştırılan metotlara yapıcı metot (constructor), nesnelerin yok edildiği
anda otomatik olarak çalıştırılan metotlara yıkıcı metot (destructors) denir.
Yapıcı metotlar, nesnelerin ilk oluşturulduğu anda otomatik olarak çalıştırılır. Yapıcı metotlar genellikle
sınıf içinde tanımlanan yerel değişkenlerin ilk değerlerini düzenlemek için kullanılır.
Bir metodun yapıcı metot olabilmesi için şu şartları taşıması gerekir:
• Metot adı, sınıfın adı ile aynı olmalıdır.
• Geri dönüş tipi olmamalıdır (void ya da int gibi).
• Nesneleri oluşturmak için new operatörü kullanıldığı anda yapıcı metotlar otomatik olarak çalıştırılır.
Nesne oluşturulduktan sonra yapıcı metotlar bir daha çağrılamaz.

• Sınıf içinde bir yapıcı metot tanımlanmamışsa derleyici arka planda boş bir varsayılan yapıcı metot
oluşturur.
• Yapıcı metotlar bazı kaynaklarda “kurucu metot” veya “oluşturucu metot” olarak da geçer.
Yıkıcı Metotlar (Destructors)
Nesne hafızadan atıldığı anda otomatik olarak çalışan yıkıcı metotlar, tıpkı yapıcı metotlar gibi özel metotlardır
ve şu şartları taşımalıdır:
• Metot adı, sınıfın adı ile aynı olmalıdır.
• Metot adının başında ~ (Tilde) karakteri olmalıdır.
• Bir sınıfın yalnızca bir tane yıkıcı metodu olabilir.
• Yıkıcı metotlar aşırı yüklenemez.
• Yıkıcı metotlar parametre alamaz.
• Yıkıcı metotların erişim belirleyicisi olamaz.
Programcının yıkıcı metot üzerinde bir kontrolü bulunmaz. Yıkıcı metotlar genellikle sınıf içinde kullanılan
kaynakların (veri tabanı, dosya vb.) kapatılması ve hafızadan atılması amacıyla .NET Framework
içindeki Garbage Collector (Çöp Toplayıcısı) tarafından gerekli görüldüğü zaman çalıştırılır.
KALITIM (INHERITANCE)
Kalıtım, NTP’deki en önemli kavramlardan biridir ve bir sınıfın özelliklerinin farklı sınıflar tarafından da kullanılabilmesini sağlar. Buna miras alma da denir. Bu durumda miras alınan sınıfa üst veya temel sınıf (parent), miras alan sınıfa da üretilmiş sınıf (derived) denir. C#’ta bir sınıf sadece bir sınıftan türetilebilir.

Üst sınıf ile türetilmiş sınıf arasında bir üst / alt ilişkisi vardır. Türetilmiş sınıf, üst sınıf ögelerine erişebilir ancak bu durumun tersi doğru değildir. Bir sınıfı bir başka sınıftan türetmek için iki nokta (:) karakteri kullanılır.
Sıra Sizde
Word hali için tıklayınız.

SORU 1: Bir cep telefonu mağazasından alınan telefonlar için marka, fiyat, telefonu alan kişinin adısoyadı ve aldığı hat(telno) bilgilerinin tutulması isteniyor.
Buna göre sınıf yapısını tasarlayınız.
1) marka, fiyat, adsoyad, telno ve garanti alanlarını uygun veri tipinde oluşturunuz.
2) Bu alanlara ait özellikleri(Property) tanımlayınız.
– fiyat property’sini tanımlarken 0 ve altında fiyat girilirse hata mesajı verdiriniz.
-TelNo property’sini tanımlarken 11 haneden az veya fazla numara girerse hata mesajı verdiriniz ve 1 kez daha girmesini isteyiniz. Girilen no’yu değişkene atayınız.
3) Sınıf değişkenlerine;
marka = “Toruntay İletişim”;
fiyat= 1;
adsoyad = “Toruntay İletişim”;
telno=”0262 111 11 11″; atamalarını yapan Yapıcı Metodu(Constructor) oluşturunuz. Console ekranında gözüken ilk satırı kullanıcıya gösteren kodu ekleyiniz.( Console.WriteLine(“Kurumumuza Hoş geldiniz…”) )
4) OzellikYaz() isminde bir metot oluşturunuz. Bu metodun işlevi cep telefonunun tüm özelliklerini Console ekranında göstermektir.
5) Main metodu içerisinde kullanıcından marka, fiyat, adsoyad ve telno bilgilerini isteyiniz. Özellik(Property) kullanarak kullanıcının girdiği bilgileri sınıf değişkenlerine atayınız.
6) OzellikYaz() metodunu çağırarak ceptelefonu özelliklerini Console ekranında gösteriniz.
7)BozukTelefonlar isimli bir sınıf oluşturunuz. Bu sınıfı CepTel isimli sınıftan türetiniz. Bu sınıfa üye olarak tamirucreti, tamireden(kişi bilgisi), pilomru ve tamire kaçıncı kez geldiği bilgisini tutan kacinci isminde dört değişken tanımlayınız. Bunları uygun veri tipinde oluşturunuz.
8) Bu sınıfın yapıcı metodunu(constructor) oluşturunuz. İlk değer atamaları olarak tamireden=Emre AYDIN , pilomru=50, kacinci=1 bilgilerini giriniz. “Bozuk Telefonlar varsayılan değerler…” diyerek bu bilgileri ekranda gösteriniz.
9) BozukTelefonlar sınıfının içerisine TamirHesapla isimli bir metot tanımlayınız. Bu metot geriye tamir edilen telefonun tamirucreti değerini döndürecektir. Metot, tamirsuresi(int tipinde) ve ekrandegisimi(string) tipinde iki parametre alsın.
Tamir ücreti = Tamir süresi * 80 TL ‘ dir. Eğer ekran değişimi var ise tamir ücretine +1000 TL eklenecektir.
10) Main içerisinde kullanıcıdan tamir süresi ve ekran değişimi(Evet/Hayır) bilgilerini isteyin ve TamirUcreti metodunu main içerisinde çağırın. Tamir ücreti bilgisini main içerisinde console ekranında yazdıran kodu oluşturun.
AÇIKLAMALI CEVAP İÇİN TIKLAYINIZ.
