Alıntı (canalpay):
> Ayrıca htmlHelper adından başka formHelper adında bir modül tanımlamak gerekiyor.
Programlar gerçek dünyayı, gerçek kavramları, veya çok genel olarak soyut da olsa her türlü kavramı programlama dilinin olanakları ile ifade ederler. Benim anladığım bu.
O yüzden programlardaki isimler o ismin neyi ifade ettiğini veya modellediğini göstermelidir. HTML'in standardında, tanımında, veya herhangi bir yerinde "helper" diye bir kavram yok. Onun için htmlHelper hiçbir şeyi modellemiyor.
htmlHelper'ın bir programlama kavramını modellediğini de söyleyebiliriz. Kabul. Peki bu türlerden iki nesne oluştursam ikisinin farkları nedir?
Eğer HtmlBelgesi desek anlarım. Çünkü sunucunun istemciye göndereceği belgeyi ifade eder. Bizim kütüphaneyi kullanan programcılar bundan bir tane oluştururlar ve bize "bunu istemciye gönder" derler. Böyle olunca gerçeği modellemiş oluruz. Apache altında işleyen programlama HTML belgesi oluşturma hizmeti veriyoruz.
Bunlara daha önce değindiğim için yukarıda özellikle htmlHelper'dan başladım.
Eğer bunlara katılıyorsanız formHelper yerine Form diye bir türün daha uygun olduğu fikrine katılabilirsiniz. Gerçeğe uyuyor: programcı birden fazla Form nesnesi oluşturabilir ve belgenin istediği noktalarına onlardan yerleştirebilir. "Bu HtmlBelgesi'ne bu Form'u yerleştir" deyince doğru bir modelleme oluyor.
Alıntı:
> Orada get post gibi iletişim methodlarının html ayağı tanımlanacak. Bu tanımlar sanırım htmlHelper miras alınarak yapılmalı. Ne dersiniz?
İsmine katılmadığım herhalde açık. :)
Miras konusunda temel bir kural, "bu özel tür, o genel türdendir" diyebilmektir. Bildik örnekler: "kedi hayvandır" (kedi özel, hayvan genel), "otomatik araba arabadır" (otomatik araba özel, araba genel), vs.
Eğer get ve post olayını tanımlayan türün ismi Form ise, onun hangi türden türetileceğini onunla aynı düzeyde kullanılan başka türlere bakarak anlayabiliriz:
"Bu HtmlBelgesi'ne bu formu yerleştir"
"Bu HtmlBelgesi'ne bu resmi yerleştir"
"Bu HtmlBelgesi'ne bu paragrafı yerleştir"
"Bu HtmlBelgesi'ne bu başlığı yerleştir"
vs.
Orada "form", "resim", "paragraf", "başlık", vs. nesnelerinin özel olduklarını düşünürsen onların hepsini birden genel olarak ifade eden kavram nedir? HTML belgelerinin belirli noktalarına ne yerleştirebiliriz? Bence ona HtmlElemanı diyebiliriz. Çünkü HtmlBelgesi'nin gözünde ona eklenen şeyler HTML elemanlarıdır.
Ben burada şunu görüyorum: "form HTML elemanıdır" (form özel, HtmlElemanı genel). O yüzden aklıma yatan şu:
class Form : HtmlElemanı
{
}
Her zamanki hatırlatma: tabii ki başka türlü de olabilir. ;)
HtmlElemanı her HTML elemanının sunması gereken işlevleri tanımlayan bir arayüz olabilir:
interface HtmlElemanı
{
string girintiliÇıktı(int girintiDüzeyi) const;
}
Veya kendi üyelerinin olması gerekecekse
class HtmlElemanı
{
string girintiliÇıktı(int girintiDüzeyi) const;
}
(Çünkü interface'lerin üyeleri olamıyor. (Not: Aslında artık final ve static üye işlevleri de olabiliyor. Bakınız: http://digitalmars.com/d/2.0/interface.html. Şurayı değiştireceğim: http://ddili.org/ders/d/interface.html))
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]