|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|||||||||||
Как правильно унаследовать TPoint2D от TPoint3D/ Правильно ли наследовать? ООП24.11.2016, 22:15. Показов 2136. Ответов 19
Метки нет (Все метки)
Два пользовательских класса: Точка в 2D пространстве и точка в 3D пространстве.
С точки зрения самого принципа, здесь так делать правильно, а с точки зрения удобства - нет. Этот Z-хвост мешает мне жить. Я, конечно, могу унаследовать не от TPoint3D, а от какого-то абстрактного класса типа TPointAbstract, но это будет противоречить словам принципа: "Части от целого". Я не понимаю, как быть. Можно ли здесь уложиться в принципы ООП?
0
|
|||||||||||
| 24.11.2016, 22:15 | |
|
Ответы с готовыми решениями:
19
Как правильно наследовать форму |
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 24.11.2016, 22:25 | ||
Где это вы, интересно, такой принцип вычитали? Открытое наследование реализует отношение "является разновидностью". 2D не является разновидностью 3D, поэтому не может быть от него унаследован, наоборот можно.
0
|
||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 24.11.2016, 22:40 [ТС] | |
|
Как где, на форуме кто-то очень ругался, когда окружность от точки наследуют, и в книгах предпочтение отдают агрегации/композиции и наследованию частей из того, что вместе из себя они представляют. Так быстрее строится некоторого рода система, которую создаёшь (вверх если, то лезешь всё выше и выше, получается очень громоздко и перестраивать тяжело, не знаешь, когда остановиться, азарт иногда берёт; а вниз - приходишь к конечному достаточно быстро, что ниже просто некуда).
Можно, но потом однажды сделаешь наследование круга от точки (сейчас это образное выражение) и словишь оплеух. Говорят, что время так разрулило, где от большего наследуются отдельные элементы этого большего. (Здесь своими словами я сказал, не помню, как говорят и пишут)
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 24.11.2016, 22:49 | ||
|
Тип - это описание некоторого множества объектов реального мира. Подтип, т.е. некий наследник этого типа - это описание подмножества объектов данного типа. Ну, скажем, тип ЧЕЛОВЕК описывает множество всех людей. Но в нем есть подмножества мужчин и женщин, следовательно для их описания можем создать типы-наследники от типа ЧЕЛОВЕК - подтипы МУЖЧИНА и ЖЕНЩИНА. В общем, открытое наследование - это конкретизация. В типе ЧЕЛОВЕК мы абстрагировались от многих параметров конкретного человека, от пола, например. Наследование, это когда мы из множества параметров, от которых мы абстрагировались, извлекаем те, которые нам понадобились, и добавляем в свойства класса.
1
|
||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 24.11.2016, 22:55 [ТС] | |
|
Целое => Человек.
От целого производятся мужчина и женщина, что и есть "От целого части этого целого". Неудачный пример.
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 24.11.2016, 23:00 | ||
|
Двумерная точка - это когда мы от всех размерностей кроме двух абстрагировались. Но среди двумерных есть подмножество, которое имеет третью координату, т.е. можем наследовать от двумерной трехмерную. Т.е. наследник обладает всеми признаками базового класса, плюс еще какими-то.
0
|
||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||||||
| 24.11.2016, 23:03 [ТС] | ||||||
|
Смотрите. Я приведу более понятную ситуацию. Предположительно, изначально не было известно, что существуют какие-то виды объектов, не обладающие свойствами, характеризующие эти объекты. Мутить воду не буду, покажу псевдосистемой.
0
|
||||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 24.11.2016, 23:11 | ||
|
0
|
||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||
| 24.11.2016, 23:21 [ТС] | ||
|
Это противоречит природе вещей
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 24.11.2016, 23:26 | ||
|
0
|
||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 24.11.2016, 23:34 [ТС] | |
|
Здесь, в принципе, легко понять, что всего-то нужен новый класс, который обозначит вид исключений. Это, наверное, единственный правильный выход.
Для птиц - TBird_nofly - какой-нибудь, если летать не умеют. Только это ж как тяжело потом что-то добавлять туда и удалять оттуда, исправлять там что-то. Если один объект-исключение, то не так страшно, а если система большая и там их под тысячу? Ничего хорошего от такого можно не ждать, наверное. Добавлено через 1 минуту Я об общих схожих свойствах, где дублировать нужно.'
0
|
|
|
|
|||
| 25.11.2016, 08:57 | |||
|
1
|
|||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 25.11.2016, 09:50 | ||
Сообщение было отмечено gru74ik как решение
РешениеДобавление наследника с пустой функцией fly - это костыль, с которым, возможно, пришлось бы мириться в реальной жизни, но это уж точно не "единственный правильный выход". Правильный выход - это перепроектировать систему с учетом новых требований. Т.е. сделать класс "птица", от него два наследника "летающие_птицы" и "нелетающие_птицы", соответственно, функция fly будет только у первых.
1
|
||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||
| 25.11.2016, 20:38 [ТС] | ||
Похоже, что где-то Вы целостную ситуацию немного неправильно поняли. Может, устали. То, о чём я сказал "правильный выход", там я не имел в виду наследование от птиц нелетающих птиц, а всего лишь новый тип, который в иерархии ляжет на один уровень с типом "Птица". Это в контексте должно было быть понятно. Это сообщение сейчас всего-лишь маленькое уточнение, в связи с небольшой зародившейся кашей.
0
|
||
|
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,760
|
|
| 31.12.2016, 01:08 | |
|
2
|
|
| 31.12.2016, 01:23 | ||
|
Не по теме:
Пришлось через хабр https://habrahabr.ru/post/83269/подбираться.
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 31.12.2016, 01:56 | ||
|
Мне кажется, самым неокрепшим для начала надо освоить правило 35 Скотта Майерса из "50 рекомендаций": "используйте открытое наследование для моделирования отношения "есть разновидность".
1
|
||
|
230 / 113 / 79
Регистрация: 17.10.2016
Сообщений: 312
|
||
| 31.12.2016, 02:09 | ||
|
А это правило 32.
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
| 31.12.2016, 02:18 | |
|
0
|
|
|
230 / 113 / 79
Регистрация: 17.10.2016
Сообщений: 312
|
|
| 31.12.2016, 03:33 | |
|
0
|
|
| 31.12.2016, 03:33 | |
|
Помогаю со студенческими работами здесь
20
Как правильно наследовать на Symfony? Как правильно наследовать публичный конструктор? Как правильно наследовать несколько элементов Как правильно наследовать методы класса
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 05.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 17.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|