C# Öğreniyoruz | Engin Demiroğ Fan Club

C# Temelleri

Referans Tipler

Class

Kapsülleme (Encapsulation)

Arayüz (Interface)

Kalıtım (Inheritance)

Interface ile Kalıtım Inheritance Arasındaki Fark

Interface ve Abstract

Yapıcı (Constructor)

Linq

C# – Yapıcı (Constructor) ve Get-Set (Property) kullanımı

YAPICILAR

  • Yapıcılar bir sınıftan new anahtar sözcüğüyle yeni bir nesne oluşturulduğu anda çalışan metottur. 
  • Yapıcı metot sınıf ismiyle aynı olmak zorundadır.
  • Geriye değer döndürmez. Fakat değer döndürmeyen metotlarda kullanılan void  yapıcı metotlarda kullanılmaz.
  • Yapıcı metotlar parametre alabilirler, aşırı yüklü olabilirler.
  • Kaynak: https://www.yazilimkodlama.com/programlama/c-siniflar-yapici-metot-constructor-kullanimi/

GET – SET KULLANIMI

  • Bir Class içerisinde bulunan bazı alanlara her zaman ulaşmak gerekmez. Çünkü bir nesneyi sürekli ulaşılabilir hale getirmek bilinçsiz kullanım, veri kaybı ve güvenliği gibi sorunları ortaya çıkartır. Zaten nesneleri tanımlarken varsayılan değer olarak “Private” erişim belirleyicisi olarak tanımlanması da bu tip gerekçelerden kaynaklanır. “Public” erişim belirleyicisi ise tamamen açık hale getirir. İşte tam bu noktada nesnelerimizin erişimini yönetmek için “Property” kavramı devreye girer. “Property” yani Özellik metotları nesnelerimiz üzerinde kontrollü kullanım sağlar.
  • Bir sınıf içerisinden farklı bir sınıf içerisindeki nesneye ulaşmak istiyorsak özellik (get -set) metotlarını kullanmalıyız.
  • Özellik metotları Get ve Set anahtar kelimesinden oluşan iki kod bloğundan oluşurlar.
  • Get metodu veri okunduğu zaman, Set metodu ise veri yazıldığı zaman (yani değer ataması yapıldığı zaman) yürütülür.
  • Kaynak: http://alkanfatih.com/c-property-ozellik-kullanimi-get-ve-set-nedir-nasil-kullanilir/

PUBLİC VE STATİC

  • Public olarak tanımlanan öğeye kod bloğunun içinden ve dışından erişilebilir, yani her yerden ulaşılabilir denilebilir.
  • Statik tanımlaması yapıldığında ise bu sınıf, herhangi bir nesne oluşturmadan; sadece adıyla çağırılıp erişim sağlanabilir.

Kodumuz

  • ogrenci sınıfının içerisinde bulunan Ad, Yas, Burc, Renk, Sayi isimli metotlardaki get ve set metotlarının sırası fark etmez. Yani bu kodda önce get metodu sonra set metodu yazılmış ve set ile değeri aldıktan sonra get ile geri gönderiyoruz gibi değil de bu ikilinin, bir metod içinde birbirini tamamladığını düşünmeliyiz. (sanırım?) (farklı sıralarda yazıp denedim ve aynı çıktıyı aldığım için bu kanıya vardım)
  • Değişkenleri yapıcının içerisinde tanımlayamayız. Sınıfın içerisinde, yapıcının dışında tanımladığımız değişkenleri, yapıcının içerisinde korumaya alırız. Bu sayede değişkenlerin değerlerine kolayca ulaşılıp değişiklik yapılaması engellenmiş olur. (6, 7, 8, 9 ve 10. satırlarda değişken tanımlama yapılır) (15, 16, 17, 18 ve 19. satırlarda değişkenler yapıcı içerisine konularak korunur)
  • Yapıcıyı ve içerisine get-set’leri koyacağımız metotları public şekilde tanımlıyoruz. (13, 22, 27, 33, 39 ve 45. satırlar)
  • 58, 59, 60, 61 ve 62. satırlarda nesneismi.değişkeninadı şeklinde değil de nesneismi.değişkeninmetodununadı şeklinde bir çağrılma yapılmalı. Örneğin, ad bir değişkendir ve değeri Rumeysa dır. ad değişkenini alan ve geri gönderen (içerisinde değişkene ait, sadece get-set metotlarının bulunduğu) metodun ismi ise Ad dır. Bu nedenle biz ad değişkenini Main metodu içerisinde çağıracağımız zaman, ad değişkeninin bulunduğu ogrenci sınıfından oluşturulan ogrnesne isimli nesne nokta değişkenin metodunun adı şeklinde yazarız.

Kodun Çıktısı

Hatalar

  • Değişkenler yapıcı içerisinde tanımlanmamalıydı.
  • Yapıcı ve içerisine get-set’leri koyacağımız metotlar static değil, public şekilde tanımlanmalıydı.
  • Başka bir sınıf içerisindeki değişkeni, Main metodu içerisinde nesne üzerinden çağıracağımız zaman; nesne adından sonra direkt olarak değişkenin adı değil, değişkenin bulunduğu metodun adı yazılmalıdır. Bu elbette ki her durum için geçerli değildir. Burada metodun adını kullanmamızın sebebi, bu metodun içerisinde sadece bu değişkenle ilgili get ve set metotlarının kullanılması, yani bu değişkenin döndürülmesi ile ilgilidir.