|
|
||||||
Классы требуется разъяснение16.08.2016, 07:54. Показов 4547. Ответов 94
Начал изучение классов и тут возникли вопросы, может кто подсказать и прояснить ситуацию?
1. Не могу понять зачем создавать дочерние классы, можно же обойтись одним родительским классом? 2. На примере:
Слово parent указывает что константа будет вызвана из родительского класса, а self из дочернего класса?
0
|
||||||
| 16.08.2016, 07:54 | |
|
Ответы с готовыми решениями:
94
Требуется разъяснение по типам данных Требуется разъяснение по системам векторов Требуется разъяснение понятий GPT и MBR применительно к SSD |
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 16.08.2016, 12:15 | |
|
0
|
|
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|||
| 16.08.2016, 12:18 | |||
|
Добавлено через 43 секунды
0
|
|||
|
|
||||
| 16.08.2016, 12:30 [ТС] | ||||
Может на очень простых примерах покажешь?Добавлено через 27 секунд Я не вижу отличия между ними. Добавлено через 9 минут
0
|
||||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||||||
| 16.08.2016, 12:32 | ||||||
0
|
||||||
|
|
|||||||||||
| 16.08.2016, 12:45 [ТС] | |||||||||||
|
Jewbacabra, А почему нету "тела" у функции?
Дальше больше, зачем нужны интерфейсы, пример:
0
|
|||||||||||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|||
| 16.08.2016, 12:56 | |||
0
|
|||
| 16.08.2016, 12:57 [ТС] | |
|
0
|
|
|
23 / 23 / 7
Регистрация: 27.07.2015
Сообщений: 149
|
||
| 16.08.2016, 13:03 | ||
|
Освой хотя бы базово ООП для начала...
0
|
||
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
|||||
| 16.08.2016, 13:27 | |||||
|
Добавлено через 17 минут clone, а этот метод вызывается, когда происходит клонирование.
1
|
|||||
|
|
|||||||||||||||||||||
| 17.08.2016, 13:19 [ТС] | |||||||||||||||||||||
|
Продолжаем
![]() Читая статью наткнулся на такой момент: Кликните здесь для просмотра всего текста
Тут не понятен следующий момент:
Я понимаю конструкции вида:
0
|
|||||||||||||||||||||
|
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
|
||||||
| 17.08.2016, 13:21 | ||||||
|
Gcom,
Это просто способ вызвать функцию, название которой заранее неизвестно. Собственно, задача роутера и заключается в том, чтобы по URL понять, какой контроллер (и метод контроллера) дёргать.
1
|
||||||
|
|
||||||||
| 17.08.2016, 13:29 [ТС] | ||||||||
|
Ну теперь буду знать про это: ![]() Добавлено через 6 минут В частном случае получается:
0
|
||||||||
|
|
||||||||||||||||||
| 25.08.2016, 08:07 [ТС] | ||||||||||||||||||
|
И опять абстрактные классы.
Есть код:
Добавлено через 4 минуты Еще вопрос, есть код:
0
|
||||||||||||||||||
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
|||
| 25.08.2016, 08:19 | |||
|
Добавлено через 3 минуты То есть, если вызываемый метод не найден, вызывается "магический" метод __call(), который получает имя не найденного метода. В теле метода программист пишет то, что посчитает нужным.В Вашем случае он обращается к объекту класса Member и вызывает одноимённый метод в нём.
0
|
|||
|
|
|||||||||||||||||||||||||||||
| 25.08.2016, 08:37 [ТС] | |||||||||||||||||||||||||||||
Добавлено через 10 минут
0
|
|||||||||||||||||||||||||||||
|
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
|
||||||||||||||||||||||
| 25.08.2016, 09:26 | ||||||||||||||||||||||
Сообщение было отмечено Para bellum как решение
РешениеПредставим, вы решили сделать класс, который пишет уведомления в текстовый файл. Назовём его FileLogger. Вы написали нечто вроде:
Что нужно сделать, чтобы отправить сообщение на почту? Посмотреть в реализацию класса MailLogger и найти там метод sendMail. Что нужно сделать, чтобы посмотреть логи БД? Открыть файл с нужным классом и изучить его методы. Это не очень удобно, особенно если количество логгеров в будущем будет расти. Интерфейс позволяет стандартизировать все эти 3 класса. Вы можете указать, что любой логгер, создаваемый в будущем, должен иметь 3 метода: addLog, addLogs и getLogs. Теперь если вы захотите отправить почту, вы уже будете знать, что нужно вызвать метод addLog. А если Вася напишет новый логгер, скажем, в XML файл? Вам даже не надо смотреть, как устроен его класс! Просто запустили addLog() и всё. А если вы захотите сами написать новый класс, вам достаточно посмотреть в интерфейс и вы сразу поймёте, какой должна быть структура вашего нового класса. Это интерфейсы. А разница между ними и абстрактными классами в том, что в абстрактном классе вы можете реализовать методы, а в интерфейсе - нет, в нём можно указать только какие методы могут быть у потомков. Например, в примере выше нам может понадобиться метод getErrors, получающий ошибки, произошедшие во время логирования. Если мы решим, что у каждого логгера должно быть свойство errors, тогда нет смысла 3 раза писать один и тот же метод:
Получается, если вы хотите просто описать схему, по которой должны создаваться логгеры - имеет смысл создать для них общий интерфейс. Если же вы хотите не только описать схему, но и создать для потомков какие-то общие методы, чтобы не копипастить их из класса в класс (как метод getErrors), можете использовать абстрактный класс.
3
|
||||||||||||||||||||||
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
||||||||||||||
| 25.08.2016, 09:33 | ||||||||||||||
В целом -- Вы верно цепочку выстроили. Вот самая суть:
0
|
||||||||||||||
|
|
||
| 25.08.2016, 10:01 [ТС] | ||
|
Jodah, за отличное разъяснение огромное спасибо, про интерфейсы и абстрактные классы, я кстати тоже подумывал что они нужны для "шаблонизации" создаваемых дочерних классов. А еще такой нубский вопрос А можно ли в качестве "родительского" класса использовать дочерний класс? Типа наследование наследования
0
|
||
|
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
|
||||||||||||||||||
| 25.08.2016, 10:47 | ||||||||||||||||||
|
Добавлено через 12 минут
А теперь сделаем так:
И получается, куда бы мы не передали объект, мы будем работать именно с ним, а не с его копиями. Добавлено через 5 минут Gcom, кстати, тоже самое можно сделать с обычными переменными:
0
|
||||||||||||||||||
| 25.08.2016, 10:47 | |
|
Задача (разъяснение) в алгоритм (программа, используя базовый и производный классы, создавала массив объектов типа производного класса) Требуется разработать классы для объектов и вывести списки Механизм наследования. В программе требуется описать базовый и производные классы Разъяснение Разъяснение по ТЗ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|