Вопрос по ООП

anarch
Offline
Зарегистрирован: 10.09.2017

Не так давно начал изучать ООП.

Есть класс Button.

Есть несколько объектов buttonOne, buttonTwo, buttonThree.

Есть метод loop() который опрашивает состояние кнопки и устанавливает флаг.

Приходится для каждого объекта вызывать buttonOne.loop(), buttonTwo.loop()...

Существует метод(инструмент) в ОПП, что бы одним вызовом loop() произошел опрос всех объектов. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Мне тоже интересно стало. Подпишусь, почитаю :)

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

anarch, Вы можете отличить графическую среду разработки от просто среды разработки. Мышеклик от программирования ручками.

anarch
Offline
Зарегистрирован: 10.09.2017

Хочу программировать мышекликом ;)

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

anarch пишет:

Хочу программировать мышекликом ;)

Ну тогда ждите пока кто нибудь не нарисует Visual Arduino среду разработки. А не то извращение FLPpog. Потому что то что вы спросили это уже не наследование, а владение объектами .Что чуточку сложнее чем OОП

anarch
Offline
Зарегистрирован: 10.09.2017

Если правильно понимаю например Qt где то сам без участия программиста крутит циклы и опрашивает объекты?

Т.е. то что я спросил это задача фреймворка?

Если касаясь наследования, то как оно происходит если наследуется класс сетевого соединения.

При каждом создании объекта будет открываться новое соединение?

Просто все что пока изучил по ООП так это или простым примеров вот тыкаем сюда и будет хорошо или с хэштегом #тыжепрограммист сам все поймешь.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

anarch пишет:

Если правильно понимаю например Qt где то сам без участия программиста крутит циклы и опрашивает объекты?

А теперь внимательно прочитайте херню которую вы написали. Уточняю компьютер всегда работает без участия программиста.Конечно программист может возле него сидеть.
  Если вы создаете объект то всегда надо предусмотреть метод его инициализации,хоть в конструкторе.А так же метод выполнения- по очереди по прерыванию по событию. Опять же эти методы надо как-то прикрутить к соответсвующим  веткам программы, что бы объект работал. Это делается или ручками, или графической средой или методами подключения/отключения.(Qt)  Вот и ковыряйтесь что и как вам проще сделать

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ООП здесь и не пахнет даже, это управление экземплярами объектов.  

В том же Qt, виджет, чтобы его опрашивали автоматически, прикрепляет свой слот к событию, т.е. супервизор должен откуда- то знать, кому посылать события и от кого ждать данных

anarch
Offline
Зарегистрирован: 10.09.2017

DetSimen пишет:

В том же Qt, виджет, чтобы его опрашивали автоматически, прикрепляет свой слот к событию, т.е. супервизор должен откуда- то знать, кому посылать события и от кого ждать данных

В том и дело создаем кнопку и работаем с ней и не заморачиваемся где и в каком цикле ее опрашивать.

Знаем что от нее может поступить сигнал и к нему привязываем слот. 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Может сразу Винду или Линух повесить.(сарказм)

mu_ssina
Offline
Зарегистрирован: 30.08.2013

anarch пишет:

Не так давно начал изучать ООП.

Есть класс Button.

Есть несколько объектов buttonOne, buttonTwo, buttonThree.

Есть метод loop() который опрашивает состояние кнопки и устанавливает флаг.

Приходится для каждого объекта вызывать buttonOne.loop(), buttonTwo.loop()...

Существует метод(инструмент) в ОПП, что бы одним вызовом loop() произошел опрос всех объектов. 

 

Ну дык напиши метод :-)

Что то типа

loop()

{

MetodOprosaVseh();

}





MetodOprosaVseh()

{

buttonOne;

buttonTwo;

buttonThree;

}

 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

anarch пишет:

DetSimen пишет:

В том же Qt, виджет, чтобы его опрашивали автоматически, прикрепляет свой слот к событию, т.е. супервизор должен откуда- то знать, кому посылать события и от кого ждать данных

В том и дело создаем кнопку и работаем с ней и не заморачиваемся где и в каком цикле ее опрашивать.

Знаем что от нее может поступить сигнал и к нему привязываем слот. 

Какие проблемы?

Создаем два класса: кнопка и диспетчер кнопок.

Кнопка при создании должна зарегистрироваться в диспетчере, после чего уже диспетчер будет заботиться о том, когда и как ее опрашивать, а в общем цикле (в прерывании - где угодно) будет только вызов метода диспетчера.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

anarch пишет:

Не так давно начал изучать ООП.

Есть класс Button.

Есть несколько объектов buttonOne, buttonTwo, buttonThree.

Есть метод loop() который опрашивает состояние кнопки и устанавливает флаг.

Приходится для каждого объекта вызывать buttonOne.loop(), buttonTwo.loop()...

Существует метод(инструмент) в ОПП, что бы одним вызовом loop() произошел опрос всех объектов. 

 

class Button;
using ButtonPtr = Button *;

static ButtonPtr Buttons[] = {
   new Button(A0);
   new Button(A1);
   new Button(A2);
   new Button(D5)
};

void ReadAllButtons(void) {
  uint8_t size = sizeof(Buttons)/sizeof(Buttons[0]);    

   for(uint8_t i=0; i<size; i++) if (Buttons[i] != NULL)  Buttons[i]->loop();

}

 

Logik
Offline
Зарегистрирован: 05.08.2014

qwone пишет:

 Уточняю компьютер всегда работает без участия программиста.Конечно программист может возле него сидеть.

Гнусное суеверие! Компьютер без без участия программиста не работает! Программист включает компутер, без включения оно не работаит!

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Logik пишет:

qwone пишет:

 Уточняю компьютер всегда работает без участия программиста.Конечно программист может возле него сидеть.

Гнусное суеверие! Компьютер без без участия программиста не работает! Программист включает компутер, без включения оно не работаит!

Мда. Деградация на лицо. Программисты это те кто умеют включать компьютер и иногда выключать. А писать программы нельзя. От них головка бо-бо. Надо находить форумы и клянчить там программы.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Logik пишет:
Программист включает компутер, без включения оно не работаит!
Это только т.н. персональный компьютер - устройство по большей части для лайкания котиков, заказа пицы и трепежа на https://blondie.ru/forum . К серьёзным компьютерам программиста не то что включать, а даже в помещение войти не подпускают.

anarch
Offline
Зарегистрирован: 10.09.2017

Вместо примерного ответа ;да нет; столько философии )

Такая тенденция пошла на форумах, что на новичков, любителей смотрят с презрением (ты от куда такой вылупился).

 

sadman41
Offline
Зарегистрирован: 19.10.2016

anarch пишет:

Такая тенденция пошла на форумах, что на новичков, любителей смотрят с презрением (ты от куда такой вылупился).

https://en.wikipedia.org/wiki/RTFM : RTFM is an initialism for the expression "read the fucking manual". The initialism appeared in print in 1979 on the table of contents page of the LINPACK User's Guide[2] in the form "R.T.F.M." 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

anarch пишет:

Вместо примерного ответа ;да нет; столько философии )

Вопрос не предполагал ответ типа "да/нет". Формально можно было ответить на "существует ли" чем-нибудь типа "да/нет", но стало ли бы Вам легче?

Ответ же на подразумеваемый вопрос "как это сделать" были даны (не один)  и даже с примерами кодов.

Чем же Вам форум не угодил? Чего Вы ожидали? Можете объяснить?

P.S. Не любите философию - не задавайте философских вопросов.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

ЕвгенийП пишет:
P.S. Не любите философию - не задавайте философских вопросов.

Добавлю, не любите философии-не занимайтесь программированием. Потому что перед тем как что-то написать надо тщательно обдумать. А вот как научится правильно думать и есть философия. Но люди не хотят думать. Вот и приходится их палкой учить думать. Это и есть второе действие на этом форуме.

anarch
Offline
Зарегистрирован: 10.09.2017

С начала палкой это "ХОРОШИЙ" подход.

Для меня логика и философия две совершенные противоположности.

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

anarch пишет:

Для меня логика и философия две совершенные противоположности.

??????????

Чот х..ею, дорогая редакция!

86-91 МехМат МГУ, кафедра математической логики,   ... ежели чо. ;)))))))))))))))

sadman41
Offline
Зарегистрирован: 19.10.2016

wdrakula пишет:

86-91 МехМат МГУ, кафедра математической логики,   ... ежели чо. ;)))))))))))))))

Но не математической философии же!

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

anarch пишет:
С начала палкой это "ХОРОШИЙ" подход.Для меня логика и философия две совершенные противоположности.

Что такое жизнь в военное время- это жизнь в мирное время ускоренное в 100 раз. Армия это инструмент добиваться цели быстро. Если генералов учат думать- ну всяким философиям и стратегиям, то солдатам устав и сержант с палкой что бы лишних мыслей не было. 

 Хотите быстро стать "программистом" , то планшет и лайкайте сколько угодно.И главное никакой философии не надо. Это все что надо для "солдатского программирования", ну и товарища что бы по рукам бил, если чего-то вздумаете написать.Потому что писать это не солдатское дело. Лайк и дизлайк наше все.

ПС: войска диванного программирования

anarch
Offline
Зарегистрирован: 10.09.2017

Иногда удивляюсь как с такими войсками вообще можно воевать.

А если генералу голову прострелили все хана... кто за солдата думать будет если не обучали.

В любом деле быстро не бывает. А если и бывает то очень плохо.

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

anarch пишет:

Иногда удивляюсь как с такими войсками вообще можно воевать.

А если генералу голову прострелили все хана... кто за солдата думать будет если не обучали.

Известно кто - полковник.

А если и полковнику прострелили - майор.

В крайнем случае - лейтенант.

Или на худой конец - прапорщик.

В конце концов еще и ефрейтор есть.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

anarch пишет:

Иногда удивляюсь как с такими войсками вообще можно воевать.

А если генералу голову прострелили все хана... кто за солдата думать будет если не обучали.

В любом деле быстро не бывает. А если и бывает то очень плохо.

Точно так и было . Карл 12 под Полтавой носился по полю и составлял план. Получил ранение в ногу и выбыл из структуры управления. А генералы не смогли разобраться кто главный и за что отвечает и Петр 1 разбил шведов под Полтавой. И таких историй до хрена. 

ПС: Вот внятное объяснение о Карле 12 и шведах без всякой теперешней политики но с политикой тогдашней, так как война это все же политика но военными средствами https://youtu.be/Y1LygQ7H1z8?t=3444  на 57:29 Но любителям истории того времени лучше посмотреть все. 

anarch
Offline
Зарегистрирован: 10.09.2017

От философии плавно перешли к истории и военному делу ))) прям как в универе вводный курс )) профессор а когда же мы к программированию перейдем? )

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Ворота пишет:

Logik пишет:
Программист включает компутер, без включения оно не работаит!
Это только т.н. персональный компьютер - устройство по большей части для лайкания котиков, заказа пицы и трепежа на https://blondie.ru/forum . К серьёзным компьютерам программиста не то что включать, а даже в помещение войти не подпускают.

меня запускали - вывод - не программист )))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

anarch пишет:

Для меня логика и философия две совершенные противоположности.

К сожалению, это заметно.

Green
Offline
Зарегистрирован: 01.10.2015

qwone пишет:

Что такое жизнь в военное время- это жизнь в мирное время ускоренное в 100 раз. Армия это инструмент добиваться цели быстро. Если генералов учат думать- ну всяким философиям и стратегиям, то солдатам устав и сержант с палкой что бы лишних мыслей не было. 


)) Иногда армейская дисциплина здорово помогала. (Где то уже писал.)
Учебка. На доске плакат со схемой устройства. Собачки, звёздочки, пружинки, храповики, зацепы... - офигенная куча всего! Механика + электрика. Преподаватель рассказывает сначала в общем, затем детально. Всем ясно? Какой там! Рассказывает ещё ОДИН раз. После этого вызывает к доске. И, если кто то заткнулся, все встали и пошли наяривать круги вокруг плаца... Так вот, когда рассказывал сидишь буквально с открытым ртом, боясь пропустить хоть слово. Потому что знаешь чем это чревато. Ну и тумаков ещё от сверстников получишь. И очень быстро всё доходило, через ноги особенно.)
А сейчас, иной раз, смотришь как баран на новые ворота... И думаешь, та ну его нафиг, как-нибудь обойдусь.( Ну или долбишь фиг знамо сколько времени.(

Logik
Offline
Зарегистрирован: 05.08.2014

ua6em пишет:

Ворота пишет:

Logik пишет:
Программист включает компутер, без включения оно не работаит!
Это только т.н. персональный компьютер - устройство по большей части для лайкания котиков, заказа пицы и трепежа на https://blondie.ru/forum . К серьёзным компьютерам программиста не то что включать, а даже в помещение войти не подпускают.

меня запускали - вывод - не программист )))

Отличный тест получается ))) вахтер на глаз раскусил!

anarch
Offline
Зарегистрирован: 10.09.2017

Преподаватель и военный две разных профессии.

И не способность командира преподавать не должна сказываться на солдате.

По хорошему командира менять нужно, а не солдатов гонять. 

Но так уж сложилось, и с эти ни чего наверное не поделать.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

anarch пишет:

И не способность командира преподавать не должна сказываться на солдате.

По хорошему командира менять нужно, а не солдатов гонять. 

Интересное предложение военной реформы.

Простите, чем (какого уровня подразделениями и частями) Вам доводилось командовать, что Вы так поднаторели в этих вопросах?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

anarch пишет:

Преподаватель и военный две разных профессии.

И не способность командира преподавать не должна сказываться на солдате.

По хорошему командира менять нужно, а не солдатов гонять. 

Но так уж сложилось, и с эти ни чего наверное не поделать.

Вы что думаете что человек если бежит, то теряет знания. Из-за этого и различия.Преподаватель обязан следить что бы ученики не бегали в школе, что бы не потеряли знания полученные на уроках. Вы что это обнаружили у себя, так не надо было спать на уроках и знания вы после бега не потеряли бы. 

anarch
Offline
Зарегистрирован: 10.09.2017

Ворота пишет:

Простите, чем (какого уровня подразделениями и частями) Вам доводилось командовать, что Вы так поднаторели в этих вопросах?

Миновало меня это занятие командовать к счастью.

b707
Offline
Зарегистрирован: 26.05.2017

anarch пишет:

От философии плавно перешли к истории и военному делу ))) прям как в универе вводный курс )) профессор а когда же мы к программированию перейдем? )

так вроде в самом начале ветки дали несколько ответов с примерами кода - и вопрос был исчерпан, судя по тому, что уточняющих вопросов от вас не было.  А раз по сути все ясно - далее, вполне логично, пошел треп...

Если хотите получать внятные ответы на форумах - учитесь сами напрявлять дискуссию в нужное русло.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Logik пишет:

ua6em пишет:

Ворота пишет:

Logik пишет:
Программист включает компутер, без включения оно не работаит!
Это только т.н. персональный компьютер - устройство по большей части для лайкания котиков, заказа пицы и трепежа на https://blondie.ru/forum . К серьёзным компьютерам программиста не то что включать, а даже в помещение войти не подпускают.

меня запускали - вывод - не программист )))

Отличный тест получается ))) вахтер на глаз раскусил!

там не вахтёр, там охрана )))

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

anarch пишет:

Миновало меня это занятие командовать к счастью.

Ну, тогда ценность твоего мнения о том, что надо и что не надо делать в армии, ... эээ ... , как тут кто-то изящно выразился: "не превышает разумных ожиданий" :)

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Я все не читал, так как блудня пошла после некоторых первых сообщений.

Вопрос знатокам (так сказать гуру программирования) - у меня появилась идейка, как все-таки реализовать подобное (что автор озвучил в своем вопросе) по средствам ООП.

Идея заключается в следующем:

Берем класс button (или как там класс для кнопки обозвали?) и дополняем его полем name (для наглядности). Далее создаем структуру (может быть проще и класс, но я не понял некоторые моменты и у меня (в теории) все хорошо сошлось на структуре) к примеру buttons, структура по сути своей - связанный динамический список, главным элементом которой является переменная типа button.

Чтения всех состояний кнопок одновременно: Функция (метод) обходит все элементы списка и вызывает метод ::read(); В loop() вызывается один раз вне зависимости от количества кнопок.

Нажата ли кнопка или может сменилось состояние на другое? Для этого используем функцию (метод) что-то вроде getStateByName(%button_name%); Она проходится по всему списку, как только найдена кнопка с нужным именем - возвращает ее состояние. Соответственно и создание элементов типа кнопки происходит через своеобразный "конструктор" структуры (класса) buttons.

Ну и так далее, смотря что нужно "на выхлопе" получить...

Скажите, пожалуйста, гуру - чем (почему) данное решение не может быть использовано в проектах? Так как я не сильный знаток в тонкостях утечек памяти и тому подобного.... А может быть вообще есть какие-то подводные камни или что еще по хуже...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

BOOM пишет:

чем (почему) данное решение не может быть использовано в проектах? 

Может. И ещё 100500 подобных - тоже могут.

Нечто подобное обсуждалось в #10, в #11, в #12, только там были не списки, а массивы, а в  #11 так там вообще структура данных не уточнялась, неважно список, массив, хоть очередь - диспетчер и есть диспетчер.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Обычно каждый изобретает то, что ему удобно. У мня вот есть общий класс "Сенсор" от которого и унаследовано все, что можно/нужно читать. Это может быть кнопка, фоторезистор, даччик дыма или вапще Dallas какойнить, пофик все читается единообразно. Как только значение/состояние сенсора изменилось, он сам кладет в очередь сообщение о смене своего состояния. Главному циклу в loop() остается только это правильно обработать. Тем более, что в сообщение входит ID сенсора, который его послал. 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Значит мои умозаключения были верны. Верно ли я понимаю, что реализация класса в данном виде невозможна и более логично сделать класс, элементами которого будет структура связанного списка с классом кнопки в качестве данных? Ух как сказал, сам в шоке))) И не противоречит ли это «написанию хорошего кода». 

Заранее спасибо за ответ. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

На сегодня это за гранью моего восприятия. Мы с котом спать пошли. 

sadman41
Offline
Зарегистрирован: 19.10.2016

BOOM пишет:
И не противоречит ли это «написанию хорошего кода».

"Хороший код" превращается в отвратительный, как только перестаёт быть или эффективным или понятным.

Наворачивание внутри класса связных списков неизвестной размерности ради того, чтобы кто-то мог одной функцией раз в пятилетку "опросить все кнопки" наврядли можно назвать эффективным распоряжением ресурсов, как минимум.

Про бритву Оккама читали?

b707
Offline
Зарегистрирован: 26.05.2017

BOOM "помедленее. я запписываю..."

В каком "данном виде" реализация класса невозможна ? Реализация класса. который будет включать все кнопки проекта? - возможна, вроде уже ответили.

А вообще, главная проблема новичков. задающих подобные вопросы - что они ждут на них какого-то конкретного и однозначного ответа. какого-нить "единственно правильного" метода решения задачи.

А его нет.

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

DetSimen пишет:

На сегодня это за гранью моего восприятия. Мы с котом спать пошли. 

Рад буду увидеть сообщения от Вас завтра. Спокойной ночи и Вам и Вашему коту (как зовут кота?)

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

sadman41 пишет:

BOOM пишет:
И не противоречит ли это «написанию хорошего кода».

"Хороший код" превращается в отвратительный, как только перестаёт быть или эффективным или понятным.

Наворачивание внутри класса связных списков неизвестной размерности ради того, чтобы кто-то мог одной функцией раз в пятилетку "опросить все кнопки" наврядли можно назвать эффективным распоряжением ресурсов, как минимум.

Про бритву Оккама читали?

Понял, то есть такая реализация - далека от совершенства, от слова - вообще.

Про бритву с удовольствием прочту. Если можно ссылку дать? Если нет - постараюсь сам найти. 

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:

Наворачивание внутри класса связных списков неизвестной размерности ради того, чтобы кто-то мог одной функцией раз в пятилетку "опросить все кнопки" наврядли можно назвать эффективным распоряжением ресурсов, как минимум.

+100

Почему вопрос ТС вызвал флейм и почему автора не устроили ответы? - очень просто. потому что его вопрос в отрыве от конкретной задачи смысла не имеет. Надо знать, что это за кнопки. сколько их, насколько похожа или отличается их функция...

если речь про 110 кнопок клавиатуры - обьединение их в один класс оправдано, так как работа с каждой кнопкой повторяет соседнюю. Если же одна кнопка - кнопка энкодера, а другая - включение питания внешнего модуля. то обьядинять их в один класс  незачем. кнопки разные по сути и работать с ними нужно совершенно по разному.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

b707 пишет:

BOOM "помедленее. я запписываю..."

————————-

А вообще, главная проблема новичков. задающих подобные вопросы - что они ждут на них какого-то конкретного и однозначного ответа. какого-нить "единственно правильного" метода решения задачи.

А его нет.

Я, на сколько возможно, медленно печатаю, так что записывать не составит труда )))

—————————

Хотелось бы конкретного и правильного, но это всем так хочется. Меня и не конкретно устроил вполне  

ЗЫ: Не то чтобы я юнец зелёный, скорее забывший все напроч старец. Уж не один десяток лет прошёл, когда занимался программированием. Что то всплывает в памяти, а в основном да - учусь заново.

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

BOOM пишет:
Значит мои умозаключения были верны. Верно ли я понимаю, что реализация класса в данном виде невозможна и более логично сделать класс, элементами которого будет структура связанного списка с классом кнопки в качестве данных? Ух как сказал, сам в шоке))) И не противоречит ли это «написанию хорошего кода».
  Почему появился квонокод. Это некое упрощенное ООП. Разумеется в моем варианте. Теперь разворачиваем Ваш. Посмотрите как организовано Визуал. Там поле (экрана) является владельцем мелких полей,кнопок , текстов и всякой поеб**ни, которое тоже может быть владельцем нижестоящей х**ни. Замечательно. Но про память я говорить не буду. То в Ардуине про унивесальность сказать нельзя. Камни разные, дисплеи разние, кнопки клавитуры разние , графические кнопки разные. В общем об унивестальности говорить не получится. Скорее код определенный комплект камень дисплей кнопки. Но тогда уже этот набор теряет "рынок сбыта", а отвоевывать свою нишу и подтачивать "своих программистов" под "свое железо" .  И наконец можно нарисовать свою оболочку под этот набор, для любителей мышеклика. Но где взять на это все деньги и как потом это все разделить на вложивших в дело свой непосильный труд.

ПС: Это и есть основная причина почему у квонокода не появилось базовых классов с виртуальными функциями и наследований.