Forum: Projeler turna RSS
XmlElement [Helper'da Ne Kaldı?]
Sayfa:  önceki  1  2  3  4 
erdem (Moderatör) #46
Üye Tem 2009 tarihinden beri · 953 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 3832
Tam olarak nasıl bir hata verdiğini yazabilirmisin.

Normalde sorunsuz olarak derlenmesi lazım. override anahtar sözcüğünü bir alt sınıf bir üst sınıfın davranışını tekrar tanımlamak istediğinde kullanıyoruz.

Örneğin üst sınıfımız Anadol diye bir sınıf olsun. Alt sınıfımız da Ferrari diye bir sınıf olsun. Üst sınıfta Anadol void hızlan() kodu örneğin Anadol arabayı 60sn'de 100 km hıza çıkartıyor diyelim. Alt sınıfta bu void hızlan() işlevini Ferrari 100 km'ye 5 sn'de çıkacak şekilde tekrar üst sınıfın void hızlan() işlevinin üzerine yazacak şekilde tekrar yazabiliriz. İşte bu durumda override anahtar sözcüğüne ihtiyaç duyarız.

Bizim XmlElement sınıfı zaten kendisi üst sınıf olduğu için override yazmaya gerek yok.

Ben sorunsuz derleyebildim  :rolleyes:
Avatar
mert #47
Üye Ara 2010 tarihinden beri · 194 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
yerineGecme.d(25): Warning: overrides base class function object.Object.toString, but is not marked with 'override'

Hata bu şekilde. toString işlevinin başına override anahtar sözcüğü eklediğimde düzeliyor.  Şu ara tam da bu konuyu çalışıyor olduğumdan helper'in gelişimini takip ederek kodları anlamaya, yapılanı kavramaya çalışıyorum. Yine kitapta şöyle bir ifade var:
toString 'in tanımını bu noktaya kadar geciktirmemin nedeni, her sınıfın Object isminde bir sınıftan otomatik olarak türemiş olması ve Object 'in zaten bir toString işlevi tanımlamış olmasıdır. Bu yüzden, bir sınıfın toString işlevinin tanımlanabilmesi için override anahtar sözcüğünün de kullanılması gerekir:

Dikkatimi çekmesi ve üzerine bu biçimde düşme nedenim buydu. Biraz daha açarsam: helper.d içerisindeki şu toString işlevi:
 string toString () {
bu şekilde override anahtar sözcüğü kullanılmadan tanımlanıp derlendiğinde bende hata veriyor. Ancak yukarıdaki kitaptan alıntıladığım bölümde anlatıldığı gibi override ile işaretleyince sorun ortadan kalkıyor ve helper.d derlenebiliyor
mert
Bu mesaj 2 defa değişti; son değiştiren: mert; zaman: 2011-04-22, 01:29.
erdem (Moderatör) #48
Üye Tem 2009 tarihinden beri · 953 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Hımm.. Doğru düşünmüşsün. Demek ki XmlElement de Object'den türediği için ve Object XmlElement'in üst sınıfı olduğu ve toString isimli bir üye işleve sahip olduğu için o zaman yazmalıyız. Düzeltme için teşekkürler :)

Ben de kodu derlerken uyarı seçenekleri ile derlemeye alışmalıyım sanırım :-D

$ dmd xmlelement.d -ofxmlelement -w
Avatar
mert #49
Üye Ara 2010 tarihinden beri · 194 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Evet, her sınıf Object'ten türediğinden orada tanımlı olan toString() işlevinin bastırılması anlamına geliyor override. Sayenizde pekiştiriyorum ben de kendi hesabıma dili.
:-)
mert
Bu mesaj mert tarafından değiştirildi; zaman: 2011-04-22, 01:50.
acehreli (Moderatör) #50
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4508 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #46
erdem:
Örneğin üst sınıfımız Anadol diye bir sınıf olsun. Alt sınıfımız da Ferrari diye bir sınıf olsun.

Yalnızca örnek olarak verdiğini biliyorum ama o ilişkide bir uygunsuzluk var: "Ferrari bir Anadol'dur" anlamını verdiği için doğru görünmüyor. :)

Doğrusu, üst sınıfta zaten gerçekleştirilmiş olan bir işlevin alt sınıfta tekrardan tanımlanmasına kendim fazla rastlamıyorum. Çoğunlukla gördüğüm, üst sınıf abstract olarak bildiriyor ve alt sınıflar tanımlıyorlar. (Bunlar yine C++ deneyimlerim; yoksa D'de interface de var ve çoğu duruma daha uygun.)

Ali
canalpay (Moderatör) #51
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ı
Bu arada modüle xml yorumları için değer olarak -- karakterleri kullanılmadığını yada xml içinde < gibi xml için özel olarak tanımlanmış karakterlerin kullanılmadığını kontrol etmeniz gerekiyor. Hatırlatmakta fayda var.
erdem (Moderatör) #52
Üye Tem 2009 tarihinden beri · 953 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #50
Evet haklısınız. Aslında Araba sınıfından türeyen bir Anadol ve Ferrari demek istemiştim. O kısmı biraz eksik yazmışım. O durumda da üst sınıf Araba sınıfı, Anadol ve Ferrari alt sınıflar olmuş oluyor.

Nasıl örnek ama Anadol vs Ferrari :)

Can teşekkürler hatırlatmalar için. Bu konuda bir dökümana yönlendirebilirsen sevinirim. Ben sadece w3schools'a bakıyorum. O da biraz basit kalıyor galiba  :huh:
canalpay (Moderatör) #53
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ı
Ben w3schoolstan daha kapsamlı yer bilmiyorum. Ancak daha basit olarak buradan baktım: http://www.zvon.org/xxl/XMLTutorial/General_tur/contents.h…

Orda genelde yapılan hatalı örneklerde olduğu için yanlışlıkların nereden nasıl yapıldığını öğrenebiliriz ve o hatayı kontrol altına alabiliriz diye düşündüm.

Örneğin ayrıca karakter kodlamasıda enum ile belirtilebilir. Böylece utf32 nasıl yazılıyor veya şimdi hatırlayamadığım iso bilmem kaç nasıl yazılıyor diye hatırlamamızda gerekmez?
Kadir Can #54
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Merhaba arkadaşlar;
Bir sorunumuz var.Sizce input alanlarını nasıl yapmalıyız?Ortalama 8 tane input tipi var.Hepsi için ayrı class yazma fikri var ama çok fazla kod tekrarı yaparız gibi geliyor.enum kullanmak fikri var aklımda.final switch ile kullanılabilir gibi geliyor.

Siz ne düşünüyorsunuz?
erdem (Moderatör) #55
Üye Tem 2009 tarihinden beri · 953 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Aslında o şekilde de olabilir:

enum type { text, radio } 
 
class InputField : XmlElement {
    
    this(type value) {
        super("input");
        
        final switch (value) {
        case type.text : setAttributes(["type":"text"]);
            break;
        case type.radio:
            setAttributes(["type":"radio"]);
            break;
        }        
    }       
}

Ama bence nesneler kişiliği olan elemanlardır. Bunu da ilk okuduğumda baya güldüğümü söylememe bilmem gerek var mı :)

class objects are entities, meaning that they have "personality"

Ek olarak kişilikleri olduğu için kopyalanmamaları gerekiyormuş.

Konuyla ilgili olarak ben eğer okunabilirliği arttıracaksa biraz kod tekrarı yapılması taraftarıyım. Böylece soyutlamaları daha iyi yapabiliriz. Örneğin ilerde bunun gibi bir kod eklememiz gerektiğinde

class Form
{
    void radioButtons(string var, Button[] buttons);

koda bakarak ne yapılmak istendiği daha açık olmuş oluyor. Yani soyutlamaları daha iyi yapıyoruz diye düşünüyorum.
acehreli (Moderatör) #56
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4508 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Erdem'in gösterdiği radioButtons() işlevinin arayüzü doğru. Aşağıda sesli düşünüyorum. :)

w3schools'da şu on türden input olabileceği söyleniyor: button, checkbox, file, hidden, image, password, radio, reset, submit, text.

  http://www.w3schools.com/tags/tag_input.asp

hidden'ın sunucudan istemciye durum bilgisi göndermek için kullanıldığını biliyorum. Örneğin kullanıcının önceki pencerelerde seçmiş olduğu bilgiler burada tekrar istemciye gönderilir, kullanıcı yeni alanları doldurup formu tekrar gönderdiğinde o gizli bilgi de sunucuya gider ve sunucu hepsini birden görebilir. Oturumlardan haberi olan çatılarda bu yönteme sanırım gerek yok. Çünkü kullanıcının bütün durum bilgisi sunucu tarafında tutulur.

file, image, ve reset'i bilmiyorum.

button, kendisi bir bir işlem yapmıyor. Tek anladığımi, onu düğme çizmek için kullanıyoruz. O düğmeye tıklandığında ne olacağını acaba "onclick" gibi "event attribute"ları ile mi belirliyoruz?

Onların dışındakileri anlıyorum çünkü hem daha önce kullandım hem de w3schools'da örnekleri var:

  http://www.w3schools.com/html/html_forms.asp

Aralarında özel ilgi isteyen tek input elemanı bence "radio" olan, çünkü big grup "radio"nun aralarından yalnızca bir tanesinin seçilebilmesi için o grubun hepsinin aynı "name" niteliğinin olması gerekiyor. Bu yüzden birbirleriyle ilgili olan bütün radio grubunun ismini tek olarak almak yararlı olur (Erdem'in gösterdiği gibi).

Aynı kısıtlamanın checkbox'ta da yapılması mantıklı gibi görünüyor ama tarayıcının "yalnızca birisi seçilsin" gibi bir davranışı checkbox'larda istenmediği için aynı gruptaki checkbox'ların name'leri farklı da olabilir. Yine de, bence programlama kolaylığı açısından kısıtlanmalı.

    void checkBoxes(string var, Box[] boxes);

Ali
Bu mesaj acehreli tarafından değiştirildi; zaman: 2011-04-24, 09:50.
erdem (Moderatör) #57
Üye Tem 2009 tarihinden beri · 953 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Peki sizce her elemanı örnek verdiğim koddaki gibi mi yapalım. Yoksa ayrı ayrı soyutlayalım mı okunabirlik açısından.

Bir de ben artık w3schools yerine w3c'nin kendi sitesinden bakalım diyorum. Çünkü sanırım belirli bilgiler yeni HTML 4.01 standardıyla güncelliğini kaybetmiş gibi gözüküyor.

http://www.w3.org/TR/html401/interact/forms.html

Örneğin burada bir form elementi için ACTION niteliğinin gerekli olduğunu görebiliyoruz. Ya da oradaki First name: gibi bir etiket için artık bir LABEL etiketi de belirtmemiz gerektiğini görüyoruz:

 <LABEL for="firstname">First name: </LABEL>

http://www.w3.org/TR/html401/interact/forms.html#h-17.3


Bir de INPUT elemanının html için kapatılmaması gerekiyormuş,

acehreli:
button, kendisi bir bir işlem yapmıyor. Tek anladığımi, onu düğme çizmek için kullanıyoruz. O düğmeye tıklandığında ne olacağını acaba "onclick" gibi "event attribute"ları ile mi belirliyoruz?

Düğmeye tıklanınca da dediğiniz gibi onclick olayı tetikleniyor anladığım kadarıyla.
Bu mesaj 2 defa değişti; son değiştiren: erdem; zaman: 2011-04-24, 10:24.
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:
Sayfa:  önceki  1  2  3  4 
Forum: Projeler turna 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-10-18, 07:57:53 (UTC -07:00)