July 12, 2012

Alıntı (huseyin325325):

>

şekil yönündende sizden biraz yardım istiyorum

Hüseyin doğrusunu istersen bu konular hakkında hiç bilgim yok. Bana sorarsan bir kaç veritabanı projesi inceleyip konu hakkında bilgi edinmem bence çok daha iyi olacaktır. Aslında bu konunun pek ilgimi çektiginide söyleyemem ama elimden geldigince sana yardımcı olmaya çalışayım.

Database db = new Database

db.open("aaa.vt"); // yada "aaa" olur .vt otomatik eklenir

Hımmm... Ben olsam veritabanı adını sınıfı kurarken isterdim. open() metodunu ise asli işlevini yapacak şekilde sade hale getirirdim. Tahminen şöyle bir şey olurdu.

Database db = new Database("VeritabaniAdi.vt");
db.open();

Sanırım add veritabanına tablo ekliyor. Onun içinde hizlıca şöyle bir şey düşündüm;

Database db = new Database("VeritabaniAdi.vt");
db.open();

// Yeni bir tablo ekleme
Table birTablo = new Table("TabloAdi");
birTablo.addColumn("KolonAdi", veriTipi);
db.addTable(birTablo);

// Mevcut bir tabloyu silmek
db.removeTable(birTablo);

db.close();

Kısaca böyle, öncelikle bir Table nesnesi oluşturup bunu veritabanını ekliyorum. Tablo silmek için removeTable() metoduna Table nesnesi verebileceğim gibi tablo ismide verebilmeliyim tabi.

Buradan bakınca kısaca bir Database ve bir Table sınıfım olması gerektigini, Database sınıfımda addTable() ve removeTable() adında iki metodun bulunduğunu görebiliyorum. Ayrıca Table isimli bir sınıf tanımlayıp addColumn() isimli bir metot eklemem gerektigini yine bu kodlardan görebiliyorum.

Neyse benden bu kadar daha önce söyledigim gibi bu benim yaklaşımım kötü, eksik veya yanlış olabilir. Son kararı verecek olan proje lideri olarak sensin ;) umarım yardımcı olabilmişimdir.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 12, 2012

O işlem için arka planda eşleme tablosu veya kendin programladığın bir veri yapısı kullanmak gerekiyor. Yani opIndexAssign işleci çağrıldığında arka planda bir veri yapısında tutulmalı.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 12, 2012
class BirSınıf
{
   Table[string] tablolar;
   Table opIndexAssign(Table tablo, string isim)
   {
       return tablolar[isim] = tablo;
   }
}

gibi olmalı.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 12, 2012

Şu an işlemin çok az bir kısmı halledildiği için aklımızda tasarımı oluşturamıyoruz.
MySQL'i örnek alırsak, öncelikle bir bağlantı kuruyoruz, sonra bağlantı aracılığıyla veritabanı seçiyoruz ve sonrasında işlemlerimizi yapıyoruz. Burada bağlantı aslında bize erişim haklarını sağlıyor; ama sanırım şu an erişim hakları konumuz dışında kalıyor.
Bence Database sınıfı sadece veri yapısını karşılamamalı, ona kendi kişiliğini vermeliyiz. Mesela bir veritabanına ekleme yapabiliyorsak, bunu Database sınıfı karşılamalı. InOut sınıfı içerisinde Database sınıfından bir nesne içerebilir ve giriş-çıkışın kontrolünü yaptıktan sonra(Hatta bir Database dizisi içerirse aynı anda çok veritabanı ile çalışma, ilgili veritabanının seçilmesi ve işlemlerin seçili veritabanı üzerinde yapılması gibi işlemleri de yapabilir.) Database sınıfının işlevlerini kullanarak giriş-çıkış işlemlerini tamamlayabilir. Örnek olarak şu anda veritabanının kurulması işlemini InOut sınıfı yapıyor; ama bu işlemler veritabanı sınıfında gerçeklenirse daha rahat olabilir.
Burada ben nasıl tasarlayacağımı sesli düşündüm.:) Sen de şu an aklından geçen tasarımı yazarsan burada tartışabiliriz. Önce tasarımı halledersek kodlamada daha rahat oluruz.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 12, 2012

Alıntı:

>

Neyse benden bu kadar daha önce söyledigim gibi bu benim yaklaşımım kötü, eksik veya yanlış olabilir. Son kararı verecek olan proje lideri olarak sensin ;) umarım yardımcı olabilmişimdir.

tabiki yardımcı oldunuz çok teşekkür ederim

Alıntı:

>

db["tabl1"] = new Tablo(); // opIndexAssign yüklemesi

opIndexAssing i yüklerken ["tabl1"] in içindeki string i nereye koyucağız geçiçi bir değişkene mi temp gibi ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 12, 2012

db'nin tanımlanmadan kullanılması sorun oluyor olabilir mi?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 12, 2012

Hatayı buraya yapıştırırsan kaynağını anlayabiliriz.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 12, 2012

Tam olarak anlamadım geçici bir değişken mi dedim ama bir örnek verebilir misin

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 12, 2012

Hmm yani bir kez seçilmeli ve değiştirilinceye kadar aynı tabloda işlem yapılmalı

Bu arada InOut sınıfını kaldırsam daha mantıklı olur mu

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 12, 2012

SubTable dönüş türünü tanıyamıyor. SubTable sınıfının tanımını Database'den önceye alıp dener misin?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]