Nesneye Yönelik Programlama 2024 Üç Ders Sınav Soruları
Nesneye Yönelik Programlama 2024 Üç Sınav Soruları
20 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1
Aşağıdakilerden hangisi Durum Makinesi Diyagramlarının kullanım amaçlarından biri değildir?
DDoğru cevap
Açıklama
Durum Makinesi Diyagramları, bir nesnenin farklı durumlarını, bu durumlara nasıl geçildiğini ve bu geçişleri tetikleyen olayları gösterir. Nesneler arasındaki iletişimi göstermek için ise daha çok Sıra (Sequence) veya İletişim (Communication) Diyagramları kullanılır.
Soru 2
Aşağıdakilerden hangisi Sınıf ve o sınıfa ait bir Nesne örneği olamaz?
BDoğru cevap
Açıklama
Nesneye Yönelik Programlamada bir nesne, sınıfın bir örneği olmalıdır. “Canlılar” bir sınıf olabilir ancak “Cansızlar” bu sınıfın bir nesne örneği olamaz. Cansızlar, Canlılar sınıfının özelliklerini taşımaz ve mantıksal olarak bu sınıftan türemez.
Soru 3
Aşağıdakilerden hangisi bir yazılımın kalitesini oluşturan unsurlardan biri değildir ?
DDoğru cevap
Açıklama
Bir yazılımın kalitesi; performans, güvenilirlik, kullanılabilirlik, taşınabilirlik gibi faktörlerle ölçülür. “Satır sayısı” ise bir yazılımın kalitesini değil, genellikle karmaşıklığını veya büyüklüğünü gösteren bir ölçüt olabilir, bu bir kalite unsuru değildir.
Soru 4
Derleyicilere benzer şekilde baştan sona tüm program kodunu makine koduna çevirip sonra çalıştıran JIT yapısı hangisidir?
ADoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması
Pre-JIT, derleyicilere benzer şekilde programın tüm kodunu çalıştırmadan önce baştan sona makine koduna çevirir. Eco-JIT ise yalnızca gereken kısmı çevirerek yorumlayıcıya benzer çalışır.
Soru 5
public class Telefon
{
public abstract double SarjEt();
public void Kapat()
Console.WriteLine(“Kapatıldı…”);
{
}
}
Yukarıda verilen kod parçasındaki hata hangisinde doğru verilmiştir?
EDoğru cevap
Açıklama
`abstract` (soyut) bir metot, sadece `abstract` (soyut) bir sınıf içerisinde tanımlanabilir. Verilen kodda `Telefon` sınıfı soyut (`abstract`) olarak tanımlanmadığı için `SarjEt()` soyut metodunu içermesi bir hatadır.
Soru 6
using System;
namespace Soru
{
internal class Program {
static void DegerDegistir(ref int number) { number = 4;
}
Console.WriteLine(“\t{0}”,number);
static void Main() {
int value = 11;
Console.WriteLine(“\t{0}”,value);
DegerDegistir(ref value);
Console.WriteLine(“\t{0}”,++value);
Console.ReadKey();
}
}
}
Yukarıdaki program çalıştırıldığında ekran çıktısı aşağıdakilerden hangisi olur?
BDoğru cevap
Açıklama
Programın çıktısı sırasıyla şöyledir:
1. `Console.WriteLine(“\t{0}”, value);` -> value 11 olduğu için ekrana 11 yazılır.
2. `DegerDegistir(ref value);` -> `ref` anahtar kelimesiyle `value` değişkeni referans yoluyla fonksiyona geçirilir ve değeri 4 olarak değiştirilir.
3. Fonksiyon içindeki `Console.WriteLine(“\t{0}”, number);` -> number artık 4 olduğu için ekrana 4 yazılır.
4. `Console.WriteLine(“\t{0}”, ++value);` -> `++value` ifadesi `value`’yu bir artırır (4+1=5) ve sonra ekrana yazar. Yani ekrana 5 yazılır.
Soru 7
C#’ta “this” anahtar sözcüğü hangi durumlarda kullanılabilir?
ADoğru cevap
Açıklama
C#’ta `this` anahtar sözcüğü, sınıfın mevcut örneğine atıfta bulunur ve bir sınıfın herhangi bir üyesi (metot, özellik, yapıcı) içinde kullanılabilir. `static` metotlar içinde kullanılamaz, çünkü `static` metotlar bir sınıfa değil, sınıfın kendisine aittir.
Soru 8
Yorumlayıcı mantığına benzer şekilde kodun belli bir bölümünü makine koduna çevirip çalıştıran, diğer satırları ise daha sonra makine koduna dönüştüren JIT yapısı hangisidir?
BDoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması
Eco-JIT, yorumlayıcı mantığına benzer şekilde yalnızca o an gereken kod bölümünü makine koduna çevirip çalıştırır, diğer satırları ihtiyaç oldukça çevirir; bu sayede bellekten tasarruf eder. Pre-JIT ise derleyici gibi tüm kodu baştan makine koduna çevirir.
Soru 9
C#’ta soyutlamayı oluşturan iki ana bileşen hangisinde doğru verilmiştir?
CDoğru cevap
Açıklama
C# ve diğer Nesneye Yönelik Programlama dillerinde “soyutlama” (abstraction) prensibi, `Soyut Sınıflar` (Abstract Classes) ve `Arayüzler` (Interfaces) olmak üzere iki ana bileşen aracılığıyla gerçekleştirilir.
Soru 10
Sıra Diyagramı (Sequence Diagram) ve İletişim Diyagramı (Communication Diagramı) hangi diyagram türünün en yaygın kullanılanlarıdır?
BDoğru cevap
Açıklama
UML’de (Unified Modeling Language) `Sıra Diyagramı` ve `İletişim Diyagramı`, nesneler arasındaki mesaj akışını ve etkileşimleri gösteren “Etkileşim Diyagramları” (Interaction Diagrams) türünün en yaygın kullanılanlarıdır.
Soru 11
Aşağıdakilerden hangisi Derleme Zamanı (Statik) Çok Biçimliliğe bir örnektir?
DDoğru cevap
Açıklama
Derleme Zamanı (Statik) Çok Biçimlilik (Polimorfizm), derleme zamanında hangi metodun veya operatörün çağrılacağının belirlenmesi anlamına gelir. `Operatör Aşırı Yükleme` (Operator Overloading) buna bir örnektir. Sanal metotlar ise Çalışma Zamanı (Dinamik) Çok Biçimliliğe örnektir.
Soru 12
Aşağıdaki operatörler arasından hangisi en yüksek önceliğe sahiptir?
CDoğru cevap
Açıklama
C#’ta operatör öncelik sıralamasına göre, modül (%) operatörü, toplama (+), çıkarma (-), eşit değil (!=) ve atama (+=) operatörlerinden daha yüksek önceliğe sahiptir. Çarpma ve bölme ile aynı öncelik seviyesindedir.
Soru 13
Yıkıcı metotlar ne zaman çağırılır?
CDoğru cevap
Açıklama
Yıkıcı (Destructor) metotlar, bir nesnenin bellekteki alanı, program sonlandığında veya garbage collector tarafından temizlenirken, yani “nesne yok edilirken” çağrılır.
Soru 14
Doğrulama (Verification) işlemi yazılım geliştirme aşamalarından hangisinde yapılmalıdır?
DDoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması
Ders kapsamında doğrulama (verification), "ürünü doğru mu geliştiriyoruz?" sorusuyla tasarım aşamasında yapılır; tasarımın belirlenen gereksinimleri karşılayıp karşılamadığı kontrol edilir. Test aşaması ise geçerleme (validation) ve hata bulma ile ilişkilidir.
Soru 15
Aşağıdakilerden hangisi kalıtımın avantajlarından biri değildir?
ADoğru cevap
Açıklama
Kalıtım (inheritance) prensibi, sınıflar arasında ortak özelliklerin ve metotların paylaşılmasını sağlayarak `soyutlamayı` destekler. “Sınıf özelliklerinin soyutlanmasının önüne geçer” ifadesi bu prensibe aykırıdır.
Soru 16
Nesneye Yönelik Programlamada veri gizliliği ve güvenliği sağlayarak nesnelerin iç yapısını koruyan yapı hangisidir ?
EDoğru cevap
Açıklama
Kapsülleme (encapsulation), bir nesnenin verilerini (özelliklerini) ve bu verilere erişimi sağlayan metotlarını tek bir birim altında toplar ve dışarıdan doğrudan erişimi kısıtlayarak veri gizliliği ve güvenliği sağlar.
Soru 17
C#’ta kod tekrarını önlemeye, kodu daha organize hale getirmeye ve sınıflar arasında hiyerarşi oluşturmaya yardımcı olan Nesneye Yönelik Programlama prensibi aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
Kalıtım (inheritance), bir sınıfın (alt sınıf) başka bir sınıftan (üst sınıf) özelliklerini ve davranışlarını miras almasını sağlayarak “kod tekrarını önler”, “hiyerarşi oluşturur” ve kodu daha organize hale getirir.
Soru 18
int[] x= { 5, 7, 12, 36 };
C#’ta yukarıdaki satır ile tanımlanan x değişkeni hangi bellek bölgesinde saklanır ?
CDoğru cevap
Açıklama
C#’ta, diziler ve nesneler gibi referans tipli veriler “Heap bellek bölgesinde” saklanır. Değer tipleri (int, bool gibi) ise genellikle Stack bellek bölgesinde saklanır.
Soru 19
Yazılım geliştirirken nesneye yönelik düşünme yaklaşımı ilk olarak hangi aşamada devreye girer?
ADoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması
Nesneye yönelik düşünme yaklaşımı ilk olarak tasarım aşamasında devreye girer: sistemin sınıfları, nesneleri ve aralarındaki ilişkiler bu aşamada belirlenir. Kodlama aşamasında ise bu tasarım bir programlama diliyle hayata geçirilir.
Soru 20
Aşağıdakilerden hangisi değerlerin kendileri yerine bellekteki konumlarına işaret eden veri türlerine bir örnek olabilir?
EDoğru cevap
Açıklama
C#’ta `string`, bir referans veri türüdür. Bu, `string` değişkeninin değerin kendisini değil, değerin “bellekteki konumunu” (adresini) tuttuğu anlamına gelir. Diğerleri (int, float, bool, byte) ise değer tipleridir ve doğrudan değerin kendisini saklarlar.