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.