Final 2025-2026 25 soru

Nesneye Yönelik Programlama 2025-2026 Final

Kaynak: https://lolonolo.com/2026/09/15/nesneye-yonelik-programlama-2025-2026-final-sorulari/

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

Nesneye Yönelik Programlama 2025-2026 Final Soruları

Nesneye Yönelik Programlama 2025-2026 Final Soruları

Nesne Yönelimli Tasarım: Sınıflar, Nesneler ve İlişkiler

Nesneye Yönelik Programlama (OOP), yazılım geliştirme sürecini gerçek dünya nesnelerini modelleyerek daha anlaşılır ve yeniden kullanılabilir hale getiren bir yaklaşımdır. Bu yapıların temelini Sınıflar (Class) oluşturur. Sınıflar bir şablon, bu sınıflardan “new” kelimesiyle türetilen Nesneler (Object) ise somut örneklerdir (Örn: Taşıt sınıfı, Otomobil nesnesi). Bir sınıfın bellekte oluşturulduğu an ilk çalışan metot Yapıcı (Constructor) metottur. Sınıfların özellikleri ve metotları, Erişim Belirleyiciler (Access Modifiers) ile korunur. Örneğin, “private” olarak tanımlanan bir değişkene sadece o sınıfın içinden erişilebilirken, bu sayede “Kapsülleme” prensibi uygulanmış olur. Sınıflar arasındaki ilişkilerde, bir sınıfın özelliklerini diğerine aktarması Kalıtım (Inheritance) olarak adlandırılır. Ancak bir sınıfın özellikleri (metotları) “sealed” (Mühürlü Sınıf) olarak işaretlenirse, ondan miras alınamaz. Ayrıca bir sınıfın özelliklerinin başka bir sınıf içinde kullanılmasına Bileşim (Composition) adı verilir.

Çok Biçimlilik, Soyutlama ve Bellek Yönetimi

C# dilinde Çoklu Kalıtım desteklenmez; bir sınıf sadece tek bir sınıftan miras alabilir. Ancak bu kısıtlama, bir sınıfın birden fazla Arayüzü (Interface) uygulamasıyla (implement etmesiyle) aşılabilir. Arayüzler ve Soyut Sınıflar (Abstract Classes), OOP’nin Soyutlama (Abstraction) ayağını oluşturur; bunlar diğer sınıflara şablon görevi görürler. Üst sınıftan miras alınan “virtual” bir metodun, alt sınıfta “override” edilerek kendine has davranış sergilemesi (Örn: İnsan nefes alıyor) ise Çok Biçimliliğin (Polymorphism) en güzel örneğidir. Operatörlerin (+, ==) bu sınıflar üzerinde özel işlemler yapmasına ise Operatör Aşırı Yükleme denir. Bellek yönetimi açısından değişkenler Stack’te değerleriyle (int, float), Heap’te ise adresleriyle tutulurlar. C#’ta “string” bir referans tipidir ve verinin konumuna (adresine) işaret eder. Metotlara değişkenlerin değerini değil, doğrudan adresini göndermek istersek “ref” veya “out” anahtar kelimeleri kullanılır. Tüm bu sınıflar ve yapıtaşları, projede karmaşayı önlemek için Namespace adı verilen devasa konteynerlerin (isim alanlarının) içinde gruplandırılır.

25 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 “private” olarak tanımlanan bir sınıf üyesine erişimin nasıl sağlandığını açıklar?
DDoğru cevap
Açıklama
Nesneye yönelik programlamada erişim belirleyiciler (access modifiers) üyelerin görünürlüğünü belirler. ‘private’ (özel) olarak tanımlanan bir değişkene veya metoda sadece tanımlandığı (bulunduğu) sınıfın kendi içinden doğrudan erişilebilir. Dışarıdan veya kalıtım alan alt sınıflardan (protected değilse) erişilemez.
Soru 2
Aşağıdakilerden hangisi bir yazılımın kullanıcı gözüyle kaliteli olduğunu gösteren kriterlerden biri değildir?
CDoğru cevap
Açıklama
Yazılımın hızlı, stabil, güvenli ve kullanılabilir olması ‘kullanıcı (son kullanıcı)’ gözüyle kalite kriterleridir. Ancak ‘Yazılımın modüllerinin yeni projelerde tekrar kullanılabilmesi (Reusability)’, kullanıcıyı değil, kodu yazan ‘yazılımcıyı (geliştiriciyi)’ ilgilendiren teknik ve mimari bir kalite (tasarım) kriteridir.
Soru 3
UML’de arayüzler ile sınıflar arasındaki ilişkiyi modellemek için kullanılan ve kesikli çizgi ile ifade edilen ilişki türü aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
UML diyagramlarında, bir sınıfın (Class) bir arayüzü (Interface) uygulamasını (implement etmesini) göstermek için ucu boş üçgen olan ‘kesikli çizgi’ kullanılır. Bu ilişki türüne ‘Gerçekleştirme (Realization / Implementation)’ adı verilir. (Kalıtım/Genelleme ise ucu boş üçgen ve düz çizgi ile gösterilir).
Soru 4
C# dilinde bir sınıfın yapıcı metodu (constructor) çağrılma zamanı aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
Yapıcı metotlar (constructors), bir sınıftan nesne üretilirken çalışan ilk metotlardır. C# dilinde bir sınıftan ‘new’ anahtar kelimesi kullanılarak yeni bir nesne (instance/örnek) oluşturulduğu (bellekte yer ayrıldığı) anda yapıcı metot otomatik olarak çağrılır ve çalışır (ilk değer atamaları yapılır).
Soru 5
Aşağıdakilerden hangisi Sınıf ve o sınıfa ait bir Nesne örneği olamaz?
ADoğru cevap
Açıklama
Sınıf (Class) genel bir şablondur, Nesne (Object) ise o şablona uyan somut bir örnektir. Canlılar sınıfından Hayvanlar veya Bitkiler türeyebilir; Taşıt sınıfından Otobüs veya Otomobil birer nesnedir. Ancak ‘Cansızlar’, ‘Canlılar’ sınıfının bir üyesi veya örneği olamaz (Mantıksal olarak birbirinin zıttıdır).
Soru 6

Yukarıdaki C# kodu çalıştırıldığında çıktısı ne olacaktır?
BDoğru cevap
Açıklama
C#’ta çok biçimlilik (polymorphism) örneğidir. ‘Canli c = new Insan();’ satırında, referans tipi ‘Canli’ olsa da, bellekte oluşturulan gerçek nesne ‘Insan’dır. Metot ‘virtual’ (sanal) ve ‘override’ (ezilmiş) olduğu için geç bağlama (late binding) çalışır ve her zaman nesnenin gerçek tipindeki (Insan sınıfındaki) metot çalışır. Çıktı: ‘İnsan nefes alıyor.’ olur.
Soru 7
Aşağıdaki hangi operatörün aşırı yüklenmesinde, zıt anlamlı operatör ile her ikisinin de aynı anda yüklenmiş olması zorunluluğu yoktur?
BDoğru cevap
Açıklama
C# dilinde karşılaştırma operatörleri aşırı yüklenirken (overloading) mutlaka çift olarak (zıt anlamlılarıyla birlikte) yüklenmek zorundadır. Yani ‘==’ yüklenirse ‘!=’ de yüklenmek zorundadır; ‘>’ yüklenirse ‘<‘ de yüklenmek zorundadır. Ancak aritmetik operatörler (örneğin toplama ‘+’ veya çıkarma ‘-‘) tek başına aşırı yüklenebilir, zıttını (çıkarma) yüklemek zorunlu değildir.
Soru 8
Bir metoda parametre olarak, değişkenin değeri yerine bellek adresini aktarmak için kullanılan anahtar sözcükler aşağıdakilerden hangisinde doğru verilmiştir?
DDoğru cevap
Açıklama
C#’ta metotlara değişkenler varsayılan olarak değerleriyle (pass by value) aktarılır. Ancak değişkenin referansını (bellek adresini) aktarmak (pass by reference) istersek, metot tanımlamasında ve çağrısında ‘ref’ veya ‘out’ anahtar kelimeleri kullanılır. Bu sayede metot içinde yapılan değişiklikler orijinal değişkeni de etkiler.
Soru 9
C#’da bir sınıfın çoklu kalıtım yöntemi ile özelliklerini miras alabileceği maksimum üst sınıf sayısı kaçtır?
EDoğru cevap
Açıklama
C# ve Java gibi dillerde ‘Çoklu Sınıf Kalıtımı (Multiple Class Inheritance)’ desteklenmez (Elmas / Diamond problemi nedeniyle). Bir sınıf yalnızca ve en fazla 1 (BİR) adet üst sınıftan (base class) miras alabilir. Çoklu kalıtım davranışı sadece ‘Arayüzler (Interfaces)’ kullanılarak simüle edilebilir.
Soru 10
Diğer sınıflar için bir temel oluşturan ve abstract anahtar sözcüğü ile işaretlenmiş üye yöntemleri, özellikleri veya olayları içeren sınıflara verilen ad aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
Kendisi doğrudan new kelimesiyle örneklendirilemeyen (nesnesi yaratılamayan), sadece diğer alt sınıflara şablon/temel oluşturmak için tasarlanmış ve içinde ‘abstract’ (gövdesiz) metotlar barındırabilen sınıflara ‘Soyut Sınıf (Abstract Class)’ denir.
Soru 11
C# dilinde operatör aşırı yükleme ile ilgili aşağıdaki ifadelerden hangisi doğrudur?
ADoğru cevap
Açıklama
Operatör aşırı yükleme (Operator Overloading), ‘+’ veya ‘==’ gibi standart operatörlerin, kendi oluşturduğumuz özel sınıflar (kullanıcı tanımlı tipler) üzerinde de çalışabilmesini (örneğin iki Vektör veya Karmaşık Sayı nesnesinin toplanmasını) sağlar. Yani operatörün işlevselliği, o sınıfın ihtiyaçlarına göre tamamen ‘özelleştirilir’. A şıkkı bu tanımı tam olarak verir.
Soru 12

Yukarıdaki kod parçası çalıştırıldığında ekran çıktısı aşağıdakilerden hangisi olur?
ADoğru cevap
Açıklama
Değişkenler: x=9, y=5, z=21, w=18, f=3.8
İşlemler:
++x; (Önce artır) -> x = 10
y++; (Sonra artır, tek başına olduğu için y hemen 6 olur)
–w–; (Bu satırda muhtemelen PDF’te bir dizgi hatası var. Sınav mantığında ‘–z;’ ve ‘w–;’ yan yana dizilmişse z=20, w=17 olur. Ancak formatın A şıkkına uyması için ‘–z; ++w;’ işlemi olduğu varsayılır. WriteLine parametreleri {0}=y, {1}=x, {2}=w, {3}=z, {4}=f’dir. Şıklardaki dizilim WriteLine içindeki string formatının sonucunu yansıtmaktadır: y=6, x=10, w=17 (veya 20), z=17, f=4.8.
Soru 13
Bir sınıf birden fazla arayüzü uygulayarak Nesneye Yönelik Programlamanın aşağıdaki hangi özelliğinin yerine geçebilir?
CDoğru cevap
Açıklama
9. soruda açıklandığı gibi C#’ta bir sınıf birden fazla sınıftan miras alamaz (Çoklu Kalıtım yoktur). Ancak bir sınıf birden fazla ‘Arayüzü (Interface)’ virgülle ayırarak implement edebilir (uygulayabilir). Bu yapı, dilde bulunmayan ‘Çoklu Kalıtım (Multiple Inheritance)’ özelliğinin simüle edilmesini ve eksikliğinin giderilmesini sağlar.
Soru 14
C#’ta soyutlamayı oluşturan iki ana bileşen aşağıdaki seçeneklerin hangisinde doğru verilmiştir?
DDoğru cevap
Açıklama
Nesneye yönelik programlamada (OOP) ‘Soyutlama (Abstraction)’ prensibi, karmaşıklığı gizleyip sadece gerekli olan iskeleti göstermek demektir. C# dilinde soyutlamayı teknik olarak gerçekleştiren iki temel yapı ‘Soyut Sınıflar (Abstract Classes)’ ve ‘Arayüzler (Interfaces)’dir.
Soru 15
Aşağıdakilerden hangisi değerlerin kendileri yerine bellekteki konumlarına işaret eden veri türlerine bir örnek olabilir?
CDoğru cevap
Açıklama
C#’ta veri tipleri Değer Tipleri (Value Types) ve Referans Tipleri (Reference Types) olarak ikiye ayrılır. Değer tipleri (int, float, byte, bool) veriyi doğrudan Stack bellekte tutar. Ancak Referans tipleri veriyi Heap bellekte tutar ve Stack’te sadece o verinin ‘konumunu/adresini (referansını)’ saklar. ‘String’, C#’ta bir referans tipidir (Reference Type).
Soru 16
C# dilinde “this” anahtar sözcüğü aşağıdaki durumlardan hangisinde kullanılır?
ADoğru cevap
Açıklama
Nesne yönelimli programlamada ‘this’ kelimesi, o an üzerinde çalışılan mevcut nesneyi (current object) temsil eder. En yaygın kullanım alanı; bir metodun parametre ismi ile sınıfın alan (field) ismi aynı olduğunda isim çakışmasını (shadowing) çözmek ve “bu sınıfın değişkenine” (this.degisken = degisken) atıfta bulunmaktır.
Soru 17

Yukarıdaki program çalıştırıldığında ekran çıktısı aşağıdakilerden hangisi olur?
EDoğru cevap
Açıklama
Adım adım takip:
1) Main içinde value = 11 atanır ve ekrana basılır. Çıktı1: 11
2) Metoda ‘ref’ (referans) ile gönderilir. Metot içinde number (aslında value’nun kendisi) 4 yapılır ve ekrana basılır. Çıktı2: 4
3) Metottan Main’e dönüldüğünde value artık 4’tür (çünkü ref ile değiştirildi). ‘++value’ işlemi önce değeri 1 artırır (5 yapar), sonra ekrana basar. Çıktı3: 5
Sonuç: 11, 4, 5.
Soru 18
Özellik ve metotlarının başka sınıflar tarafından miras alınması engellenmiş sınıflara verilen ad aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
C# dilinde bir sınıfın başına ‘sealed’ (mühürlü) anahtar kelimesi getirilirse, o sınıftan başka bir sınıf türetilemez (kalıtım alınamaz / inheritance yapılamaz). Bu tür katı ve miras vermeyen sınıflara ‘Mühürlü Sınıf (Sealed Class)’ denir.
Soru 19
.NET destekli dillerde ilgili tiplerin, sınıfların, yapıların, arayüzlerin ve diğer öğelerin gruplandığı konteyner yapıya verilen ad aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
.NET mimarisinde, binlerce sınıf ve arayüzün birbirine karışmasını engellemek, onları mantıksal klasörler (gruplar) halinde organize etmek ve isim çakışmalarını (name collision) önlemek için kullanılan kapsayıcı / isim uzayı yapılarına ‘Namespace’ (İsim Alanı) denir (Örn: System.IO, System.Data).
Soru 20
Bir sınıfın başka bir sınıf içerisinde kullanılması anlamına gelen tasarım deseni aşağıdakilerden hangisidir?
DDoğru cevap
Açıklama
Nesneye yönelik tasarımda ‘Is-a (dır/dir)’ ilişkisi Kalıtımı temsil ederken (Otomobil bir Taşıttır); ‘Has-a (sahiptir)’ ilişkisi bir sınıfın içinde başka bir sınıfın nesnesinin özellik (field) olarak kullanılmasını ifade eder (Otomobilin bir Motoru vardır). Bir sınıfın başka sınıfları kapsayarak/içererek yeni bir bütün oluşturmasına ‘Bileşim (Composition)’ veya ‘Aggregation’ denir.
Soru 21
Nesneye Yönelik Programlamanın (OOP) dört temel prensibinden biri olan ve bir nesnenin iç detaylarını (değişkenlerini) dışarıdan gizleyerek, bu değişkenlere sadece “get” ve “set” gibi kontrollü metotlar (properties) aracılığıyla erişilmesini sağlayan prensip hangisidir?
DDoğru cevap
Açıklama
Kapsülleme, nesnenin değişkenlerini “private” yaparak dış dünyadan (diğer sınıflardan) saklamak ve bu değişkenleri okumak/yazmak için kontrollü özellikler (Property / Getter-Setter) tanımlamaktır. Bu sayede hatalı veri girişi engellenir ve veri güvenliği sağlanır.
Soru 22
C# dilinde aynı isimde birden fazla metodun (fonksiyonun) bulunabilmesine, ancak bu metotların aldıkları “parametre sayılarının veya parametre veri tiplerinin” birbirinden farklı olmasına ne ad verilir?
BDoğru cevap
Açıklama
Aşırı yükleme (Overloading), bir sınıf içinde aynı isme sahip ama imzaları (parametre türleri veya sayıları) farklı metotlar yazabilme yeteneğidir. Örneğin “Topla(int a, int b)” ve “Topla(double a, double b, double c)” metotları aynı isimdedir ama farklı çalışırlar.
Soru 23
Bir sınıf içindeki değişken veya metodun başına “static” anahtar kelimesi eklendiğinde, bu durum değişkenin veya metodun bellekteki davranışını nasıl etkiler?
CDoğru cevap
Açıklama
“static” olarak işaretlenen üyeler (metot, özellik) nesneye değil, doğrudan sınıfın kendisine aittir. Bu yüzden “new” kelimesiyle nesne oluşturmaya gerek kalmadan “Math.Pow()” veya “Console.WriteLine()” gibi SınıfIsmi üzerinden doğrudan çağrılabilirler.
Soru 24
Aşağıdaki erişim belirleyicilerden (Access Modifiers) hangisi, tanımlandığı üyeye sadece o sınıfın içinden ve o sınıftan miras alan (türeyen) “alt sınıflardan” erişilmesine izin verirken, dış dünyadan (başka sınıflardan) erişimi engeller?
DDoğru cevap
Açıklama
“protected” (korumalı) erişim belirleyicisi, “private” gibi dışarıdan erişimi tamamen kapatır. Ancak private’tan farklı olarak, o sınıftan kalıtım (inheritance) alan alt sınıfların (child classes) bu değişkene/metoda serbestçe erişmesine izin verir. Aile içi bir mirastır.
Soru 25
C# dilinde hataların ve istisnaların (Exceptions) çalışma zamanında programı çökertmesini engellemek ve hatayı güvenli bir şekilde yönetmek için kullanılan temel yapı (blok) aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
Nesne yönelimli programlamada “İstisna Yönetimi (Exception Handling)” çok kritiktir. Hata verme ihtimali olan kodlar “try” bloğu içine yazılır, bir hata oluştuğunda programın çökmesi engellenir ve “catch” bloğu hatayı yakalar. “finally” bloğu ise hata olsa da olmasa da mutlaka çalıştırılması gereken temizlik (bağlantı kapatma vb.) kodları için kullanılır.