Список доступных концепций ООП - PullRequest
7 голосов
/ 29 июня 2010

Я строю некоторый материал для ООП (объектно-ориентированного программирования) в VBA.Кто-нибудь может мне перечислить концепции ООП, которые доступны в VBA?

Например, из моего чтения я обнаружил, что:

  1. Наследование недоступно в VBA.
  2. Существует концепция инкапсуляции, так как вы можете использовать модификатор доступа "private" и создать публичное свойство.

Ответы [ 3 ]

5 голосов
/ 29 июня 2010

VBA поддерживает некоторые концепции ОО, а не другие.

с VBA вы можете создавать свои собственные классы и создавать объекты из этих классов.Однако VBA НЕ поддерживает Наследование и не поддерживает «полиморфизм» в классическом значении этого термина, используемого в языках OO, таких как C ++ или .NET.

Классы VBA поддерживают инкапсуляцию и абстракцию.

4 голосов
/ 29 июня 2010

Вот некоторые наблюдения, которые я сделал, работая с концепциями ООП в VBA:

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

Парадигма VB6 / VBA предусматривает классы как способ инкапсуляции функциональности и свойств объекта.В этом смысле объекты VB6 / VBA существуют так же, как и любая другая базовая среда ООП, и их использование и дизайн следует поощрять, где это необходимо.

Однако из-за отсутствия нескольких ключевых функций ООП VB6 / VBA не могут полностью реализовать шаблон проектирования ООП.

0 голосов
/ 14 августа 2016

Один особенный недостаток в VBA заключается в инкапсуляции массивов объектов.

У вас могут быть массивы объектов, но вы не можете перейти более чем на один уровень вниз.Обходные пути существуют, например, с использованием типа Variant, но тогда вы теряете безопасность типов.Это усложняет работу с иерархическими объектными структурами, в то время как возможно, вы получите замысловатый код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...