C# Sınıf İlişkileri (Class Relationships)
Sınıf ilişkileri, Nesne Yönelimli Programlama (OOP) kavramları içinde, sınıfların birbirleriyle nasıl ilişkilendirildiğini ve nasıl işbirliği içinde çalıştığını belirler. C#’ta sınıf ilişkileri, kodun modüler ve yeniden kullanılabilir olmasını sağlamak için kullanılır.
Sınıf İlişkisi Türleri
C#’ta en yaygın kullanılan sınıf ilişkileri şunlardır:
- Bağımsız (Independent) İlişki: İki sınıf birbirinden bağımsızdır.
- Bağımlı (Dependency) İlişki: Bir sınıf, başka bir sınıfın işlevlerini çağırarak kullanır.
- Birliktelik (Association): Bir sınıf başka bir sınıfın nesnesini özellik olarak tutar.
- Kapsülleme (Aggregation): Bir sınıf başka bir sınıfın nesnesini içerir, ancak bu nesne bağımsız olarak var olabilir.
- Bileşim (Composition): Bir sınıf başka bir sınıfın nesnesini içerir ve nesne, bağlı olduğu sınıf olmadan var olamaz.
- Kalıtım (Inheritance): Bir sınıf, başka bir sınıfın özelliklerini ve metotlarını devralır.
1. Bağımsız (Independent) İlişki
İki sınıfın birbirinden tamamen bağımsız olduğu bir ilişki türüdür. Aşağıdaki örnekte, Car
ve Animal
sınıfları birbiriyle ilişkili değildir:
class Car { public string Model; } class Animal { public string Species; }
2. Bağımlı (Dependency) İlişki
Bir sınıf, başka bir sınıfın metotlarını çağırarak ondan faydalanır:
class Logger { public void Log(string message) { Console.WriteLine($"Log: {message}"); } } class User { public void SaveUser() { Logger logger = new Logger(); logger.Log("Yeni kullanıcı kaydedildi."); } }
3. Birliktelik (Association)
Bir sınıf başka bir sınıfın nesnesini özellik olarak tutabilir:
class Engine { public string Type = "V8"; } class Car { public Engine CarEngine; // Car sınıfı, Engine nesnesine sahip olabilir public Car() { CarEngine = new Engine(); } }
4. Kapsülleme (Aggregation)
Bir sınıf başka bir sınıfın nesnesini içerir, ancak bu nesne kendi başına da var olabilir.
class Department { public string Name; } class Employee { public string EmployeeName; public Department EmployeeDepartment; public Employee(string name, Department department) { EmployeeName = name; EmployeeDepartment = department; } }
5. Bileşim (Composition)
Bir sınıf başka bir sınıfın nesnesini içerir ve bu nesne, bağlı olduğu sınıf olmadan var olamaz.
class CPU { public string Model; public CPU(string model) { Model = model; } } class Computer { private CPU cpu; public Computer(string model) { cpu = new CPU(model); // Bilgisayar olmadan CPU var olamaz } }
6. Kalıtım (Inheritance)
Bir sınıf, başka bir sınıftan türetilerek onun özelliklerini ve metotlarını miras alır:
class Animal { public string Name; public void Eat() { Console.WriteLine($"{Name} yemek yiyor."); } } class Dog : Animal { public void Bark() { Console.WriteLine($"{Name} havlıyor."); } }
Sonuç
C#’ta sınıf ilişkileri, programın esnek ve sürdürülebilir olmasını sağlamak için kullanılır. Kalıtım, kapsülleme, bileşim ve diğer ilişkileri anlamak, nesne yönelimli programlamada başarılı olmanın temel taşlarından biridir.