Помогите пожалуйста разобратся с понятием Class Module

Автор Тема: Помогите пожалуйста разобратся с понятием Class Module  (Прочитано 18620 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Каждый класс имеет свойства, методы и функции, ну также можно добавить события
В терминах класса обычно "метод" и "функция" - это одно и тоже. Обычно в объектно-ориентированном программировании используется термин "метод".
У классов еще бывают конструкторы и деструкторы - особенные методы, которые вызываются автоматически при создании/удалении экземпляров классов.

Спасибо! Что "метод" и "функция" - схожие термины, я вроде как понимал, потому и написал их через "и" :)  Но то что это абсолютно одно и тоже?! Залез в браузер, читаю : "Function Add(FullDocumentName As String, Position As Matrix) As ComponentOccurrence" но если нажать F1 "ComponentOccurrences.Add Method" :) Тут становится ясно кто программист, а кто нет :)

Если разговор зашел о тонкостях терминов, не могли бы вы провести вводный ликбез на тему: "Разница между процедурами и функциями". Как мне сказал один знакомый, мол это почти одно и тоже...но меня смущает это почти :) я без функций пока справляюсь, но может быть зря?
В программировании я новичок...но ненадолго! ;)

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Процедуры введены были в VB и продолжили свое существование вплоть до VB6 (а в VBA есть до сих пор). Разница между ними (насколько мне не изменяет склероз) в том, что функция обязательно возвращает какое-то значение, а вот процедура - нет. По крайней мере так в VBA для MS Office, ACAD.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Процедуры введены были в VB и продолжили свое существование вплоть до VB6 (а в VBA есть до сих пор). Разница между ними (насколько мне не изменяет склероз) в том, что функция обязательно возвращает какое-то значение, а вот процедура - нет. По крайней мере так в VBA для MS Office, ACAD.
Спасибо. Я не раз натыкался в примерах, что процедура обращается к функции, та возвращает необходимое значение, и процедура продолжается дальше. Но сакральный смысл такой структуры действий я пока не познал :) Ну ниче, лиха беда начало!
В программировании я новичок...но ненадолго! ;)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Подскажите пожалуйста, кто в Inventor API разбирается, класс ComponentOccurrences это какраз вышеупомянутый абстрактный?
В VBA (насколько я помню) не может быть абстрактных классов. Они есть в C#/VB.NET (про VB.NET я не уверен).
Защищенный класс - это тот, от которого запрещено дальнейшее наследование.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Подскажите пожалуйста, кто в Inventor API разбирается, класс ComponentOccurrences это какраз вышеупомянутый абстрактный?
В VBA (насколько я помню) не может быть абстрактных классов. Они есть в C#/VB.NET (про VB.NET я не уверен).
Защищенный класс - это тот, от которого запрещено дальнейшее наследование.

:( Я запутался... :) Просто в моем понимании ComponentOccurrences как раз подходит под описанное Алексеем  понятие абстрактного класса, ну мол нельзя создать объект данного класса?  Как и в принципе все классы, которые в объектной модели Inventor'a именуются "Collection Objects".

П.С. Спасибо за ваш ответ.
В программировании я новичок...но ненадолго! ;)

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Collection = коллекция. Набор объектов одного класса. В коллекцию можно добавить новый уникальный объект, можно удалить.
Если аналогия с яблонями все еще "катит", то яблоневая роща - это коллекция. В нее можно добавить (посадить) новую яблоню (новый уникальный объект); можно срубить ее (удалить объект), можно их посчитать, собрать яблоки и выполнить еще до дури всяких действий.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Спасибо, Алексей.
П.С. Я наверно пока не буду тему закрывать, мы тут обсудили много полезного, но что можно считать ответом на начальный вопрос я пока не знаю. :)
Поищу еще какую-нибудь хорошою статью про класс модули, коли найду закину сюда. Или может быть кто-нибудь еще напишет.
В программировании я новичок...но ненадолго! ;)

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
но что можно считать ответом на начальный вопрос я пока не знаю.
Пару слов скажу про некоторое отличие VBA АИ от остальных (Акад, ексель и т.п.). В Акаде в одном классе (допустим AcadDocument) реализованы методы, свойства и события. В АИ события из класса Document вынесены в класс DocumentEvents (так для всех объектов), который можно использовать только в модуле класса. Реально я использую модули классов для отслеживания событий в АИ, клавы или мыши. Для создания объектов я использую VB.NET...
На форуме cad.ru я приводил примеры создания классов на VBA для отслеживания событий, поищи там...

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Спасибо! Обязательно поищу.
В программировании я новичок...но ненадолго! ;)