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

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

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

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

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

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Все, что сказано - личное мнение.

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

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

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

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
не то?

Конечно то, спасибо!
Возьмите на вооружение ссылочку: http://kak-iskat.ru/
Ваш сарказм на данную тему будет выглядеть эффектнее, например : http://kak-iskat.ru/?q=Class+module+usage
В программировании я новичок...но ненадолго! ;)

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Мне проще готовый запрос опубликовать :) Но за ссылку спасибо ;)
Все, что сказано - личное мнение.

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

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

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
Лично у меня такое отношение к Class Module - если нужны классы, значит dotNET

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

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Лично у меня такое отношение к Class Module - если нужны классы, значит dotNET

Я инженер, а не программист. Понадобился VBA - изучаю. Нужны ли мне модули классов? Да бог их знает! :) Просто не люблю, когда что-то непонятно! Да и проще решать задачи, когда понимаешь, какими именно вещами ты можешь оперировать. Так что вопрос остается неизменным: "Где толково написано (таки для чайников), что такое класс-модули в VBA, и с чем их едят?!" ;)
В программировании я новичок...но ненадолго! ;)

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

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

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

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

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

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Вживую я бы попробовал объяснить, но тут на смех подымут с моими "объяснялками" ;) И будут правы.

)))) Да я понимаю, что это примитивное понятие. Я поэтому прошу не объяснить, а книгу толковую посоветовать, или статью :)
Просто в глазах "мамонта-программиста"  оно кажется не таким уж простым :) А перерыскать весь интернет пока не найдешь что-то толковое - сомнительная трата времени. Там может быть и норм написано во многих местах, но только если ты обладаешь начальными знаниями в этой области, например образованием :)
В программировании я новичок...но ненадолго! ;)

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Мне для понимания сути классов очень помог Шилдт С++, третье издание. Но оно уже не продается :(

Ай, и бог с ним, со смехом! Что, в первый раз, что ли? :)
Допустим, у нас есть "класс" - деревья. У всех деревьев есть общие признаки: ствол, к примеру. Листья, опять же; плоды у них там всякие. Это получается класс со своими свойствами. Деревья бывают садовыми (яблоня, вишня, груша...) - это уже класс-наследник. Как бы свойства родителя есть, но есть и свои, только им присущие (к примеру, плоды идут в пищу). Берем яблони - это еще один наследник со своим собственным свойством - типом плодов (яблоки). Берем сорт яблони - это еще один наследник.
Т.е. схема наследования получается примерно такая:
Дерево - Садовое - Яблоня - Сорт

А вот та яблоня, которая у тебя на участке растет, это уже экземпляр объекта, имеющий все свойства и дерева, и садового дерева, и яблони, и сорта. Но при этом у него все эти свойства имеют свои значения.

Грубо - примерно так, наверно.
Все, что сказано - личное мнение.

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

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

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

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Спасибо! Моя очередь вызывать смех, надеюсь не сморожу сильную глупость :)

В общем на текущий момент мое понимание всего такое: классы и объекты - основа объектно ориентированного программирования. Ваш пример - абстрактно показывает принцип наследования классов. Т.е. передачи части свойств и методов с попутным добавлением новых..
Каждый класс имеет свойства, методы и функции, ну также можно добавить события: типо у котенка 4 лапы и он черного цвета - это свойства, а то что его можно заставить есть или  бегать за  шариком - это мытоды, когда он нагадил на ковер - событие, потому как заставить его это делать вроде как нельзя! :)
Класс модули нужны, чтобы создавать новый вид классов, описывать их свойства и методы. И в VBA вроде как, в отличие от других языков, нельзя описать несколько классов в одном класс модуле?
Подскажите пожалуйста, сколько раз и где я ошибся в своем монологе? ;)
В программировании я новичок...но ненадолго! ;)

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Каждый класс имеет свойства, методы и функции, ну также можно добавить события
В терминах класса обычно "метод" и "функция" - это одно и тоже. Обычно в объектно-ориентированном программировании используется термин "метод".
У классов еще бывают конструкторы и деструкторы - особенные методы, которые вызываются автоматически при создании/удалении экземпляров классов.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Это уже глубины ООП :) Я перед собой ставил задачу показать наследование классов ;)
О, кстати, если я правильно понимаю, то в моем варианте все классы (кроме последнего) являются абстрактными - т.е. для них создать объект такого класса нельзя. А последний - является защищенным (sealed), создать его потомка невозможно.
Все, что сказано - личное мнение.

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

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

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Класс модули нужны, чтобы создавать новый вид классов, описывать их свойства и методы. И в VBA вроде как, в отличие от других языков, нельзя описать несколько классов в одном класс модуле?
Подскажите пожалуйста, сколько раз и где я ошибся в своем монологе? ;)
Я далеко не уверен в правильности сказанного, но у меня такое подозрение: именно в VBA один модуль класса есть один класс. Причем никаких абстрактных или защищенных классов сделать уже нельзя. Как реализовывается наследование - непонятно. В C# такого нет: внутри одного модуля можно прописать сколько угодно классов.
Все, что сказано - личное мнение.

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

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

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

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

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

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