
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот это, пожалуй, самое простое определение изо всех.
Если более по-русски, то класс — это шаблон кода, по которому создаётся какой-то объект. Это как рецепт приготовления блюда или инструкция по сборке мебели: сам по себе класс ничего не делает, но с его помощью можно создать новый объект и уже его использовать в работе.
Класс подобен рецепту блюда. Хорошая аналогия.
И вот простое определение про указатели
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Интересное и Юмор
Alexey Viktorov, 2024.11.01 07:44
Доходчиво про объекты и указатели:
«Вообще, создание объектов через new - это как слепил шарик из какахи (чтобы соседу 1 на коврик положить потом) и кинул в мешок чтоб не воняло. Потом слепил второй шарик (для соседа 2) и тоже его в мешок... потом третий, четвёртый, десятый ... ну.. сколько соседей обрадовать хочешь - столько шариков в мешок.
И когда наступает час Ч ты понимаешь, что какахи не пронумерованы, и ты не знаешь какая принадлежит какому соседу... Засада, да?
Так вот - указатели - это верёвочки с бирочками с номерами соседа 1, 2, 3, 100 ... они привязаны к шарикам, которые в мешке (памяти), а второй конец с бирочками - у тебя в руках (в списке). Теперь по номеру соседа ты тянешь за нужную верёвочку (указатель) и достаёшь из мешка (памяти) нужную какаху (объект), получая к нему доступ и делая с ним нужные делишки.»
Походил по просторам интернета. На многих сайтах в качестве примера новичкам объясняют что такое класс на примере человека. Например, на одном из ресурсов приводится пример создания "Программиста". У него есть ФИО, рост, вес, возраст, навыки. Далее в описании сказано: "Теперь создадим объект класса". Хорошо, они создали программиста Иванова. Далее говорят, мол, а теперь создадим ему друга. Создали программера Петрова. Хорошо, это понятно. Получается, что создавая всё новые и новые объекты класса, мы просто заполняем очередную строку базы данных.
У меня всвязи с этим возник вопрос. Вот смотрите, у меня есть некая панель. Я уже ранее её показывал.
На заднем фоне - объект типа OBJ_RECTANGLE_LABEL. На его фоне я создаю метки, поля ввода, кнопки. Можно сделать это с помощью классов?
Тут вот в чём фокус. Если мне сейчас нужно будет добавить между её строк ещё одну информационную строку, то 1) всё низлежащее сдвинется на высоту этой строки и вылезет за нижнюю границу прямоугольника; 2) высоту прямоугольника нужно вручную увеличить.
Если я захочу сильно увеличить размеры шрифтов, то метки вылезут за пределы прямоугольника, будут налазить друг на друга; Тексты кнопок выйдут за пределы кнопок.
Можно ли сделать так классами, чтоб изменение шрифта приводило к тому, что метки и кнопки, как и размеры прямоугольника и кнопок автоматически под это масштабировались? Я к тому, что делать процедурно - это муторно. Классами это сделать проще?
Походил по просторам интернета. На многих сайтах в качестве примера новичкам объясняют что такое класс на примере человека. Например, на одном из ресурсов приводится пример создания "Программиста". У него есть ФИО, рост, вес, возраст, навыки. Далее в описании сказано: "Теперь создадим объект класса". Хорошо, они создали программиста Иванова. Далее говорят, мол, а теперь создадим ему друга. Создали программера Петрова. Хорошо, это понятно. Получается, что создавая всё новые и новые объекты класса, мы просто заполняем очередную строку базы данных.
У меня всвязи с этим возник вопрос. Вот смотрите, у меня есть некая панель. Я уже ранее её показывал.
На заднем фоне - объект типа OBJ_RECTANGLE_LABEL. На его фоне я создаю метки, поля ввода, кнопки. Можно сделать это с помощью классов?
Тут вот в чём фокус. Если мне сейчас нужно будет добавить между её строк ещё одну информационную строку, то 1) всё низлежащее сдвинется на высоту этой строки и вылезет за нижнюю границу прямоугольника; 2) высоту прямоугольника нужно вручную увеличить.
Если я захочу сильно увеличить размеры шрифтов, то метки вылезут за пределы прямоугольника, будут налазить друг на друга; Тексты кнопок выйдут за пределы кнопок.
Можно ли сделать так классами, чтоб изменение шрифта приводило к тому, что метки и кнопки, как и размеры прямоугольника и кнопок автоматически под это масштабировались? Я к тому, что делать процедурно - это муторно. Классами это сделать проще?
Конечно можно..можно темы и даже расположение элементов менять на лету
Вообще GUI пишут так чтобы ты, как прикладник, не задумывался над пикселями и кто куда может налезть и которого оно цвета.. Даже и про что на заднем или что на переднем плане..
пишут так, чтобы ты затрачивал как можно меньше усилий и времени на создание этой (к примеру) формы.
Это в нормальных местах :-) Здесь на форуме наоборот...чем объёмней код, тем больше платят за статьи :-)
Походил по просторам интернета. На многих сайтах в качестве примера новичкам объясняют что такое класс на примере человека. Например, на одном из ресурсов приводится пример создания "Программиста". У него есть ФИО, рост, вес, возраст, навыки. Далее в описании сказано: "Теперь создадим объект класса". Хорошо, они создали программиста Иванова. Далее говорят, мол, а теперь создадим ему друга. Создали программера Петрова. Хорошо, это понятно. Получается, что создавая всё новые и новые объекты класса, мы просто заполняем очередную строку базы данных.
У меня всвязи с этим возник вопрос. Вот смотрите, у меня есть некая панель. Я уже ранее её показывал.
На заднем фоне - объект типа OBJ_RECTANGLE_LABEL. На его фоне я создаю метки, поля ввода, кнопки. Можно сделать это с помощью классов?
Тут вот в чём фокус. Если мне сейчас нужно будет добавить между её строк ещё одну информационную строку, то 1) всё низлежащее сдвинется на высоту этой строки и вылезет за нижнюю границу прямоугольника; 2) высоту прямоугольника нужно вручную увеличить.
Если я захочу сильно увеличить размеры шрифтов, то метки вылезут за пределы прямоугольника, будут налазить друг на друга; Тексты кнопок выйдут за пределы кнопок.
Можно ли сделать так классами, чтоб изменение шрифта приводило к тому, что метки и кнопки, как и размеры прямоугольника и кнопок автоматически под это масштабировались? Я к тому, что делать процедурно - это муторно. Классами это сделать проще?
Конечно можно. Но будет ли лучше — вопрос открытый. Дело ведь не в классе, а в том как всё это написано. У вас сейчас как определяется высота и ширина OBJ_RECTANGLE_LABEL? Вероятно прописано вручную и в зависимости от этого так же вручную прописаны высота и ширина полей и кнопок. А если вы сделаете высоту полей и кнопок в зависимости от размера шрифта, и в зависимости от размеров и количества полей и кнопок по высоте и по ширине, то изменяя размер шрифта у вас вся панель изменит размеры. И немаловажно параметры монитора. Тоже надо учесть DPI о чём в документации нормально рассказано.
зы. Вот тут мой код где меняется размер шрифта и вслед за этим меняется высота строк оставляя расстояние между строками как было.Конечно можно. Но будет ли лучше — вопрос открытый. Дело ведь не в классе, а в том как всё это написано. У вас сейчас как определяется высота и ширина OBJ_RECTANGLE_LABEL? Вероятно прописано вручную и в зависимости от этого так же вручную прописаны высота и ширина полей и кнопок. А если вы сделаете высоту полей и кнопок в зависимости от размера шрифта, и в зависимости от размеров и количества полей и кнопок по высоте и по ширине, то изменяя размер шрифта у вас вся панель изменит размеры. И немаловажно параметры монитора. Тоже надо учесть DPI о чём в документации нормально рассказано.
зы. Вот тут мой код где меняется размер шрифта и вслед за этим меняется высота строк оставляя расстояние между строками как было.Я почему-то прямоугольник создаю ПЕРЕД лейблами. Очевидно изменения порядка создания приводит к тому, что метки на заднем фоне. Я довольно долго экспериментровал с разными настройками того, на заднем плане объект или на переднем. Уже не помню. Скорее всего. что прямоугольник с заливкой, поставленный после создания лейблов скрывает их.
А так да, я меняю шрифт и всё как у Вас в информере.
Я почему-то прямоугольник создаю ПЕРЕД лейблами. Очевидно изменения порядка создания приводит к тому, что метки на заднем фоне. Я довольно долго экспериментровал с разными настройками того, на заднем плане объект или на переднем. Уже не помню. Скорее всего. что прямоугольник с заливкой, поставленный после создания лейблов скрывает их.
А так да, я меняю шрифт и всё как у Вас в информере.
Я говорил не о последовательности создания, а о последовательности определения размеров.
По размеру шрифта определяете размер кнопки, по размеру и количеству пересчитываете размер прямоугольника, создаёте прямоугольник. И потом определяете координаты и создаёте кнопки.
Кажется, до меня дошло. Класс - действительно удобная штука, если его описание находится во внешнем файле, а не внутри кода советника. Вот тогда он - универсальное средство.
Описание может быть в другом файле в виде обычной пользовательской функции, не обязательно в виде класса. А вот если вы хотите использовать класс стандартной библиотеки, тогда да, лучше писать класс… Хотя и не обязательно.
Я говорил не о последовательности создания, а о последовательности определения размеров.
По размеру шрифта определяете размер кнопки, по размеру и количеству пересчитываете размер прямоугольника, создаёте прямоугольник. И потом определяете координаты и создаёте кнопки.
Меняете название шрифта и пропорции сторон кнопки летят к чертям. Есть шрифты, у которых размер, например, 10, по высоте у одного икс пикселов, у другого игрек, значительно отличающийся от икса. Чтоб этого не было придётся описывать размеры каждого типа шрифта. Это гемор. Я задаю стартовые размеры кнопки. Затем в коде просто расширяю или сужаю по мере необходимости стартовые размеры.
Сдвиг по вертикали для каждой строки лейблов тоже идёт на стандартный шаг. Если увеличил шрифт и строки налазят друг на друга, я просто увеличиваю шаг (меняю значение одной переменной, меняю 1 раз) и всё становится нормально.
То же самое для координаты икс. Есть стартовая позиция. Если в строке, скажем кнопка и поле ввода, то для поля ввода нужен сдвиг на размер кнопки + зазор. После отрисовки поля возвращаем икс в исходное и всё. Короче, могу дать код - всё увидите. А то так на пальцАх плохо видно. Сделать? Дать код?
Описание может быть в другом файле в виде обычной пользовательской функции, не обязательно в виде класса. А вот если вы хотите использовать класс стандартной библиотеки, тогда да, лучше писать класс… Хотя и не обязательно.
А вот тут у меня пока что пробел в знаниях. Если описание может быть обычной функцией, то нужно создавать файл, который мы кладём в Libraries. Описание класть в инклудники (как делают некоторые - кладут туда готовые функции) мне не нравится. В этом случае заголовочный файл превращается в мешанину кода.
Скажите, что если в инклуднике без объявления функции просто написать :
Сработает это? Можно будет после подключения инклудника к советнику сразу создавать экземпляр класса?
И такой же вопрос про файл библиотеки. Можно ли таким же образом (без объявления функции) просто создавать класс в файле библиотеки? Создавать вне подпрограммы?