ООП - объектно-ориентированое программирование
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
Собственно поэтому я тоже теперь использую классы. Различий с кластерами очень много. Что можно отнести к заметным плюсам классов (учитывая уже написанное mzu2006) :
1) Ограничение видимости методов класса (public, private, protected, community).
2) Наследование+Динамическое определение принадлежности объекта (Dynamic Dispatch).
Кстати, в LV2009 так и нет возможности делать класс членом другого класса (класс в классе)?
1) Ограничение видимости методов класса (public, private, protected, community).
2) Наследование+Динамическое определение принадлежности объекта (Dynamic Dispatch).
Кстати, в LV2009 так и нет возможности делать класс членом другого класса (класс в классе)?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
Как это нет. У меня например класс "Стол вращения" содержит массив классов "Ось".
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
Тогда вообще пробелов нет. В 8.2.1 такой возможности не было.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
Наконец то нашёл время и всё таки перевёл свою же статью с немецкого на русский http://www.labviewportal.org/ru/proekti ... 179--lvoop
Лучше бы я не переводил, а написал заново
Комментарии ещё как принимаются.
Лучше бы я не переводил, а написал заново
Комментарии ещё как принимаются.
-
- professional
- Сообщения: 390
- Зарегистрирован: 07 мар 2008, 09:26
- Награды: 3
- Версия LabVIEW: 6i-16
- Откуда: Санкт-Петербург
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
Вот прочитал я эту статью, и ... не дело не в статье :) просто много лет программируя в LabView вижу, что специалисты (не программисты) легко понимают LabView, и в то же время вижу как программисты (Delphi, Си) загоняют их в тупик пытаясь объяснить приемущество ООП, то есть суть конечно понятна, но не все так здорово в реальности, так возникает вопрос, надо ли ломать привычные стереотипы и переходить на ООП?
Последний раз редактировалось toto 23 окт 2012, 11:00, всего редактировалось 1 раз.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
Именно это я и хотел объяснить в статье (видимо не очень получилось). Просто попробуй разобраться, в самом процессе программирования ООП мало что меняет, меняется само отношение к проекту.
В общем отвечу прямо на твой вопрос - стоит попробовать, не понравится, можно не пользоваться. Правда я не думаю, что захочется возвращаться.
В общем отвечу прямо на твой вопрос - стоит попробовать, не понравится, можно не пользоваться. Правда я не думаю, что захочется возвращаться.
-
- professional
- Сообщения: 390
- Зарегистрирован: 07 мар 2008, 09:26
- Награды: 3
- Версия LabVIEW: 6i-16
- Откуда: Санкт-Петербург
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
То есть переход к ООП не влечет каких-либо ухудшений, типа увеличение времени разработки?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
Скорее да, чем нет, это зависит от опыта. ООП приносит в проект особенно легкопонимаемую структуру и организованность. Да при этом нужно скорее всего сделать больше кликов мышкой, скорее всего будет больше подприборов. Это примерно такой же прыжок в программировании, как переход от одного параллельного потока к нескольким или переход от одного на всю программу на главный и несколько под . Поэтому вывод - ООП стоит применять в больших и сложных проектах, в которых можно запутаться и которые нужно время от времени дополнять (как известно это может быть проблемой).
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
Хм...имхо, в отличии от С/С++ в LV/LVOOP каких-то координальных отличий нет (я имею ввиду концептуальный подход). Добавилась новая фича (LVClass), стало удобней работать. А тот же Graph (который наверняка существует еще с тех времен, когда я в начальную школу ходил) является объектом какого-то класса, часть свойств которого инкапсулированы. Вызов его property node, которые мы юзаем частенько - вызов методов класса.
Согласен, пробовать стоит, я думаю хуже точно не будет.
Согласен, пробовать стоит, я думаю хуже точно не будет.
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
1. Использовать LVOOP для простых программ, собираемых на коленке за 15 минут, конечно, не надо. Не окупается.
2. Насчёт Graph, всё не так просто. В есть несколько непересекающихся иерархий объектов. мы говорили про LVOOP, а Graph - принадлежит к native G objects - 2 совсем разные иерархии со своими правилами игры.
2. Насчёт Graph, всё не так просто. В есть несколько непересекающихся иерархий объектов. мы говорили про LVOOP, а Graph - принадлежит к native G objects - 2 совсем разные иерархии со своими правилами игры.
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
Я и не хотел посягать на "святое" :), я имел ввиду что в программинге LV/LVOOP не вижу концетуально разных подходов, стилей мышления, стереотипов и т.п., хотя мне пока не довелось погружаться в недры LVOOP.mzu2006 писал(а):2. Насчёт Graph, всё не так просто. В есть несколько непересекающихся иерархий объектов. мы говорили про LVOOP, а Graph - принадлежит к native G objects - 2 совсем разные иерархии со своими правилами игры.
-
crashwork
- adviser
- Сообщения: 205
- Зарегистрирован: 17 фев 2009, 19:57
- Награды: 2
- Версия LabVIEW: 8.5, 9.0
- Откуда: Украина. Кременчуг
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
А применяет ли кто-то узел In Place Element Structure при создании Dynamic Dispatch VI как это указано в хелпе Labview? И каким образом (ибо я че то не понял)?
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
ИМХО это не не панацея (In Place Element Structure). По сути нужна только там где идет поэлементная работа (Replace Array Subset и т.д.).
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
Таким образом пока ни разу не применял. Я понял help так:crashwork писал(а):А применяет ли кто-то узел In Place Element Structure при создании Dynamic Dispatch VI как это указано в хелпе Labview?
1. Есть метод, вызываемый через dynamic dispatch.
2. Есть производный класс(-ы) в котором этот метод переопределяется
3. LabVIEW, когда встречает вызов этого метода с проволоки базового класса, осуществляет оптимизацию, так как если бы вызывался метод базового класса. Т.е. если в этом методе базового класса одно из входных значений не меняясь передавалось на выход, то LabVIEW будет считать, что оно не изменяется и в производном классе
4. Вот чтобы поменять эту оптимизацию, NI предлагает, завести такой терминал на вход in-place structure в реализации метода в базовом классе. И включить: "mark as modifier" на структуре.
5. Похоже на слово volatile в Си.
Да и то не везде. Я много раз ловил себя на мысли: "вот хочу использовать эту структуру". Но пока почти всегда, когда я включал "show buffer allocations" то я видел ненужность этой структуры.Crowbar писал(а):По сути нужна только там где идет поэлементная работа (Replace Array Subset и т.д.).
На симпозиуме NI говорили, что почти единственное реальное применение in-place структуры - это для data value references (DVRs). Там надо прямо указывать.
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
crashwork
- adviser
- Сообщения: 205
- Зарегистрирован: 17 фев 2009, 19:57
- Награды: 2
- Версия LabVIEW: 8.5, 9.0
- Откуда: Украина. Кременчуг
- Контактная информация:
Re: ООП - объектно-ориентированое программирование
Да, согласен, по крайней мере я хелп перевел так же. Ну что же значит не судьба ей быть использованной (однако себе помечу, что есть такая структура и ее рекомендуют применять вот так).mzu2006 писал(а): Таким образом пока ни разу не применял. Я понял help так:
1. Есть метод, вызываемый через dynamic dispatch.
2. Есть производный класс(-ы) в котором этот метод переопределяется
3. LabVIEW, когда встречает вызов этого метода с проволоки базового класса, осуществляет оптимизацию, так как если бы вызывался метод базового класса. Т.е. если в этом методе базового класса одно из входных значений не меняясь передавалось на выход, то LabVIEW будет считать, что оно не изменяется и в производном классе
4. Вот чтобы поменять эту оптимизацию, NI предлагает, завести такой терминал на вход in-place structure в реализации метода в базовом классе. И включить: "mark as modifier" на структуре.
5. Похоже на слово volatile в Си.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 0 Ответы
- 699 Просмотры
-
Последнее сообщение Dima123_Dima321