Diğer 9 soru

Nesneye Yönelik Programlama Ünite 8

Kaynak: https://lolonolo.com/2022/08/12/nesneye-yonelik-programlama-unite-8/

📖 Konu özeti (sınav öncesi tekrar)

Interface (Ara Birim), Çok Biçimlilik (polymorphısm) Ve Operatörlerin Aşırı Yüklenmesi

Interface (Ara Birim), Çok Biçimlilik (polymorphısm) Ve Operatörlerin Aşırı Yüklenmesi

9 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1
Aşağıda verilen operatörlerden hangisi Aşırı Yükleme yapılabilir?
EDoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

C#'ta +, -, *, == gibi aritmetik ve karşılaştırma operatörleri operator anahtar kelimesiyle aşırı yüklenebilir. && ve || gibi koşullu mantıksal operatörler doğrudan aşırı yüklenemez. <<= ve >>= gibi bileşik atama operatörleri de ayrıca tanımlanmaz; bunlar << ve >> aşırı yüklendiğinde otomatik olarak çalışır. Bu yüzden doğrudan aşırı yüklenebilen operatör +'dır.

Soru 2
Aşağıda verilen operatörlerden hangisi Aşırı Yükleme yapılamaz?
DDoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

C#'ta && (koşullu VE) operatörü doğrudan aşırı yüklenemez. Ancak &, true ve false operatörleri aşırı yüklendiğinde dolaylı olarak kullanılabilir hâle gelir. Buna karşılık +, -, ! ve ~ tekli/ikili operatörleri operator anahtar kelimesiyle doğrudan aşırı yüklenebilir.

Soru 3
Operatör Aşırı Yüklemesi aşağıdaki verilen hangi ifade ile gerçekleştirilir?
ADoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

C#'ta operatör aşırı yükleme, public static bir metot içinde operator anahtar kelimesiyle yapılır. Örnek: public static Nokta operator +(Nokta a, Nokta b). new nesne oluşturur, interface ara birim tanımlar, class sınıf tanımlar, protected ise bir erişim belirleyicidir.

Soru 6
I – Kalıtımı destekler
II – Kalıtımı desteklemez
III – Yapılarda (struct) kullanılamazlar
C# programlama dilinde Ara Birim (interface) ile ilgili verilen ifadelerden hangisi/hangileri doğrudur?
ADoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

C#'ta bir interface başka bir interface'ten kalıtım alabilir, yani kalıtımı destekler (I doğru, II yanlış). III de yanlıştır, çünkü struct'lar da interface uygulayabilir (ör. struct Nokta : IComparable). Bu nedenle yalnız I doğrudur.

Soru 7
I – Kalıtımı destekler
II – Kalıtımı destekleme
III – Bir sınıf birden fazla Ara Birim kullanabilir.
C# programlama dilinde Ara Birim (interface) ile ilgili verilen ifadelerden hangisi/ hangileri doğrudur?
EDoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

C#'ta interface'ler kalıtımı destekler: bir interface başka bir interface'ten türeyebilir. Ayrıca sınıflarda çoklu kalıtım olmasa da bir sınıf birden fazla interface uygulayabilir (class A : I1, I2). Bu yüzden I ve III doğrudur. Cevap anahtarı ise II'yi de içeren E şıkkını vermiştir.

⚠️ Cevap anahtarı tartışmalı: I ve II çelişiyor; doğrusu D (I ve III) olmalı, anahtar E.
Soru 8
I – Ara Birim interface anahtar kelimesi ile tanımlanır.
II – Sınıf ve Yapılarında kullanılırlar
III – Ara Birimde tanımlı olan metotların varsayılan erişim seviyesi public tir.
C# programlama dilinde Ara Birim (interface) ile ilgili verilen ifadelerden hangisi/ hangileri doğrudur?
EDoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

Üç ifade de doğrudur. Ara birimler interface anahtar kelimesiyle tanımlanır (I). Hem sınıflar hem de yapılar (struct) interface uygulayabilir (II). Interface içinde tanımlanan üyeler varsayılan olarak public kabul edilir ve klasik kullanımda ayrıca erişim belirleyici yazılmaz (III).

Soru 9
I – Sadece Dinamik Çok Biçimliliği destekler.
II – Statik ve Dinamik Çok Biçimliliği destekler.
III – Çok Biçimliliği desteklemez.
C# programlama dilinde Çok Biçimlilik (Polymorphism) ile ilgili verilen ifadelerden hangisi/ hangileri doğrudur?
BDoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

C# iki tür çok biçimliliği de destekler. Statik (derleme zamanı) çok biçimlilik, metot ve operatör aşırı yükleme (overloading) ile sağlanır. Dinamik (çalışma zamanı) çok biçimlilik ise virtual/override ile metot ezme (overriding) ve interface'ler aracılığıyla sağlanır. Bu yüzden yalnız II doğrudur.

Soru 10
Nesneye Yönemlik Programlamada, aynı isime sahip fakat farklı işlevi olan metotların tanımlanabilmesine kavramına nedenir?
CDoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

Aynı isme sahip ama farklı biçimlerde davranan metotların tanımlanabilmesine çok biçimlilik (polymorphism) denir. Bu, aşırı yükleme (overloading) ya da ezme (overriding) yoluyla yapılır. Kapsülleme ise veriyi gizleyip erişimi kontrol etmektir, isim paylaşımıyla bir ilgisi yoktur.

Soru 11
C# Programalma dili Nesneye Yönemlik Programlama ile ilgili aşağıda verilen kavramlardan hangisini desteklemez?
ADoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

C#'ta bir sınıf yalnızca bir sınıftan türeyebilir, yani sınıflar için çoklu kalıtım desteklenmez. Bu eksiklik, bir sınıfın birden fazla interface uygulayabilmesiyle telafi edilir. Ara birim, operatör aşırı yükleme, çok biçimlilik ve kapsülleme ise C#'ta desteklenen kavramlardır.