Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Interesting:
Способ предложенные Александром (AlexSTAL) возможно и решил бы проблему (его определенную проблематичность учитывать не будем).
Стоп-стоп-стоп!
Я не предлагал его, а сказал, что есть возможность.
А что за проблема то у вас, я понять не могу?
Вы наверное пример обсуждаете, в котором половина логики отсутствует, а половина не верна (осталась с зарождения ООП)?
Стоп-стоп-стоп!
Я не предлагал его, а сказал, что есть возможность.
А что за проблема то у вас, я понять не могу?
Вот скажем в массив нужно сложить разношерстыные объекты.
При этом нужно чтобы все свойства этих объектов хранились в этом-же массиве + был доступ ко всем событиям и методам.
Возможность предложенная вами (реализация может быть различной) на сколько я понимаю позволяет получить доступ к функционалу объектов (события и метоыды).
Но вот на счет хранения данных в массиве который имеет тип предка на вряд ли выйдет (если учесть что этих данных не объявлялось в предке).
Уточню свою мысль
Если остановиться на конкретно этом примере то:
1. Скажем создать массив в котором будет храниться тип объекта, положение по X, положение по Y можно;
2. Можно попробовать идентифицировать уникальный объект по его указателю (хотя при работе с объектом указатель может и не использоваться, тогда желательно чтобы было что-то вроде хендла);
В связи с этим немного глупый вопрос (просто иного выхода пока не вижу) - а может использовать в качестве хендла указатель (создав соответствующее свойство в предке и заполнять его в конструкторе)?
3. Мы не получаем возможности хранить в массиве свойства потомков (только те которые не завялены в предке). К примеру, насколько я понимаю, хранить в массиве радиус круга или сторону квадрата не выйдет.
3. Мы не получаем возможности хранить в массиве свойства потомков (только те которые не завялены в предке). К примеру, насколько я понимаю, хранить в массиве радиус круга или сторону квадрата не выйдет.
Ну почему же не выйдет то... Вы не напрямую к ним обращайтесь, а с помощью своей функции "ПолучитьЗначение" с параметром "радиус" (если объект круг)... Это как одна из возможностей...
Вы поставьте простую конкретную задачу
Ну почему же не выйдет то... Вы не напрямую к ним обращайтесь, а с помощью своей функции "ПолучитьЗначение" с параметром "радиус" (если объект круг)... Это как одна из возможностей...
Вы поставьте простую конкретную задачу
Задача проста, но вот кто сказал что ее реализовать просто.
1. Требуется записать записать в массив разнашорстные объекты (потомки базового класса) вместе с их данными.
Особо уточню что вместе с данными!!!
2. Получить результаты расчета от GetArea() для каждого из потомка;
3. Добавить следующие возможности:
а. расчет периметра квадрата - сторона *4;
б. Расчет периметра круга - 2πR.
3. Добавить в библиотеку дополнительные фигуры - прямоугольник (две стороны) и треугольник.
4. Добавить следующие возможности:
а. расчет площади прямоугольника - основание на высоту;
б. Расчет периметра прямоугольника - сумма сторон *2;
в. Расчет площади треугольника;
г. Расчет периметра треугольника.
5. Идентифицировать каждый объект по отдельности (среди всех объектов и среди объектов своего класса).
Желательно с использованием указателей и без них.
6. рассчитать периметр и площадь фигур только по тем данным что хранятся в массиве.
PS
При этом переносить код из потомков в предка не допускается (если только этот код не распространяется на всех предков).
Т.е к примеру в предка не льзя перенеси радиус, поскольку в квадрате, прямоугольнике и круге его нет.
Новый функционал в предка можно добавлять, если только он распространяется на всех потомков.
За основу берем код находящийся в прицепе.
В рамках одного массива я лично решил задачку просто добавив переменные для хранения площади и периметра в предок + функционал по записи данных в них.
При этом если контролируется результат GetArea() и прочих функций прямого расчета.
Вроде свои же правила этим не нарушил.
Я накидал один из способов реализации с таким подходом, который описан у Вас.
Он не полный, но там самое главное подход
Я накидал один из способов реализации с таким подходом, который описан у Вас.
Он не полный, но там самое главное подход
Подход понятен. Скорей всего это одно из самых лучших решений подобной проблемы.
По крайней мере пока.
Задача проста, но вот кто сказал что ее реализовать просто.
1. Требуется записать записать в массив разнашорстные объекты (потомки базового класса) вместе с их данными.
...Электронные таблицы на MQL5 задача уже решена и описана.
Как хорошо уметь читать... :)
Тоже не плохой подход, хотя как я понял оба эти подхода расчиитаны на передачу/чтение только одного парраметра (пускай и разных типов).
А вот как интересно быть если параметров много и все их не запихать в базовый класс?
Насколько я понимаю дополнительно ввести индекс параметра который передаем (также в классе можно создать массив с параметрами уложенными в него по индексу)?
Как хорошо уметь читать... :)
Тоже не плохой подход, хотя как я понял оба эти подхода расчиитаны на передачу/чтение только одного парраметра (пускай и разных типов).
А вот как интересно быть если параметров много и все их не запихать в базовый класс?
Насколько я понимаю дополнительно ввести индекс параметра который передаем (также в классе можно создать массив с параметрами уложенными в него по индексу)?