Forum: Ders Arası RSS
Yanlışım Nerede
Sayfa:  önceki  1  2  3  4  sonraki 
Avatar
huseyin #16
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 6625
Benim şuanda kafamda bir fikir yok ama Her  sınıfın ayrı işlevi olacağı bir kesin yoksa kod yazmak çok zorlaşıyor
Huseyin
zafer #17
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
huseyin325325:
Her  sınıfın ayrı işlevi olacağı bir kesin yoksa kod yazmak çok zorlaşıyor

Her sınıfı kendi içinde çalışan, mümkün oldugunca bağımsız birimler şeklinde tasarlamak bence kesinlikle çok güzel bir yaklaşım.

Aslında proje için aklındaki sınıfları kabaca bir taslak halinde hazırlayıp burada paylaşsan ve üzerinde tartışsak belki kodlama aşamasında çok daha hızlı ve keyifli bir süreç yaşayabilirsin. Benim ki sadece bir tavsiye tabi sen nasıl istersen öyle yapabilirsin ;)
https://github.com/zafer06 - depo
Avatar
huseyin #18
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Benima aklımdada şuan bir tasarım yok ama sizin aklınıza gelen tasarımlar varsa benim aklımda bir tasarımın gelişmesine yardımcı olabilir
Huseyin
zafer #19
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
huseyin325325:
sizin aklınıza gelen tasarımlar varsa

Bizim tasarımlarımız bizim kişisel fikirlerimizi ve seçimlerimizi yansıtır. Proje lideri olarak ana tasarım sana ait olmalı, bizler ancak kişisel fikirlerimizle sana tavsiyede bulunup yön gösterebiliriz. Ancak sen, bu önerileri değerlendirip doğru bir şekilde projeye aktarabilirsin. Aksi taktirde herkesin kendine göre bir fikri olabilir ve bu projenin sürekli farklı yönlere çekilmesine neden olabilir. Örnegin ben olsam NoSql yaklaşımına uygun bir çalışma yapmak isterken bir başkası ilişkisel veritabanı tarzında bir proje geliştirmek isteyebilir.

Çok konuştum kusura bakma umarım yardımcı olabilmişimdir.
https://github.com/zafer06 - depo
Avatar
huseyin #20
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Evet yardımcı oldunuz gerçekten tasarımı benim düzenlemem gerekli ama şekil yönündende sizden biraz yardım istiyorum mesela
Database db = new Database
 
db.open("aaa.vt"); // yada "aaa" olur .vt otomatik eklenir 
 
db.add("tabl1","key1","mydata");
db.del("tabl1","key1","mydata"); // del yada remove olabilir aklımda bunula ilgili 2 şey var birincisi //parametreye(bir parametre alınca tablo 2. parametre varsa anahtar vb.) göre ikincisi ayrı 
//fonksiyonlar(tdel,kdelvb.) sizce nasıl olsa daha iyi olur ? 
db.save();
db.close();
Huseyin
acehreli (Moderatör) #21
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ı
İsim Database nesnesinin ayrılmaz bir parçasıdır (mı?). O yüzden kurulum aşamasında verilmeli:

Database db = new Database("aaa");

Yukarıdaki adım Database'i açabilir de açmayabilir de. Ama ya "aaa" yoksa? Yukarıdaki satır otomatik olarak oluştursun mu yoksa oluşturmak için farklı bir işlev mi olsun?

Database db = yeniDatabase("bbb");

Ondan sonra open() tek başına olabilir:

db.open();

huseyin325325:
db.add("tabl1","key1","mydata");
db.del("tabl1","key1","mydata");

O çok kırılgan görünüyor. Kod içinde her yerde dizgiler kullanmak gerekmemeli. Şu nasıl olur?

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

Daha sonra:

Tablo t = db["tabl1"]; // opIndex yüklemesi
// bu noktadan sonra "tabl1" yazmaya gerek yok:
t["key1"] = "mydata";
t.del("key1");

Kullanımın eşleme tablolarına çok benzediğinin farkındayım ama yalın eşleme tabloları olmak zorunda değiller tabii. Yüklediğin işleçler içinde istediğin denetimleri ve yan işlemleri yapabilirsin.

Bunlar fikir istediğin için. :) Yoksa db.add("tabl1","key1","mydata") gibi de olur ama bana kullanımı daha zor olacak gibi geliyor.

Ali
zafer #22
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #20
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.
https://github.com/zafer06 - depo
Avatar
huseyin #23
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
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


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 ?
Huseyin
Kadir Can #24
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
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ı.
Avatar
huseyin #25
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Tam olarak anlamadım geçici bir değişken mi dedim ama bir örnek verebilir misin
Huseyin
Kadir Can #26
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
class BirSınıf
{
    Table[string] tablolar;
    Table opIndexAssign(Table tablo, string isim)
    {
        return tablolar[isim] = tablo;
    }
}
gibi olmalı.
Bu mesaj Kadir Can tarafından değiştirildi; zaman: 2012-07-12, 15:58.
Avatar
huseyin #27
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
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
Huseyin
Kadir Can #28
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ş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.
Avatar
huseyin #29
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Benim aklımdaki tasarım tam olarak olmasada Ali Hocanın kine çok yakın kod a bir bakar mısın benim işleç yüklemem iyi değil de hata alıyorum kesin yanlış yaptım

module vt;
import std.path;
import std.datetime;
import std.process;
import std.stream; 
import std.conv;
import std.string;
import std.file;
import std.cstream;
import std.array;
import crypt; 
 
class Database
{
    Subtable opIndex(string table)
    {
        return db[table];
    }
    
    Subtable opIndexAssign(Subtable table,string name)
    {
        return db[name]=table;
    }
    
    Subtable [string] db;
    string dbname;
    
    
    
    
    
    void open()
    {
        Data data = new Data;
        Subtable subtable = new Subtable;
        scope File myfile = new File(dbname,FileMode.In);
        
        string currenttable;
        string currentkey;
        string[] currentdatas;
        while(myfile.available)
        {
            char[] line_c = myfile.readLine();
            string line_s = to!(string)(line_c);
            if(line_c[0..2]=="|;")
            {
                currenttable=replace(line_s,"|;","");
            }
            else if(line_c[0..2]=="*;")
            {
                currentkey=replace(line_s,"*;","");
            }
            else
            {
                data.datas~=line_s;
                subtable.subtables[currentkey]=data;
                this.db[currenttable]=subtable;
            }
        }
        
        
}//end of class
 
class Subtable
{
    Data [string] subtables;
}//end of class
 
class Data
{
    string[] datas;
}//end of class
 
 
    
 
    
}//end of class 
Huseyin
Kadir Can #30
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
db'nin tanımlanmadan kullanılması sorun oluyor olabilir mi?
Bu mesaj Kadir Can tarafından değiştirildi; zaman: 2012-07-12, 15:30.
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  sonraki 
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-18, 00:35:27 (UTC -08:00)