Краудсорсовый GUI. Открытое бета-тестирование. - страница 19

 
Реter Konow:

Улыбнуло :) Все ядро под завязку забито объектами.

Алексей, ты обещал помочь протестировать. То, что этот редактор увидит свет, твоя заслуга. Ты мотивировал меня закончить дело. 

Как только я выставлю редактор (во вторник), мы вместе создадим простейшую панель из кнопок, чекбоксов и полей ввода и подключим ее к простейшему советнику. И на все вопросы сразу будут получены ответы.))

Петр, так я и не отказываюсь от тестирования. ))

Что ты вкладываешь в понятие "ОБЪЕКТ"?

 
Алексей Барбашин:

Петр, так я и не отказываюсь от тестирования. ))

Что ты вкладываешь в понятие "ОБЪЕКТ"?

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

 
Реter Konow:

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

В моей голове взрыв...

Процедурное программирование оперирует только функциями и переменными. Максимальным объектом при процедурном программировании может являться только переменная. При отсутствии ООП переменные могут обладать только простыми типами: число, строка, дата, булево. Такие типы не могут обладать какими-либо свойствами. Функции не могут быть объектами.

Самым примитивным объектом может быть структура, но это уже область ООП.

Я с трудом представляю себе конструкцию типа:

int OnInit()
{
ТипКнопка Кнопка1 = новый ТипКнопка();

Кнопка1.ЦветРамки = Новый Цвет(234,123,90);

Форма.Добавить(Кнопка1, КоординатаХ, КоординатаY);

Кнопка1.УстановитьСобытие("Нажатие", НажатиеНаКнопку1);
}

void НажатиеНаКнопку1(ТипКнопка  кнопка)

{

}

Или Петр чего-то не договаривает или пытается подменять понятия "объект" чем-то своим... ООП именно для того и придуман чтобы мы могли создавать свои любые типы с любыми свойствами и далее любой разработчик мог наращивать или изменять свойства наследуемого ОБЪЕКТА.

 
Алексей Барбашин:

В моей голове взрыв...

Процедурное программирование оперирует только функциями и переменными. Максимальным объектом при процедурном программировании может являться только переменная. При отсутствии ООП переменные могут обладать только простыми типами: число, строка, дата, булево. Такие типы не могут обладать какими-либо свойствами. Функции не могут быть объектами.

Самым примитивным объектом может быть структура, но это уже область ООП.

Я с трудом представляю себе конструкцию типа:

Или Петр чего-то не договаривает или пытается подменять понятия "объект" чем-то своим... ООП именно для того и придуман чтобы мы могли создавать свои любые типы с любыми свойствами и далее любой разработчик мог наращивать или изменять свойства наследуемого ОБЪЕКТА.

Алексей, почему ты решил, что Объект как понятие, привязан к предопределенному синтаксису и представлению? К каким то правилам... Ты описываешь Объект в классе, я в ряде большой матрицы. Тот же Объект и теже свойства. Он что, уже не объект?? Он исчезает?))

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

 
Реter Konow:

Алексей, почему ты решил, что Объект как понятие, привязан к предопределенному синтаксису и представлению? К каким то правилам... Ты описываешь Объект в классе, я в ряде большой матрицы. Тот же Объект и теже свойства. Он что, уже не объект?? Он исчезает?))

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

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

var Button1 = GlobalArrayElement[10];

Так не получится! Ссылка на позицию массива не может быть именованной переменной!

Но спорить с тобой я не буду, лучше дождусь результата.

var ButtonBuy = СоздатьЭлементКнопки("ИмяКнопки", Ширина, Высота, ПозицияХ, ПозицияY);

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

 
Алексей Барбашин:

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

Так не получится! Ссылка на позицию массива не может быть именованной переменной!

Но спорить с тобой я не буду, лучше дождусь результата.

У меня сплошь и рядом переменные ссылаются на позиции в массиве (ядре). Курсор гуляет по интерфейсу и элементы попадают в фокус. Их номер записывается в переменную и через нее обращаюсь к нужному ряду в ядре в любой точке программы. Далее, срабатывают различные события, и обработчики напрямую имеют дело с нужным объектом, элементом, окном и параметром. Ничего более эффективного я здесь не видел.


ЗЫ. В моем подходе есть недостаток - он НЕ универсальный.  В данном случае - он заточен под создание и обработку GUI. Cправляется с этим, лучше любого иного подхода, но вне этой области - я его никогда не применял.

 
Реter Konow:

У меня сплошь и рядом переменные ссылаются на позиции в массиве (ядре). Курсор гуляет по интерфейсу и элементы попадают в фокус. Их номер записывается в переменную и через нее обращаюсь к нужному ряду в ядре в любой точке программы. Далее, срабатывают различные события, и обработчики напрямую имеют дело с нужным объектом, элементом, окном и параметром. Ничего более эффективного я здесь не видел.

Петр, не нужно подменять общепринятые понятия. Именно подмена и вносит сумятицу в мозги твоих оппонентов. 

Все твои переменные ссылаются на позиции в массиве, но никак не на объекты. У тебя их нет, у тебя есть только массив и позиции в нем. Не нужно применять к массиву примитивных типов такое понятие как "объект". 

В рамках программирования понятия "Число", "Строка", "Дата", "Булево", "Функция", "Переменная", "Класс", "Массив", "Структура", "Объект" - не инвариантны, как ты выразился!

 
Алексей Барбашин:

Петр, не нужно подменять общепринятые понятия. Именно подмена и вносит сумятицу в мозги твоих оппонентов. 

Все твои переменные ссылаются на позиции в массиве, но никак не на объекты. У тебя их нет, у тебя есть только массив и позиции в нем. Не нужно применять к массиву примитивных типов такое понятие как "объект". 

В рамках программирования понятия "Число", "Строка", "Дата", "Булево", "Функция", "Переменная", "Класс", "Массив", "Структура", "Объект" - не инвариантны, как ты выразился!

По твоему, ряд свойств в массиве описывающий некую конкретную сущность НЕ объект?

А номер этого ряда НЕ ссылка на объект?

 
Реter Konow:

По твоему, ряд свойств в массиве описывающий некую конкретную сущность НЕ объект?

А номер этого ряда НЕ ссылка на объект?

Нет, это не ссылка и не объект. Ссылка это то, что можно поместить в переменную. У тебя в переменную можно поместить конкретное значение - индекс! Индекс - это не сама строка массива, это конкретное число! 

 
Ждём драку :) .