Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 November 28

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
Вот именно
От одного абстрактного класса
Сами при этом не являясь наследниками друг друга (хотя адепты одной из религий могут со мной не согласиться)
но Прямоугольник это частный случай Четырехуголника точно так же как Мужчина частный случай Human.
у первых еще более высокий класс - ГеомФигура, у Human еще более высокий класс - Млекопитающее
источник

С

Сергей in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
Bridge же
В объекте человека есть ссылка на его реализацию мочеполовой системы
Ну у класса женщина есть поле количество беременностей, а ты уже отнаследовал пациента хуман...
источник

V

Vitaliy in NodeUA - JavaScript and Node.js in Ukraine
В ваших прикладах є нюанс.
Якщо прямокутник - окремий клас, то значить наша структура данних має бути імутабельна, оскільки клас визначає структуру сущності.
Тоді жодних методів а-ля "змінити кут" не має бути.
В такому разі всі не мутуючі методи ізі наслідуються.
Так шо тут питання в правильному моделюванні предметної області
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
so true!
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Elena Sharovar
но Прямоугольник это частный случай Четырехуголника точно так же как Мужчина частный случай Human.
у первых еще более высокий класс - ГеомФигура, у Human еще более высокий класс - Млекопитающее
Так в этом и есть принцип подстановки
Копирую с Вики упрощённое определение
Функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом.
И ещё
подкласс не должен требовать от вызывающего кода больше, чем базовый класс, и не должен предоставлять вызывающему коду меньше, чем базовый класс

Частный случай - это ограничение. Оно недопустимо для наследника, это то самое, что не должен делать подкласс: предоставлять меньшее (ограничивать)
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
изначально Лисков вот о чем:
- если вы уже написали программу
- и она работает
- то наследники не должны ее ломать (ни своим интерфейсом ни своим поведением)
Можно так отнаследовать Женщину от Human что вся программа сломается. Если она эксепшены во всех методах выбрасывает. То есть основной вопрос не “что от чего наследовать” а “как наследовать?” - так чтобы не сломать программу работающую с родительским классом
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Сергей
Ну у класса женщина есть поле количество беременностей, а ты уже отнаследовал пациента хуман...
И? Пока не понимаю к чему ты клонишь
источник

¿

¿hope in NodeUA - JavaScript and Node.js in Ukraine
Vlad
Раз уж такие вопросы... Как можно ещё объяснить принцип Inversion Of Control, кроме как на Dependency Injection. Какие ещё ключевые слова погуглить?
information hiding можешь погуглить
источник

С

Сергей in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
И? Пока не понимаю к чему ты клонишь
Надо перадать пацианта в модуль гинекологии, на входе должен быть класс женщина и нее будут смотреть количество беременностей,  а пациант уже унаследован от хюман,  как его перенаследовать?
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
в модуле гинекологии как раз все функции должны оперировать классом Женщина и нечего туда мужчин передавать. то есть он должен быть написан только на классах Woman
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Сергей
Надо перадать пацианта в модуль гинекологии, на входе должен быть класс женщина и нее будут смотреть количество беременностей,  а пациант уже унаследован от хюман,  как его перенаследовать?
А зачем? Он все равно не сможет родить
источник

V

Vlad in NodeUA - JavaScript and Node.js in Ukraine
¿hope
information hiding можешь погуглить
Ок. Спасибо всем, за информацию)
источник

С

Сергей in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
А зачем? Он все равно не сможет родить
Заставят
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
придется применить паттерн Декоратор и задекорировать этого человека под женщину 😂
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Сергей
Заставят
Ну ок
У нас есть bridge
В момент смены пола мы меняем реализацию подсистемы
Вопросы по этой подсистеме адресуются конкретной реализации, ибо задавать их мужчине бессмысленно, а значит это специфичный вопрос, который задаётся только при наличии матки
Соответственно, для транса этот вопрос будет корректен и просто вернёт 0
источник

I

Igor in NodeUA - JavaScript and Node.js in Ukraine
Elena Sharovar
придется применить паттерн Декоратор и задекорировать этого человека под женщину 😂
😄😄😄
источник

С

Сергей in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
Ну ок
У нас есть bridge
В момент смены пола мы меняем реализацию подсистемы
Вопросы по этой подсистеме адресуются конкретной реализации, ибо задавать их мужчине бессмысленно, а значит это специфичный вопрос, который задаётся только при наличии матки
Соответственно, для транса этот вопрос будет корректен и просто вернёт 0
Я про наследование от хуман,  а не от мен,  если по пациенту завели, что знали,чтоб не терять время,  а пол узнали позже (надумано, но все же). Но кажется понял (про бридж почитаю позже),  лучше агрегация с делегированием,  чем наследование. Хотя так тоже есть ньнсы.
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Сергей
Я про наследование от хуман,  а не от мен,  если по пациенту завели, что знали,чтоб не терять время,  а пол узнали позже (надумано, но все же). Но кажется понял (про бридж почитаю позже),  лучше агрегация с делегированием,  чем наследование. Хотя так тоже есть ньнсы.
Пока пол не узнали не открываются поля для введения дня месячных и размеров простаты, так что эти вопросы вообще не актуальны
источник

Y

Yury in NodeUA - JavaScript and Node.js in Ukraine
Ребят, а вы когда пишите юнит тесты для роутинга, эскпортируете ли createServer из server.js для того, чтобы передать его в supertest ?
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
У меня нет ни server.js, ни createServer 😒
источник