İçeriğe atla

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 hiding30 Nisan 2011 tarihinde Wayback Machine sitesinde arşivlendi.) 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 declaration15 Temmuz 2010 tarihinde Wayback Machine sitesinde arşivlendi.) 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.[1]

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

  1. ^ Arayüz kavramının Java ve C#'daki gibi desteklenmesini sağlayan bir örneği burada bulabilirsiniz.

Ayrıca bakınız

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">JavaScript</span> programlama dili

JavaScript, HTML ve CSS ile birlikte World Wide Web'in temel teknolojilerinden biri olan programlama dilidir. Web sitelerinin %97'sinden fazlası, web sayfası hareketleri için istemci tarafında JavaScript kullanırlar ve kullanılan kodlar genellikle üçüncü taraf kitaplıkları içerir. Tüm büyük web tarayıcılarında, kaynak kodunu kullanıcıların cihazlarında yürütebilmek için özel bir JavaScript motoru bulunur.

<span class="mw-page-title-main">C++</span> bir programlama dili

C++, Bjarne Stroustrup tarafından 1979 yılında Bell Laboratuvarları'nda geliştirilmeye başlanmış, C'yi kapsayan ve çok paradigmalı, yaygın olarak kullanılan, genel amaçlı bir programlama dilidir.

<span class="mw-page-title-main">Java</span> açık kaynak kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen bir programlama dili

Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kaynak kodlu, nesneye yönelik, platform bağımsız, yüksek verimli, çok işlevli, yüksek seviye, hem yorumlanan hem de derlenen bir dildir.

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

Tasarım desenleri, tasarım kalıpları, tasarım örüntüleri veya tasarım şablonları, çok rastlanan, birbirine benzer sorunları çözmek için geliştirilmiş ve işlerliği kanıtlanmış genel çözüm önerileridir.

<span class="mw-page-title-main">Nesne yönelimli programlama</span> nesne kavramına dayalı programlama paradigması

Nesne yönelimli programlama veya kısaca NYP, Her işlevin nesneler olarak soyutlandığı bir programlama yaklaşımıdır. NYP destekleyen programlama dilleri yüksek seviye diller olarak adlandırılır.

Veri yapısı, bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılan yapı.

<span class="mw-page-title-main">NetBeans</span> Vikimedya kategorisi

NetBeans, Oracle tarafından geliştirilen bir Java geliştirme ortamıdır (IDE) ve ücretsiz olarak dağıtılmaktadır. Özellikle kullanıcı arayüzü tasarımında sağladığı kolaylıklardan dolayı tercih edilmektedir. Henüz Eclipse kadar popüler olmasa da popülerliği giderek artmaktadır.

<span class="mw-page-title-main">HTML</span> işaretleme ve web programlama dili

Hiper Metin İşaretleme Dili web sayfalarını oluşturmak için kullanılan standart metin işaretleme dilidir. Dilin son sürümü HTML5'tir.

XAML, genişletilebilir uygulama biçimlendirme dili. Microsoft'un uygulama arayüzlerinin oluşturulmasını sağlayan tanımlama dili. XAML, geliştiricilerin XML kullanarak tüm .NET kullanıcı arayüz elemanlarının çizimlerini kontrol edebilmelerini sağlar. Her XAML etiketi (tag), özellikleri XML attributeleriyle kontrol edilen bir .NET Framework sınıfına birebir karşılık gelir.

<span class="mw-page-title-main">R (programlama dili)</span> istatistik analizi için kullanılan programlama dili

R, istatistiksel hesaplama ve grafikler için yazılım ortamı olup aynı zamanda programlama dilidir. R Foundation tarafından desteklenen ve GNU Tasarısının parçası olan bir özgür yazılımdır. Yeni Zelanda Auckland Üniversitesinden Ross Ihaka ve Robert Gentleman tarafından ortaya çıkarılan R, hâlihazırda R Geliştirme Çekirdek Ekibi tarafından geliştirilmektedir. S programlama diline benzeyen R, S'nin uyarlaması olarak değerlendirilebilir.

<span class="mw-page-title-main">Sınıf (programlama)</span> nesne yönelimli programlamada, bir nesnenin nasıl çalıştığını belirten bir tanım

Sınıf, nesne yönelimli programlama dillerinde nesnelerin özelliklerini, davranışlarını ve başlangıç durumlarını tanımlamak için kullanılan şablonlara verilen addır. Bir sınıftan türetilmiş bir nesne ise o sınıfın örneği olarak tanımlanır. Sınıflar genelde şahıs, yer ya da bir nesnenin ismini temsil ederler. Sınıflar metotları ile nesnelerin davranışlarını, değişkenleri ile ise nesnelerin durumlarını kapsül ederler. Sınıflar hem veri yapısına hem de bir ara yüze sahiptirler. Sınıflar ile nasıl etkileşime girileceği bu ara yüzler sayesinde sağlanır. Örneğin bir sınıf şablonu ile renk özelliğine, tekerleklere ve sür metoduna sahip olan bir araba temsil edebilir.

Programlama paradigmaları, programlama dillerini özelliklerine göre sınıflandırmanın bir yoludur. Diller birden fazla paradigma içinde sınıflandırılabilir.

<span class="mw-page-title-main">Java sanal makinesi</span>

Java Sanal Makinesi (JSM), Java platformunun nesne modülü formatı olan class uzantılı sınıf dosyalarının belleğe yüklenip çalıştırılması için gereken hizmetleri sunan bir sistem programıdır ve temel görevinin sınıf dosyalarını yorumlamak olduğu söylenebilir. Ancak, JSM'ni salt bir yorumlayıcı olarak görmek büyük haksızlık olur. Zira, yorumlama ile birlikte JSM'nin şu görevleri de vardır.

Bilgisayar programlamada dinamik iletim, altyordam çağrılarının ilişkin altyordam başlangıç adresine dinamik olarak bağlanmasıdır. Bir diğer deyişle, dinamik iletim program metnindeki bir çağrı ile işletilen altyordamın programın çalışması sırasında birbirine bağlanması durumudur. Geri çağrı ve çokbiçimliliğin realize edilmesinde kullanılan bu bağlama yöntemi, yordamsal programlama dillerinde altyordam göstericileriyle gerçekleştirilirken, nesne yönelimli dillerde kalıtlama ve gerçekleştirme ilişkilerinin kullanılmasıyla otomatikman sağlanır. Altyordamların birinci sınıf dil öğesi olarak ele alındığı fonksiyonel programlama dillerinde ise, aynı işlevsellik altyordamların argüman olarak geçirilmesi ile sağlanabilir.

Nesne yönelimli programlama dillerinde arayüz, değişik sınıflardan nesnelerin kategorize edilmesini sağlayan bir soyut tür çeşitidir. Tanımlanmakta olan kategorinin birbirleriyle alakasız sınıfları ortak bir çatı altında toplaması nedeniyle, arayüz tanımları, soyut sınıfların aksine, listeledikleri iletilerin gerçekleştirim ayrıntısı olan herhangi bir bilgi içeremezler. Dolayısıyla, bir arayüz tanımı iletilere karşılık gelen bir altyordam gövdesi veya altalan tanımı içeremez. Bir başka açıdan bakarsak, arayüz tanımında yer alan programlama öğelerinin zaman içinde değişme olasılığı düşük öğeler olması gerekir. Buna göre, arayüz tanımları gerçekleştirimci ile kullanıcının paylaştığı ve sabit olma özelliği bulunan altyordam imzaları ile simgesel sabit tanımlarını barındırabilir.

<span class="mw-page-title-main">MATLAB</span>

MATLAB, çok paradigmalı sayısal hesaplama yazılımı ve dördüncü nesil programlama dilidir. Özel mülk bir programlama dili olan MATLAB, MathWorks tarafından geliştirilmektedir. MATLAB kullanıcıya, matris işleme, fonksiyon ve veri çizme, algoritma uygulama, kullanıcı arayüzü oluşturma, C, C++, Java ve Fortran gibi diğer dillerde yazılmış programlarla arabağlama imkânı tanır.

Seed7 Thomas Mertes tarafından geliştirilmiş olan genişletilebilir ve genel amaçlı bir programlama dilidir. Sözdizim kuralları açısından C'ye ve Pascal'a çok benzer.

Dart, ilk kez Google tarafından geliştirilen ve daha sonraları ECMA tarafından standart (ECMA-408) haline getirilen açık kaynaklı ve genel-amaçlı bir programlama dilidir. Dart dili kullanılarak web, sunucu, mobil uygulamalar ve IoT cihazları geliştirilebilir.

Cocoa, masaüstü işletim sistemi macOS için Apple'ın yerel nesne yönelimli programlama ve uygulama programlama arayüzüdür (API).