Вот некоторые наблюдения, которые я сделал, работая с концепциями ООП в VBA:
- Вы не можете перегружать методы в VBA.Однако у вас есть дополнительные параметры в вашем распоряжении, к лучшему или к худшему.
- У вас есть один метод
Class_Initialize
без параметров, который вызывается при создании объекта, но его нельзя перегрузить для обработки параметров.Если вы хотите, чтобы ваш класс не был «полностью функциональным» без определенных свойств, вам придется написать свой собственный способ сделать это. - Среда редактирования VB6 и VBA заставляет вас создавать "файлы классов »и храните каждый класс в отдельном файле, отличном от модулей.
- Классы и модули могут иметь как открытые, так и закрытые поля.Открытое поле в модуле по сути является глобальной переменной.
- Модули функционально аналогичны статическим классам в C #.Открытый код можно вызывать из модулей в любом месте вашего приложения.
Парадигма VB6 / VBA предусматривает классы как способ инкапсуляции функциональности и свойств объекта.В этом смысле объекты VB6 / VBA существуют так же, как и любая другая базовая среда ООП, и их использование и дизайн следует поощрять, где это необходимо.
Однако из-за отсутствия нескольких ключевых функций ООП VB6 / VBA не могут полностью реализовать шаблон проектирования ООП.