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.
C#’ta en yaygın kullanılan sınıf ilişkileri şunlardır:
İ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; }
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."); } }
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(); } }
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; } }
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 } }
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."); } }
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.