Nesneler arasında terminolojik olarak nitelendirilebilir ilişki türleri mevcuttur. Bu ilişkiler, kalıtım, referans ya da soyutlama gibi durumların getirisi olan mantıksal izahatlerdir.
Nesneler arası ilişki türleri:
- is – a ilişkisi
- has – a ilişkisi
- can -do ilişkisi
is – a ilişkisi nedir?
is-a
ilişkisi tamamen kalıtım (inheritance) ile ilgilidir. Bu ilişki, bir sınıfın başka bir sınıfın alt sınıfı olduğunu belirtir. Bir sınıfın bir başka sınıfın bir alt sınıfı olması durumunda, o sınıflar arasında bir is-a
ilişkisi bulunur. Örneğin, “Kedi” sınıfı “Hayvan” sınıfının bir alt sınıfıysa, “Kedi” bir “Hayvan” türüdür ve bu durumda “Kedi” sınıfının “Hayvan” sınıfıyla bir is-a
ilişkisi vardır.
is-a
ilişkisi, genellikle kodlama ve tasarım süreçlerinde doğru kalıtım hiyerarşisi oluşturulmasını sağlar. Bu şekilde, kod tekrarından kaçınılabilir ve kodun yeniden kullanılabilirliği artırılabilir. Ayrıca, is-a
ilişkisi sayesinde genişletilebilir ve esnek yazılımlar oluşturulabilir. Bu kavram, nesne tabanlı programlamanın temel prensiplerinden biridir ve kodun daha iyi organize edilmesine olanak tanır.
Misal:

has – a ilişkisi nedir?
has-a
ilişkisi, bir sınıfın başka bir sınıfın nesnesini içerdiği veya sahip olduğu durumu ifade eder. Bu ilişki, genellikle bir sınıfın bir diğer sınıfın bir parçası olduğu veya içinde başka bir nesnenin bulunduğu durumları ifade etmek için kullanılır. Bu durumda, bir sınıf, başka bir sınıfın nesnesini içerir veya bir bileşeni olarak bulundurur.
Örneğin, bir “Araba” sınıfı, bir “Motor” sınıfı nesnesini içerebilir. Bu durumda, “Araba”, bir “Motor” nesnesine sahiptir ve bu ilişki has-a
ilişkisi olarak adlandırılabilir. Benzer şekilde, bir “Üniversite” sınıfı, bir veya daha fazla “Bölüm” sınıfı nesnesini içerebilir. Bu durumda, “Üniversite”, bir veya daha fazla “Bölüm” nesnesine sahiptir ve bu da bir has-a
ilişkisidir.
has-a
ilişkisi, nesne yönelimli programlama ve tasarım süreçlerinde bir sınıfın diğer sınıfları içerme veya sahiplenme durumunu belirtmek için önemlidir. Bu ilişki, sınıflar arasındaki bağlantıları ve ilişkileri açıkça tanımlamak için kullanılır ve genellikle kodun daha modüler, esnek ve yeniden kullanılabilir olmasını sağlar.

can – do ilişkisi Nedir?
“can-do” ilişkisi, bir nesnenin sahip olduğu yetenekleri veya davranışları ifade eder. Bu ilişki, genellikle bir sınıfın belirli bir arayüzü uygulayarak sahip olduğu yetenekleri göstermek için kullanılır. Bu arayüz, genellikle bir interface olarak tanımlanır.
Interface’ler, bir sınıfın uygulaması gereken bir dizi yöntemi veya davranışı tanımlar. Bir sınıf, bir interface’i uygulayarak (implementing) bu davranışları gerçekleştireceğini taahhüt eder. Dolayısıyla, bir nesnenin bir interface’i uygulaması, o nesnenin belirli davranışlara veya yeteneklere sahip olduğunu gösterir.
Örneğin, bir “Uçabilir” interface’i, uçma yeteneğine sahip nesnelerin sahip olması gereken yöntemleri tanımlayabilir. Bir “Kuş” sınıfı, “Uçabilir” interface’ini uygulayarak uçma yeteneğine sahip olduğunu belirtir. Bu durumda, “Kuş” sınıfı, “Uçabilir” interface’ini uyguladığı için “uçma” yeteneğine sahip olduğunu ifade eder. Dolayısıyla “Kuş”, “uçabilir” yeteneğine sahiptir.
Bu şekilde, “can-do” ilişkisi, bir nesnenin hangi yeteneklere veya davranışlara sahip olduğunu belirlemek için interface’ler aracılığıyla kullanılır. Bu, programın daha modüler ve esnek olmasını sağlar, çünkü bir nesnenin davranışlarının, onu kullanacak olan diğer kod parçaları tarafından önceden belirlenmiş standartlarla uyumlu olduğu garanti altına alınır.
using System;
// Uçabilir arayüzü
interface IUçabilir
{
void Uç();
}
// Kuş sınıfı, IUçabilir arayüzünü uyguluyor
class Kuş : IUçabilir
{
public void Uç()
{
Console.WriteLine("Kuş uçuyor!");
}
}
class Program
{
static void Main(string[] args)
{
// Kuş nesnesi oluştur
Kuş kuş = new Kuş();
// IUçabilir arayüzünden referans alarak uçma yeteneğini kullan
IUçabilir uçabilir = kuş;
uçabilir.Uç();
}
}
Association Nedir?
Association, iki veya daha fazla sınıf arasındaki ilişkiyi ifade eden bir kavramdır. Bu ilişki, sınıflar arasında bir bağlantı oluşturur, ancak bu bağlantı oldukça gevşektir ve bağımsızlık korunur. İki sınıf arasındaki ilişki, bir sınıfın diğerine referans vermesi veya birlikte çalışması şeklinde olabilir, ancak bu ilişki parça-bütün ilişkisi gibi sıkı bağlantılar içermez.
Örneğin, bir öğrenci sınıfı ve bir öğretmen sınıfı arasındaki ilişki bir association örneğidir. Her öğrenci bir öğretmene kayıtlı olabilir, ancak bir öğrenci kaydı silindiğinde bu durum öğretmenin varlığını etkilemez. Benzer şekilde, bir öğretmenin bir öğrenciyle ilişkisi varsa, bu öğrencinin varlığı veya yokluğu öğretmenin varlığını etkilemez.
Association, sınıflar arasındaki bağlantıyı ifade eder, ancak bu bağlantı çok katı bir ilişki değildir. Bu nedenle, bir sınıfın değişiklikleri diğerini etkilemez ve her iki sınıf da kendi başına var olabilir.
Aggregation ve Composition Nedir?
Aggregation ve Composition, nesneler arasındaki ilişkileri ifade eden kavramlardır ve parça-bütün ilişkisi içerirler. Her ikisi de sahiplik ilişkisi (has-a) içerir, ancak aralarındaki farklar bağlılık derecesiyle ilgilidir.
Aggregation (Birleştirme):
- Aggregation, bir nesnenin diğer bir nesne tarafından içerilmesi ve bu nesnenin bağımsız bir şekilde var olabilmesi durumunu ifade eder.
- Bağlılık derecesi düşüktür, yani parça olan nesne bütün olarak var olabilir ve birbirinden bağımsızdır.
- Genellikle “bilesen” veya “parça” ile “bütün” arasındaki ilişkiyi ifade eder.
- Örneğin, bir üniversite sınıfı ve öğrenciler arasındaki ilişki bir aggregation örneğidir. Sınıf öğrencilere sahip olabilir, ancak öğrenciler sınıf dışında da var olabilir ve bağımsız olarak hareket edebilirler.
Composition (Birleşim):
- Composition, bir nesnenin diğer bir nesne tarafından içerilmesi ve bu nesnenin sahibi olan nesneyle birlikte var olması durumunu ifade eder.
- Bağlılık derecesi yüksektir, yani parça olan nesne, bütün olan nesne yok olduğunda yok olur.
- Genellikle “bileşen” ile “bütün” arasındaki güçlü bir sahiplik ilişkisini ifade eder.
- Örneğin, bir araba ve motor arasındaki ilişki bir composition örneğidir. Motor, arabanın bir parçasıdır ve araba yok olduğunda motor da yok olur.
Aggregation vs Composition Örneği 1

Aggregation (Birleştirme):
- Duvar ile tuğlalar arasındaki ilişki aggregation’a örnektir. Çünkü duvar, tuğlaların birleştirilmesiyle oluşur ancak tuğlalar bağımsız olarak da var olabilir ve farklı bağlamlarda kullanılabilirler. Yani duvar, tuğlaların toplamından ibarettir, ancak tuğlalar duvar olmadan da var olabilir.
- Örneğin, duvarın yapımında kullanılan tuğlaları farklı bir yapıda veya projede kullanabiliriz.
Composition (Birleşim):
- Duvar ile çimento arasındaki ilişki composition’a örnektir. Çünkü duvar, çimento olmadan yapılamaz ve çimento da duvar yapımı dışında tek başına kullanılmaz. Yani duvar ve çimento bir araya gelerek tamamlanmış bir bütündür.
- Örneğin, duvarın yapımında kullanılan çimentonun duvar yapımı dışında başka bir işlevi veya kullanım alanı olmayabilir.
Association (İlişki):
- Duvar ile usta arasındaki ilişki ise association’a örnektir. Çünkü bir duvarı inşa etmek için bir usta gereklidir, ancak usta duvar yapmakla sınırlı değildir ve farklı yapı işlerinde de çalışabilir. Yani duvar ve usta arasında sıkı bir bağlılık yoktur.
- Örneğin, aynı usta farklı yapılarda farklı işler yapabilir ve bir duvarın yapımı dışında başka işlerde çalışabilir.
Bu şekilde, duvarın oluşturulmasında kullanılan tuğlalar aggregation’a örnektir çünkü tuğlalar bağımsız olarak var olabilirler. Çimento ise duvarla bir araya gelerek tamamlanmış bir bütün oluşturduğundan composition’a örnektir. Usta ise duvarın yapımında önemli bir rol oynar ancak duvar yapımı dışında da işler yapabilir, bu yüzden duvarla usta arasındaki ilişki association’dır.
Aggregation vs Composition Örneği 2
Aggregation (Birleştirme), Araba ve lastikler arasındaki ilişki gibi, bir nesnenin diğerine ihtiyaç duyduğu ancak bağımlı olmadıkları ve tek başlarına var olabilecekleri durumlarda ortaya çıkar. Lastikler arabadan bağımsız olarak da kullanılabilirken, arabaya eklenerek bir araç oluştururlar. Composition (Birleşim), Araba ve motor arasındaki ilişki gibi, bir nesnenin diğerine sıkı bir şekilde bağlı olduğu ve birlikte bir bütün oluşturdukları durumlarda ortaya çıkar. Araba ve motor, bir aracın temel parçalarıdır ve bir araya geldiklerinde bir araç oluştururlar. Association (İlişki), Araba ve sürücü arasındaki ilişki gibi, iki nesnenin birbiriyle ilişkili olduğu ancak birinin diğerinin parçası olmadığı durumlarda ortaya çıkar. Araba ve sürücü birbirleriyle ilişkilidir ancak sürücü arabanın bir parçası değildir, bu yüzden sürücü arabaya bağlı olmaksızın var olabilir.
Yorum Yap