Школьные звонки с точки зрения ООП. Теоретический вопрос

Эта проблема сразу была решена путем ввода RTC в проект )

Многие люди высокотехнологичным экскаваторов за миллион денег выгребные ямы копают и ничего.

1 лайк

Да я не то, чтобы осуждаю. Скорее мечтаю…

Это сообщение самое близкое к сути стартового вопроса. Возможно напишу сейчас ерунду, но искренне считаю, что нет более быстрого пути научиться, чем задавать публично вопросы. Даже получая оскорбления от людей, которые не разделяют объект и субъект :rofl:

Собственно опять к ООП (забыли задачу про школу). 1) Если с инкапсуляцией более-менее понятно, а именно - черный ящик. Как работает не важно. Есть данные на входе и результат на выходе.

  1. Вы упомянули профессии. Их я бы отнес к принципу наследования.

  2. То с полиморфизмом вообще никак пока. Полиморфизм по запросу понятно в какой-то мере, то естественный вообще никак. Полагаю, это отсутствии практики. Начал бы писать что-то сложное, непременно встретился бы с реализацией.

А можете так же про людей написать суть полиморфизма?
Хоть как приблизиться к пониманию. В чем выражается это многообразие в программирование? Возможно этот вопрос не имеет смысла в силу ограниченности моего восприятия. Тогда проигнорируйте.

И напоследок, еще вопрос, появившейся в результате этой беседы.

От обратного: если задача простая, то вообще не задумываемся, пишем как можем.
А ООП начинаем использовать когда видим возможность применения принципов?
Где эта отправная точка?

Можно так сформулировать: что начинаем применять ООП когда видим повторяющийся код? С другой стороны, я помню радость от написания первой функции, когда вообще не надо было больше повторяться. Но тогда этот критерий про повторение не работает…

А еще говорят, что полиморфизм - это отправная точка рефакторинга ифов.

Частный случай:
Есть делитель - резисторы с кнопками между плюсом и минусом и там где-то в цепи аналоговый вход. Имеем допустим 5 напряжений. 5 ифов.
(хотя может быть свитч-кейс конечно)

Коротенько: пишем процедурный код или ООП?
Во втором случае как, если не много букв, напечатайте, пжл?

Представь, что у тебя есть обьект “сортир”. Если бы нужно было строить отдельные сортиры для рабочего, повара, педиатра, у нас бы только сортиры и были построены. К щастью, сортир предоставляет свои услуги для всего, что относится к базовому объекту “человек”, который имеет метод “пасать”, это общий виртуальный метод для всех производных обьектов. Поэтому, обьект “сортир” в своем интерфейсе принимает обьект типа “человек” и ему пофик, кто в него войдет, программист, токарь, или профессор, главна, чтоб мимо писсуара не срал.

Еще проще так. Есть базовый обьект “человек” у которого есть метод “писить” (у любого же есть, мы ж не ангелы небесные). Метод обязательно виртуальный, но не обязательно абстрактный, например в нем можно прописать, что перед выполнением надо снять трусы, всё-таки, хотя я не знаю, мошт у вас в Москвах и не так. Потом от обьекта человек мы наследуем два обьекта, “мущинка” и “баба”, метод “писить” у них существенно различается, один это делает через трубочку, вторая через дырочку. Значить, этот метод у них будет реализован по-разному, но в любом случае, они будут вызывать базовый метод, который снимает трусы перед этим. Оба обьекта теперь знают, как им надлежит отправлять свои потребности, одному стоя, другому сидя. Дак вот, обьект “сортир” принимает обьекта “человек” и вапще не должен разбирацца какова он пола, про потомков он вапще нихрена не знает, его просто для человеков построили, поэтому он просто вызывает у “человека” метод “писить”, а реальный обьект, который в него зашел уже сам знает, как ему это делать, стоя или сидя, так как вызывается не базовый метод, а переопределенный динамически тот, который подходит именно для конкретного обьекта, который в него вошел. Полиморфизм, матьтваю.

А улучшения тут в том, что тебе теперь не надо у каждого обьекта писать код для снятия трусов, достаточно вызвать базовый метод, который написан один раз для всего многообразия человеков, безотносительно к полу и профессии. А можно его и не вызывать, если у вас там в Москвах так принято. Так потихоньку строится иерархия обьектов, которые имеют схожие характеристики, но разное поведение, изменяя унаследованные методы, ты изменяешь именно поведение обьекта в разных ситуациях. Например, если человек вошел в больницу, его поведение будет существенно разным, будь он “ехидной бабкой с клюкой” или докторишкой, который в этой больнице работает. Все остальные характеристики у этих двух обьектов могут быть одинаковыми, но изменяя профессию с пенсионера на доктора, мы прописываем и шаблоны поведения в разных местах. При входе в больницу бабка начнет кряхтеть, стонать, и клюкой своей крутить да размахивать, а доктор пойдет искать свой кабинет, переодеваца и выслушивать бабкины жалобы.

Эк меня с утра раскорячило. Аптамуш, ненавижу со с ранья бабок в больнице, полиморфизм и оператор присваивания.

4 лайка

Ну так зачем употреблять слова, значение который Вы не знаете?
ООП - это не красивая аббревиатура, а три конкретных признака.

Для простейшей задачи Вы можете написать 20 строк кода в структурном стиле. Можете переписать ООП - тогда строк будет уже 50 или больше. Надо оно Вам или нет - решать только Вам. Но когда Вам потребуется решить задачу в 100000 строк, то, вероятнее всего, Вы столкнетесь с тем, что написанная в стиле структурного кода программа просто не будет работать, и все попытки “привести ее в чувства” не будут иметь успеха.

1 лайк

Рациональный подход в данном случае заключается не в том, чтобы сэкономить как можно больше, а в том, чтобы обеспечить гарантированное (не превышающее заданной величины) максимальное время одного прохода цикла loop().

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

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

1 лайк

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

3 лайка

Да, супер, спасибо. :+1:

Это полиморфизм и есть :laughing:
Употребляю для того, чтобы мне тут объяснили, я не употребляю в качестве лектора.

Нет, полная хрень. Это форум для новичков. Никто не обязан отвечать. Если вы считаете себя ущемленным из-за этого - только ваша проблема. Если вы проигнорируете эту тему, никому и в голову не придет предъявлять.

Редкостная глупость
2-3 учебника, написанные профессионалами, очевидно обьяснят суть значительно глубже и развернутее, чем один-два любителя на форуме.
При всем уважении к Деду - сможешь ты сейчас сразу написать класс Сортир с методом “пассать” ? А почитал бы что-нибудь типа ravesli.com - и написал бы. Там все обьяснено сразу с примерами

Быстро научиться - быстро забыть. Хотя по мне ты сюда не учиться пришел, а просто поговорить. Идеальный способ завязать беседу - задавать “умные” вопросы якобы по теме.

2 лайка

как же нужен молоток…

а ты не скатывайся в срач, отвечай только по сути.
Ты правда уверен, что пересказ учебников Дедом или еще кем-то - даст тебе больше, чем просто чтение того же учебника? Да, учебники бывают непонятными - поэтому я и написал про то, что нужно взять два или три. Читаешь разные источники и сравниваешь.
И это, поверь, в разы быстрее, чем спрашивать на форуме.

Есть что возразить?

2 лайка

Мне - нет. :slight_smile:

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

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

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

Да откуда ты знаешь как я учусь и сколько я читаю? Но вот объясняться перед тобой? Уволь.

Даже моего по*уизма уже не хватает, поскольку на форумах нет возможности держать дистанцию, а ты лезешь в личность.

Адью.

ТС, тебе для звонков, нужна таблица времен, когда включать звонок, признак, что он уже включен да функция сравнения текущего времени, получаемого с RTC с дискретностью в минуту, с таблицей. Совпало, давай команду на исполнительный механизм звонка. Через заданный интервал звонок отключаешь, через минуту снимаешь признак включенности. Если всё аккуратно написать, в Тини влезет.

Что в этом личного, прости господи? Я ж не в сортир к тебе заглядываю, не строй из себя глупую барышню. Неужели даже рассказать о том, как ты учишь Си - и то стыдно? :)))))

Да, все люди разные. Я знаю, что у меня есть перекосы в обучении. Я вообще не воспринимаю то, что мне объясняют живые люди, если не нашел подтверждения их слов в учебнике. Я и на лекции в институте практически не ходил, к чему мне это, если я могу получить ровно те же знания, прочитав учебник в ночь перед экзаменом.

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

1 лайк

+100500! Вообще не ходил. Только как на шоу, к интересным педагогам. На втором курсе дифуры Арнольд читал, вот к нему ходил и экзамен ему сдавал. Первую “4” поставил, гад! Но честно поставил, на “5” я и правда не ответил… А скидку, как “отличнику” Арнольд не сделал :frowning:

В 85-ю так точно. И еще куча места останется.
А вот как соотнести ООП и

в данной конкретной задаче - ну никак в толк не возьму.
И потом куда их, ресурсы, их ведь не засолить и не продать…