Visual Basic: İkinci Ders

1

Konu .NET uyumlu programlama dilleri olduğunda ilk karşılaşacağınız kavram belki de Class kavramıdır. Hemen ilk dakikada size Class’ları anlatmayacağım. Her ne kadar Visual Basic for .NET programlarını Class şeklinde düzenlemek bir zorunluluk olmasa bile en zor anlaşılan konuların başında Class’lar geldiği için bu derste en azından adından söz edeceğim. Bu sayfalarda daha önce yayınlanan ilgili C# dersini okumuş olanlar benzer cümle ve örneklerle karşılaşacaklardır.

Günümüzün modern programlama dillerinde programlar genellikle Class’lar şeklinde paketlenmekte, Class’lar şeklinde düzenlenmektedir. Programları Class’lar halinde paketlenmenin sayısız yararları vardır. Ancak bunları burada anlatmayacağım. Class’lar hakkında bilgi sahibi olmadan Visual Basic 6 ve Delphi gibi dillerle program geliştirmek mümkün iken C++, C#, Java ve Visual Basic for .NET gibi programlama dilleri Class’lar hakkında bilgi sahibi olmanızı zorunlu kılmaktadır.

Quick Basic, Pascal ve C gibi klasik programlama dillerinde kod dosyaları içinde fonksiyonlar ve procedure’ler bulunuyordu. Hatta C’de fonksiyon procedure ayrımı da yoktur. Başka bir deyişle programcılar yapmak istedikleri işlemlere uygun fonksiyonlar yazıp gerek duydukça bunları çağırıyorlardı.

Zamanla programlar büyüyüp karmaşıklaştıkça paketlenmesi ihtiyacı doğdu. Fonksiyon ve metotların Class’lar halinde paketlenmesi ile birlikte Class içinde bulunan fonksiyonların kullanılması, organize edilmesi ihtiyacı doğdu. Günümüzde yaygın olarak kullanılan programlama dillerinde Class’lar metotlardan başka Interface’leri, Olayları, Özellikleri, Delegate’leri ve Yapıcı metotları içerebilmektedir. Lütfen olay nedir özellik nedir diye sormayın. Zamanı gelince bu konular hakkında bilgi verilecektir.

Yerli yabancı ayrımı yapmadan bugüne kadar hangi kaynağa baktıysam konu nesneye yönelik programcılık olduğunda ilk birkaç sayfada biyolojiden, memelilerden, ütülerden arabalardan vs. söz edilmektedir. Her yazar nesneye yönelik programcılığın 3 temel kavramını kendince anlatmaktadır. Hemen belirtmek isterim ki kişisel görüşme göre bu anlayış öğrenmeyi zorlaştırmaktadır.

İstenilen ayrıntıda polimorfizm’den söz edilsin, biyolojiden memelilerden örnek verilsin bu kavramların kod karşılığı görülmeden verilen bilgiler havada kalıyor. Bu nedenledir ki bu derste nesneye yönelik programcılığın temel kavramlarının adını anmadan, bir daha "nesneye yönelik programcılık" sözünü etmeden bu konuyu anlatmak istiyorum. Esasında burada bilim yapmıyoruz, olsa olsa sizlere Visual Basic .NET gibi bir programlama dili ile nasıl program yazabileceğinizi anlatmak istiyoruz. Amacımız en basit şekilde programcılık tecrübesi olmayanları bile programcılığa alıştırmaktır, onları .NET uyumlu Visual Basic .NET ve diğer programlama dillerini öğrenebileceklerine inandırmaktır.

Aşağıda en basit veya en kısıtlı, en az satıra sahip bir Visual Basic programı bulunmaktadır. Bu kodu Not Defteri penceresine yazıp VB uzantısı ile kaydedip .NET Framework ile gelen Visual Basic derleyicisi ile derleyip EXE yapabilirsiniz. Bu işlemin nasıl yapıldığı bu dersin ileriki sayfalarında anlatılacaktır.

Module Deneme
   Sub Main()
   End Sub
End Module

 

Bu koda dikkat ederseniz bir Module deyimi ile başlayıp End Module deyimi ile sona erdirilen bir kod bloğu var. Bu kod bloğunun içinde ise Main() adında bir procedure veya metot var. Topu topu 4 satıra sahip bu Visual Basic kodunu derlediğinizde hata meydana gelmez ama bu programın yaptığı herhangi bir işlem yoktur. Şimdi bu Visual Basic programına DOS penceresine bilgi yazan bir satır ekleyeceğim.

Bu şekilde düzenlenen Visual Basic programı derlenip çalıştırılırsa ekrana yani DOS penceresine belirtilen mesaj yazıldıktan sonra Enter tuşuna basılıncaya kadar programın çalışması devam eder. Dikkat ederseniz bu kodda Class hazırlamadım. Bu örneği vermemdeki amaç, Visual Basic .NET’te Class hazırlamanın bir zorunluluk olmadığını size göstermekti. Şimdi sanki Visual Basic programlarının mutlaka Class şeklinde düzenlenmesi gerektiğini varsayıp ona göre anlatmaya devam edeceğim. Bu düşünce ile yukarıda verdiğim kodu aşağıdaki gibi düzenledim.

Class Deneme
   Shared Sub Main()
     System.Console.Write("Şampiyon Beşiktaş")
     System.Console.Read()
   End Sub
End Class

Tıpkı C, C++ ve C# programlarında olduğu gibi Visual Basic programlarının başlangıç noktası Main() olduğu için Main() metoduna yer vermek zorundasınız. Bu Visual Basic kodu VB uzantılı bir dosyaya yazılıp derlenip hazırlanan EXE dosya çalıştırılırsa ekrana belirtilen mesaj yazılır.

Bu Visual Basic programındaki Main() metodunun shared olduğunu işaret ettim. Visual Basic programlarının başlangıç noktası olan Main() metodu bir Class’ın içine alındığında halinde shared olmak zorundadır. Yukarıda Main() metodunu Module içine aldığım için buna gerek olmamıştı.

Şimdi Visual Basic programının başlangıç noktası olan Main() metodu içinde bir değişkene yer vereceğim. Bu değişkeni Main() metodu içinde tanımladım. Değişkeni Main() metodu tarafından sınırlanan kod bloğu yerine Class bloğu içinde tanımlayabilirdim.

Class Deneme
   Shared Sub Main()
     Dim Yil As Integer
   End Sub
End Class

Gördüğünüz gibi Visual Basic programlarında değişken tanımlanırken Dim deyiminden(buna anahtar kelime diyenler de var) yararlanılmaktadır. Dim deyiminden sonra değişkene verilmek istenen ad yazılıp, ardından değişkenin tipi işaret edilmektedir.

Buradaki integer bu değişkenin tamsayı tipindeki bilgileri saklayabileceğini işaret etmektedir. Programcılıkta değişken tanımlamayı günlük hayatta telefon edip bir otelde yer ayırmaya benzetmek mümkündür. Bu değişkeni tanımlamakla derleyiciye demiş oluyoruz ki, "programın ileriki safhalarında elimdeki integer tipindeki bilgileri bellekte tutma gereğini duyabilirim. Bu nedenle bana bellekte yer ayırt."

Bu kısacak kodu yorumlamak gerekirse, bu programdaki "Deneme" adlı Class’ın Main() adında bir metodu bulunmaktadır. Main() metodu içinde yaşayabilecek "Yil" adında ve Integer tipindeki bilgilerin aktarılabileceği bir değişken tanımlanmıştır. Daha sonra değişkenlerin nasıl tanımlandığı konusu işlenecektir.

Yukarıda belirtildiği gibi Visual Basic programları dahilinde hazırlanan Class’lar metotları barındırabilmektedir. Yukarıda verdiğim kısıtlı Visual Basic programı içinde hazırladığım Class’ta 2. bir metot hazırladım. Herhangi bir satır içermeyen bu metot bu hali ile herhangi bir işlem yapmaz. Bu metodu da Shared olarak işaret ettiğimi fark etmiş olmalısınız.

Class Deneme
   Shared Sub Main()
     Dim Yil As Integer
   End Sub
 
   Shared Sub Mesaj()
   End Sub
End Class

Daha önce C#, C++ ve Delphi gibi herhangi bir programlama dili ile program geliştire bu derste anlatılanlar basit gelecektir. Bu derslerdeki amaçlarımdan birisi Visual Basic .NET gibi bir programlama dilinin nasıl kolay öğrenilebileceğini kanıtlamaktır. Programcılıkta tecrübeli arkadaşlara bir önerim var; sizler bu yazıda ne anlatıldığı ile değil de nasıl anlatıldığı ile ilgilenebilirsiniz.

Şimdi ise yukarıda verdiğim basit Visual Basic kodundaki Mesaj() adını verdiğim metot veya yordamı işleteceğim. Hazırladığım metot aynı sınıfın içinde olduğu için herhangi bir hazırlık yapmadan direk adıyla çağırıp işletmek mümkündür.

Class Deneme
   Shared Sub Main()
     Dim Yil As Integer
     Mesaj()
   End Sub
 
   Shared Sub Mesaj()
   End Sub
End Class

Bu hali ile bu Visual Basic programı veya VB uzantılı kod dosyası DOS penceresinde derlenip EXE hazırlanıp çalıştırılırsa Main() metodu otomatik olarak işletilir. Çünkü yukarıda söylendiği gibi Visual Basic programları Main() metodundan itibaren çalışmaya başlarlar.
 
Bu programı aşağıdaki gibi düzenlemiş olsaydım değişen bir şey olmazdı. Bu kısa örnekte "Yil" adını verdiğim değişkeni hiç kullanmadığım için Visual Basic derleyicisi derleme sırasında uyarı mesajı verir.

Class Deneme
   Shared Sub Mesaj()
   End Sub
 
  Shared Sub Main()
     Dim Yil As Integer
     Mesaj()
   End Sub
End Class

 

Şimdi bu Mesaj() adını verdiğim metotta değişiklik yapıp işletildiği zaman ekrana bilgi yazılmasını sağlayacağım. Konsolda yani DOS penceresinde çalışan Visual Basic projelerinde ekrana bilgi yazma işlemleri .NET Framework ile gelen Console sınıfında tanımlı olan Write() veya WriteLine() metotları ile yapılmaktadır.

Bu şekilde düzenlenen Visual Basic uygulaması DOS penceresinde derlenip çalıştırıldığında ekrana "Beşiktaş" yazdırılır. Mesaj() metoduna yazdığım satır hakkında biraz konuşmak gerekirse; "System.Console.WriteLine("Başiktaş");" satırındaki System bir Namespace’tir. Şimdi diyeceksiniz Namespace nedir? Cevabım hazır: Lütfen merakınızı sonraya saklayın; halk dili ile söylemek gerekirse "üzümü ye bağını sorma".

Kısaca anlatmak gerekirse Class’lar Namespace’lerin içine yerleştirilmektedir. System adlı Namespace .NET Framework ile gelen en önemli Namespace’tir ve çok sayıda Class’ı barındırmaktadır. DOS penceresine veya konsola bilgi yazmak üzere hazırladığım satırdaki Console bir Class’tır. Çok sayıda metoda sahip olan bu Class’ın sayesinde konsol yani DOS penceresi ile ilgili istenen işlemler yapılabilmektedir. Bu satırdaki WriteLine() ise Console sınıfının bir metodudur.

Bu konuyu bir okulda, bir dershanede veya seminerde anlatıyor olsaydım Visual Basic hakkında biraz bilgisi olanlar "Memik bey WriteLine() shared bir metot değil mi?" diye sorabilirlerdi. Soruyu soranlara cevabım "evet, WriteLine() metodu shared bir metottur". Tabii dersi veya semineri izleyenlerin bazıları "shared olanla olmayan metot arasında ne fark vardır" diye soru soracaklardı, bazıları ise keşke bu konuşulanları anlasaydım diye iç geçireceklerdi. Fırsat bu fırsat deyip hemen shared k olan ve olmayan metotlar hakkında uzun açıklamalar yapmayacağım.

Bazılarınız bu kısacak örneği bile hemen denemek, bu VB uzantılı dosyayı derleyip EXE dosya hazırlamak istiyor olabilir. Bu isteğe uyup VB uzantılı kod dosyasını derleyip EXE yapma üzerinde duracağım. Not Defteri ile hazırlayacağınız kod dosyalarını yerleştirmek üzere ayrı bir klasör hazırlamanızı öneririm. Bu klasör "C:" sürücüsünün kök klasöründe olursa ulaşılması kolay olur.

Visual Basic’in kurallarına uyarak yazdığınız programları derleyip EXE dosya hazırlayacak program dosyası(VBC.EXE) Windows’un kurulu olduğu klasörün altında "Microsoft.NETFramework" klasöründe yer almaktadır. .NET Framework’ün başka sürümünden yararlanıyorsanız bu klasörün adı farklı olabilir.

Hazırlayacağınız VB uzantılı dosyaları ya VBC.EXE dosyasının bulunduğu bu klasöre kaydetmeli ya da Denetim Masasındaki Sistem seçeneği ile ekrana getirilen Sistem Özellikleri diyalog kutusunda Gelişmiş sekmesindeki Sistem Değişkenleri seçeneğinden yararlanmalısınız. Path seçeneğinin içeriğine aşağıda verdiğim satırı ekleyip bilgisayarı yeniden başlatırsanız istediğiniz yerden VB uzantılı program dosyalarını derleyebilirsiniz.

C:WINDOWSMicrosoft.NETFrameworkv2.0.50727;
 

Şimdi sıra geldi bu programı derlemeye. Bu amaçla bir DOS penceresi açıp komut satırına "VBC ILK.VB" yazıp Enter tuşuna basınca Visual Basic programı derlenmeye başlandı. Yazdığım programda herhangi bir hata olmadığı için EXE dosya hazırlandı.

 

Yazdığım programda Main() metodu içinde "Yil" adında ve integer tipinde bir değişken tanımlamış olmama rağmen bu değişkeni hiç kullanmadığım için derleyici uyarıda bulundu. Bu uyarı "ilk.vb" dosyasından yola çıkılıp ILK.EXE dosyasının hazırlanmasına engel değildir. Derleyici uyarı yerine hata mesajı vermek zorunda kalsaydı EXE dosya hazırlanmazdı.

Tekrarlamak gerekirse derleme işlemi sonucu VB uzantılı Visual Basic programı ile aynı ada sahip bir EXE dosyası hazırla

1 Yorum

  1. valla allah razı olsun nediyim

    okudukca bişiler anlıyoruz bizim zamanımızda yani commore64 lerden diycem biz hamallık yapmışız yav valla bide data lar ı yazmak için adam tutarlardı gel şurayıda sen yaz diye yalvarır dık yaa

    allah teknolojiden ve yazanlardan razı olsun

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

Exit mobile version