Memik Yanık - Kişisel Web Sitesi Ana Sayfa | Hakkımda | Kitap Önerileri | Fotoğraflarım | RSS RSS | İletişim

Kitaplarım

C#'a Başlangıç Kitabının Genişletilmiş 2. Edisyonu Hazır


Bildiğiniz gibi C# ve programcılığa henüz başlayanlar için şimdiye kadar toplam 7 makale hazırlayıp burada yayınladım. Sonra bu makaleleri bir PFD'de bir araya getirdim. Aradan geçen 6 aylık sürede gelen talepler doğrultusunda PDF'yi elden geçirip eklemeler yaptım. Bu PDF'nin yeni halini buradan indirebilirsiniz. Bu PDF'nin önsözü aşağıdadır.


                                                                        Önsöz

Son yazdığım C# kitabımda başlangıç düzeyi konuların ağırlığını azaltmayı tercih ettiğim için C# konusunda henüz yolun başında olanlar zorluk çekmesin diye birkaç makale hazırlayıp kişisel sitemde yayınladım. Sonra bu makaleleri elden geçirip e-book haline getirdim. E-book’larda sayfa sınırlaması olmadığı için metni az sayfaya sığdırma gibi bir kaygım olmadı. Başka bir deyişle bu e-book’u yakın zamanda yayınlanan C# 3.0 kitabıma yardımcı veya hazırlayıcı bir kitap olarak değerlendirmek mümkündür. 

Bu e-book’u inceleyenlerin fark edeceklerini sandığım bir diğer konu ise C# gibi bir programlama dilinin nasıl kolay anlatıldığını görmeleri olacaktır. Başka bir deyişle bu metin için rahatlıkla “dünyanın e kolay okunan C# kitabı” denilebilir. Yıllardır Memik Yanık’ı hep başlangıç düzeyi kitaplar yazmakla suçlayanlar bakalım bu e-book’u gördüklerinde neler söyleyecekler? 

Yıllardır kendisini bilen bilmeyen birçok kişi Memik Yanık’ı çeviri yapmakla suçluyor. Memik Yanık’ın İngilizcesinin çeviri yapmaya yetmediği gerçeğini bir tarafa bırakalım ve şu soruyu sorayım: Madem Memik Yanık Türkçeye bu kadar hakim ve yazdıkları kolay okunuyor hangi akla hizmet yabancı bir yazarın kitabında çeviri yapar? Hem Memik Yanık İngilizceyi anadili gibi bilse bile hangi mantıkla kendine özel cümle kurmak yerine gidip başka bir yazarın cümlelerini alır? 

Bu e-book’ta kenar boşlukları normal basılı kitaplara göre daha azdır, fontu ise daha büyüktür. Dolayısıyla bu metni normal kitap olarak değerlendirmek istemiş olsaydım sayfa sayısı aşağı yukarı aynı olurdu. E-book’un sonunda C# 3.0 kitabım hakkında yazdığım bir yazı ve C# 3.0 kitabımdan alınma bir bölüm bulunmaktadır. 

2. Edisyon İçin Ek

Bu PDF’yi ilk yayınladığım günden bu yana aradan geçen 6 aylık süre içinde bana gelen talepler doğrultusunda bu e-book’a veritabanı işlemleri hakkında bilgi içeren bir bölüm eklemeye karar verdim. Bu amaçla oturup Temel Veritabanı İşlemleri adlı bir bölüm hazırlayıp PDF’ye ekledim ve bazı küçük değişiklikler yaptım. Bu hali ile bu E-Book programcılığa C# ile başlayanlar için daha işlevsel olmaya başladı.

Bu yazıya henüz yorum yapılmamış. | 07.07.2009 20:29:31

Visual Basic 6.0 Kitabım(*)


Yıl 1994: Clipper 5.2, dBASE IV İle Programcılık ve FoxPro 2.6 kitaplarım çıkmış ve beğenilmişti. O günlerde yazılan programların çoğunluğu DOS uyumluydu. FoxPro 2.6 Windows 3.1 için hazırlandığı için kitapta pencere ve diyalog kutusu gibi Windows’un bazı özelliklerinden söz etmek gerekiyordu. Başka bir deyişle FoxPro 2.6 ile uğraştığım dönemde Windows programcılığını anlatma konusunda tecrübe kazanmıştım. Aslında arka arkaya yazdığım 3 programcılık kitabı bir birine benzeyen kitaplardır. Çünkü her üçü de xBASE dilleriydiler ve her üçü de DBF veritabanını kullanıyordu. Daha doğrusu Clipper programlama dili dBASE kodlarını EXE yapabilen bir derleyiciydi ve editörü bile yoktu. Buna rağmen nasıl ki bir dönem Delphi yaygın bir şekilde kullanıldıysa 90’lı yıllarda Clipper çok yaygındı ve Clipper için geliştirilmiş binlerce Library vardı. Yakın bir zamanda evde biriken Clipper konulu dergileri atmak zorunda kalmıştım.



FoxPro 2.6 kitabını bitirdiğim günlerde Visual Basic fırtınası esmeye başlamıştı. Piyasada Microsoft Press’ten çıkmış 300 sayfalık girişi düzeyi bir Türkçe vardı. Bu kitabı edinip inceleyip düzeyinin başlangıç oluğunu tespit ettikten sonra hemen çalışmaya başladım. O günün şartlarında Visul Basic 3 kitabım öncü bir kitaptı, beğenilip okurlardan ilgi görmüştü. 

Visual Basic 3 kitabını yazarken en çok veritabanı özelliklerini anlatırken zorlanmıştım. Çünkü neredeyse hiç kaynak yoktu. Haftalar süren çalışmalar sonucu kod yazarak MDB-Access veritabanı hazırlamayı başarmıştım. Sonrasında Visual Basic 3 kitabımdan yola çıkıp Visual Basic 4 kitabımı hazırlamıştım. Visual Basic 4 kitabımın yayınlandığı dönemde rakip kitaplar boy göstermişti. Ne ki hiçbir Visual Basic kitabı benim kitap kadar ilgi görmüyordu. Sonrasında Visual Basic 5 ve en son olarak 1999 yılında Visual Basic 6 kitabım yayınlanmıştı. Visual Basic 6 kitabım Beta yayınevinden 4 baskı yaptıktan sonra 2005 yılı başlarında bu kitabı yeniden yazıp 2 cilt halinde düzenledim. 

1999’dan 2005’e gelene kadar aradan geçen 6 yılda okurların Visual Basic 6 kitabından beklentileri arttığı için kitaptaki bazı konuları çıkarırken çok sayıda yeni konu ekledim. Kitap 2 cilt halinde düzenlendiği için sayfa sayısı artmış ve kitabın düzeyi yükselmişti. Şu sıralarda Seçkin Yayıncılıktan çıkan 2 ciltlik Visual Basic 6 kitabımın piyasadaki en kapsamlı ve en kolay okunan kitap olduğunu rahatlıkla söyleyebilirim. 

Visual Basic 3 kitabımı yazdığım günlerde fakülte ve yüksek okullarda Visual Basic dersleri çok ender veriliyordu. Zamanla potansiyel okurların arasında öğrencilerin oranı artmaya aşladığı için Visual Basic 6 kitabımın son halinde yapılan değişikliklerde temelde öğrencilere de hitap etme kaygısı vardı. Bu düşünce ile örnek sayısını arttırdım. 

Her ne kadar Visual Basic 6 Object Oriented bir dil olmasa bile nesneye yönelik özellikleri ağırlıktadır. Visual Basic 6 kitabımım 2005 yılından önceki basımlarında olaya Object Oriented penceresinden bakmamış ve Class’lar hakkında bilgi vermemiştim. Günümüzde okurların OOP kavramlarına aşina olduklarını varsayıp Class’lar hakkında bilgi verip çoğunlukla konulara OOP penceresinden baktım. Bu düşünce ile daha önce söz edilmeyen koleksiyonlar ve Dictionary gibi sınıflar hakkında bilgi verildi. 

Son yıllarda SQL Server veritabanlarının kullanımı yaygınlaştığı için SQL Server veritabanlarının Visual Basic 6 uygulamaları dahilinde nasıl kullanıldığı konusunda bilgi verildi. Visual Basic 3 kitabımı yazdığım sırada bilgisayarlaşma bu kadar yaygın olmadığı için bilgisayarlar arası haberleşme o kadar öncelikli konu değildi. Bu nedenle Visual Basic 5 ve önceki sürümleri anlatan kitaplarımda socketler hakkında bilgi yoktu. Başka bir deyişle Seçkin yayıncılıktan çıkan ve 2 cilt olarak düzenlediğim Visual Basic 6 kitabım 2005 yılının şartlarına göre düzenlediğim için apayrı bir kitap oldu. 

Yakın bir zamanda Visual Basic 6 kitabımın 1.cildi tekrar basılacak. Bu baskıda kitabı yeniden elden geçireceğim. Bu elden geçirme sırasında sayfalara daha fazla bilgi yerleştirmeye çalışacağım. Bu amaçla kolay ve hızlı okumaya atkısı olan bazı cümleleri ve ekran görüntüleri  çıkaracağım. Bunu yaparken dikkat ettiğim şudur: Bazı ekran görüntülerini kitaptan çıkarsam bile ilk okumada anlaşılma kaygımdan uzaklaşmış değilim. Şunu rahatlıkla söyleyebilirim: Visual Basic 6 kitabım en çok okunan, en kolay okunan ve en çok bilgi içeren kitaptır. Ayrıca Visual Basic 6 kitabım bir bakıma en eski Visual Basic kitabıdır. Çünkü bu kitap 1995 yılında yazılmış Visual Basic 3 kitabımın üzerine temellenmiş bir kitaptır. 
 

Kitabın Önsözü

2 cilt halinde düzenlediğim bu kitabı kaleme alırken yüksek öğretim kurumlarında verilen “Visual Basic I“ ve “Visual Basic II” derslerinin müfredatını göz önüne aldığımı ve müfredattaki bütün konuları bu kitapta yeteri ayrıntıda anlattığımı belirtmek istiyorum. Bu kitabın ilk cildinde başlangıç düzeyi konular ağırlıkta olsa bile anlatılan her konu bütün yönleri ile ele alındı.
Bu kitapta konuları sıralarken yüksek öğretim kurumlarının müfredatına bire bir uyamadım ama müfredattaki bütün konulara yer verdim. Başka bir deyişle, bu kitapta herhangi bir yüksek öğrenim kurumunda verilen Visual Basic derslerinde ne anlatılıyorsa o konular bu kitapta mutlaka bulunmaktadır. Ancak bu kitaptan Visual Basic ile ilgilenen herkes yararlanabilir. Çünkü yüksek öğretim kurumlarında verilen Visual Basic derslerinin kapsamı oldukça geniştir. Bu kitabın yüksek öğretim müfredatına uygun olmasını gözetmemiş olsaydım kitabı tek cilt olarak düzenler ve birkaç konunun yerini değiştirmekle yetinirdim.

Müfredattaki her konunun sınavda çıkacak sorular açısından belli bir ağırlığı bulunmaktadır. Ancak konulara ayrılan sayfa sayısında bu ağırlığa uymak mümkün olmadı. Örneğin sınavda çıkan sorular bakımından 2. ciltte bulunan ActiveX ile veritabanı konuları aynı ağırlığa sahiptir. Ancak bu 2 konuyu yeteri ayrıntıda anlatmak için ayrılması gereken sayfa sayısı birbirinden oldukça farklıdır. Bu nedenle konulara ayrılacak sayfa sayısı tespit edilirken, sınavda çıkacak soruların ağırlığı yerine konunun anlaşılması için ne kadar sayfa ayırmak gerekiyorsa o kadar sayfa ayrıldı.


Bazı okurlar kitaplarımın anlatım düzeyinin düşüklüğünden şikayet ediyorlar. İzninizle bu konudaki görüşlerimi burada açıklamak istiyorum. Bugüne kadar programcılık konusunda yazdığım bütün kitaplar başlangıç ve orta düzeyi mutlaka içeriyordu. Bazı kitaplarımda ise ileri düzey olarak değerlendirilen birkaç konu olmakla birlikte yalnızca ileri düzey konuları içeren kitaplar yazmayı denemedim. Başlangıç düzeyini içeren bir kitapta, ileri düzey olarak değerlendirilen bütün konuları yeteri ayrıntıda anlatmak ancak kalınca kitap yazmakla mümkün olabilmektedir. Tabii ki hangi konunun başlangıç, hangi konunun orta, hangi konunun ileri düzey olarak değerlendirileceği tartışma konusudur.


Bu kitapta yine başlangıç düzeyi var. Ancak bu kez başlangıç düzeyi olarak değerlendirilecek konuların ağırlığı daha azdır. Ayrıca bu kitapta ileri düzey sayılan çok sayıda konuya yer verdim. Örneğin DLL ve OCX dosyası hazırlama konuları ayrıntılı olarak incelenmemiş olsa bile bu kitapta verilen bilgilerin ışığında kolayca DLL ve OCX dosyaları hazırlanabilir.
 

Bu kitapta veritabanları hakkında bilgi içeren çok sayıda konu olmasına rağmen veritabanları ile ilgili bazı ayrıntılara yer veremedim. Örneğin bu kitapta SQL Server veritabanları ve Stored Procedure’ler hakkında bilgi bulunmasına rağmen Transaction’lar hakkında bilgi veremedim. Benzer şekilde bu kitapta az sayıda API fonksiyonu hakkında bilgi verebildim. Çünkü bütün Api fonksiyonları hakkında bilgi verebilmek için ayrı bir kitap yazmak gerekmektedir. Buna rağmen bu kitapta yaygın olarak kullanılan çok sayıda Api fonksiyonu hakkında bilgi bulunmaktadır. Bazı eksikliklerine rağmen bu kitabın şimdiye kadar Türkçe yayınlanmış en kapsamlı ve en fazla bilgi içeren Visual Basic kitabı olduğunu rahatlıkla söyleyebilirdim. Bu kitap hakkındaki görüş, öneri, eleştiri ve sorularınızı memiky@superonline.com’a yazabilirsiniz. Bu kitabı www.seckin.com.tr 'den veya hepsiburada.com'dan edinebilirsiniz.

 

Visual Basic 6.0 Kitabı Cilt 2’nin İçeriği

 Bu kitabın 2. cildinde bulunan bazı bölümleri aşağıda listeledik. Nesneye yönelik programcılık, veritabanları, Internet programcılığı vs. konuları ile  ilgilenmiyorsanız bu kitabın 2. cildini edinmeyebilirsiniz. Ancak bu durumda Visual Basic’in birçok özelliğinden uzak kalabilirsiniz. 

  • Örneklerle Cilt 1 konularının Tekrarı

  • Class Hazırlamak ve Kullanmak

  • Veritabanı Hazırlamak – Vısual Data Manager

  • Data Kontrolü – Veritabanları Üzerinde İşlem Yapmak

  • Dao Object Lıbrary İle Veritabanı İşlemleri

  • ODBC Sürücülerini Kullanmak

  • DBgrid ve DBlist Kontrolleri

  • SQL Server Veritabanları ve SQL Sorgulama Dili

  • Query – Sorgu Hazırlamak ve Kullanmak

  • Recordset Nesnesi

  • Ado Data Kontrolü

  • Data Form Wizard

  • Kod Yazarak Connection ve Command Nesnesi Hazırlamak

  • Data Environment

  • Dataview Penceresi ve Datagrıd Kontrolü

  • Stored Procedure’leri Kullanmak

  • Data Report İle Rapor Hazırlamak

  • Ole Kontrolü – Nesne Bağlama ve Katma

  • Clipboard, App ve Screen Nesneleri

  • Collection ve Dictionary Sınıfı

  • Exe Dosya ve  Kurma Disketi Hazırlamak

  • Api Fonksiyonları

  • Stack Sınıfı Hazırlamak ve Kullanmak

  • Word ve Excel’den Yararlanmak

  • Actıvex Kontrolleri Hazırlamak ve Kullanmak

  • DLL Dosyaları ve Activex Exe Projeleri

  • DHTML Projeleri ve Script Kontrolü

  • Webbrowser ve Inet Kontrolü

  • WinSock Kontrolü

  • Örneklerle Konuların Tekrarı

* Bu metni yaklaşık 2 yıl önce kaleme aldım.

Bu yazıya henüz yorum yapılmamış. | 15.05.2009 05:13:03

C# 3.0 Kitabım Hakkında(*)


Aslında bu kitap üzerine konuşmadan önce yayınlanmış başka C# kitaplarını incelemiş olsaydım bu kitabın farkını daha rahat ortaya koyabilirdim. Ne ki i, j, şayi1, sayi2 gibi değişkenleri çalmakla suçlanıp dava edildiğim günden bu yana Türk yazarlar tarafından kaleme alınmış kitaplara mümkün mertebe bakmıyorum. Tabi bazılarınız hemen beni uyaracaklardır: Türk yazarlar tarafından kaleme alınmış kitapları incelemeden "değişken adı benzerliği" kabahatinden kendini nasıl korursun? Valla keçeyi bir kez suya attık ve değişken çalmakla hakim karşısına çıktığıma göre cesur olmaktan başka çare yok. Eklemem gerek: Değişken çalmakla suçlanmama neden olan sizlersiniz. Eğer beni dava eden ve şahane kitaplar yazan  saygıdeğer yazarların programcılık kitaplarını üçer beşer adet satın alsaydınız şu anda mahkemelerde sürünmezdim. Size önerim Memik Yanık'ın hepsiburada.com'dan veya kitapyurdu.com'da bulacağınız kitabı yerine Memik Yanık'ı değişken çalmakla suçlayıp dava eden yazarların şahane C# kitaplarını en azından birer adet almanızdır.

Biliyorsunuz C# 3.0 kitabım biraz gecikme ile bir süre önce yayınlandı. Bilmeyenler için hatırlatmak gerekirse gecikme nedeni kitapta değişken adı tadilatına(!) gitmiş olmamdır. Madem kitapta verdiğim kısa kısa kodlarda değişken adı ve nesne adı benzerliği kabahatini işlememek için kitabı yeni baştan düzenlemek gerekti. Ben de kitaba birkaç yeni bölüm ekleyip bazı konulara ayrılan sayfaların sayısını azalttım. Bununla da yetinmedim; şartları zorlayıp kenar boşluklarını azaltıp kitapta daha çok konuya yer vermeye çalıştım. C# 3.0 üzerine yazdığım bu kitabın nasıl bir kitap olduğunu, nasıl bir anlatım biçimine sahip olduğunu merak edenler bu kitaptan alıp kişisen web sitemde
daha önceyayınladığım Hata Yakalamak ve Exception Sınıfları ile C# Uygulamalarında Word’den Yararlanmak adlı makalelerime bakabilirler. Tabii C# konusunda henüz yolun başında olanların bu makalelere bakıp kitap hakkında değerlendirme yapmaları zor olacağı için kitap hakkında biraz konuşacağım. 



Meraklılara önerim şudur: Bütün web sitelerini gezin, sizde veya arkadaşlarınızdaki bütün C# konulu kitapları elinize alın ve C# uygulamaları dahilinde Word'den nasıl yararlanıldığını anlatan metinlere bir bakın. Sonra da yukarıda verdiğim linkte bu kitabın ilgili bölümüne şöyle bir göz gezdirin. Memik Yanık'ın anlatımında bir fark göremiyorsanız "Ne de olsa bu adam i, j, sayi1, sayi2, deger gibi değişkenleri çalmış birisi" deyip bu kitaptan uzak durun. Kitabın bir bölümüne bakıp değerlendirme yapmak yanıltıcı olabilir diyorsanız bir de Hata Yakalamak ve Exception Sınıfları adlı bölüme bakın. Yok hayır İngilizcesi yeterli olmayan Memik Yanık çeviri yapmıştır diyorsanız şu linkteki Programcılar İçin Yazarlık Dersleri adlı e-book'u biraz inceleyin derim. Bu e-book'tan bilgisayar ve programcılık üzerine yazmayı düşünen arkadaşlarınıza söz etmeyi unutmayın.

Bu kitabı yazarken ağırlıklı olarak Visual Studio kullanmış olsam bile Visual Studio yerine C# için hazırlanmış olan Express Edition kullananlar herhangi bir zorluk çekmezler. Ötesi bazı yüksek okullarda verilen C# derslerinde başlangıçta konsol uygulamaları tercih ediliyor. Bu nedenle bazı arkadaşlarımız gidip C# anlatılırken yalnızca konsol uygulamalarının kullanıldığı kitapları tercih ediyorlar. En başta belirtmeliyim ki bu kitapta konsol uygulamaları hakkında yeterince bilgi var.

En kapsamlı Türkçe C# kitabı iddiası ile hazırladığım bu kitapta bazı konularda ayrıntıya giremedim. Örneğin Generic sınıfları kabul edilebilir bir ayrıntıda anlatabilmem için kitaba en az 50 sayfa daha eklemem gerekirdi. Kitapta giriş düzeyinde bilgi verilen bir diğer konu LINQ teknolojisidir. Yurtdışında yalnızca LINQ hakkında bilgi içeren çok sayıda kitabın yayınlandığını söylersem ne demek istediğim sanırım anlaşılır. Kısaca anlatmak gerekirse; C# öğrenmeye bu kitapla başlayanları veya C# konusunda kendini geliştirmek isteyenleri temelden alarak C# ve .NET programcılığı uzmanlık düzeyine çıkarmayı hedefledim. 

Bu kitabın farkı nedir diye soracaklara vereceğim cevap şudur: Bu kitapta bütün konular ilk okumada anlaşılacak yalınlıktadır. Hayır hayır bu yalınlık yalnızca değişken tanımlama, Integer bilgiyi String bilgiye dönüştürmenin nasıl anlatıldığı sayfalarla sınırlı değildir. Örneğin bu kitapta Windows Mesajları adlı bölümde anlatılanlar da ilk okumada anlaşılacak yalınlıktadır. Benzer şeyler Garbage Collector hakkında yazılanlar için de geçerlidir. Kolay okunmanın, hemen anlaşılmanın formülü nedir diye merak edenler Yazarlık Dersleri adını verip sizlerle paylaştığım e-book’a bakabilirler.

Bu kitabı edinmek isteyenler seckin.com.tr'den, hepsiburada.com'dan veya kitapyurdu.com'dan talep edebilirler. Bu kitabın fiyatı hakkında değerlendirme yapmak isteyelere kitabın fiyatını toplam sayfa sayısına bölüp sayfa başına ne ödediklerini öğrenmelerini önermek isterim. Kitap fiyatları konusunda bir cümle daha : Satın aldığınız kitaba(yayınlanmasının üzerinden yıllar geçmemişse) ödediğiniz ile, kitabın kapak fiyatı arasında uçurumlar yani %30, %40 gibi farklar varsa kitabın kapak fiyatı pazarlama tatkiği olarak yüksek seçilmiştir denilebilir. Bir kitap satış sitesi kitabın kapak fiyatı üzerinde %15-20 indirim yapması son derece normaldir.
* Bu metni Aralık 2008'de kaleme aldım.

Bu yazıya henüz yorum yapılmamış. | 15.05.2009 01:19:55

Visuan Basic 9.0 Kitabım Hakkında...


Bu yazının amacı bu kitabın satışını arttırmak değildir. Bu yazının amacı olsa olsa böyle bir kitaba ihtiyacı olmayanların bu kitabı satın alıp para ve zaman kaybetmelerinin önüne geçmek olabilir. Her ne kadar bu kitap .NET 3.5 destekli Visual Basic 9.0’ı anlatmak kaygısı ile kaleme alınmış olsa bile Visual Basic 9.0 piyasaya verileli az olmadı. Bu bilgiyi şunun için yazdım: Mevcut bir işletim sisteminin veya bir programlama dilinin yeni sürümü çıktığında özellikle yurt dışında sıcağı sıcağında yeni sürümle gelen yeniliklere odaklanan kitaplar yazılıp yayınlanmaktadır. Böyle kitaplar eski sürüm hakkında bilgisi olup yeni sürümle gelen yeni özellikler hakkında hemen bilgi edinmek isteyenlere uygundur. En başta söylemeliyim ki bu kitap Visual Basic 9.0 ve .NET 3.5’la gelen yenilikleri anlatmak kaygısı ile kaleme alınan bir kitap değildir. Başka bir deyişle bu kitabın hedef okuru programcılık nedir az çok bilip Visual Basic ve nesneye yönelik programcılıkta uzman olmayı kafasına koyanlardır. Bu nedenledir ki bu kitapta konular temelden ele alınarak 1100 sayfa boyunca Visual Basic anlatıldı. Visual Basic anlatılırken .NET Framework 3.5 ile gelen Visual Basic 9.0 derleyicisi ve Visual Studio 2008 kullanıldı. Bu yazıda asıl bu kitapta Visual Basic’ı nasıl anlattım sorusuna cevap aramaya çalışacağım.



Elbette Visual Basic uygulamaları geliştirmek için kullanılan bilgisayara .NET Framework kurulup Not Defteri programı ile istenen programları yazmak mümkün olsa bile bu zahmetlidir. Bu nedenle Visual Basic veya .NET uyumlu başka bir programla diliyle uygulama geliştirmek isteyenler Visual Studio’yu veya Visual Basic için hazırlanmış Express Edition’ı kullanmayı tercih ediyorlar. Bu nedenledir ki bu kitabın başında 18 sayfa boyunca Visual Studio ile hazırlanan Visual Basic uygulamalarının temel özellikleri ve bu uygulamaların nasıl derlenip çalıştırıldığı ve nasıl debug edildiğinden kısaca söz edildi. İşte bu kitabın ilk bölümüyle ilgili olarak kitaptan alınmış bir paragraf : “Bu bölümde ileride işlenecek bazı konulara temel oluşturan birkaç ayrıntıdan söz edilmektedir. Aslında Visual Basic programlama dilinden bağımsız olarak Visual Studio hakkında yüzlerce sayfa yazılabilir. Ne var ki bu kitabın böyle amacı yoktur.” Kitabın içindekiler sayfasına bakıp “bu kitabın 18 sayfası ekran görüntüleriyle doldurulmuş” diye eleştireceklere şunu söylemek isterim: İlk bölümde Visual Studio’nun yardımıyla uygulama geliştirilirken karşılaşılan en önemli kavramlardan birisi olan Debug ve Release modlarından söz edilmektedir.

Bu kitabın Visual Basic ile Programcılığa Giriş adlı 2. bölümünde Visual Basic ve nesneye yönelik programcılık hakkında kuşbakışı bilgi verilmektedir. Bu sayede okurun Visual Basic ve nesneye yönelik programcılık hakkında temel bilgilere sahip olması hedeflendi. Bu kitabı incelemeden eleştirmeyi kafalarına koymuş olanlara şunu söylemek isterim:Memik Yanık’ın Visual Basic 9.0 kitabının 36 sayfadan meydana gelen Programcılığa Giriş adlı 2. bölümünü okuyanlar metotlarla olayları karıştırmazlar, Application sınıfının işlevinden bi haber olmazlar, formların nasıl hazırlanıp ekrana getirildiğini bilirler. Aşağıda verdiğim paragrafı kitaptan olduğu gibi buraya aldım: “Daha önce az çok kod yazmış olanlar bir sonraki bölüme şöyle bir baktıklarında bütün yazılanların bildikleri konular olduklarını sanabilirler. Sanabilirler diyorum çünkü bir sonraki bölümde Visual Basic ile program yazılırken gerek duyulan pek çok kavram hakkında teknik açıklamalar yapılmaktadır. Bu nedenle bu kitabı eline alan herkesin bir sonraki yani 2. bölümü dikkatlice okumasını öneriyorum. Tabii bu öneri kitapçıda veya herhangi bir yerde bu kitabı satın almayacakları önceden belli olup ta meraktan bu kitabı şöyle bir gözden geçirenleri veya Visual Basic hakkında yeterince bilgisi olanları kapsamıyor. Böyle bir kitaba ihtiyaçları olmayanların bir sonraki bölümde yazılanlara yabancı olmamaları normaldir. Bir sonraki bölümün gerek içerik gerekse de konuların işleyişi bakımından bütün yerli yabancı kaynaklardan ayrıldığını söyleyebilirim.” Elbette bu kitabın 2. bölümünde yazılanların bir kısmının başka kaynaklarda bulunma ihtimali yüksektir. Programcılık kitaplarında bilim yapmadığımıza göre bu kitapta anlatılan hemen her konunun başka kaynaklarda bulunması son derece normaldir. Programcılık kitaplarının arasındaki en önemli fark konuların anlatım biçimidir, hikâye etme tarzıdır.

Gelelim bu kitabın Konsol Uygulamaları adlı 2. bölümüne. Bir sonraki bölüm bir bakıma Programcılığa Giriş adlı 2. bölümün devamı gibidir. Çünkü Konsol Uygulamaları adını verdiğim 3. bölümde Visual Basic kodu yazılmak istendiği zaman “ilk” gerek duyulacak kavramlar ve en çok kullanılan .NET sınıflarını anlatmaya çalıştım. Her ne kadar konsol uygulaması geliştirip başkasına verme ihtimaliniz düşük olsa bile bir sonraki bölümde Visual Basic ile program yazmanın geri planı üzerinde biraz durulmaktadır. Tabii bununla da yetinilmeyip Konsol Uygulamaları dahilinde Windows Formlarının nasıl ekrana getirilebileceği anlatılarak referans ve namespace kavramları hakkında ön bilgi verilmeye çalışılmaktadır. Yine bazı arkadaşlar “madem Windows formuna gerek duyuyorsun da neden konsol uygulaması hazırladın?” diye sorabilirler. Bu soruyu soran arkadaşlara aşağıda verilen 2 Main() metodunu incelemelerini önermek isterim.

Sub Main()

  Dim F1 As Form1

  F1 = New Form1()

  F1.Show()

End Sub

Sub Main()

   Dim F1 As Form1 

   F1 = New Form1()

   Windows.Forms.Application.Run(F1)

End Sub

Sizce Memik Yanık konsol uygulamasının Main() metodunu bu şekilde düzenlemekle neyi hedeflemektedir? Sizce hangi kaynakta(yerli yabancı fark etmez) Form nesnesi Application sınıfından yararlanılmadan Show() metodu ile ekrana getirilmeye çalışılmıştır? Hayır hayır Memik Yanık Amerika’yı yeniden keşfetmiyor; Memik Yanık’ın burada amacı okurun dikkatini Application sınıfının işlevine çekmektir. Sizce Application sınıfı hakkında yeterince bilgi edinmemiş birisi Windows mesajlarını hakkıyla anlayabilir mi?

Gelelim bu kitabın 4. bölümde anlatılan şu Namespace kavramına. Her ne kadar bu kitabın 2. ve 3. bölümlerinde referans ve namespace’lerden söz edilmiş olsa bile .NET programcılığında henüz yolun başında olan birisi için namespace mutlaka öğrenmesi gereken kavramlardan birisidir. Tabi henüz yolun başında olan birisine namespace kavramını en başta anlatacağım deyip kafasını karıştırmamak gerekir. Bu düşünce ile namespace’ler hakkında bilgi vermeye kısıtlı bir konsol uygulaması hazırlayarak başladım. Çünkü Visual Basic derleyicisinin derleme yaparken neyin sınıf neyin namespace olduğuna karar verirken nasıl bir yöntem izlendiğinin bilinmesi gerekiyor. Bu nedenle Memik Yanık’ın kitabında derleme hakkında bilgi verirken “System.dll” ve “System.core.dll” adlı referanslardan söz etti. Namespace adlı bölümün ileri ki sayfalarında .NET Framework ile gelen namespace’lerdeki sınıfları kullanmaktan öte programcıların kendi sınıflarını nasıl namespace olarak düzenleyebileceklerinden söz edildi. Tabii ki Visual Basic konulu kitapların hemen hepsinde nasıl namespace hazırlandığından söz edilmektedir.

Memik Yanık’ın Visual Basic kitabının 5. bölümünde 36 sayfa boyunca değişkenler hakkında bilgi verilmektedir. Bazı okurlar 'değişkenlere bu kadar sayfa ayırmanın gerekçesi nedir?' diye sorabilirler. Elbette daha önce Visual Basic hakkında az çok bilgi edinmiş olanları göz önüne alırsak değişkenlere daha az sayfa ayırmak gerekirdi. Örneğin daha önce Visual Basic konulu kaynakları okumuş olanlar değişkenlerin nasıl tanımlanıp nasıl ilk değer aktarıldığını bilirler. Her ne kadar bu bölümde Nullable tiplerden, Parse() metodundan, Convert sınıfından söz edilse bile bu kitabı bu bölüm bağlamında değerlendirecek olursam şunları söyleyebilirim:Visual Basic 9.0 kitabımın bu bölüm bağlamında bir artısı varsa değişkenlerin bütün yönleri ile ele alınmış olmasıdır. Bu nedenle değişkenler konusunu bu kitaptan okuyan birisi değişkenlerle ilgili olarak başka kaynaklara bakma gereğini duymaz. Benzer şeyler bu kitabın 6. bölümü için de söylenebilir. Çünkü kitabın 6. bölümünde 18 sayfa boyunca dizi değişkenler ve Array sınıfı her yönüyle en ince ayrıntısına kadar anlatılmaktadır. Belki bu kitap Değişkenler adlı bölüm bağlamında şöyle eleştirilebilir: Bu metni biraz kesip, bazı metot ve işlemlerden söz etmeyip birkaç sayfa tasarruf edebilirdiniz. Ancak ben tercihimi dizi değişkenleri her yönüyle anlatmak yönünde yaptım. Yani istedim ki bu kitabı edinenler Visual Basic’la ilgili temel konuları öğrenirken başka kaynaklara başvurma gereğini duymasın.

Şimdi sırada bu kitapta toplam 8 sayfa yer tutan Operatörler adlı bölüm var. Tabi hemen bazı arkadaşlar 8 sayfa boyunca artı(+), eksi(-), bölme(/) vs.. operatörlerinden söz etmiş olduğumu düşünebilirler. Bu bölümde bu operatörlere kısaca değinilmiş olsa bile asıl ağırlık Kaydırma Operatörleri ile Is, IsNot ve TryCast operatörlerine verildi. Çünkü Is ve IsNot operatörleri çok sık kullanılmaktadır. Devamında 3 sayfa boyunca bit düzeyinde işlem yapılırken kullanılan operatörlerden söz edildi. Matematiksel işlemlerde kullanılan operatörler hakkında bu kitapta yazılanlar çıkarılsa bile sayfa sayısı değişmiyordu. Bit düzeyinde işlem yapılırken kullanılan operatörlerden yararlanmak son derece teknik bir işlem olmasına rağmen konular öyle hikaye edildi ki ilk okumada mutlaka anlaşılacak yalınlıktadır.

Bu kitabın Blok Kontrol adlı bölümünde 10 sayfa boyunca if, while, for, for each’ten söz edildi. Bu kitabın bu bölüm bağlamında diğer kitaplara bir artısı pek yoktur. Ancak başlangıçta zor anlaşılan for each döngüsünü daha önce duymamış kullanmamış olanlar bile ilgili sayfaları okuduklarında hemen konuya hakim olabilirler.

Bu kitabın 9. bölümünde 26 sayfa boyunca String işlemlerinden ve Math sınıfındaki metotlardan söz edilmektedir. Neden mi bu konuyu önemsedim? Çünkü kod yazılırken en çok yapılan işlemlerin başında string işlemleri gelmektedir. Elbette String ve Math sınıflarının bazı metotlarını göz ardı edip bu bölümün sayfa sayısını 22’ye düşürmek mümkündü. Bu durumda Visual Basic ile programcılıkta yeni olan okurların başka kaynaklara başvurma ihtiyacı olurdu. Açıkçası istedim ki bu kitabı her kim edinirse String ve Math sınıfının metotları konusunda eksiksiz bilgiye sahip olsun. Örneğin String sınıfının Split metodunu ayrıntılı bir şekilde anlattım. Bu kitabın 14 sayfalık 10. bölümü bir bakıma String İşlemleri adlı 9. bölümün devamı gibidir. Çünkü 10. bölümde StringBuilder sınıfından ve Düzenli İfadelerden söz edilmektedir. Tam bu noktada bu kitabın boyutlarından kısaca söz etmek istiyorum. Bu kitabın yazı alanın genişliği tam tamına 13 cm’dir. İsim vermeye gerek yok aynı genişliğe sahip(16 cm) birçok kitapta yazı alanı genişliği en fazla 11.5 cm’dir. Asıl demek istediğim şudur: Toplam 1074 sayfa olan bu kitap başka yayınevlerinin ölçüleri ile basılsaydı sayfa sayısı en az 1200 olurdu. Yani anlayacağınız bu kitabın sayfa sayısını azaltmak sürekli çaba harcadım.

11. bölümde 16 sayfa boyunca tarih ve zaman bilgileri bütün ayrıntıları ile anlatılmaktadır. Başka bir deyişle bu kitabı okuyan birisi için tarih ve zaman bilgileri üzerinde yapılan işlemler bağlamında bilmediği hiçbir ayrıntı kalmaz. Ayrıca bu bölümü okuyanlar Ticks özelliği ve TimeSpan yapısı hakkında bilgi sahibi olurlar. Bazı arkadaşlar yine itiraz edip Tarih ve zaman bilgileri üzerinde yapılan işlemleri anlatmak için 16 sayfa fazla değil mi? Bir görüşe göre evet. Şartları zorlayıp bu bölümün sayfa sayısını 12 veya 14’e indirmek mümkündü. Ötesi birçok kitapta bu konuya ayrılan sayfa sayısı üç beştir. Buna rağmen neden mi bu konuyu bütün ayrıntıları ile anlattım. Çünkü izlediğim forumlarda zaman ve tarihsel bilgiler üzerinde yapılan işlemlerle ilgili çok sayıda soru sorulduğunu gördüm. Başka bir deyişle her Visual Basic programcısının bu işlemlere ihtiyacı olduğundan herkesin bu işlemler hakkında bilgi sahibi olması gerekiyor.

Her ne kadar bu kitabın Programcılığa Giriş ve Konsol Uygulamaları adlı 2. ve 3. bölümlerinde Class kavramından az çok söz edilmiş olsa bile konunun ayrıntıları 12. bölümden itibaren anlatılmaktadır. Birçok yerli yabancı kitapta Class’lardan söz edilirken memeli hayvanlardan, arabalardan vs. söz edilir. Başka bir deyişle Class kavramının zor anlaşılması için herkes görüş birliğine varmış gibidir. Memik Yanık nesneye yönelik programcılık şudur, şu ilkeleri vardır vs demeden direk kod üzerinde Class kavramından söz eder. Örneğin Memik Yanık bu kitabın ilk sayfalarında şöyle bir cümle kurdu: “Visual Basic programlarını Class olarak düzenlemek zorunlu olmasa bile Class olarak düzenlenmesi önerilmektedir. Bu nedenle aşağıdaki gibi bir Class bloğu hazırladım”. Bu kadar basit. Henüz yolun başında olan ve programcılıkla ilgili temel kavramlardan bi haber olan birisine memelilerden, arabalardan vs söz etmek kafaları karıştırmaktan öte bir işe yaramaz. Ötesi Visual Basic’la ilgili kaynaklarda değişken-alan ayrımından hiç söz edilmez. Tamam kitabın başında eski alışkanlıklara uyup alanlara değişken denilmesi belki anlatım kolaylığı sağlıyor ama Class’lar ve nesneye yönelik programcılık anlatılırken değişkenlerin gerçekte alan olduğundan hiç söz edilmez.

Daha önce az çok program yazmış ve nesne nedir Class nedir sorularına verecek cevabı olan birisi Memik Yanık’ın kitabındaki “Class’lar ve Nesneye Yönelik Programcılık” adlı 30 sayfalık bölüme şöyle baktığına kesin burun kıvıracaktır. Sanki Memik Yanık bu bölümü Visual Basic uzmanları için yazmış ta uzmanların bu metinden öğreneceği yeni bir şey yokmuş. Sanki Memik Yanık bu bölümü herkesin işine yarayacak Class örnekleri hazırlamak için kaleme almış. Bu bölümün amacı Class’lar ve Class’ların üyelerinden söz etmektir, yapıcı ve yok edici metotların nasıl hazırlandığını okura göstermektir, statik yapıcı metotların işlevinden söz etmektir. Eğer okurun birisi bu bölümü okuyup Class’lar hakkında genel bilgiye sahip oluyorsa bu bölüm işlevini yerine getirmiştir. Her ne kadar bu kitabın “Class’lar ve Nesneye Yönelik Programcılık” adlı bölümde Class’ların en önemli üyesi metotlardan söz edilmiş olsa bile metotlar ayrı bir bölümde ayrıntılı bir şekilde incelendi. Başka bir deyişle Memik Yanık’ın Visual Basic 9.0 kitabının 14 sayfalık 13. bölümünü okuyanlar metotlarla ilgili her tür bilgiye sahip olurlar.

Bu kitabın 14. ve 15. bölümlerinde İndeksleyiciler ve Interface’lerden söz edildi. Nesneye yönelik programcılıkta indeksleyiciler zor anlaşılan konulardan birisidir. Memik Yanık 8 sayfalık bu bölümü öyle bir kaleme aldı ki hayatında daha önce indeksleyici kavramını hiç duymamış olanlar bile ilk okumada yazılan her şeyi anlayabilirler. Benzer şeyler 14 sayfa boyunca Interface’ler hakkında bilgi verilen bölüm için de söylenebilir. Gelelim nesneye yönelik programcılığın hem önemli hem de zor anlaşılan 2 konusuna: Delegate ve Olaylar. Sizce Delegate’ler ve Olaylar neden zor ve genellikle yanlış anlaşılan 2 konudur? Tabi bazı arkadaşlar şöyle bir yorum getirecekler: Forma bir Button nesnesi yerleştirirsin sonra tasarım anında bu button nesnesini çift tıklarsın vs.. Zaten Delegate ve Olayların zor ve yanlış anlaşılmasının temelleri Button nesnesinden ve tasarım anında Button nesnesi çift tıklandığında hazırlanan kodun anlatılış şeklinde atılmaktadır. Hal bu ki gerçek başkadır: Tasarım anında formdaki Button nesnesi çift tıklandığında Visual Studio programcının söz konusu Button nesnesinin Click olayını temsil edecek bir metot hazırlamak istediğini varsayıp Click olayının yapısına uygun bir metodu hazırlayıp Click olayıyla ilişkilendirmektedir. Kullanıcı çalışma anında button nesnesini tıkladığında Button nesnesiyle ilgili olarak Click olayının nasıl tetiklendiğinden söz edilmediği için konu havada kalıyor. Memik Yanık bu düşünceyle 20 sayfa boyunca delegate ve olaylardan söz etti.

Bu kitabın 18 sayfalık Module, Stucture ve Enum Tipleri adlı bölümünü okuyanlar Structure’ların ne olduğu, hangi amaçlarla kullanıldığı, sınıflarla structure’ler arasında ne gibi farkların olduğunu kısa sürede öğrenirler. Devamında Enum tipleri hakkında ayrıntılı bilgiye sahip olduğu gibi Enum’larla ilgili olarak başka kaynaklara başvurma ihtiyacı kalmaz. Gelelim bu kitabın 12 sayfalık Object Sınıfı adlı bölümüne. Bütün Visual Basic kitaplarında dakka 1 gol 1 misali daha ilk sayfadan Object sınıfından söz edilir. Okur kitabın sonuna kadar gelir ama hala Object sınıfı hakkında derli toplu bilgiye rastlamaz. Object sınıfı hakkında yeterli bilgiye sahip olmayan okur ToString() metoduyla ilgili olarak anlatılanları kavramakta zorlanır. Memik Yanık ne mi yaptı? Kitabının ortalarına bile gelmeden Object sınıfının önemli gördüğü özelliklerini ve metotlarını anlaşılır bir dille anlattı.

Bu kitabın mevcut yerli yabancı Visual Basic kitaplarına fark atılan bölümlerden bir diğeri Koleksiyon Sınıfları adlı 19. bölümdür. Bu bölümde 50 sayfa boyunca .NET Framework ile gelen koleksiyon sınıfları ve bu sınıflarla ilgili bütün Interface’ler ayrıntılı bir şekilde anlatılmaktadır. Bu bölümün tümünü okuyan birisi kendisini koleksiyon uzmanı olarak ilan edebilir. Koleksiyonlar konusu oldukça kapsamlı olduğu için BitArray, BitConverter, Buffer, StringCollection ve StringDictionary sınıflarını ayrı bir bölüm olarak düzenledim. Tabi hemen aklınıza Generic koleksiyonları ne yaptınız Sorusu gelmiş olabilir. Bu kitabın 21. bölümünde 24 sayfa boyunca önce .NET Framework ile gelen Generic koleksiyon sınıflarından, devamında Generic sınıflarından söz ettim. Yurt dışında yalnızca Generic sınıflardan söz edilen bağımsız kitaplar yazıldığına göre bu kitabımda Generic koleksiyonları ve sınıfları bütün yönleriyle anlatmadığımı tahmin etmiş olmalısınız.

Şimdi sözünü edeceğim 3 bölüm gerek içerik gerekse de anlatım şekli bakımından mevcut(tabi bu değerlendirme benim görebildiğim kitaplarla sınırlıdır) kitaplara fark atmaktadır. Her ne kadar Hata Ayıklamak ve Debug İşlemleri adlı 16 sayfalık bölümün ilk 7 sayfasında anlatılan konuları hemen her kaynakta bulmak mümkün olsa bile bu bölümün diğer sayfalarında Debug, Trace, TextWriterTraceListener ve EventLogTraceListener sınıfları hakkında ayrıntılı bilgi verilmektedir. 24. bölümde ise hata yakalanırken kullanılan Exception sınıfları anlatılmaktadır. Tabii ki başka kaynaklarda da Exception sınıfları hakkında bilgi bulabilirsiniz. Gelelim şu Application sınıfına. Diğer kaynaklarda Application sınıfının bazı özellikleri ve metotları hakkında bilgi veriliyor olsa bile hiçbir kaynakta 32 sayfa boyunca yalnızca Application sınıfından söz edilmemektedir. Application sınıfı hakkında bilgi içeren bu bölümü kitap hakkında ve konuların nasıl işlendiğini merak edenler için burada yayınladım. Tabi bu bölümün kitabın tam ortasında bulunduğunu, başka bir deyişle kitabın daha önceki bölümlerini okumamış olanların bu bölümde ilk okumada anlamayacakları cümleler olabilir.

Bu kitabın içindekiler sayfasına bakan birisi Form Sınıfının Özellikleri, Olayları ve Metotları adlı bölümde 22 sayfa boyunca klasik olarak formların herkes tarafından bilinen özelliklerinden söz edildiğini sanabilir. İşte size bu bölümden alınma 3 satırlık kod.

Protected Overrides Sub OnCreateControl()

MyBase.OnCreateControl()

End Sub

Tabii ki burada bu 3 satırlık kodun işlevinden söz etmeyeceğim, demek istediğim şudur: Bu 3 satırlık koda başka basılı kaynaklarda rastlama ihtimaliniz son derece düşüktür. Başka bir deyişle bölümün adı Form Sınıfının Özellikleri olsa bile son derece teknik bilgiler içermektedir.

Bu kitabın diğer basılı kaynaklar bağlamında en sıradan bölümü “Sık Kullanılan Kontroller” adlı bölümüdür. Bu bölümde sık kullanılan 20’ye yakın kontrol 38 sayfa boyunca anlatılmaktadır. Bu kontroller anlatılırken daha önce az çok kod yazmış herkesin ilk bakışta tahmin edeceği özellik ve metotlardan söz edilmedi. Yoksa çok sayıda kontrolü 38 sayfada anlatmak mümkün olmazdıç

Bu kitabın Dosya ve Klasör İşlemleri adlı bölümünde 28 sayfa boyunca Visual Basic kodu yazan birisinin gerek duyması muhtemel bütün bilgiler verilmektedir. Başka bir deyişle bu bölümü okuyanlar dosya ve klasör işlemleri bağlamında başka kaynaklara başvurma ihtiyacını duymazlar. Kapsamı bir yana Memik Yanık’ın kitabının bu bölümünü okuyanlar yorulmazlar, anlatılanları izlemekte zorluk çekmezler.

Şimdi bu kitabın mevcut basılı kitaplar bağlamında bence açık ara önde olduğu 3 bölümden kısaca söz edeceğim. Birçok kaynakta Visual Basic uygulamaları dahilinde Word ve Excel’den nasıl yararlanıldığı kısaca anlatılırken Memik Yanık’ın kitabında bu konu 30 sayfa boyunca ayrıntılı bir şekilde anlatılmıştır. Ayrıca bu anlatma öyle bir anlatmadır ki ilk okumada anlaşılmayacak bir tek cümle bile yoktur. Benzer şekilde Api Fonksiyonları adlı bölümde Memik Yanık programcıların en çok gerek duyduğunu sandığı çok sayıda API fonksiyonunu 40 sayfa boyunca anlatmıştır. Windows Mesajları adlı bölümde ise Memik Yanık 20 sayfa boyunca son derece teknik bir konuyu ilk okumada anlaşılacak yalınlıkta anlatmıştır. Bu kitabın hepsi ileri düzey diye anılan diğer bölümlerinden söz etmeye gerek duymadım. Çünkü ileri düzey konulara gerek duyanlar zaten neyi aradıklarını biliyorlar.

Her ne kadar Memik Yanık bu kitabında 30 sayfa boyunca Visual Basic uygulamaları dahilinde Word ve Excel'den nasıl yararlanıldığını anlatmış olmakla birlikte bu amaçla kullanılan sınıfların örneklerini hazırlamak gerektiğini Dünyanda ilk kez akıl eden yerli bir yazardır(!). Bu yerli yazar 2004 yılında yazdığı kitabında aşağıda verilen 2 satırlık kodu programcılık dünyasına hediye edip programcıların önünü açmamış olsaydı Memik Yanık kitabında 30 sayfa boyunca Word ve Excel'den söz edemezdi. Ötesi bu yerli yazarımız olmasaydı Memik Yanık kitabında Word.Application tipindeki değişkene "Word_uygulamasi" gibi bir ad veremezdi(!). Mümkünü yok Memik Yanık bu değişkene ad kendi imkanlarıyla değişken adı bulamazdı.

Dim Word_uygulamasi As Microsoft.Office.Interop.Word.Application

Word_uygulamasi =New Microsoft.Office.Interop.Word.Application()

Buraya kadar Visual Basic kitabımım yarısından biraz fazlasından söz ettim. Kitabın diğer bölümlerini de anlatıp bu yazının sayfa sayısını iki katına çıkarırsam tamamını okuyanların oranı düşüreceği için bu kitabım üzerine konuşmayı burada kesiyorum.

Bu yazıya henüz yorum yapılmamış. | 14.05.2009 00:31:31

C# 3.0 Kitabımı Anlattım


Bu yazının amacı bu kitabın satışını arttırmak değildir. Bu yazının amacı olsa olsa böyle bir kitaba ihtiyacı olmayanların bu kitabı satın alıp para ve zaman kaybetmelerinin önüne geçmek olabilir. Her ne kadar bu kitap .NET 3.5 destekli C# 3.0’ı anlatmak kaygısı ile kaleme alınmış olsa bile C# 3.0 piyasaya verileli az olmadı. Bu bilgiyi şunun için yazdım: Mevcut bir işletim sisteminin veya bir programlama dilinin yeni sürümü çıktığında özellikle yurt dışında sıcağı sıcağında yeni sürümle gelen yeniliklere odaklanan kitaplar yazılıp yayınlanmaktadır. Böyle kitaplar eski sürüm hakkında bilgisi olup yeni sürümle gelen yeni özellikler hakkında hemen bilgi edinmek isteyenlere uygundur. En başta söylemeliyim ki bu kitap C# 3.0 ve .NET 3.5’la gelen yenilikleri anlatmak kaygısı ile kaleme alınan bir kitap değildir. Başka bir deyişle bu kitabın hedef okuru programcılık nedir az çok bilip C# ve nesneye yönelik programcılıkta uzman olmayı kafasına koyanlardır. Bu nedenledir ki bu kitapta konular temelden ele alınarak 1100 sayfa boyunca C# anlatıldı. C# anlatılırken .NET Framework 3.5 ile gelen C# 3.0 derleyicisi ve Visual Studio 2008 kullanıldı. Bu yazıda asıl bu kitapta C#’ı nasıl anlattım sorusuna cevap aramaya çalışacağım.



Elbette C# uygulamaları geliştirmek için kullanılan bilgisayara .NET Framework kurulup Not Defteri programı ile istenen programları yazmak mümkün olsa bile bu zahmetlidir. Bu nedenle C# veya .NET uyumlu başka bir programla diliyle uygulama geliştirmek isteyenler Visual Studio’yu veya C# için hazırlanmış Express Edition’ı kullanmayı tercih ediyorlar. Bu nedenledir ki bu kitabın başında 18 sayfa boyunca Visual Studio ile hazırlanan C# uygulamalarının temel özellikleri ve bu uygulamaların nasıl derlenip çalıştırıldığı ve nasıl debug edildiğinden kısaca söz edildi. İşte bu kitabın ilk bölümüyle ilgili olarak kitaptan alınmış bir paragraf : “Bu bölümde ileride işlenecek bazı konulara temel oluşturan birkaç ayrıntıdan söz edilmektedir. Aslında C# programlama dilinden bağımsız olarak Visual Studio hakkında yüzlerce sayfa yazılabilir. Ne ki bu kitabın böyle amacı yoktur.” Kitabın içindekiler sayfasına bakıp “bu kitabın 18 sayfası ekran görüntüleriyle doldurulmuş” diye eleştireceklere şunu söylemek isterim: İlk bölümde Visual Studio’nun yardımıyla uygulama geliştirilirken karşılaşılan en önemli kavramlardan birisi olan Debug ve Release modlarından söz edilmektedir.

Bu kitabın C# ile Programcılığa Giriş adlı 2. bölümünde C# ve nesneye yönelik programcılık hakkında kuşbakışı bilgi verilmektedir. Bu sayede okurun C# ve nesneye yönelik programcılık hakkında temel bilgilere sahip olması hedeflendi. Bu kitabı incelemeden eleştirmeyi kafalarına koymuş olanlara şunu söylemek isterim:Memik Yanık’ın C# 3.0 kitabının 36 sayfadan meydana gelen Programcılığa Giriş adlı 2. bölümünü okuyanlar metotlarla olayları karıştırmazlar, Application sınıfının işlevinden bi haber olmazlar, formların nasıl hazırlanıp ekrana getirildiğini bilirler. Aşağıda verdiğim paragrafı kitaptan olduğu gibi buraya aldım: “Daha önce az çok kod yazmış olanlar bir sonraki bölüme şöyle bir baktıklarında bütün yazılanların bildikleri konular oldukla­rını sanabilirler. Sanabilirler diyorum çünkü bir sonraki bölümde C# ile program yazılır­ken gerek duyulan pek çok kavram hakkında teknik açıkla­malar yapılmaktadır. Bu nedenle bu kitabı eline alan herkesin bir sonraki yani 2. bölümü dikkatli okumasını öneriyorum. Tabii bu öneri kitapçıda veya herhangi bir yerde bu kitabı satın almayacakları önceden belli olup ta meraktan bu kitabı şöyle bir gözden geçirenleri veya C# hakkında yeterince bilgisi olanları kapsamıyor. Böyle bir kitaba ihtiyaçları olmayanların bir sonraki bölümde yazılanlara yabancı olmamaları normaldir. Bir sonraki bölümün gerek içerik gerekse de konuların işleyişi bakımından bütün yerli yabancı kaynaklardan ayrıldığını söyleyebilirim.” Elbette bu kitabın 2. bölümünde yazılanların bir kısmının başka kaynaklarda bulunma ihtimali yüksektir. Programcılık kitaplarında bilim yapmadığımıza göre bu kitapta anlatılan her konunun başka kaynakları bulunması son derece normaldir. Kitapların arasındaki en önemli fark konuların anlatım biçimi ve hikâye edilme tarzıdır.

Gelelim bu kitabın Konsol Uygulamaları adlı 2. bölümüne. Bir sonraki bölüm bir bakıma Programcılığa Giriş adlı 2. bölümün devamı gibidir. Çünkü Konsol Uygulamaları adını verdiğim 3. bölümde C# kodu yazılmak istendiği zaman “ilk” gerek duyulacak kavramlar ve en çok kullanılan .NET sınıflarını anlatmaya çalıştım. Her ne kadar konsol uygulaması geliştirip başkasına verme ihtimaliniz düşük olsa bile bir sonraki bölümde C# ile program yazmanın geri planı üzerinde biraz durulmaktadır. Tabii bununla da yetinilmeyip Konsol Uygulamaları dahilinde Windows Formlarının nasıl ekrana getirilebileceği anlatılarak referans ve namespace kavramları hakkında ön bilgi verilmeye çalışılmaktadır. Yine bazı arkadaşlar “madem Windows formuna gerek duyuyorsun da neden konsol uygulaması hazırladın” diye sorabilirler. Bu soruyu soran arkadaşlara aşağıda verilen 2 Main() metodunu incelemelerini önermek isterim.

static void Main(string[] args)

  {

    Form1 F1 = new Form1();

    F1.ShowDialog();

    Console.ReadKey(); 

  }

static void Main(string[] args)

 {

   Form1 F1 = new Form1();

   F1.Show();

   Application.Run();

   Console.ReadKey();  

 }

Sizce Memik Yanık konsol uygulamasının Main() metodunu bu şekilde düzenlemekle neyi hedeflemektedir? Sizce hangi kaynakta(yerli yabancı fark etmez) Form nesnesi Application sınıfından yararlanılmadan Show() metodu ile ekrana getirilmeye çalışılmıştır? Hayır hayır Memik Yanık Amerika’yı yeniden keşfetmiyor; Memik Yanık’ın burada yaptığı okurun dikkatini Application sınıfının işlevine çekmektir. Sizce Application sınıfı hakkında yeterince bilgi edinmemiş birisi Windows mesajlarını hakkıyla anlayabilir mi?

Gelelim bu kitabın 4. bölümde anlatılan şu Namespace kavramına. Her ne kadar bu kitabın 2. ve 3. bölümlerinde referans ve namespace’lerden söz edilmiş olsa bile .NET programcılığında henüz yolun başında olan birisi için Namespace kavramı hakkıyla öğrenmesi gereken kavramlardan birisidir. Tabi henüz yolun başında olan birisine namespace kavramını en başta anlatacağım deyip kafasını karıştırmamak gerekir. Bu düşünce ile namespace’ler hakkında bilgi vermeye kısıtlı bir konsol uygulaması hazırlayarak başladım. Çünkü C# derleyicisinin derleme yaparken neyin sınıf neyin namespace olduğuna karar verirken nasıl bir yöntemi kullandığının bilinmesi gerekiyor. Bu nedenle Memik Yanık’ın kitabında derleme hakkında bilgi verirken “System.dll” ve “System.core.dll” adlı referanslardan söz etti. Namespace adlı bölümün ileri ki sayfalarında .NET Framework ile gelen Namespace’lerdeki sınıfları kullanmaktan öte programcıların kendi sınıflarını nasıl namespace olarak düzenleyebileceklerinden söz edildi. Tabii ki C# konulu kitapların hemen hepsinde nasıl namespace hazırlandığından söz edilmektedir.

Memik Yanık’ın C# kitabının 5. bölümünde 36 sayfa boyunca değişkenler hakkında bilgi verilmektedir. Bazı okurlara göre değişkenlere bu kadar sayfa ayırmanın gerekçesi nedir diye sorabilirler. Elbette daha önce C# hakkında az çok bilgi edinmiş olanları göz önüne alırsak değişkenlere daha az sayfa ayırmak gerekirdi. Örneğin daha önce C# konulu kaynakları okumuş olanlar değişkenlerin nasıl tanımlanıp nasıl ilk değer aktarıldığını bilirler. Her ne kadar bu bölümde Nullable tiplerden, Parse() metodundan, Convert sınıfından söz edilse bile bu kitabı bu bölüm bağlamında değerlendirecek olursam şunları söyleyebilirim: Bu kitabın bu bölüm bağlamında bir artısı varsa değişkenlerin bütün yönleri ile ele alınmış olmasıdır. Bu nedenle değişkenler konusunu bu kitaptan okuyan birisi değişkenlerle ilgili olarak başka kaynaklara bakma gereğini duymaz. Benzer şeyler bu kitabın 6. bölümü için de söylenebilir. Çünkü kitabın 6. bölümünde 18 sayfa boyunca dizi değişkenler ve Array sınıfı her yönüyle en ince ayrıntısına kadar anlatılmaktadır. Belki bu kitap Değişkenler adlı bölüm bağlamında şöyle eleştirilebilir: Bu metni biraz kesip, bazı metot ve işlemlerden söz etmeyip birkaç sayfa tasarruf edebilirdiniz. Ancak ben tercihimi dizi değişkenleri her yönüyle anlatmak yönünde yaptım. Yani istedim ki bu kitabı edinenler C#’la ilgili temel konuları öğrenirken başka kaynaklara başvurma gereğini duymasın.

Şimdi sırada bu kitapta toplam 8 sayfa yer tutan Operatörler adlı bölüm var. Tabi hemen bazı arkadaşlar 8 sayfa boyunca artı(+), eksi(-), bölme(/) vs.. operatörlerinden söz etmiş olduğumu düşünebilirler. Bu bölümde bu operatörlere kısaca değinilmiş olsa bile asıl ağırlık Kaydırma Operatörleri ile as ve is operatörlerine verildi. Çünkü as ve is operatörleri çok sık kullanılmaktadır. Devamında 3 sayfa boyunca bit düzeyinde işlem yapılırken kullanılan operatörlerden söz edildi. Matematiksel işlemlerde kullanılan operatörler hakkında bu kitapta yazılanlar çıkarılsa bile sayfa sayısı değişmiyordu. Bit düzeyinde işlem yapılırken kullanılan operatörlerden yararlanmak son derece teknik bir işlem olmasına rağmen konular öyle hikaye edildi ki ilk okumada mutlaka anlaşılacak yalınlıktadır.

Bu kitabın Blok Kontrol adlı bölümünde 10 sayfa boyunca if, while, for, foreach’ten söz edildi. Bu kitabın bu bölüm bağlamında diğer kitaplara bir artısı pek yoktur. Ancak başlangıçta zor anlaşılan foreach döngüsünü daha önce hiç duymamış olanlar bile bu kitabın ilgili sayfalarını okuduklarında foreach döngülerine hemen hakim olabilirler.

Bu kitabın 9. bölümünde 26 sayfa boyunca string işlemlerinden ve Math sınıfındaki metotlardan söz edilmektedir. Neden mi bu konuyu önemsedim? Çünkü kod yazılırken en çok yapılan işlemlerin başında string işlemleri gelmektedir. Elbette String ve Math sınıflarının bazı metotlarını göz ardı edip bu bölümün sayfa sayısını 22’ye düşürmek mümkündü. Bu durumda C# ile programcılıkta yeni olan okurların başka kaynaklara başvurma ihtiyacı olurdu. Açıkçası istedim ki bu kitabı her kim edinirse String ve Math sınıfının metotları konusunda eksiksiz bilgiye sahip olsun. Örneğin String sınıfının Splip metodunu ayrıntılı bir şekilde anlattım. Bu kitabın 14 sayfalık 10. bölümü bir bakıma String İşlemleri adlı 9. bölümün devamı gibidir. Çünkü 10. bölümde StringBuilder sınıfından ve Düzenli İfadelerden söz edilmektedir. Tam bu noktada bu kitabın boyutlarından kısaca söz etmek istiyorum. Bu kitabın yazı alanın genişliği tam tamına 13 cm’dir. İsim vermeye gerek yok aynı genişliğe sahip(16 cm) birçok kitapta yazı alanı genişliği en fazla 11.5 cm’dir. Asıl demek istediğim şudur: Toplam 1074 sayfa olan bu kitap başka yayınevlerinin ölçüleri ile basılsaydı sayfa sayısı en az 1200 olurdu. Yani anlayacağınız bu kitabın sayfa sayısını azaltmak sürekli çaba harcadım.

11. bölümde 16 sayfa boyunca tarih ve zaman bilgileri bütün ayrıntıları ile anlatılmaktadır. Başka bir deyişle bu kitabı okuyan birisi için tarih ve zaman bilgileri üzerinde yapılan işlemler bağlamında bilmediği hiçbir ayrıntı kalmaz. Ayrıca bu bölümü okuyanlar Ticks özelliği ve TimeSpan yapısı hakkında bilgi sahibi olurlar. Bazı arkadaşlar yine itiraz edip Tarih ve zaman bilgileri üzerinde yapılan işlemleri anlatmak için 16 sayfa fazla değil mi? Bir görüşe göre evet. Şartları zorlayıp bu bölümün sayfa sayısını 12 veya 14’e indirmek mümkündü. Ötesi birçok kitapta bu konuya ayrılan sayfa sayısı üç beştir. Buna rağmen neden mi bu konuyu bütün ayrıntıları ile anlattım. Çünkü izlediğim forumlarda zaman ve tarihsel bilgiler üzerinde yapılan işlemlerle ilgili çok sayıda soru sorulmaktadır. Başka bir deyişle her C# programcısının bu işlemlere ihtiyacı olduğundan herkesin bu işlemler hakkında bilgi sahibi olması gerekiyor.

Bu kitabın 12. bölümünde toplam 12 sayfa boyunca Pointer değişkenlerden söz edilmektedir. Son derece teknik bir konu olan Pointer değişkenler hakkında bu kitapta yazılanlar ilk okumada anlaşılacak yalınlıktadır. Ötesi bu bölümde IntPtr tipi değişkenlerden söz edilmektedir. Türkiye’de IntPtr tipi Pointer değişkenlerden ilk söz edenin Memik Yanık olduğunu dikkatinize sunmak isterim. IntPtr tipi Pointer değişkenler çok mu önemlidir? Windows’un API adı verilen fonksiyonlarını kullanmayı düşünüyorsanız IntPtr tipi Pointer değişkenler hakkında az da olsa bilgi sahibi olmak durumundasınız.

Her ne kadar bu kitabın Programcılığa Giriş ve Konsol Uygulamaları adlı 2. ve 3. bölümlerinde Class kavramından az çok söz edilmiş olsa bile konunun ayrıntıları 13. bölümden itibaren anlatılmaktadır. Birçok yerli yabancı kitapta Class’lardan söz edilirken memeli hayvanlardan, arabalardan vs. söz edilir. Başka bir deyişle Class kavramının zor anlaşılması için herkes görüş birliğine varmış gibi. Memik Yanık nesneye yönelik programcılık şudur, şu ilkeleri vardır vs demeden direk kod üzerinde Class kavramından söz eder. Örneğin Memik Yanık bu kitabın ta ilk sayfalarında şöyle bir cümle kurdu: “C# programlarını Class olarak düzenlemek zorunluluğu vardır. Bu nedenle aşağıdaki gibi bir Class bloğu hazırladım”. Bu kadar basit. Henüz yolun başında olan ve programcılıkla ilgili temel kavramlardan bile bi haber olan birisine memelilerden, arabalardan vs söz etmek kafaları karıştırmaktan öte bir işe yaramaz. Ötesi C#’la ilgili kaynaklarda değişken-alan ayrımından hiç söz edilmez. Tamam kitabın başında eski alışkanlıklara uyup alanlara değişken denilmesi belki anlatım kolaylığı sağlıyor ama Class’lar ve nesneye yönelik programcılık anlatılırken değişkenlerin gerçekte alan olduğundan hiç söz edilmez.

Daha önce az çok program yazmış ve nesne nedir Class nedir sorularına verecek cevabı olan birisi Memik Yanık’ın kitabındaki “Class’lar ve Nesneye Yönelik Programcılık” adlı 38 sayfalık bölüme şöyle baktığına kesin burun kıvıracaktır. Sanki Memik Yanık bu bölümü C# uzmanları için yazmış ta uzmanların bu metinden öğreneceği yeni bir şey yokmuş. Sanki Memik Yanık bu bölümü herkesin işine yarayacak Class örnekleri hazırlamak için kaleme almış. Bu bölümün amacı Class’lar ve Class’ların üyelerinden söz etmektir, yapıcı ve yok edici metotların nasıl hazırlandığını okura göstermektir, statik yapıcı metotların işlevinden söz etmektir. Eğer okurun birisi bu bölümü okuyup Class’lar hakkında genel bilgiye sahip oluyorsa bu bölüm işlevini yerine getirmiştir. Her ne kadar bu kitabın “Class’lar ve Nesneye Yönelik Programcılık” adlı bölümde Class’ların en önemli üyesi metotlardan söz edilmiş olsa bile metotlar ayrı bir bölümde ayrıntılı bir şekilde incelendi. Başka bir deyişle Memik Yanık’ın C# 3.0 kitabının 16 sayfalık 14. bölümünü okuyanlar metotlarla ilgili her tür bilgiye sahip olurlar.

Bu kitabın 15. ve 16. bölümlerinde İndeksleyiciler ve Interface’lerden söz edildi. Nesneye yönelik programcılıkta indeksleyiciler zor anlaşılan konulardan birisidir. Memik Yanık 10 sayfalık bu bölümü öyle bir kaleme aldı ki hayatında daha önce indeksleyici kavramını hiç duymamış olanlar bile ilk okumada yazılan her şeyi anlayabilirler. Benzer şeyler 12 sayfa boyunca Interface’ler hakkında bilgi verilen bölüm için de söylenebilir. Gelelim nesneye yönelik programcılığın hem önemli hem de zor anlaşılan 2 konusuna: Delegate ve Olaylar. Sizce Delegate’ler ve Olaylar neden zor ve genellikle yanlış anlaşılan 2 konudur. Tabi bazı arkadaşlar şöyle bir yorum getirecekler: Forma bir Button nesnesi yerleştirirsin sonra tasarım anında bu button nesnesini çift tıklarsın vs.. Zaten Delegate ve Olayların zor ve yanlış anlaşılmasının temelleri Button nesnesinden ve tasarım anında Button nesnesi çift tıklandığında hazırlanan kodun anlatılış şeklinde yapılmaktadır. Hal bu ki gerçek başkadır: Tasarım anında formdaki Button nesnesi çift tıklandığında Visual Studio programcının söz konusu Button nesnesinin Click olayını temsil edecek bir metot hazırlamak istediğini varsayıp Click olayının yapısına uygun bir metodu hazırlayıp Click olayıyla ilişkilendirmektedir. Tabii kullanıcı çalışma anında button nesnesini tıkladığında Button nesnesiyle ilgili olarak Click olayının nasıl tetiklendiğinden söz edilmediği için konu havada kalıyor. Memik Yanık bu düşünceyle 20 sayfa boyunca delegate ve olaylardan söz etti.

Bu kitabın 16 sayfalık Stuct ve Enum Tipleri adlı bölümünü okuyanlar Struct’ların ne olduğu, hangi amaçlarla kullanıldığı, sınıflarla struct’lar arasında ne gibi farkların olduğunu kısa sürede öğrenirler. Devamında Enum tipleri hakkında ayrıntılı bilgiye sahip olduğu gibi Enum’larla ilgili olarak başka kaynaklara başvurma ihtiyacı kalmaz. Gelelim bu kitabın 12 sayfalık Object Sınıfı adlı bölümüne. Bütün C# kitaplarında dakka 1 gol 1 misali daha ilk sayfadan Object sınıfından söz edilir. Okur kitabın sonuna kadar gelir ama hala Object sınıfı hakkında derli toplu bilgiye rastlamaz. Object sınıfı hakkında yeterli bilgiye sahip olmayan okur ToString() metoduyla ilgili olarak anlatılanları kavramakta zorlanır. Memik Yanık ne mi yaptı? Kitabının ortalarına bile gelmeden Object sınıfının önemli gördüğü özelliklerini ve metotlarını anlaşılır bir dille anlattı.

Bu kitabın mevcut yerli yabancı C# kitaplarına fark atılan bölümlerden bir diğeri Koleksiyon Sınıfları adlı 20. bölümdür. Bu bölümde 48 sayfa boyunca .NET Framework ile koleksiyon sınıfları ve bu sınıflarla ilgili bütün Interface’ler ayrıntılı bir şekilde anlatılmaktadır. Bu bölümün tümünü okuyan birisi kendisini koleksiyon uzmanı olarak ilan edebilir. Koleksiyonlar konusu oldukça kapsamlı olduğu için BitArray, BitConverter, Buffer, StringCollection ve StringDictionary sınıflarını ayrı bir bölüm olarak düzenledim. Tabi hemen aklınıza Generic koleksiyonları ne yaptınız Sorusu gelmiş olabilir. Bu kitabın 22. bölümünde 26 sayfa boyunca önce .NET Framework ile gelen Generic koleksiyon sınıflarından, devamında Generic sınıflarından söz ettim. Yurt dışında yalnızca Generic sınıflardan söz edilen bağımsız kitaplar yazıldığına göre bu kitabımda Generic koleksiyonları ve sınıfları bütün yönleriyle anlatmadığımı tahmin etmiş olmalısınız.

Şimdi sözünü edeceğim 3 bölüm gerek içerik gerekse de anlatım şekli bakımından mevcut(tabi bu değerlendirme benim görebildiğim kitaplarla sınırlıdır) kitaplara fark atmaktadır. Her ne kadar Hata Ayıklamak ve Debug İşlemleri adlı 18 sayfalık bölümün ilk 7 sayfasında anlatılan konuları hemen her kaynakta bulmak mümkün olsa bile bu bölümün diğer sayfalarında Debug, Trace, TextWriterTraceListener ve EventLogTraceListener sınıfları hakkında ayrıntılı bilgi verilmektedir. 27. bölümde ise hata yakalanırken kullanılan Exception sınıfları anlatılmaktadır. Tabii ki başka kaynaklarda da Exception sınıfları hakkında bilgi bulabilirsiniz. Gelelim şu Application sınıfına. Diğer kaynaklarda Application sınıfının bazı özellikleri ve metotları hakkında bilgi veriliyor olsa bile hiçbir kaynakta 14 sayfa boyunca yalnızca Application sınıfından söz edilmemektedir.

Bu kitabın içindekiler sayfasına bakan birisi Form Sınıfının Özellikleri, Olayları ve Metotları adlı bölümde 18 sayfa boyunca klasik olarak formların herkes tarafından bilinen özelliklerinden söz edildiğini sanabilir. İşte size bu bölümden alınma 3 satırlık kod.

protected override voidOnCreateControl()

 {

   base.OnCreateControl();

 }

Tabii ki burada bu 3 satırlık kodun işlevinden söz etmeyeceğim, demek istediğim şudur: Bu koda başka basılı kaynaklarda rastlama ihtimaliniz son derece düşüktür. Başka bir deyişle bölümün adı Form Sınıfının Özellikleri olsa bile son derece teknik bilgiler içermektedir.

Bu kitabın diğer basılı kaynaklar bağlamında en sıradan bölümü “Sık Kullanılan Kontroller” adlı bölümüdür. Bu bölümde sık kullanılan 20’ye yakın kontrol 36 sayfa boyunca anlatılmaktadır. Bu kontroller anlatılırken daha önce az çok kod yazmış herkesin ilk bakışta tahmin edeceği özellik ve metotlardan söz edilmedi.

Bu kitabın Dosya ve Klasör İşlemleri adlı 36. bölümünde 28 sayfa boyunca C# kodu yazan birisinin gerek duyması muhtemel bütün bilgiler verilmektedir. Başka bir deyişle bu bölümü okuyanlar dosya ve klasör işlemleri bağlamında başka kaynaklara başvurma ihtiyacını duymazlar. Kapsam bir yana Memik Yanık’ın kitabının bu bölümünü okuyanlar yorulmazlar, anlatılanları izlemekte zorluk çekmezler.

Şimdi bu kitabın mevcut basılı kitaplar bağlamında bence açık ara önde olduğu 3 bölümden kısaca söz edeceğim. Birçok kaynakta C# uygulamaları dahilinde Word ve Excel’den nasıl yararlanıldığı kısaca anlatılırken Memik Yanık’ın kitabında bu konu 32 sayfa boyunca ayrıntılı bir şekilde anlatılmıştır. Ayrıca bu anlatma öyle bir anlatmadır ki ilk okumada anlaşılmayacak bir tek cümle bile yoktur. Benzer şekilde Api Fonksiyonları adlı bölümde Memik Yanık programcıların en çok gerek duyduğunu sandığı API fonksiyonlarını 32 sayfa boyunca anlatmıştır. Windows Mesajları adlı bölümde ise Memik Yanık 32 sayfa boyunca son derece teknik bir konuyu ilk okumada anlaşılacak yalınlıkta anlatmıştır. Bu kitabın hepsi ileri düzey konular olan diğer bölümlerinden söz etmeye gerek duymadım. Çünkü ileri düzey konulara gerek duyanlar zaten neyi aradıklarını biliyorlar.

Buraya kadar C# kitabımım yarısından biraz fazlasından söz ettim. Kitabın diğer bölümlerini de anlatıp bu yazının sayfa sayısını iki katına çıkarırsam tamamını okuyanların oranı düşüreceği için bu kitabım üzerine konuşmayı burada kesiyorum.

Bu yazıya henüz yorum yapılmamış. | 11.04.2009 11:51:39

Delphi 2007 Kitabım Nasıl Bir Kitaptır?


Biraz tarih: 1995 yılının sonları; daha önce Visual Basic hakkında kitap yazmış birisi olarak görsel programlamaya yatkındım ve görsel program geliştirme araçlarını anlatma konusunda fikri hazırlığım vardı. Çünkü Visual Basic’in TextBox’ı ile Delphi’nin Edit’i benzer işlev ve özelliklere sahip oldukları için fazla yabancılık çekmeyeceğimi düşünmüştüm. Ötesi, o günlerde Pascal uzmanı olmasam bile Pascal diline yabancı değilim.

Neyse uzatmayalım; 7-8 aylık yoğun bir çalışmanın sonucu ilk Türkçe Delphi kitabını hazırladım. Daha sonra bu Delphi kitabına eklemeler yaptım. En son Ezel Balkan adıyla yayınladığım Delphi 7 kitabı 920 sayfa olup potansiyel okurların beklentilerinin büyük bir kısmını karşılayacak bir içeriğe sahipti. Açıkça belirtmek gerekirse 2006 yılı ortalarında elimde okurlardan ilgi gördüğü için 3 baskı yapan 920 sayfalık kitap varken tam 10 ay boyunca Delphi üzerinde çalışıp Delphi 2007 for Win32 kitabını yazdım. Bundan şu sonucu çıkarabilirsiniz: Ezel Balkan adıyla yayınladığım 920 sayfalık Delphi kitabımla, burada sözünü ettiğim kitap arasında dağlar kadar fark var.



Delphi 2007 kitabını ilk yazmaya başladığım sırada normal çalışma tempomla 3 aylık bir sürenin yeterli olacağını düşünüyordum. Açık yazmak gerekirse, elimde 920 sayfalık Delphi 7 kitabı vardı; düzey yükseltme adına bazı konuları kitaptan çıkaracaktım. Böylece Delphi 2007 kitabı yaklaşık 950 sayfa olacaktı. Son Delphi kitabıma 100 sayfa eklersem eksikliklerini büyük oranda azaltmış olacaktım ve bu kitap en kapsamlı Türkçe Delphi kitabı olabilecekti. Başka bir deyişle ilgi gören son Delphi kitabımdan 70 sayfa çıkarıp yerine 100 sayfa ekleyecektim.

Bazı sayfaları madem çıkaracaktın da neden 3 yıl önce bu sayfaları kitaba ekledin diye soranlar olabilir? Bu soruya Delphi.NET kitabımdan örnek vererek anlatacağım: Delphi.NET kitabımda Transaction’lar hakkında bilgi verirken önce SQL Server 2000 ile gelen Interprise Manager’dan yararlanıp 2 basit Stored Procedure hazırlayıp işlettim. Sonra bunları Transaction bloğuna alıp işlettim. İstedim ki SQL Server dahilinde Transaction’leri kullanmamış olanlar konuya kolayca adapte olsunlar. Bu durumda SQL Server ve Transaction’lar hakkında ortalama düzeyde bilgisi olanlar için kitabın sayfa sayısı 3 sayfa boşuna artmış oldu. Ancak SQL Server konusunda ortalama düzeyde bilgisi olmayanların Delphi projesi dahilinde Transation’lerin nasıl kullanıldığını anlamalarını garanti etmiş oldum. İşte kitabın sayfa sayısını azaltma bu gibi konularda oluyor. Örneğin potansiyel okurların çoğunluğunun artık Paradox veritabanları hakkında bilgiye ihtiyacı yoktur deyip kitabın Paradox veritabanları hakkında bilgi içeren sayfalarını azaltırsınız.

 

Neyse konudan uzaklaşmayayım: Başlangıçta 920 sayfalık Delphi 7 kitabının 850 sayfasını yeni kitabımda kullanmayı düşünürken “Memik YANIK hep başlangıç düzeyi kitaplar yazar, yeni başladıysan önerebilirim, ancak Memik YANIK kitapları yeterli değildir” şeklindeki yaygın eleştiriden sanırım etkilendim ki elimdeki kitabın 850 sayfasını yeni kitapta kullanmayı düşünürken bir de baktım kitabın düzeyini yükseltme adına neredeyse her şeyi yeni baştan yazmışım.

Şimdi yukarıda kısaca özetlediğim Memik YANIK kitaplarının yeni başlayanlar için uygun olduğu şeklindeki genel inanışa biraz değinmek istiyorum. Konumuz Delphi olsun: Delphi’yi öğrenip program yazmaya karar verdiniz. Yani yolun başındasınız. Bu durumda edindiğiniz kitabın en önemli işlevi sizi cesaretlendirmesi ve hevesinizi kırmamasıdır. Çünkü öğrenme isteği ve çalışma azmi kimsede sonsuz değildir. Bu nedenle metni öyle kaleme almalıyım ki okur okumakta zorlanmamalı, yazdığımı anlaması için başka kaynaklara başvurma ihtiyacını duymamalıdır. Örneğin birkaç gün önce C# kitabımı yazarken Access veritabanlarında kullanıcılar için parola tanımlama ve mevcut kullanıcının parolasını C# uygulaması dahilinde isteme gibi konulara örnek verirken yazdıklarımın havada kaldığını fark ettim. Çünkü bu konulara programcılık kitaplarında yer verilmezken Access kitaplarında ise olaya programcı gözü ile bakılmıyordu.

Bunu fark edince bendeki mevcut kitaplara baktım. Birisi Microsoft Press’ten çıkmış 1000 sayfalık kapsamlı kitap olmakla birlikte diğer 3 kitapta yazılanlar yanlış olmamakla birlikte hiç biri Access veritabanı kullanan programcının güvenlikle ilgili olarak gerek duyacağı bilgileri içermiyordu. Ayrıca yazılanları anlamak kolay değildi. Kitabın birisinde yazar açıklama yapmadan okuru ikna etmeden direk Wizard hakkında bilgi veriyordu. Ben ne mi yaptım? Önce okuru karşılaşacağı muhtemel sorunlar hakkında bilgilendirdim. Devamında onu ikna ettim. Sıra Wizard’a geldiğinden okur ne yapacağını zaten biliyordu. Şimdi sorayım: ne yazdığı belli olmayan kolay okunmayan kitap ileri düzey oluyordu da konunun ilk okumada anlaşılması için başka yazarların 3 sayfada anlattıklarını 4 sayfada anlatan Memik Yanık’ın kitabı neden başlangıç düzeyi oluyor? Kişisel görüşüme göre bir kitapta yazılanlar zor anlaşılıyorsa ya okur yanlış bir kitap seçmiştir ya da kitap kötü kaleme alınmıştır.

Programcılıkta belli bir noktaya gelmiş olanlar kitaplar hakkında konuştuklarında ister istemez kendi pencerelerinden bakarak değerlendirme yapıyorlar. Hal bu ki kendisinin programcılık kitabından öğreneceği çok az şey kalmıştır. Olur ya zamanında gerek duymadığı için ilgilenmediği bir konuyu sonradan merak ettiğinde elindeki kitaba bakar. Başka bir deyişle artık neyin ne olduğunu, neyin ne işe yaradığını biliyordur. Olsa olsa bilmediği veya unuttuğu işlemin “nasıl yapılacağıdır”. Hal bu ki yeni başlayan veya o programlama dilinden henüz ekmeğini çıkarmayan kişi neyin ne işe yaradığını henüz bilmiyordur. Bu nedenle ona konuları adım adım anlatmak gerek. Tabii konular adım adım anlatılınca ister istemez sayfa sayısı artıyor.

 

Bu görüşe bir de örnek verelim: Konu Delphi’de interface’ler olsun. Usta programcımız interface’lerin ne olduğunu ne işe yaradıklarını biliyordur da belki gerek duymadığı için Delphi’de nasıl hazırlandığını bilmiyordur veya unutmuştur. Usta programcımız kitaptan bu konuyu öğrenmek istediğinde işin hikaye kısmından haklı olarak hemen sıkılır. Çünkü interface’lerin ne olduğunu ne işe yaradığını zaten biliyordur. Ne ki bir yazar olarak interface’leri anlatmaya başlamadan ön bilgi vermeyi tercih ederim. Ön bilgi verilmeden hemen asıl konuya geçilirse Interface’lerin nasıl hazırlanıp kullanıldığı öğrenilse bile temeli bilinmediği için kısa sürede unutulur. Bu açıdan Delphi 2007 kitabıma baktığımda hiçbir konunun üzerinin örtülüp ezbere anlatılmadığını, her konunun nedenleri ile derinlemesine incelendiğini rahatlıkla söyleyebilirim.

Çok sayıda forum sitesinde Delphi ile ilgili olarak daha önce sorulmuş ve cevaplanmış binlerce soru vardır, yayınlanmış yüzlerce makale vardır. Bu şartlarda kalkıp Memik Yanık’ın 1100 sayfalık Delphi kitabına 49 YTL ödemek caiz midir? Delphi’ye merak sarsaydınız bu kitaba 49 YTL öder miydiniz? Bazı arkadaşlar bu soruya hayır diye cevap vereceklerdir. Çünkü merak ettiği konuları forumlara soracağını, Delphi hakkında sitelerde yüzlerce makalenin olduğunu, hatta yerli yabancı çok sayıda E-Book bile bulabileceğini söyleyeceklerdir.

Çok zamanınız varsa, sınırsız öğrenme isteğiniz varsa; ötesi hiç aceleniz yoksa, bir iki yıl içinde Delphi ile program yazmayı düşünmüyorsanız, öğrenciyseniz ve yakın bir zamanda geçmeniz gereken bir Delphi dersi yoksa masraf yapıp Memik YANIK’ın Delphi kitabını almanıza gerek yoktur. Ötesi ben çevirmenlerin kurduğu cümleleri iki üç kez okumaktan sıkılmam, çeviri kitapta yazılanları anlayamazsam suçu kitabın yazarı-çevirmeni yerine kendimde ararım diyorsanız 49 YTL verip Memik Yanık’ın Delphi kitabını almanıza gerek yoktur. Bu arada bu kitabın hepsiburada.com'da oldukça indirimli satıldığını belirtmek isterim.

 

Tecrübe açısından orta düzeydeki bir programcının Delphi ile ilgili olarak şimdiye kadar merak edip cevabını arayıp bulduğu 100 sorunun olduğunu varsayalım. Delphi ile program yazmaya karar veren birisinin bu soruların hepsini bir veya birden fazla kitapta cevap bulması, bu soruların hepsinin cevabını okuldaki veya kurstaki hocasından alması veya gece gündüz forumlarda zaman harcayarak cevap bulması mümkün değildir. Kişisel görüşüme göre Delphi ile ilgili olarak karşılaşmanız muhtemel olan ilk 25 sorunun cevabını kitaptan almaz veya gittiğiniz kurstan bu sorulara cevap verilmezse geriye kalan 75 soruya forumlardan makalelerden cevap bulmak yıllarınızı alır. O zamana kadar da o programlama dili güncelliğini kaybeder. Memik YANIK bu kitabında Delphi ile program yazmak isteyenlerin karşılaşması muhtemel olan soruların hepsine cevap vermeyi hedeflemedi. Hedeflediği şudur: Bu kitabı okuyanlar Delphi ilgili her konuyu öğrenebilecek potansiyele sahip olurlar.

Forumlarda Delphi veya başka programlama dili konusunda henüz yolun başında olan birisi Delphi’de ustalaşmak, program yazmak istediğini yazıp nasıl bir yol izlemesi gerektiğini sorar ve kitap önerin der. Ne ki bazen Delphi konusunda belli bir düzeye gelmiş arkadaşların bazıları böyle sorulara “kitaba gerek yok, e-book’lara bak, sitelerdeki makaleleri oku, merak ettiğin konu olduğunda cevabını bulamadığın sorular olduğunda forumlara yaz” derler. Aslında söyledikleri, önerdikleri tümden yararsız ve geçersiz şeyler değildir.

 

Memik Yanık’ın Delphi kitabını okuyan kişi temel konulara vakıf olduğu için o konuda soru sormasını biliyordur, verilen cevapları anlıyordur. Forum yöneticileri foruma soru yazanların dertlerini net olarak yazamadıklarından, soruların açık olmadığından sürekli dert yanarlar. Soruların(Delphi konusundaki soruların diyelim) anlaşılmaz olmasının nedeni o kişinin Memik YANIK’ın Delphi kitabını okumamış olması ve o programla dili ile ilgili temel kavramlara sahip olmamasıdır.

Hele hele bazıları e-book meraklısıdır. Gerekli gereksiz yüzlerce konuları içeren e-book’ları bulup biriktirirler. Sanki sınırsız zamanları var, sanki tarayıcılar gibi 3-5 saniyede bir sayfayı okuyup bir daha unutmamak üzere belleklerine kaydediyorlar. Arkadaşlar e-book’lar yararsızdır demem ancak daha önceden Memik YANIK kitabı okumadıysanız e-book’ların size katkıları sınırlı olacaktır.

Son olarak Delphi 2007 kitabım hakkında şunları söyleyebilirim: Kitabın sayfa sayısını azaltmak için yoğun çabalar göstermeme rağmen, yaklaşık 1100 sayfa olmasına rağmen bu kitapta Delphi ilgili her konuya yer verebildiğimi söyleyemem. Gerekli gördüğüm bazı eksiklikleri kaleme alıp kişisel Web sitemde yayınlayacağım. Tekrar etmek gerekirse bu kitabımın düzeyini gereği kadar yükseltmiş olmama ve ta en başından Nesneye Yönelik Programcılık penceresinden bakarak konuları kaleme almış olmama rağmen bu kitapta yine ilk okumada anlaşılmayacak hiçbir konu yoktur.

Bu kitapta yalnızca bir veritabanına bağlı kalmadım. Eski Paradox başta olmak üzere Interbase, FireBird, Access, SQL Server ve MySQL veritabanlarını Delphi projeleri dahilinde kullanmayı denedim. Ne ki MySQL’e yeterince yer verdiğimi söyleyemem. Bu kitap bir Delphi kitabı olduğu için Delphi projeleri dahilinde erişim sağlanan her veritabanını yeteri ayrıntıda anlatmak zaten imkan dışıdır. Belki bu kitap tekrar basıldığında MySQL’e yeterince ağırlık verme imkanım olur.

Memik YANIK’ın programcılık kitaplarının ayırt edici özelliklerinden birisi okurun hevesini kırmamasıdır. Çünkü Memik YANIK teknik konular nasıl anlatıldığında, nasıl cümleler kurulduğunda okurun ilgisi dağılmaz, anlatılanları kavrar? Sorularına verilecek cevapları vardır. Eğer programcılık kitabının yazarı dönüp yazdığı metne bakıp okurlar tarafından nasıl algılanacağı konusunda kafa yormazsa ve bu konuda fikri hazırlığı yoksa yazdıkları doğru olsa bile zor anlaşılır.

Her ne kadar bu kitabın kapağında sırayla Delphi 20007 for Win32, Turbo Delphi ve Delphi 2006 olmakla birlikte Delphi 7 ve Delphi 2005 kullanıcıları da bu kitaptan yararlanabilir. Bu kitabın içeriğinin büyük bir kısmı Delphi 7 için de geçerlidir. Bir diğer konu şudur: Borland’ın C++ Builder derleyicisini kullanarak C++ hakkında bilgi sahibi olduysanız C++ Builder ile gelen görsel kitaplık ve kontroller hakkında(özellikle veritabanı işlemleri) bilgi edinmek isteyenler bu kitaptan belli oranda yararlanabilirler.

Bu metni niye mi kaleme aldım: Çünkü Türkiye’de kimse zahmet edip programcılık kitapları üzerine bir şey yazmıyor. Bu nedenle iş başa düştü ve kendi kitabım hakkında birşeyler yazmak istedim. “Kitabın hakkında yazarken objektif olabildin mi?” diye soranlara elbette diye cevap veririm.

Bu yazıya henüz yorum yapılmamış. | 09.04.2009 21:30:32

ADO.NET Kitabı..


Her ne kadar daha önce ADO.NET kitabımın önsözünü sizlerle paylaşmış olsam bile şimdiye kadar bu kitap hakkında fazla konuşmadım. Birkaç yönüyle rakipsiz olan bu kitaba dikkatinizi çekmek istiyorum. İlk söylemek istediğim şudur: Zaman zaman forumlardaki soruları cevaplamaya çalışıyorum. Şimdiye kadar C# ve Visual Basic ile program yazanların forumlardaki ADO.NET konulu hangi sorusuna cevap verdiysem her seferinde ADO.NET kitabımdan Copy-Paste yaptım. Çünkü bu kitapta ADO.NET konusunda yolun başında olanların karşılaşmaları muhtemel bütün sorulara cevap vermeye çalıştım. Örneğin bana ADO.NET’le ilgili olarak gerek mail olarak gerekse MSN’de sorulan her 3 sorudan birisinde mutlaka SQL Server veritabanı kullanan uygulama için kurma programının nasıl hazırlanacağı soruluyor.

Önce şu ADO.NET nedir sorusuna cevap verelim. Visual Basic 3.0’te veritabanı işlemleri yapılırken kullanılan teknolojinin adı DAO yani Database Access Object’i. DAO, Microsoft tarafından geliştirilen JET adlı veritabanı motorunu ve Windows’la gelen ODBC sürücülerini kullanıyordu. Microsoft firması bir süre sonra Visual Basic programcıları ADO’yu yani ActiveX Data Objects’i geliştirdi. 2002 yılında piyasaya verilen ilk .NET Framework sürümüyle birlikte ise ADO.NET programcıların istifadesine sunuldu. .NET Framework’le gelip veritabanı işlemleri yapılırken yararlanılan sınıfların hepsine birden ADO.NET adı verilmektedir. Başka bir deyişle bu kitapta ağırlıklı olarak veritabanı işlemleriyle ilgili .NET sınıflarından söz edilmektedir.

Bu kitabı kaleme alırken şu okur grubunu hedefledim:Daha önce C# hakkında az çok bilgi edinmiş olmasına rağmen C# uygulamalarında veritabanı işlemlerini yapmakta zorlananlar. Bu hedef okur grubu içinde daha önce SQL Server’la hiç ilgilenmemişlerin olabileceğini düşünerek SQL Server hakkında özet bilgi vermeyi denedim. Yani daha önce SQL Server’la hiç çalışmamış hiç uğraşmamış olanlar bile bu kitabı okuduklarında rahatlıkla SQL Server’ı kurup veritabanı hazırlayıp C# uygulaması dahilinde istedikleri veritabanı işlemlerini yapabilir duruma gelirler. Bu arada Access veritabanlarının güvenliğiyle ilgili olarak bu kitapta yazılanların bu kitabın yayınlandığı günlerde başka kaynaklarda bulunma ihtimali çok düşüktü. Aradan 1 yıldan fazla zaman geçince yeni çıkan kitap veya yayınlanan makalelerde Access veritabanlarının güvenlikle ilgili özelliklerinden söz edilmiş olabilir. Bu kitabı hepsiburada.com'dan talep edebilirsiniz.

Şimdi size ADO.NET kitabımdan alınma 2 sayfa vereceğim. Bu sayede bu kitapta konuların nasıl anlatıldığı konusunda az da olsa fikir sahibi olacaksınız.

“Bildiğiniz gibi formun üzerine yerleştirilen nesneler ile DataTable nesnesinin alanları arasında bağlantı kurulurken ve satırların arasında dolaşılırken Binding ve CurrencyManager sınıflarından yararlanılmaktadır. ADO.NET’in bu işlemleri daha kolay yapmanıza imkan sağlayan BindingSource sınıfı bulunmaktadır. Bu sınıfın nasıl kullanıldığını adım adım anlatmak için veritabanından veri çekmek yerine bir dizi değişken tanımlayıp bilgi aktardım.

string[] dizi;

private void Form1_Load(object sender, EventArgs e)

{

dizi = new string[5];

dizi[0] = "Adana";

dizi[1] = "Adıyaman";

dizi[2] = "Afyon";

dizi[3] = "Ağrı";

dizi[4] = "Amasya";

}

Bu şekilde dizi değişken tanımlayıp bilgi aktardıktan sonra Toolbox’tan yararlanıp forma bir BindingSource nesnesi yerleştirdim. Proje çalıştırıldığında dizi değişkenin ilk elema­nın içeriği TextBox’ta görüntülenecek.



Kısaca belirtmek gerekirse BindingSource sınıfına CurrencyManager sınıfının ek özellikler kazandırılmış hali denilebilir. Projenin formunu bu şekilde düzenledikten sonra formun Load olayını temsil eden metoda bir satır ekleyerek BindingSource nesnesinin DataSource özelliğine tanımlayıp bilgi aktardığım dizi değişkenin adını aktardım.

private void Form1_Load(object sender, EventArgs e)

{

dizi = new string[5];

dizi[0] = "Adana";

dizi[1] = "Adıyaman";

dizi[2] = "Afyon";

dizi[3] = "Ağrı";

bindingSource1.DataSource =dizi;

textBox1.DataBindings.Add("Text", bindingSource1, "");

}

Toolbox’tan yararlanarak forma yerleştirdiğim BindingSource nesnesinin DataSource özelliğine dizi değişkenin adını aktardığım için BindingSource nesnesi dizi değişkenin içeriğine sahip olur. Şimdi bu BindingSource nesnesinden okuma yapacağım. BindingSource nesnesinin aktif satırı elde edilirken Current özelliğinden yararlanılmaktadır. Current özelliği Object tipinde bilgi içerdiği için object tipinde bir değişken tanımlayıp Current özelliğini bu değişkene aktardım.

string[] dizi;

private void Form1_Load(object sender, EventArgs e)

{

dizi = new string[5];

dizi[0] = "Adana";

dizi[1] = "Adıyaman";

dizi[2] = "Afyon";

dizi[3] = "Ağrı";

dizi[4] = "Amasya";

bindingSource1.DataSource = dizi;

object nesne = bindingSource1.Current;

textBox1.Text = nesne.ToString();

}

Hiç şüpheniz olmasın bazı arkadaşlar hemen itiraz edip bu metnin ne özelliği var diye soracaklardır. Bu metnin tek özelliği var: Bu metni ve kitaptaki devamını okuyan herkes 15 dakikada BindingSource sınıfı hakkında net bilgiye sahip olur. Yoksa forma TextBox yerleştirip mevcut DataTable’ın bir alanı ile bu TextBox arasında bağlantı kurmayı görsel olarak yapmak zor değildir. Ne ki BindingSource sınıfı hakkında bilgi sahibi olmayanlar geri planda nelerin olduğunu bilmeden ezbere işlemler yaparlar.

 

Bu yazıya henüz yorum yapılmamış. | 08.04.2009 00:36:57

Ana Sayfa | Hakkımda | Kitap Önerileri | Fotoğraflarım | RSS | İletişim
Memik Yanık 2004-2009 © Tüm Hakları Saklıdır.
Hazırlayan www.semgoksu.com