Ana içeriğe atla

Kayıtlar

Ocak, 2010 tarihine ait yayınlar gösteriliyor

Tasarım Desenleri : Abstract Factory

Bu desen Factory Method desenine çok benzer. Amaç yine aynıdır. Sistemden nesnelerin oluşma işini soyutlar. Abstract Factory benzer özellikleri olan nesne fabrikalarını gruplar. İçinde birden fazla fabrika vardır. Örneğimizde birden fazla türde database'de kaydetme ve sorgulama işlemlerini gruplamak için soyut fabrikayı kullanıyoruz : Kısaca kodlarına da bakalım : Önce ürünlerimizin gerçek ve soyut sınıflarını yazıyoruz. Kaydetme.cs interface Kaydetme { void kaydet(string cumle); } SQLBaglanti.cs class SQLBaglanti:Kaydetme { public void kaydet(string cumle) { MessageBox.Show("sql'e kaydedildi"); } } AccessBaglanti.cs class AccessBaglanti:Kaydetme { public void kaydet(string cumle) { MessageBox.Show("access'e kaydedildi"); } } Komut.cs interface Komut { void sorgula(string query); } SQLSorgu.cs class SQLSorgu:Komut { public void sorgula(string query) { MessageBox.Show("sql'de sorgu oluştu"); } } AccessSorgu.cs class AccessSorgu:Komut { publ

Tasarım Desenleri : Factory Method

Bu tasarım deseni nesne oluşturma işini sistemden ayırır ve aldığı parametreye göre nesneleri oluşturarak kullanıcıya geri döner. Bir örnek verecek olursak düşünün ki gezmeye giderken farklı yöntemleriniz olsun. Ben şimdilik iki tane kullanacağım : Araba ve Bisiklet. Bu iki sınıf "Yöntem" arayüzümüzden türemişler. Bir adet de YöntemFabrika'mız var. Yöntem.cs interface Yöntem { void Gez(); } Araba.cs class Araba : Yöntem { public void Gez() { MessageBox.Show("arabayla geziyorum"); } } Bisiklet.cs class Bisiklet : Yöntem { public void Gez() { MessageBox.Show("bisikletle geziyorum"); } } YöntemFabrikası.cs class YöntemFabrikası { public Yöntem yöntemYarat(string opt) { if (opt == "arabayla") return new Araba(); else if(opt=="bisikletle") return new Bisiklet(); return new Araba();//if'lere

Tasarım Desenleri : Singleton

Türkçe'ye Tek Nesne olarak çevrilen bu tasarım desenindeki ana amaç bir nesnenin yalnızca bir kez oluşturulabilmesidir. Buna neden ihtiyaç duyarız sorusuna gelince mesela bir bağlantıyı dinleyen nesneniz olsun. Bunu ikince kez yaratmak kimi zaman sorunlara yol açabilir. Sonuçta bunlar sonsuz threadlerdir. Onun yerine bu nesne bir kez yaratılsın ve ihtiyaç duyulduğu zaman daha önce oluşan nesne oraya gitsin ve işlerini halletsin isteriz. Basit bir örnek verelim : class RandomSayıVerici { private RandomSayıVerici() { } private static Random r = new Random(); public static Random nesneAl() { return r; } public static int sayiVer(int min, int max) { return r.Next(min, max); } public static int sayiVer(int max) { return r.Next(max); } public static int sayiVer() { return r.Next(); } } Şimdi biz bu örnekte bir adet RandomSayiVerici ol

Windows 7 Godmode

Hani oyunlarda şifreler olur ya bu da windows'un enteresan ve kullanışlı bir şifresi diyebiliriz. Yazdığınızda bütün ayarların tek bir elde toplanması bayağı bir işe yarıyor. Şİmdi bir klasör oluşturun ve adını : GodMode.{ED7BA470-8E54-465E-825C-99712043E01C} koyun. Göreceksiniz ki simgesi değişecek. İçine girdiğinizde ise normal yollardan bulunması çok zor olan bir çok ayar artık elinizin altında.

MasterPage kavramı

Düşünün ki 100'lerce sayfadan oluşan bir siteniz var ve hepsinde belli yerler sabit. Örnek verecek olursak menüler genelde sabit olur ya da en altta yer alan açıklamalar vs. gibi. Bunların içinde bir yerde değişiklik yapmanız gerektiğinde hepsini tekrar düzenlemeniz gerekiyordu önceleri. Fakat masterpage kavramının gelmesiyle bu sorun ortadan kalktı. Artık sabit olan tarafları masterpage içinde yaratıp normal içerik sayfaları bu masterpage'i kullanarak türeyebiliyor. Sanki yeni gibi anlatıyorum ama bu çıkalı bayağı bir oluyor :) hemen küçük bir örnekle konumuzu özetleyelim : MasterPage.master Burada göreceksiniz ki html sayfasında olması gereken ana tag'ler var. Çünkü buradan türeyen sayfalar body taginin içinde yer alan contentpalceholder içine gömülürler serverde işlenirken. Defalut1.aspx Hemen solutionExplorer'dan oluşturduğumuz masterpage'e sağ tıklayıp "add content page" diyoruz.Türeyen sayfada hiçbir html tagi bulunmuyor çünkü onlar zaten masterpag

Excel'den Veri Okuma

Programlamaya yeni başlayanların "ya bu veri tabanları tamam da excel ne ayak?" dedikleri çok olmuştur. Aslında hiç bir farkı yok :) biraz connectionString değişiyor biraz da sorgu cümlesi. Hatta sorgu cümlesinde neredeyse hiç fark yok :) Hadi gelin birlikte bakalım : DataTable getirTumATSTablo() { string dosya_adres=@"C:\Deneme.xls"; OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dosya_adres + ";Extended Properties=Excel 8.0"); baglanti.Open(); string query = "select * from [Tablo1$A2:F450] "; OleDbDataAdapter oAdp = new OleDbDataAdapter(query, baglanti); DataTable dt = new DataTable(); oAdp.Fill(dt); return dt; } Şimdi bizim excel'imizin ilk sayfasının adı Tablo1 olsun ve bu sayfada A2 den F450'ye kadar verilerimizin olduğunu düşünelim. Yani ilk ik

Java Swing

Kısaca bir bakalım neymiş bu "swing" kütüphanesi. Aslında windowsform'larda sıkça karşılaştığımız button, label vs. gibi objeleri barındıran bir kütüphanedir. Biraz da kodlayalım bakalım : //Gerekli kütüphaneleri ekliyoruz import java.awt.EventQueue ; import java.awt.FlowLayout ; import javax.swing.JButton ; import javax.swing.JFrame ; import javax.swing.JLabel ; import javax.swing.WindowConstants ; public class SwingExample { public static void main ( String [ ] args ) { EventQueue . invokeLater ( new Runnable ( ) { @Override public void run ( ) { //Penceremizi oluşturuyoruz JFrame f = new JFrame ( "swing örnek" ) ; // nesnelerimizin nasıl duracağını belirliyoruz f. setLayout ( new FlowLayout ( ) ) ; //Bir kaç nesne ekliyoruz f. add ( new JLabel ( "http://volkanalbayrak.blogspot.com/" )

Windows DLL'leri ile Pencere Kontrolü

Hemen hızlı bir giriş yapalım değil mi :) Şimdi asıl olay şu yaptığımız bir programdan diğer açık olan program pencerelerini nasıl kontrol ederiz? Tabiki user32 DLL'i ile :) [DllImport("user32.dll")] public static extern int FindWindow( string lpClassName, // class name string lpWindowName // window name ); Bu fonksiyon bizim açık olan programı buluyor ve bize onun Windows altındaki ID'sini veriyor. Tabiki "windows name" parametresine programın tam adının yazılması gerekli. [DllImport("user32.dll")] public static extern int SetForegroundWindow( int hWnd // handle to window ); Burası ise biraz önceki ID değerini alarak, bu ID'ye sahip olan pencereyi ön tarafa getiriyor. [DllImport("user32.dll")] public static extern int SendMessage( int hWnd, // handle to destination window uint Msg, // message int wParam, // fir

Merhaba

Uzun bir aradan sonra tekrar merhaba demek istedim. Bir takım işlerle uğraştığımdan bloğumla çok fazla ilgilenemez olmuştum ama artık nacizane örneklerle tekrar karşınızda olacağım. Hepinize iyi çalışmalar..