Forum: Ders Arası RSS
Sözleşmeli Programlama Nedir ?
canalpay (Moderatör) #1
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Sözleşmeli Programlama Nedir ?
Sözleşmeli programlama nedir ? Nasıl kullanılır ? örnekler...

Mesela :
long square_root(long x)
in //Burada fonksiyona giren değer sıfırdan büyükse mi  fonksiyonu tanımlamayı başlat diyor ?
{
    assert(x >= 0);
}
out (result) // Burada da döndürülen değer assertteki gibi mi ise fonksiyonu tanımla diyor ?
{
    assert((result * result) <= x && (result+1) * (result+1) >= x);
}
body //Burada da şartlar yerine getirilirse fonksiyonun içeriğinin ne olacağı gösteriliyor ?
{
    return cast(long)std.math.sqrt(cast(real)x);
}
unittest //Sanırım buradada fonksiyonun doğru çalışıp çalışmadığını kontrol ediyoruz.
{
    assert(square_root(36) == 6);
}

Yorumlarım doğru mu ? Birde istersek in, out , unittest ten birini kullanmayabilir miyiz?
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
in: fonksiyonun işine başlayabilmesi için gereken ön koşullar; yani çağıran tarafın uyması gereken koşullar

out: fonksiyonun işini bitirdiğinde var olması gereken koşullar; yani bu fonksiyonun uyması gereken koşullar

body: fonksiyonun asıl işi (kendisi)

unittest: fonksiyonun birim testleri (aslında sözleşmeli programlama konusunun dışındadır)

Sözleşmeli programlama Eiffel dilinden geliyor. O dilin yaratıcısı Bertrand Meyer'ın bir fikri...

Bir fonksiyonun kendisini çağırana hizmetini sunabilmesi için, fonksiyon ile çağıranı araşında uyulması gereken bir sözleşme vardır. Programlama dillerinin çoğu bu sözleşme konusunda bir yardım sunmazlar. Bu sözleşmenin maddeleri normalde açıklama satırlarında bile bulunabilir. "square_root fonksiyonunun parametresinin eksi olmaması gerekir" gibi...

Sözleşmeli programlama, üstü kapalı olarak halledilen bu konuyu dil olanağı düzeyine getirerek program sağlamlığını arttırmayı hedefler.

Önemli bir nokta: bu konunun kullanıcının uyması gereken koşullarla bir ilgisi yoktur. Örneğin kullanıcıdan 0-10 aralığında sayı beklenen durum in bloğunda denetlenmez. Sözleşmeli programlama, program parçaları arasındaki sözleşmeleri kapsar.

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Ders Arası RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-19, 08:08:53 (UTC -08:00)