Alıntı:
> Anladığım kadarıyla, en kolayı dkvG'ye eklemek olmaz mı? Yoksa dkvG'yi daha akıllı yapmak yerine, yeni yeteneğe sahip yeni bir sınıf mı düşünüyorsun?
Hem yeni bir yeteneğe sahip bir sınıf olmuş olur, hem de kodlar birbirinden ayrıldığı için kod bakımı daha kolay olur diye düşündüm.
Şuan bilgi.d sayesinde şunu yapacağım=> eğer dkvG ile bir şeyi silmek istiyorsanız dkvG'nin oluşturduğu dosyalara bakacağım ve böylece eğer dkvG oluşturmadıysa silmeyecek.
Alıntı:
> O, bilgi'nin bir dkvG sahibi olmasını sağlar. bilgi, kendisi bir dkvG üyesi oluşturur ve ona sahip olur. Yani bu anlamda dkvG'ye bir şey eklemez; ondan bir nesnenin sahibidir.
Farkındayım. Sadece bilgi.d'nin dosya dizin oluşturma gereksinimlerini karşılıyorum.
Alıntı:
> Şimdi bu sınıftan olan nesnelerin ikişer tane dkvG'si olur. Birincisi kalıtımla edindiği, ikincisi de bilgi'nin üyesi olan...
Evet kalıtımla elde etmemin nedeni super anahtar sözcüğü ile üst sınıfa erişip işlevlerini kullanabilmek için.
Alıntı:
> Tabii, yazdığınyer() derleyici hatası verecektir. Belki de bilgiler.yazdığınyer() demek istemişizdir. Ama o zaman sonuçta bilgiler'in içindeki dkvG kullanılır, kalıtımla edinilen değil.
bilgiler.yazdığınyer() demek istedim ama forumun mesaj penceresinde kodları yazdığım için ne derledim ne hatasına baktım. Boşlukları ayarlamak bile zor oldu :-)
Zaten amacım bilgiler.dyi kullanmak, dkvG'yi kullama amacım yok.
Alıntı:
> Senin bunun doğru çözüm olduğunu söylemediğini biliyorum. Ben gördüğüm ve anladığım kadarının açıklamasını yapıyorum.
Teşekkür ederim. Eğer açıklama yapmasaydınız ben herhalde şuan kod tekrarı yapacaktım sadece .
Alıntı:
> Şimdi bir de kullanıcı tarafından ele alalım. Bu sınıf tasarımını bir kenara bırakarak, kullanıcının nasıl bir kod yazmasını amaçlıyoruz?
Bütün özelliklerini göstermeyeceğim. Sadece veritabanı ile ilgili.
import dkvG;
void main()
{
dkvG taban =new dkvG;
taban.v_yarat("örnek");
taban.v_yarat("ikinciörnek");
//Diyelim ki programımız hangi veritabanı adını verdiğini merak ediyor
taban.vt_adı_listele(); // döndürdüğü değer string[] türünde [örnek] [ikinciörnek] gibi.
}
Artık dkvG hangi veritabanını yazdığını biliyor. Bu dkvG içinde çok iyi. Neden mi ? Eğer veritabanı, tablo gibi şeyler silmek isterseniz dkvG oluşturduğu veritabanları listesine bakıyor. Eğer yoksa sildirtmiyor. Varsa siliyor.
Yani artık dkvG gidip sizin bilgisayarınızı tamamen silmeyecek. Böylece artık kodlarımı çalıştırmaktan korkmayacaksınız :-D
Şuan istediğimi yapacak olan dkvG'yi svn'ye aktardım.
Oluşturduğum 'bilgi.d' :http://code.google.com/p/dkv/source/browse/trunk/dkvG/bilgi.d
Oluşturduğum 'dkvB.d' :http://code.google.com/p/dkv/source/browse/trunk/dkvG/dkvB.d
Oluşturduğum 'dkvG .d' :http://code.google.com/p/dkv/source/browse/trunk/dkvG/dkvG.d
Şuan istediklerimin hepsini yapamadım. Ama temelini attım. Artık istediğim şeyleri yapabilirim.
Tabii yazdıklarım iyi bir çözüm olmayabilir, o zamanda yaptıklarımı siler sizin yardımınızla daha iyisini yapmaya çalışırım.
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]