ООП - объектно-ориентированое программирование

Общие принципы, проектирование, модуляризация, темплейты и шаблоны
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение Konstantin Sumenko »

Собственно поэтому я тоже теперь использую классы. Различий с кластерами очень много. Что можно отнести к заметным плюсам классов (учитывая уже написанное mzu2006) :
1) Ограничение видимости методов класса (public, private, protected, community).
2) Наследование+Динамическое определение принадлежности объекта (Dynamic Dispatch).

Кстати, в LV2009 так и нет возможности делать класс членом другого класса (класс в классе)?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение Eugen Graf »

Как это нет. У меня например класс "Стол вращения" содержит массив классов "Ось".
Вложения
Stol.png
Axis.png
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение Konstantin Sumenko »

Тогда вообще пробелов нет. В 8.2.1 такой возможности не было.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение Eugen Graf »

Наконец то нашёл время и всё таки перевёл свою же статью с немецкого на русский http://www.labviewportal.org/ru/proekti ... 179--lvoop
Лучше бы я не переводил, а написал заново :D
Комментарии ещё как принимаются.
toto

Activity Gold Black
professional
professional
Сообщения: 390
Зарегистрирован: 07 мар 2008, 09:26
Награды: 3
Версия LabVIEW: 6i-16
Откуда: Санкт-Петербург
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение toto »

Вот прочитал я эту статью, и ... не дело не в статье :) просто много лет программируя в LabView вижу, что специалисты (не программисты) легко понимают LabView, и в то же время вижу как программисты (Delphi, Си) загоняют их в тупик пытаясь объяснить приемущество ООП, то есть суть конечно понятна, но не все так здорово в реальности, так возникает вопрос, надо ли ломать привычные стереотипы и переходить на ООП?
Последний раз редактировалось toto 23 окт 2012, 11:00, всего редактировалось 1 раз.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение Eugen Graf »

Именно это я и хотел объяснить в статье (видимо не очень получилось). Просто попробуй разобраться, в самом процессе программирования ООП мало что меняет, меняется само отношение к проекту.
В общем отвечу прямо на твой вопрос - стоит попробовать, не понравится, можно не пользоваться. Правда я не думаю, что захочется возвращаться.
toto

Activity Gold Black
professional
professional
Сообщения: 390
Зарегистрирован: 07 мар 2008, 09:26
Награды: 3
Версия LabVIEW: 6i-16
Откуда: Санкт-Петербург
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение toto »

То есть переход к ООП не влечет каких-либо ухудшений, типа увеличение времени разработки?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение Eugen Graf »

Скорее да, чем нет, это зависит от опыта. ООП приносит в проект особенно легкопонимаемую структуру и организованность. Да при этом нужно скорее всего сделать больше кликов мышкой, скорее всего будет больше подприборов. Это примерно такой же прыжок в программировании, как переход от одного параллельного потока к нескольким или переход от одного :vi: на всю программу на главный и несколько под :vi: . Поэтому вывод - ООП стоит применять в больших и сложных проектах, в которых можно запутаться и которые нужно время от времени дополнять (как известно это может быть проблемой).
Аватара пользователя
Forward

Activity Tutorials Black
professional
professional
Сообщения: 337
Зарегистрирован: 03 мар 2008, 12:41
Награды: 3
Версия LabVIEW: 2010
Откуда: Кишинев
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение Forward »

Хм...имхо, в отличии от С/С++ в LV/LVOOP каких-то координальных отличий нет (я имею ввиду концептуальный подход). Добавилась новая фича (LVClass), стало удобней работать. А тот же Graph (который наверняка существует еще с тех времен, когда я в начальную школу ходил) является объектом какого-то класса, часть свойств которого инкапсулированы. Вызов его property node, которые мы юзаем частенько - вызов методов класса.
Согласен, пробовать стоит, я думаю хуже точно не будет.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение mzu2006 »

1. Использовать LVOOP для простых программ, собираемых на коленке за 15 минут, конечно, не надо. Не окупается.

2. Насчёт Graph, всё не так просто. В :labview: есть несколько непересекающихся иерархий объектов. мы говорили про LVOOP, а Graph - принадлежит к native G objects - 2 совсем разные иерархии со своими правилами игры.
Аватара пользователя
Forward

Activity Tutorials Black
professional
professional
Сообщения: 337
Зарегистрирован: 03 мар 2008, 12:41
Награды: 3
Версия LabVIEW: 2010
Откуда: Кишинев
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение Forward »

mzu2006 писал(а):2. Насчёт Graph, всё не так просто. В :labview: есть несколько непересекающихся иерархий объектов. мы говорили про LVOOP, а Graph - принадлежит к native G objects - 2 совсем разные иерархии со своими правилами игры.
Я и не хотел посягать на "святое" :), я имел ввиду что в программинге LV/LVOOP не вижу концетуально разных подходов, стилей мышления, стереотипов и т.п., хотя мне пока не довелось погружаться в недры LVOOP.
Аватара пользователя
crashwork

Activity Silver
adviser
adviser
Сообщения: 205
Зарегистрирован: 17 фев 2009, 19:57
Награды: 2
Версия LabVIEW: 8.5, 9.0
Откуда: Украина. Кременчуг
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение crashwork »

А применяет ли кто-то узел In Place Element Structure при создании Dynamic Dispatch VI как это указано в хелпе Labview? И каким образом (ибо я че то не понял)?
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение Konstantin Sumenko »

ИМХО это не не панацея (In Place Element Structure). По сути нужна только там где идет поэлементная работа (Replace Array Subset и т.д.).
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение mzu2006 »

crashwork писал(а):А применяет ли кто-то узел In Place Element Structure при создании Dynamic Dispatch VI как это указано в хелпе Labview?
Таким образом пока ни разу не применял. Я понял help так:

1. Есть метод, вызываемый через dynamic dispatch.
2. Есть производный класс(-ы) в котором этот метод переопределяется
3. LabVIEW, когда встречает вызов этого метода с проволоки базового класса, осуществляет оптимизацию, так как если бы вызывался метод базового класса. Т.е. если в этом методе базового класса одно из входных значений не меняясь передавалось на выход, то LabVIEW будет считать, что оно не изменяется и в производном классе
4. Вот чтобы поменять эту оптимизацию, NI предлагает, завести такой терминал на вход in-place structure в реализации метода в базовом классе. И включить: "mark as modifier" на структуре.
5. Похоже на слово volatile в Си.
Crowbar писал(а):По сути нужна только там где идет поэлементная работа (Replace Array Subset и т.д.).
Да и то не везде. Я много раз ловил себя на мысли: "вот хочу использовать эту структуру". Но пока почти всегда, когда я включал "show buffer allocations" то я видел ненужность этой структуры.

На симпозиуме NI говорили, что почти единственное реальное применение in-place структуры - это для data value references (DVRs). Там надо прямо указывать.
Аватара пользователя
crashwork

Activity Silver
adviser
adviser
Сообщения: 205
Зарегистрирован: 17 фев 2009, 19:57
Награды: 2
Версия LabVIEW: 8.5, 9.0
Откуда: Украина. Кременчуг
Контактная информация:

Re: ООП - объектно-ориентированое программирование

Сообщение crashwork »

mzu2006 писал(а): Таким образом пока ни разу не применял. Я понял help так:

1. Есть метод, вызываемый через dynamic dispatch.
2. Есть производный класс(-ы) в котором этот метод переопределяется
3. LabVIEW, когда встречает вызов этого метода с проволоки базового класса, осуществляет оптимизацию, так как если бы вызывался метод базового класса. Т.е. если в этом методе базового класса одно из входных значений не меняясь передавалось на выход, то LabVIEW будет считать, что оно не изменяется и в производном классе
4. Вот чтобы поменять эту оптимизацию, NI предлагает, завести такой терминал на вход in-place structure в реализации метода в базовом классе. И включить: "mark as modifier" на структуре.
5. Похоже на слово volatile в Си.
Да, согласен, по крайней мере я хелп перевел так же. Ну что же значит не судьба ей быть использованной (однако себе помечу, что есть такая структура и ее рекомендуют применять вот так).
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Модели программирования»