Modüller (Module) Visual Basic'de, nesne oluşturmadan projede erişilebilen prosedürler, fonksiyonlar ve değişkenleri saklamak için tarihsel olarak kullanılmıştır. Sınıfların tanıtılmasıyla bu rolleri kısmen örtüşse de, önemli farklılıklar kalmıştır.
Tarihçe:
Klasik Visual Basic (VB6) de modüller, genel fonksiyonlar ve küresel değişkenleri gruplamanın tek yoluydu. VB.NET'te modüller mevcut kalmış, ancak sınıfların genişletilmiş olanaklarıyla birlikte.
Sorun:
Geliştirici, modül ve sınıf arasındaki farkı anlamayabilir, bu da mantıksal depolamanın yanlış seçimlerine, kodun rastgele tekrarına veya değişkenlerin beklenmedik davranışına yol açabilir.
Çözüm:
Modül ve sınıf arasındaki seçim amaçlara bağlıdır:
Kod örneği:
' Modül Module MathUtils Public Function Add(x As Integer, y As Integer) As Integer Return x + y End Function End Module ' Kullanım Dim result = MathUtils.Add(5, 10)
Anahtar özellikler:
Shareddir ve nesne olmadan erişilebilir.Modülde bir değişkeni Public olarak ilan edersem, tüm uygulama formları/sınıfları için ortak olur mu?
Evet. Modüldeki Public değişkenler, esasen küreseldir. Projenin herhangi bir kodundan erişilebilir, bu pratik olsa da, çoklu iş parçacığı sırasında hatalara veya değerlerin yanlışlıkla üzerine yazılmasına yol açabilir.
Modülü New ile örneklendirebilir miyim?
Hayır. Modüller örneklenmez. Tüm işlevselliği statik olarak erişilebilir.
Modülü miras alabilir miyim veya Protected veya Private erişim belirleyicileri ile modül ilan edebilir miyim?
Hayır. Modüller miras alınamaz ve yalnızca ad alanı (namespace) düzeyinde ilan edilebilir, iç içe olamazlar veya Public veya Friend dışında diğer erişim belirleyicilerine sahip olamazlar.
Bir projede tüm kullanıcı durum değişkenleri modülde Public olarak ilan edilir. Bir formda bir değerin değiştirilmesiyle anında diğerleri için yeni bir değer haline gelir.
Artıları:
Eksileri:
Modül yalnızca yardımcı araçların (örneğin, dönüştürme fonksiyonları) saklanması için kullanılırken, kullanıcı durumu sınıflarda kapsülleme ile saklanır.
Artıları:
Eksileri: