Вопросы по МQL5

Форум Vikpro.net — это площадка для общения и обмена опытом форекс трейдеров со всего мира. Здесь вы можете найти ответы на свои вопросы, поделиться своими знаниями и идеями с другими пользователями.

1ответ(ов) в теме
Robex
не в сети 4 дня
На сайте с 20.06.2023
Участник
Тем 2
Сообщения 4
1
20:54

📜 Посвящается всем, кто не может перейти с функций на классы — и не понял, что ООП это ещё не конец, а всего лишь только новый уровень игры.

Объектно-Ориентированный Принц

Глава 1. Эпоха чисел и комков кода

Когда-то, в стародавние времена, в закоулках холодных серверных, где кулеры гудели как мантры программистов, жил-был Ричард "Процессорное сердце". Ричард был кодером. Причем кодером не простым, а тем, кто писал на Ассемблере. Его код был как каменный топор : груб, но работал.

Ричард — парень с характером. Очки с толстыми линзами, вечный худи с принтом «Trust me, I'm root», рюкзак с нашивкой "void main", кеды с облупленным логотипом Linux и уставший взгляд человека, который компилировал ядро вручную. Он не мыл кружку с кофе, он её компостировал. Но в душе он был рыцарь. Просто вместо меча — клавиатура, вместо лошади — старенький ноутбук, а вместо доспехов — пятна на джинсах от энергетиков.

У него было правило: «Функции — для слабаков. Всё и сразу!» Его программа — это был один файл на 5000 строк без единого пробела и с переменными типа a1, a2, b1, b2, c3, fff , и что они делают — не знал уже даже сам Ричард.

В пятницу вечером он наливал себе чай (ну ладно, иногда и не чай) и боролся с багами как Рыцарь с драконом. Только баги у него в коде плодились быстрее, чем тараканы в общаге.

Глава 2. Пришествие переменных

Однажды к Ричарду пришёл Леопольд.
Леопольд — кодер редкого склада: аккуратный, расчёсанный, всегда гладко выбрит, в клетчатой рубашке,

словно специально выпрыгнул из учебника по алгоритмам. Его флешка была всегда подписана. Его IDE была всегда на английском. Он писал коммиты с заглавной буквы и точкой в конце.

Леопольд сказал:

— Ричард, а давай ты не будешь в 15 местах писать 173 , а сделаешь переменную радиус ?

Ричард почесал бороду, поскреб лоб и сказал:

— Ну... может, ты и прав.

Так Ричард узнал о переменных. И жизнь его стала проще. Он теперь не искал 173 по всей программе, а просто менял радиус = 173; . Казалось, рай наступил.

Глава 3. Победа над однотипностью — массивы!

Но вот беда. У него было 500 переменных: цена1, цена2, цена3... , и каждая участвовала в цикле. Ричард начал сходить с ума. Он пытался завести блокнот, чтобы не забывать названия, но всё было тщетно.

И тут Леопольд снова пришёл:

— Используй массивы, брат!

И Ричард понял. Это была победа. Он ощущал себя героем — рыцарем, который наконец-то взял в руки не деревянную палку, а настоящий стальной меч! Он завёл массив цена[500] и чувствовал себя словно Гарри Поттер с новым заклинанием for (int i=0; i<500; i++) .

Глава 4. Рождение функций

Но через месяц у Ричарда опять началась лобная боль. Он понял, что 40 раз пишет один и тот же код — берёт радиус , считает площадь , выводит результат. А потом ещё добавляет «если площадь больше 1000 — тогда радоваться!». И так сто раз.

Тут снова появился Леопольд:

— Ричард, а ты не хочешь сделать функцию?

— Что за зверь такой?

— Смотри:

double ПосчитайПлощадь(double радиус) и внутри формула.

Потом просто вызываешь

ПосчитайПлощадь(r) и кайфуешь.

Ричард попробовал. И кайфанул. Уволил 2000 строк кода. Жизнь наладилась. Леопольд ушёл в закат, а Ричард стал великим — у него были переменные, массивы и функции. Он считал себя избранным.

Глава 5. Удар молотом одинаковости: структуры

Теперь у Ричарда было 100 разных сущностей, и у каждой — по 50 свойств. Он не понимал, что ему не хватает... и тут, как в кино, появилась она.

Её звали Классия. Она была ангелом из соседнего офиса. Вся в белом. Блузка полупрозрачная. Белоснежная юбка. Туфли, будто выкованы из абстрактных интерфейсов. Она заглянула к нему через плечо:

— А зачем ты держишь имя, возраст, баланс в отдельных переменных? Сделай struct , милый… — и подмигнула.

Он создал

struct Клиент {

string имя;

int возраст;

double баланс;

}

и радостно закричал: «Теперь у меня не куча переменных, а один клиент !»

Коллеги ахнули. Одни — от структуры, другие — от Классии. А третьи просто не верили, что она всерьёз заговорила с Ричардом.

Он чувствовал, как его мозг получает удовольствие. Это был дзен. Это был пик... или он так думал.

Но где-то в уголке расслабленной души зародилось странное ощущение. Как будто это — не конец. Как будто впереди что-то... БОЛЬШЕ.

Глава 6. Проклятие одинаковых функций

Прошло два года. Ричард теперь писал CRM-системы и торговых роботов. Его код состоял из 1000 функций, которые принимали миллион параметров: ПосчитайДоход(прибыль, налог, скидка, комиссия, валюта, курс, магическоеЧисло) .

Он путался в них как в проводах за старым системником.

— Бл...а! — кричал Ричард. — Почему сумма тут s , а там amount , а ещё там moneyTotal ?!

Он забыл, что делает каждая функция. Он устал. Он начал пить... больше чая.

Глава 7. Секреты Классии

Однажды, когда он особенно страдал от перегрузки аргументов, в офис вновь вошла Классия. Вся в белом, как будто вышла из UML-диаграммы. Подошла к Ричарду, присела на край стола и томно провела пальцем по его клавиатуре.

— Ты весь такой... сосредоточенный. — Она укусила край пера от стилуса. — А может быть, пора объединить свойства и поведение?

Она наклонилась и прошептала:

— Пусть у клиента будет не только имя , но и ОтправитьПисьмо() . Пусть объект сам знает, что он делает. Понимаешь?.. Инкапсуляция, Ричард. Ин-ти-м-инкапсуляция…

Её губы приблизились, он почувствовал аромат кофе и ванили... И в этот момент Ричард вскочил:

— ЧЕРТ! Точно! Надо создать класс!!!

Он метнулся к клавиатуре, задел кружку, кофе пролился на пол... но он уже не слышал.

Классия села, медленно провела рукой по своим бёдрам и с изумлением посмотрела на дверь, в которую улетел Ричард.

— Он... не заметил?.. — прошептала она. — Я самая красивая в фирме. Что я сделала не так?!

Глава 8. Вспышка. Катарсис. Рождение класса.

Ричард в ту ночь не спал. Он размышлял. Всё стало казаться ему куском мусора: переменные, функции, даже структуры. Это были солдаты без генерала. Разрозненные рыцари без короля.

Он бросился к клавиатуре. Пальцы дрожали. Он создал свой первый класс:

class Клиент {

string имя;

int возраст;

double счёт;

void Купить() {...}

void Продать() {...}

};

Он посмотрел на экран. И понял — он больше не просто Ричард. Он теперь — Архитектор. Властелин Объектов. Господин Инкапсуляции.

Глава 9. Отказ от Принцессы

Когда Классия вновь появилась, чтобы поздравить его, он даже не поднял глаз.

— Ты была права, — сказал он. — Но теперь... я выше этого. Я сам создал структуру мира. Мне больше не нужны подсказки.

Классия посмотрела на него с лёгкой печалью. В её глазах было понимание. Она кивнула и исчезла навсегда.

Он даже не попрощался.

И вот тут... появился Леопольд. Он медленно подошёл к Классии:

— Эй... может, объяснишь мне, как это работает? Я только что дошёл до структур.

Классия улыбнулась и, впервые за день, почувствовала тепло в сердце. Они ушли вместе. Вечерами она объясняла ему ООП, а он... слушал. Слушал внимательно.

Глава 10. Финал? Или начало чего-то большего...

Прошли годы. Ричард стал великим.

Его звали на конференции, ему писали юные программисты с вопросами. Он вёл курсы: "ООП за 24 дня".

Но однажды он открыл ноутбук, а там...

Была новая парадигма. Что-то, что делало даже ООП похожим на деревянную палку. Новая Принцесса. Новая структура. Новый мир.

Он не знал, готов ли он к этому.

Он посмотрел на свой старый класс MyRobot , закрыл ноутбук... и ушёл в ночь.

0
Вы не имеете права на публикацию сообщений в этой теме

Спасибо вам за выбор Форума VikPro Портала, как место общения!