Перегляньте відео нижче, щоб дізнатися, як встановити наш сайт як веб-програму на головному екрані.
Замітка: This feature may not be available in some browsers.

2. Абстракции уже не получится. Я весь кайф поломала предыдущим постом1. Функциональность - кол-во функций, выполняемых объектом.
2. Верно, но интересны абстракции.


Это уже идет конкретика (и не задуманная автором загадки, и пользовательская.).2. Абстракции уже не получится. Я весь кайф поломала предыдущим постом
1. Смотря, откуда смотреть. Если смотреть с точки зрения программера, которому нужно работать с потоковыми типами передачи - то ему лучше с насадкой. Если же с точки зрения шамана, который принципиально ничего не хочет знать, окромя RAW_SOCKET (а то и пониже) - то пофик (ибо ему насадка вообще мешать не может - он ее снял со шланга и положил рядышком)![]()
Главное здесь - придать потоку нужную форму, удобную для последующего обращения с ней. Правильно?Смотря с какой точки зрения абстрагировать:
Шланг - непрерывный поток воды. Каждая насадка наследуемая от шланга принимает его свойства, а именно поток воды, добавляя к общему функционалу шланг-насадка свои свойства, как-то распыление потока воды, уменьшение интенсивности потока и т.д.
Главное здесь - придать потоку нужную форму, удобную для последующего обращения с ней. Правильно?
Смотря с какой точки зрения абстрагировать:
Шланг - непрерывный поток воды. Каждая насадка наследуемая от шланга принимает его свойства, а именно поток воды, добавляя к общему функционалу шланг-насадка свои свойства, как-то распыление потока воды, уменьшение интенсивности потока и т.д.
Но ведь мы же всегда сможем для объекта "шланг с насадкой" использовать функционал объекта "шланг"
Дано - шланг - передающий воду. Вопрос - сужает или расширяет функциональность насадка на шланг?

Это очень спорный вопрос, для начала предлагаю определить функционал шланга. Я выбираю обычный, с моей точки зрения: проводить воду и соединятся с источником воды или\и с другим шлангом (для удлинения скажем).
public interface IНасадка {
КакойтоТип СвойствоНасадки {get; set;}
...
}
public class Насадка {
public Насадка ( КакойтоТип аСвойствоНасадки )
...
}
public interface IШланг {
Вода МояВода;
Насадка МояНасадка {get; set;}
Double Диаметр {get; set;}
...
}
public class Шланг : IШланг {
private Насадка _Насадка ;
public Шланг ( Насадка : aНасадка );
public ...
}
public class ПомывочныйШланг : Шланг {
...
}
если конец шланга вам доступен то расширяет, а если конец шланга не доступен то не сужает и не расширяет![]()
Погодьте... Вы в классе Шланг просто захватили (ну, может быть, унаследовали) private _Насадка. А нужно сделать наследование от базового класса, именно расширив функционал, а не изменив класс объектов.
Или NULL...мы можем присвоить свойству насадка значение nil...
(си forever просто
)на насадку нельзя одеть еще одну насадку. можно сказать что насадка уменьшает функциональность шланга, повышая однако при этом заранее известный требуемый параметр.