Gerçekleştirme

Programlama dillerinde gerçekleştirme, yarım bırakılmış bir öğe tanımının tamamlanmasıdır. Öğe tanımının eksik bırakılan kısmı gerçekleştirim ayrıntısı olarak adlandırılırken, kullanıcı ile paylaşılan kısmı kullanıcı-gerçekleştirimci arayüzü olarak adlandırılır. Bu ayrımın yapılmasının başlıca nedeni, kullanıcı ve gerçekleştirimci kodları arasındaki bağımlılıkları azaltıp değişme olasılığı düşük öğelere indirgemektir. Aynı anlayış, herhangi bir ürünün arayüz-gerçekleştirim ayrımında da görülür. Örneğin, bir müzikçaların kullanımında, kullanıcıyı ilgilendiren konsol üstündeki düğmelerdir; düğmelere basıldığında veya düğmeler çevrildiğinde kutunun içinde olanlar—yani gerçekleştirim—kullanıcı için ayrıntıdır ve kullanıcıdan saklanmalıdır. Bir diğer deyişle, gerçekleştirimci ürün arayüzünü kullanıcıyla paylaşırken, arayüzü tamamlayan gerçekleştirimi kullanıcıya sunmamalıdır.

Kullanıcı-gerçekleştirimci arayüzünü tanımlamakta kullanılan programlam öğeleri ve bu amaçla kullanılan bilgi saklama (İng., information hiding) araçları programlama dilleri arasında değişkenlik gösterir. Java ve C# gibi programlama dillerince desteklenen arayüz kavramının varlığında, gerçekleştirme tanımlanan arayüzle arayüzü gerçekleştiren sınıflar arasındaki ilişki olarak tanımlanır. Böylesine bir ilişki, arayüzde listelenen iletilerin çokbiçimli kullanımına olanak tanır. Bunun için yapılması gereken, nesnelerin çokbiçimli bir şekilde kullanılması istenen arayüzün türündeki bir tutacak vasıtasıyla kullanılmasıdır.

C programlama dilinde, dilin eksik bıraktığı kavramsal boşluklar gerçekleştirimci (ve kullanıcı) tarafından doldurulur. Gerçekleştirimci, arayüz tanımını yapmak için gerçekleştirim ayrıntılarını vermeyecek şekilde başlık dosyalarından yararlanır. Bu, kullanıcı ile paylaşılacak başlık dosyalarının fonksiyon imzaları, sabit tanımları ve tür öntanımları (İng., forward declaration) içerebileceği anlamını taşır. Başlık dosyasında ilan edilen işlevselliğin gerçekleştirimi ise tecihen aynı ada sahip bir C dosyasında sağlanarak gerçekleştirme ilişkisi kurulur.

C++ gibi nesne yönelimli olmakla birlikte arayüz kavramını doğrudan desteklemeyen dillerde ise gerçekleştirme ilişkisi iki şekilde tesis edilebilir. İlk yöntemde, arayüz kavramı altalan ve fonksiyon gövdesi içermeyen bir soyut sınıf olarak tanımlanır ve gerçekleştirimci bu sınıftan kalıtladığı bir sınıfta fonksiyon gerçekleştirimlerini sağlayarak işini tamamlar. İkinci yöntem, C için önerilen yöntemin C++'a uygulanmasından ibarettir: başlık dosyasına konulmuş ve salt fonksiyon imzaları ile sabit tanımları içeren bir sınıf, aynı adlı bir C++ dosyasında gerçekleştirilir.

Notlar

Ayrıca bakınız 
 Arayüz
 Kalıtlama ilişkisi

Programlama