Sınıf Hiyerarşisi Nedir?

Aynı zamanda sınıf taksonomisi olarak da adlandırılan bir sınıf hiyerarşisi, benzer şeyler yapmak için kalıtım yoluyla bağlanan bir grup ilgili gruptur. Hiyerarşinin üstü, altındaki tüm diğer sınıfların türetildiği tek bir temel sınıf olabilir veya hiyerarşi, işlevleri bir veya daha fazla türetilmiş sınıfta daha sonra bir araya gelen çoklu baz sınıflarına sahip olabilir. Sınıflar arasındaki ilişkiler ağaç olarak gösterilebilir ve büyük taksonomi içindeki her küçük ağaç da bir hiyerarşi olarak kabul edilebilir.

Her sınıf hiyerarşisinde birden fazla kök bulunmaz ve herhangi bir sınıf hiyerarşisinin yapısı büyük ölçüde yazdığı dile bağlıdır. C ++ birden fazla kalıtıma izin verir, bu nedenle karmaşık hiyerarşiler birden fazla kök ve birbiriyle birleşen birden fazla ağaçla oluşturulabilir. Diğer yandan Java®, tek bir kalıtımla sınırlıdır, bu nedenle sınıf ilişkileri genellikle tek bir kök ile kendi kendine yeten ağaçlar olarak oluşturulmuş, daha basittir. Arayüz devralması, Java®'daki bir sınıf hiyerarşisine biraz karmaşıklık ekleyebilir, ancak arayüzler neredeyse hiçbir zaman ağaçları birleştirmek gibi olmayacak kadar karmaşık bir çerçevede başlatılmaz.

Bir sınıf hiyerarşisinin bileşenleri, dil kurallarını her zaman mirasla ilgili olarak takip ettiği sürece, tür ve fonksiyon bakımından değişebilir. Bir hiyerarşideki sınıflar genel, korumalı, soyut, somut veya sanal olabilir. Arayüzler, global fonksiyonlar ve arkadaşlar da kullanılabilir. Bilgisayar diline bağlı olarak, bu türlerden bazıları, diğerlerine göre kalıtım konusunda kendilerini daha iyi ödünç verebilir. Genel olarak, hiyerarşiler çok esnektir ve birçok amaç için birçok şekilde kullanılabilir.

Belirli tür sınıfların bir hiyerarşide nereye yerleştirilmesi gerektiğine dair kesin kurallar yoktur. Herhangi bir sınıf, yukarıda belirtilen tiplerden herhangi biri düşünülebilir. Genel olarak, hiyerarşide altlarında türetilmiş bir sınıf bulunmayan son sınıflar genel ve somut olmalıdır. Tamamen soyut sınıf hiyerarşileri de mevcut olabileceğinden, bu sadece bir kuraldır.

Her ne kadar bir sınıf hiyerarşisi, kodu düzenlemek ve işlevselliği enkapsüle etmek için yararlı bir araç olsa da, bir hiyerarşiye çok derinlemesine dalmanın, kodu açıklığa kavuşturmak yerine, onu daha da karmaşık hale getirip karıştırmayı daha kolay hale getirebileceği zamanlar olabilir. Birçok sınıf arasında sağlam bir ilişki kurmak belli bir öngörü gerektirir; Başlangıçta kodu birçok küçük parçaya bölmek daha kolay olsa da, bu küçük parçaların daha sonra kullanılması daha zor olabilir. Düzgün bir şekilde oluşturulduğunda, bir sınıf hiyerarşisi hem geliştiricilere hem de kullanıcılara sınıfların nasıl çalıştığını belirlemede yardımcı olur. Bakım ve netlik gözetilmeksizin inşa edilirse, birçok kalıtım, geriye bakmak ve anlamak için kafa karıştırıcı olabilir.