Final 2024-2025 20 soru

Nesneye Yönelik Programlama 2024-2025 Final

Kaynak: https://lolonolo.com/2025/11/14/nesneye-yonelik-programlama-2024-2025-final-sorulari/

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

Nesneye Yönelik Programlama 2024-2025 Final Soruları

Giriş

Nesneye Yönelik Programlama (NYP), yazılım geliştirmenin temelini oluşturan, gerçek dünya nesnelerini ve ilişkilerini modelleyen bir yaklaşımdır. C# gibi modern diller, bu yaklaşımı destekleyen güçlü araçlar sunar. Bu makalede, C# dilinin temel yapıları, tasarım desenleri (design patterns), SOLID prensipleri ve yazılım tasarımının görselleştirilmesi için kullanılan UML diyagramları incelenecektir.

C# Programlama Dili ve Temel Yapılar

Tasarım Desenleri (Design Patterns)

Yazılım geliştirmede karşılaşılan ortak sorunlara getirilen standart çözümlerdir.

SOLID Prensipleri ve UML

SOLID: Yazılımın esnekliğini ve sürdürülebilirliğini artıran 5 temel prensiptir. “Arabirim Ayırma Prensibi” (Interface Segregation), büyük ve karmaşık arabirimlerin (örn: IGenelIslemler) daha küçük ve spesifik parçalara (IDosyaIslem, IGrafikIslem) bölünmesini savunur. “Kaynak Kod Yönetim Prensibi” diye bir SOLID prensibi yoktur.

UML (Unified Modeling Language): Yazılım tasarımını görselleştirmek için kullanılır. Bir sistemin “fonksiyonel ihtiyaçlarını” (ne yapması gerektiğini) aktör ve sistem etkileşimi üzerinden gösteren diyagrama “Kullanım Senaryosu Diyagramı” (Use Case Diagram) denir.

NYP Kavramları: Çok Biçimlilik ve Arabirimler

Çok Biçimlilik (Polymorphism): Bir metoda farklı sınıflarda farklı şekillerde davranma yeteneği kazandıran temel NYP özelliğidir. Arabirimler (Interfaces) ise, bir sınıfın hangi metotları içereceğini tanımlayan şablonlardır. Hem sınıflar hem de yapılar (struct) arabirim kullanabilir; “yapılarda arabirim kullanmak mümkün değildir” ifadesi yanlıştır.

Nesneye Yönelik Programlama 2024-2025 Final Soruları

20 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1

public class Okul 
{ 
public Okul() { 
Console.WriteLine("Okul") ;
} 
}

Yukarda verilen örnek C# kod bloğunda yer alan “public Okul()” nesneye yönelik programlada hangi kavramı ifade eder?
DDoğru cevap
Açıklama
Nesneye yönelik programlamada, sınıf (class) ile aynı isme sahip olan ve new anahtar kelimesi ile o sınıftan bir nesne oluşturulduğunda otomatik olarak çalışan özel metoda “Yapıcı Metot” (Constructor) denir. public Okul() ifadesi, Okul sınıfının yapıcı metodudur.
Soru 2
Aşağıda verilenlerden hangisi koleksiyon türlerine örnektir?
DDoğru cevap
Açıklama
Koleksiyon (Collection) türleri, birden fazla veriyi bir arada tutan gelişmiş veri yapılarıdır. Array (Dizi) temel bir yapıdır. String ve Int ilkel/temel veri türleridir. HashSet, List, Dictionary gibi yapılar C#’taki gelişmiş koleksiyon türlerine örnektir. HashSet, matematiksel küme mantığıyla çalışan, tekrarsız elemanları tutan bir koleksiyondur.
Soru 3
C# dilinde sıfıra bölme işlemi sırasında oluşan hata aşağıdakilerden hangisinde verilmiştir?
CDoğru cevap
Açıklama
Programlama dillerinde, bir sayının sıfıra bölünmeye çalışılması matematiksel bir tanımsızlık oluşturur. C# dilinde bu durum gerçekleştiğinde, sistem System.DivideByZeroException (Sıfıra Bölme Hatası) türünde bir istisna (hata) fırlatır.
Soru 4
C# programalma dili için verilen erişim denetleyicilerinin türetilmiş bir sınıfta erişim ile ilgili aşağıdakilerden hangisi vanıştır?
ADoğru cevap
Açıklama
Erişim denetleyicilerinden private (özel), bir üyenin (metot veya değişken) sadece tanımlandığı sınıf içerisinden erişilebilir olmasını sağlar. Türetilmiş sınıflar veya dışarıdan herhangi bir kod bu üyeye erişemez. “Her yerden erişilir” ifadesi public için geçerlidir ve private için tamamen yanlıştır.
Soru 6
Şekilde verildiği üzere, istekler bir dizi seri boyunca iletilmesine olanak sağlanan bir tasarım deseni hangisidir?
ADoğru cevap
Açıklama
“Sorumluluklar Zinciri” (Chain of Responsibility) tasarım deseni, bir isteği (request) işleyebilecek bir dizi (zincir) nesne oluşturmaya dayanır. İstek zincire girer ve bir nesne tarafından işlenene veya zincirin sonuna ulaşana kadar nesneler arasında seri boyunca iletilir.
Soru 7
Aşağıdakilerden hangisi Nesneye Yönelik Tasarım Prensiplerinden (SOLID prensipleri) biri değildir?
CDoğru cevap
Açıklama
SOLID, Nesneye Yönelik Programlamanın 5 temel prensibinin baş harflerinden oluşur: Single Responsibility (Tek Sorumluluk), Open/Close (Açık/Kapalı), Liskov Substitution (Liskov İkame), Interface Segregation (Arabirim Ayırma) ve Dependency Inversion (Bağımlılığı Tersine Çevirme). “Kaynak Kod Yönetim Prensibi” diye bir SOLID prensibi yoktur.
Soru 8
…….. takip edilmekte olan bir nesnede meydana gelen gelişmelerden diğer nesnelerin haberdar edildiği bir davranışsal tasarım desenidir.
Yukarıdaki ifadede boş bırakılan yere aşağıdakilerden hangisi gelmelidir?
ADoğru cevap
Açıklama
“Gözlemci” (Observer) tasarım deseni, bir nesnenin (Subject/Takip Edilen) durumunda bir değişiklik olduğunda, o nesneye abone olan/bağımlı olan diğer nesnelerin (Observers/Gözlemciler) otomatik olarak bilgilendirilmesini (haberdar edilmesini) sağlayan davranışsal bir desendir.
Soru 9
Bir yazılım projesinin tasarımında, fonksiyonel ihtiyaçlarının belirlendiği ve kayıt altına alınarak dokümantasyonun yapıldığı diyagramın ismi aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
UML diyagramlarından “Kullanım Senaryosu Diyagramı” (Use Case Diagram), bir yazılım sisteminin sunması gereken “fonksiyonel ihtiyaçları” aktör (kullanıcı) ve sistem etkileşimi (“kullanım senaryoları”) açısından gösteren diyagramdır. Sistemin “ne yapması gerektiğini” tanımlar.
Soru 10
Yukarıda verilen IGenelIslemler arabiriminin, IDosyaIslem ve IGrafikIslem olarak yeniden yazılmasına karşılık gelen tasarım prensibi aşağıdakilerden hangisinde verilmiştir?
ADoğru cevap
Açıklama
SOLID prensiplerinden “I” harfine karşılık gelen “Arabirim Ayırma Prensibi”, büyük ve “şişman” arabirimlerin (IGenelIslemler gibi hem dosya hem grafik işlemi içeren) bölünmesini savunur. Kodda, bu büyük arabirim, birbiriyle ilgisiz görevleri (dosya işlemleri ve grafik işlemleri) ayırarak iki küçük ve daha spesifik arabirime (IDosyaIslem, IGrafikIslem) bölünmüştür. Bu, tam olarak bu prensibin uygulanmasıdır.
Soru 11

Console.Write(13+3); Console.Write(",");
Console.Write(13-2); Console.Write(","); 
Console.Write(13*3); Console.Write(","); 
Console.Write(13/2); Console.Write(","); 
Console.Write(13.0/2.0); Console.Write(","); 

Yukarda verilen kod bloğu çalıştırıldığında üretilen çıktı aşağıdakilerden hangisinde verilmiştir?
EDoğru cevap
Açıklama
C#’ta işlemlerin sonuçları:
13 + 3 = 16
13 – 2 = 11
13 * 3 = 39
13 / 2 = İki tamsayının (int) bölünmesi tamsayı (int) sonucunu verir. 6.5’in ondalık kısmı atılır, sonuç 6 olur.
13.0 / 2.0 = İki ondalıklı sayının (double) bölünmesi ondalıklı (double) sonuç verir: 6.5. Çıktı: 16,11,39,6,6.5, (Not: Son şıkta fazladan virgül var, ancak sayılar E şıkkıyla eşleşiyor).
Soru 12
Bir sınıfa (class) ait metotların farklı şekillerde kullanılmasını sağlayan yöntemin ismi aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
“Çok Biçimlilik” (Polimorfizm), Nesneye Yönelik Programlamanın temel direklerinden biridir. Bir metodun (örn: AlanHesapla()) farklı alt sınıflarda (kare, daire) farklı şekillerde uygulanabilmesini (override edilmesi) veya aynı sınıfta farklı parametrelerle (overload edilmesi) kullanılabilmesini ifade eder.
Soru 13
Yukarda verilen metot, f(9) değeri için çağrıldığında nihai sonuç değeri kaç olur?
DDoğru cevap
Açıklama
Kod, return f(n-1) + f(n-2) ifadesini içerir. Bu, Fibonacci dizisinin özyinelemeli tanımıdır. f(0) = 0 (n<=1), f(1) = 1 f(2) = f(1) + f(0) = 1 f(3) = f(2) + f(1) = 2 f(4) = f(3) + f(2) = 3 f(5) = f(4) + f(3) = 5 f(6) = f(5) + f(4) = 8 f(7) = f(6) + f(5) = 13 f(8) = f(7) + f(6) = 21 f(9) = f(8) + f(7) = 21 + 13 = 34.
Soru 14
….. benzer türdeki nesnelerin parça-bütün ilişkisi içinde bir ağaç yapısı ile oluşturmaya ve tek bir arayüzden ulaşılmasına olanak sağlar.
Yukarıda tanımı verilen tasarım deseni için boş bırakılan yere aşağıdakilerden hangi ifade gelmelidir?
EDoğru cevap
Açıklama
“Bileşik” (Composite) tasarım deseni, nesneleri hiyerarşik bir “ağaç yapısı” (tree structure) içinde düzenlemeye yarar. Bu desen sayesinde, hem tekil nesneler (yapraklar) hem de bu nesneleri içeren gruplar (dallar/bileşikler) aynı arayüzü kullanarak (“parça-bütün” ilişkisi) yönetilebilir.
Soru 15
C# Programlama Dilinde genel hata sınıfı aşağıdakilerden hangisinde verilmiştir?
EDoğru cevap
Açıklama
C# dilinde (ve .NET çatısında), programın çalışması sırasında meydana gelen tüm hatalar veya anormal durumlar “istisna” (Exception) olarak adlandırılır. Tüm hata sınıfları (DivideByZeroException, NullReferenceException vb.) System.Exception adlı bu genel (temel) sınıftan türer.
Soru 16
Aşağıda verilenlerden hangisi bir Tasarım Deseni kategorisidir?
CDoğru cevap
Açıklama
Tasarım Desenleri (Design Patterns) üç ana kategoriye ayrılır: 1) Oluşturucu (Creational – nesne yaratmayla ilgili), 2) Yapısal (Structural – nesnelerin ilişkisiyle ilgili) ve 3) Davranışsal (Behavioral – nesnelerin iletişimiyle ilgili). Diğer şıklar bu kategorilerin altındaki spesifik desen isimleridir.
Soru 17
Arabirimler (Interfaces) ile ilgili aşağıdaki verilen ifadelerden hangisi yanıştır?
CDoğru cevap
Açıklama
C# dilinde, hem Sınıflar (Class) hem de Yapılar (Struct) arabirimleri (interface) uygulayabilir. Bir yapının (struct) arabirim kullanması mümkündür. Bu nedenle C şıkkındaki ifade yanlıştır.
Soru 18
Yukarda görseli verilen UML diyagramının ismi aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
Görselde, bir “Kullanıcı” (Actor – Çöp Adam simgesi) ile sistemin sunduğu “Ürünleri Listele”, “Ürün Detayı” ve “Ürün Karşılaştır” (Use Case – Elips simgeleri) fonksiyonel eylemleri arasındaki ilişki gösterilmektedir. Bu, UML’de “Kullanım Senaryosu Diyagramı” (Use Case Diagram) olarak adlandırılır.
Soru 19
C# Programlama Dilinde double türündeki bir değişkenin boyutu kaç byte’tır?
DDoğru cevap
Açıklama
C# veri türlerinde: int (tamsayı) 4 byte yer kaplar. double (çift duyarlıklı ondalıklı sayı) ise int’in iki katı, yani 8 byte yer kaplar.
Soru 20
Bridge (Köprü) Tasarım Deseninin temel kullanım amacı aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
Bridge (Köprü) deseni, bir sınıfın “Soyutlama” (Abstraction) kısmını (örn: Uzaktan Kumanda) ve “Uygulama” (Implementation) kısmını (örn: Televizyon, Radyo) iki ayrı hiyerarşi olarak ayırır. Bu sayede, bu iki hiyerarşi birbirine sıkı sıkıya bağlı olmadan, bağımsız olarak geliştirilebilir ve genişletilebilir.
Soru 21

I. Tekil (Singleton)
II. Fabrika (Factory)
III. Adaptör (Adapter)
IV. Gözlemci (Observer).
Yukarıda verilenlerden hangisi yada hangileri Oluşturucu (Creational) Tasarım Deseni kategorisine özgüdür?
BDoğru cevap
Açıklama
Tasarım desenleri 3’e ayrılır:
Oluşturucu (Creational): Nesne yaratma mekanizmalarıyla ilgilenir. Örnek: Tekil (Singleton), Fabrika (Factory).
Yapısal (Structural): Sınıf ve nesne birleşimiyle ilgilenir. Örnek: Adaptör (Adapter).
Davranışsal (Behavioral): Nesne iletişimiyle ilgilenir. Örnek: Gözlemci (Observer). Soruda Oluşturucu desenler sorulduğu için doğru cevap I ve II’dir.