реклама на сайте
подробности

 
 
> C++ и ООП для микроконтроллеров AVR
koluna
сообщение May 10 2009, 06:21
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Здравствуйте!

Что вы думаете по поводу ООП для микроконтроллеров AVR на языке C++?

Благодарю заранее!


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rst7
сообщение May 11 2009, 14:46
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Объектно-ориентированные программы можно писать и без классов - даже на ассемблере. И так и делали, пока не появился более удобный для этого инструментарий.


Конечно. Но для этого необходимо сделать какой-то унифицированный способ описания объектов. Аля класс. Т.е. "тип, описывающий устройство объектов". Не путайте класс-ключевое_слово_плюсов и класс-понятие_ООП(тип, описывающий устройство объектов).

Цитата
Поверьте, даже без ООП все эти перечисленные возможности


Что-то разговор не о том. Топикстартер про использование ООП. А мы?

И вообще, чего Вы на меня напали? wink.gif Прочтите топик, разве я где-то утверждал про накладные расходы? Разве я отговаривал топикстартера от ООП?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
dxp
сообщение May 12 2009, 04:03
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Rst7 @ May 11 2009, 21:46) *
И вообще, чего Вы на меня напали? wink.gif Прочтите топик, разве я где-то утверждал про накладные расходы? Разве я отговаривал топикстартера от ООП?

Да, что вы, я совсем не напал. smile.gif И не на вас - т.е. посты-то ко всем адресованы. Просто мне показалось, что народ считает, что ООП - это любые С++'ные фишки. Вот и постарался внести ясность.

За ООП, кстати, не агитирую - эта вещь хороша к месту, и пихать куда попало ее - наживать геморрой. А вот классы сами по себе штука универсальная, и их можно использовать практически без ограничений, в том числе и на AVR. (это тоже ко всем, не только к вам smile.gif ).


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение May 12 2009, 06:54
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(dxp @ May 12 2009, 08:03) *
За ООП, кстати, не агитирую - эта вещь хороша к месту, и пихать куда попало ее - наживать геморрой. А вот классы сами по себе штука универсальная, и их можно использовать практически без ограничений, в том числе и на AVR. (это тоже ко всем, не только к вам smile.gif ).

А я бы агитировал за ООП, в условиях корпоративной разработки проектов и их дальнейшего сопровождения альтернативы ООП ИМХО не вижу.
Go to the top of the page
 
+Quote Post
dxp
сообщение May 12 2009, 11:31
Сообщение #5


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(VladimirYU @ May 12 2009, 13:54) *
А я бы агитировал за ООП, в условиях корпоративной разработки проектов и их дальнейшего сопровождения альтернативы ООП ИМХО не вижу.

Возможно, вы имели в виду объектное программирование? Т.е. использование классов/объектов? Или именно ООП?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение May 12 2009, 11:45
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(dxp @ May 12 2009, 15:31) *
Возможно, вы имели в виду объектное программирование? Т.е. использование классов/объектов? Или именно ООП?

Я именно имел в виду объектно-ориентированный подход к проетированию пограммы, конечно с использованием классов. Но классоы это лишь инструмент. Для меня в свое время это была настоящая ломка перейти к идеологии ООП (с С на С++), но это сугубо личные впечатления. У нас в конторе было чуть ли не табу на использование ++ и ООП для программирования МК, пока мы с напарником за почти два года на собственных примерах (проектах) не сломали этот стереотип.
Go to the top of the page
 
+Quote Post
dxp
сообщение May 12 2009, 13:40
Сообщение #7


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(VladimirYU @ May 12 2009, 18:45) *
Я именно имел в виду объектно-ориентированный подход к проетированию пограммы, конечно с использованием классов.

Хм, интересно... Ну, а вот на примере, скажем. Вот пусть есть дивайс, который выполняет какие-то функции: измеряет температуру на объекте, управляет нагревательным элементом, опрашивает органы управления (кнопки, энкодер и т.п.), выводит соответствующую индикацию, общается с терминалом и т.д. Вот где тут применить ООП?

Не, я понимаю, конечно, что "за уши" можно все притянуть - например, создать самый базовый класс TSomething, от него родить класс TInput, от которого родить классы TTempGauge, TButton, TEncoder, от TSomthing родить TOutput, от которого TIndicator и т.п. Но это как-то не выглядит адекватным и логичным, потому что нативной связи между всеми этими классами просто нет. И нет необходимости (да и возможности) рулить поведением объектов производных классов через интерфейс базового.

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


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
singlskv
сообщение May 12 2009, 18:53
Сообщение #8


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(dxp @ May 12 2009, 17:40) *
Хм, интересно... Ну, а вот на примере, скажем. Вот пусть есть дивайс, который выполняет какие-то функции: измеряет температуру на объекте, управляет нагревательным элементом, опрашивает органы управления (кнопки, энкодер и т.п.), выводит соответствующую индикацию, общается с терминалом и т.д. Вот где тут применить ООП?
Не, я понимаю, конечно, что "за уши" можно все притянуть - например, создать самый базовый класс TSomething, от него родить класс

Ну на AVR конечно не просто, хотя...
Но вот на Sam7 OOП легко...
Допустим "главный" обмен данными ведется через протокол Modbus.
Ну и есть
1,2,3 Uart
1 USB(CDC, типа виртуальный USB-485 переходник прямо в девайсе)
1,2 CAN(мост Modbus <-> CAN)

У меня есть структура ModbusInterface и есть наследуемуе от нее структуры UsbInterface, Rs485Interface, итд...
В ModbusInterfect определена общая для всех интерфейсов функциональность, все остальное делается
через общие процедуры SendMessage(), ReceiveMessage(), итд

Так же каждый объект может быть мастером или слейвом.
Для всех интерфейсов общая функция таймаута на интерфейсах...

Это ООП ?

Но оно фсе написанно на чистом С... laughing.gif
Go to the top of the page
 
+Quote Post
dxp
сообщение May 13 2009, 03:24
Сообщение #9


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(singlskv @ May 13 2009, 01:53) *
У меня есть структура ModbusInterface и есть наследуемуе от нее структуры UsbInterface, Rs485Interface, итд...
В ModbusInterfect определена общая для всех интерфейсов функциональность, все остальное делается
через общие процедуры SendMessage(), ReceiveMessage(), итд

Так же каждый объект может быть мастером или слейвом.
Для всех интерфейсов общая функция таймаута на интерфейсах...

Это ООП ?

Но оно фсе написанно на чистом С... laughing.gif

SendMessage(), ReceiveMessage() где определены? И если в ModbusInterface, то как реализовна подмена? И как выполняется наследование на чистом С?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
singlskv
сообщение May 13 2009, 04:32
Сообщение #10


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(dxp @ May 13 2009, 07:24) *
SendMessage(), ReceiveMessage() где определены? И если в ModbusInterface, то как реализовна подмена?

Определены в ModbusInterface как указатели на функции.
Подмена в момент инициализации объекта.
Цитата
И как выполняется наследование на чистом С?

Первое поле в структуре потомка ModbusInterface, дальше свои оригинальные поля
ну и приведение типа в функциях ModbusTimeot, ModbusAutomat, итд...
Go to the top of the page
 
+Quote Post
dxp
сообщение May 13 2009, 05:11
Сообщение #11


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(singlskv @ May 13 2009, 10:32) *
Определены в ModbusInterface как указатели на функции.
Подмена в момент инициализации объекта.

Первое поле в структуре потомка ModbusInterface, дальше свои оригинальные поля
ну и приведение типа в функциях ModbusTimeot, ModbusAutomat, итд...

Ну да, в таком виде похоже на ООП. smile.gif Только это "закат Солнца вручную". smile.gif Почему бы не использовать для этого более адекватные средства - писанины меньше, места для ошибок меньше, наглядности и элегантности больше. Тем более, что эти средства имеются под рукой в полном объеме.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
singlskv
сообщение May 13 2009, 05:39
Сообщение #12


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(dxp @ May 13 2009, 09:11) *
Ну да, в таком виде похоже на ООП. smile.gif Только это "закат Солнца вручную". smile.gif Почему бы не использовать для этого более адекватные средства - писанины меньше, места для ошибок меньше, наглядности и элегантности больше. Тем более, что эти средства имеются под рукой в полном объеме.

Просто довольно большой проект в котором ООП имеет смысл всего лишь в 2-3 местах,
часть кода моя часть других программистов, все написано на С,
мешать С с плюсами не хотелось.

Да и писанины не многим больше чем в плюсах, на самом OO подходе уже большая экономия для этой части.
А что касаемо ошибок, дык приведение типов всего один раз на функцию, а в остальном от плюсов мало в чем отличие.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- n_bogoyavlensky   C++ и ООП для микроконтроллеров AVR   May 10 2009, 06:21
- - Tcom   Нравиться пишите на С++ для AVR.   May 10 2009, 07:06
- - tAmega   Смотря какой AVR, если 8 битные модели, то ООП это...   May 10 2009, 07:11
- - Rst7   Цитатаи программировать на нем конечно можно, но п...   May 10 2009, 07:44
- - tAmega   Видел код на C++ для AVR, нашел единственное объя...   May 10 2009, 09:01
- - Rst7   Цитатанашел единственное объяснение, для чего там ...   May 10 2009, 09:10
- - DpInRock   Программирование в ООП обычно требует динамическог...   May 10 2009, 10:56
|- - SasaVitebsk   Цитата(DpInRock @ May 10 2009, 13:56) Про...   May 11 2009, 21:38
- - Rst7   ЦитатаПрограммирование в ООП обычно требует динами...   May 10 2009, 11:13
- - kurtis   ЦитатаНикакого отношения динамическое выделение па...   May 10 2009, 11:29
|- - _Pasha   Цитата(kurtis @ May 10 2009, 14:29)  С++ ...   May 10 2009, 12:29
- - Rst7   ЦитатаДык если взять STL STL - это всего лишь удо...   May 10 2009, 11:46
- - researcher   Об ООП хорошо думаю , но в AVR ООП тесно. Какая не...   May 10 2009, 12:45
- - DpInRock   ОП имеет смысл когда есть что наследовать и есть к...   May 10 2009, 13:07
|- - haker_fox   Цитата(DpInRock @ May 10 2009, 22:07) ОП ...   May 11 2009, 00:04
|- - demiurg_spb   Цитата(DpInRock @ May 10 2009, 17:07) А т...   May 11 2009, 11:13
- - Rst7   ЦитатаВообще, как Вы можете говорить после этого о...   May 11 2009, 07:23
- - dxp   Мущщины! Вы бы сначала определились в терминах...   May 11 2009, 09:29
|- - Herz   Цитата(dxp @ May 11 2009, 11:29) Мущщины...   May 11 2009, 10:47
|- - n_bogoyavlensky   Цитата(dxp @ May 11 2009, 13:29) Мущщины...   May 12 2009, 18:24
|- - _Pasha   Цитата(n_bogoyavlensky @ May 12 2009, 21...   May 12 2009, 18:34
|- - 777777   Цитата(_Pasha @ May 12 2009, 22:34) Приех...   May 13 2009, 04:00
- - Rst7   Цитатаклассы С++ как таковые - не ООП; Как это? К...   May 11 2009, 09:35
|- - Непомнящий Евгений   Цитата(Rst7 @ May 11 2009, 13:35) Как это...   May 11 2009, 10:35
|- - dxp   Цитата(Rst7 @ May 11 2009, 16:35) Как это...   May 11 2009, 11:12
|- - megajohn   Цитата(dxp @ May 11 2009, 19:22) ... кото...   May 19 2014, 05:02
|- - msalov   Цитата(megajohn @ May 19 2014, 12:12) и п...   May 19 2014, 05:12
|- - Сергей Борщ   Цитата(megajohn @ May 19 2014, 12:12) и п...   May 19 2014, 05:14
- - Rst7   ЦитатаООП - это программирование, когда программа ...   May 11 2009, 10:57
- - Rst7   ЦитатаКласс - это тип, определяемый пользователем....   May 11 2009, 11:52
|- - dxp   Цитата(Rst7 @ May 11 2009, 18:52) Я утвер...   May 11 2009, 13:58
|- - dxp   Цитата(singlskv @ May 13 2009, 12:39) А ч...   May 13 2009, 06:26
|- - singlskv   Цитата(dxp @ May 13 2009, 10:26) Еще забы...   May 13 2009, 15:41
- - Rst7   Цитатав условиях корпоративной разработки проектов...   May 12 2009, 07:00
- - yanvasiij   Люди, поднял тему в связи с глубокой заинтересован...   May 19 2014, 00:34
- - andrewlekar   Во-первых, ООП вы напрасно определяете через терми...   May 19 2014, 01:22
- - yanvasiij   Цитата(andrewlekar @ May 19 2014, 11:32) ...   May 19 2014, 02:23
|- - doom13   Цитата(yanvasiij @ May 19 2014, 09:33) А ...   May 19 2014, 03:12
|- - kolobok0   Цитата(yanvasiij @ May 19 2014, 10:33) Сп...   May 19 2014, 14:23
- - andrewlekar   В scmRTOS посмотрите как обработчики сделаны. У ме...   May 19 2014, 02:50
- - yanvasiij   Цитата(andrewlekar @ May 19 2014, 13:00) ...   May 19 2014, 04:05
|- - doom13   Цитата(yanvasiij @ May 19 2014, 11:15) Не...   May 19 2014, 04:58
|- - Сергей Борщ   Цитата(doom13 @ May 19 2014, 12:08) Ваши ...   May 19 2014, 05:09
|- - doom13   Цитата(Сергей Борщ @ May 19 2014, 12:19) ...   May 19 2014, 06:03
|- - Сергей Борщ   Цитата(doom13 @ May 19 2014, 13:13) В так...   May 19 2014, 07:48
|- - doom13   Цитата(Сергей Борщ @ May 19 2014, 14:58) ...   May 19 2014, 08:36
|- - Сергей Борщ   Цитата(doom13 @ May 19 2014, 15:46) Допус...   May 19 2014, 09:01
|- - doom13   Цитата(Сергей Борщ @ May 19 2014, 16:11) ...   May 19 2014, 09:17
|- - megajohn   Цитата(doom13 @ May 19 2014, 17:27) Все п...   May 19 2014, 09:25
|- - Сергей Борщ   Цитата(doom13 @ May 19 2014, 16:27) Все п...   May 19 2014, 11:08
- - andrewlekar   Цитатаможно ли объявлять объект - не создавать его...   May 19 2014, 04:25
- - A. Fig Lee   На маленьких задачах преимущества C++ не очевидны....   May 19 2014, 17:19
- - yanvasiij   megajohn doom13 andrewlekar Сергей Борщ msalov Спа...   May 20 2014, 00:22
- - yanvasiij   -   May 20 2014, 00:22
- - juvf   смешали всё. Ну во первых в avr-gcc от winavr не...   May 21 2014, 23:22
- - andrewlekar   В C99 тоже можно переменную непосредственно перед ...   May 21 2014, 23:45
- - juvf   ЦитатаСсылки полностью перекрываются указателямине...   May 21 2014, 23:52


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 16:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.0158 секунд с 7
ELECTRONIX ©2004-2016