Τα modules στη γλώσσα προγραμματισμού Visual Basic

Τα modules στη γλώσσα προγραμματισμού Visual Basic

Τα modules στη γλώσσα προγραμματισμού Visual Basic αποτελούν τον ιδανικό τρόπο δήλωσης μεταβλητών και διαδικασιών για καθολική (public) χρήση σε ένα πρόγραμμα.  Η δήλωση ενός module ορίζει έναν τύπο αναφοράς διαθέσιμο μέσα στο πρόγραμμα.

Ένα Module παρομοιάζεται με μία κλάση αλλά παρουσιάζει μερικές σημαντικές διαφορές. Δεν υποστηρίζει κληρονομικότητα ανάμεσα σε τύπους ή αντικείμενα και δεν απαιτεί προηγούμενη δήλωση τύπου αντικειμένου για τη χρησιμοποίησή του. Μπορεί να δηλωθεί μόνο σε επίπεδο namespace και δεν υποστηρίζει την ενθυλάκωση (encapsulation). Αυτό σημαίνει ότι το περιεχόμενο ενός module δεν μπορεί να αποτελείται από κλάση, δομή, άλλο module, διαδικασία ή block. Το module καθεαυτό δεν μπορεί να εσωματωθεί σε κανένα άλλο τύπο αντικειμένου ούτε σε διαφορετικό module.

Ένα module έχει χρόνο ζωής ίσο με αυτό του προγράμματος όπου δηλώνεται και χρησιμοποιείται και κατ’ επέκταση, όλα τα μέλη του έχουν το συγκεκριμένο χρόνο ζωής. Τα module -από τις προκαθορισμένες ρυθμίσεις- διέπονται από προσβασιμότητα τύπου Friend. Τυχόν αλλαγές επιπέδου προσβασιμότητας σε κάποιο μέλος προκύπτουν από τη χρήση άλλων δεσμευμένων λέξεων εμβέλειας , όπως η “Public”. Όλα τα μέλη ενός module θεωρούνται αυτομάτως ως Shared.

Τα modules στη γλώσσα προγραμματισμού Visual Basic: οι διαφορές με τις κλάσεις

Ορολογία: Προηγούμενες εκδόσεις της Visual Basic αναγνώριζαν δύο τύπους: class modules (.cls files) και standard modules (.bas files). Στη σύγχρονη έκδοση οι όροι έχουν αντικατασταθεί με τους classes και modules αντίστοιχα.

Shared μέλη: Στην περίπτωση της κλάσης, μπορεί να οριστεί εάν ένα μέλος ή αντικείμενο θα είναι τύπου Shared, ενώ στην περίπτωση του module όλα τα μέλη θεωρούνται Shared by default.

Object Orientation: Οι κλάσεις είναι object-oriented, ενώ τα modules όχι. Επομένως μόνο οι κλάσεις μπορούν να χρησιμοποιηθούν για τη δημιουργία αντικειμένων (instances).

Τα modules στη γλώσσα προγραμματισμού Visual Basic: κανόνες και συμπεριφορά

Όλα τα μέλη θεωρούνται αυθαίρετα ως Shared στη Visual Basic και η ιδιότητά τους αυτή δε μεταβάλλεται. Επομένως η δεσμευμένη λέξη “Shared” δεν μπορεί να χρησιμοποιηθεί κατά τη δήλωση μελών. Επιπλέον ένα module δεν κληρονομεί ιδιότητες ή μεθόδους από άλλο τύπο αντικειμένου πέρα από τον τύπου Object. Ειδικότερα ένα module δεν κληρονομεί χαρακτηριστικά άλλου module και δεν μπορούν να καθοριστούν default properties μέσα σε αυτό.

Σχετικά με τα επίπεδα πρόσβασης μέσα σε ένα module, κάθε μέλος μπορεί να δηλωθεί με το δικό του επίπεδο. Τα μέλη θεωρούνται ως public , ενώ οι σταθερές και οι μεταβλητές ως private. Όταν ένα module έχει δηλωθεί με πιο περιορισμένη προσβασιμότητα από την προσβασιμότητα κάποιου εκ των μελών του, τότε κατά το runtime προηγείται και αξιοποιείται η αρχική , αυτή του module που περιέχει το αντίστοιχο μέλος. Γενικώς η εμβέλεια ενός module εκτείνεται μέσα στα όρια του namespace όπου δηλώθηκε.

Κατά τη χρήση πολλών modules, μπορούμε να έχουμε τη δήλωση ομώνυμων χαρακτηριστικών – το καθένα σε διαφορετικό module. Εάν η αναφορά στο συγκεκριμένο μέλος γίνεται σε διαφορετικό σημείο του προγράμματος, πρέπει να έχει καθοριστεί σαφώς το μέλος στο οποίο αναφερόμαστε, για να μην προκύπτουν conflicts κατά το runtime.

Τα modules στη γλώσσα προγραμματισμού Visual Basic: δήλωση με παράδειγμα

Στο παράδειγμα κώδικα που ακολουθεί, γίνεται η δήλωση τριών μελών μέσα σε module με όνομα myModule:

Module myModule '1
   Public ReadOnly i As Integer = 10 '2
   Friend counter As Integer = 0 '3
   Public Function myFunction() '4
     Dim flag as Boolean = True '5
     If (counter Is 2) Then '6
        flag = False '7
     End If '8
     Return flag '9
   End Function '10
End Module '11
  • Γραμμή 1: ξεκινά ο κώδικας ενός object με όνομα myModule τύπου module
  • Γραμμή 2: δήλωση μεταβλητής τύπου integer μόνο για ανάγνωση, με όνομα i, και αρχικοποιείται με την τιμή 10
  • Γραμμή 3: δήλωση μεταβλητής τύπου integer, με όνομα counter, και αρχικοποιείται με την τιμή 0
  • Γραμμή 4: ξεκινά ο κώδικας ενός function με όνομα myFunction
  • Γραμμή 5: δήλωση τοπικής μεταβλητής τύπου boolean, με όνομα flag, και αρχικοποιείται με την τιμή false.
  • Γραμμή 6: σύνταξη συνθήκης σχετικής με την τιμή του counter – εκκίνηση δομής if
  • Γραμμή 7: εκχώρηση της τιμής false στη μεταβλητή flag
  • Γραμμή 8: ολοκλήρωση της δομής if
  • Γραμμή 9: δήλωση επιστροφής αποτελέσματος στο κυρίως πρόγραμμα
  • Γραμμή 10: ολοκληρώνεται ο κώδικας του function με όνομα myFunction
  • Γραμμή 10: ολοκληρώνεται ο κώδικας του module με όνομα myModule

 Τα modules στη γλώσσα προγραμματισμού Visual Basic: χρήση με παράδειγμα

Για τη χρήση των μελών στο κυρίως πρόγραμμα, μπορούμε πλέον να αναφερόμαστε σε αυτά σαν να ήταν δηλωμένα μέσα στο σώμα του χωρίς κανένα πρόβλημα. Οι ακόλουθες γραμμές κώδικα εκτελούνται κανονικά:

Dim correct as Boolean

correct = myFunction()

counter = i + 2

Απάντηση

Αυτός ο ιστότοπος χρησιμοποιεί το Akismet για να μειώσει τα ανεπιθύμητα σχόλια. Μάθετε πώς υφίστανται επεξεργασία τα δεδομένα των σχολίων σας.