Змінюй хід війни! Допомагай ЗСУ!

Небольшая задачка.

  • Автор теми Автор теми Скиф
  • Дата створення Дата створення
Статус: Офлайн
Реєстрація: 15.01.2005
Повідом.: 5605
Небольшая задачка.

Дано - шланг - передающий воду. Вопрос - сужает или расширяет функциональность насадка на шланг?
 
А что есть в данном случае "функциональность"?
PS: И вообще - вы о Socket'ах или о стеке протоколов вообще?:)
 
1. Функциональность - функции, выполняемых объектом.

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

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

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

Т.е., если класс TШланг_с_насадкой является наследником класса TШланг, то функционал расширяется
 
Но ведь мы же всегда сможем для объекта "шланг с насадкой" использовать функционал объекта "шланг"

Это очень спорный вопрос, для начала предлагаю определить функционал шланга. Я выбираю обычный, с моей точки зрения: проводить воду и соединятся с источником воды или\и с другим шлангом (для удлинения скажем).
 
Дано - шланг - передающий воду. Вопрос - сужает или расширяет функциональность насадка на шланг?

если конец шланга вам доступен то расширяет, а если конец шланга не доступен то не сужает и не расширяет :іржач:
 
Это очень спорный вопрос, для начала предлагаю определить функционал шланга. Я выбираю обычный, с моей точки зрения: проводить воду и соединятся с источником воды или\и с другим шлангом (для удлинения скажем).

А при чем тут определение функционала?
Если шланг с насадкой - наследник обычного шланга, то вне зависимости от того, КАКОЙ будет функционал, шланг с насадкой может воспроизводить любые методы класса -родителя. Это ключевой постулат ООП.
 
Добавлю в тему немного несерьезности -)

Код:
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 _Насадка. А нужно сделать наследование от базового класса, именно расширив функционал, а не изменив класс объектов.
 
Погодьте... Вы в классе Шланг просто захватили (ну, может быть, унаследовали) private _Насадка. А нужно сделать наследование от базового класса, именно расширив функционал, а не изменив класс объектов.

Ну да, это если насадка определена как свойство.
А можно объект "Шланг с насадкой" унаследовать от объекта "Шланг"
В любом случае, даже если так, мы можем присвоить свойству насадка значение nil. Правда в Public ее вынести для этого надо (Насадку). Тогда мы эту насадку можем снимать и одевать по необходимости. Функционал расширяется.
 
Вот, точно. Класс-родитель - это Шланг. Насадка - это дополнительное свойство класса, так сказать, расширение функциональности базового класса Шланг. То есть, класс Шланг_С_Насадкой=inherit(Шланг). Вот так скорее всего.
PS:
...мы можем присвоить свойству насадка значение nil...
Или NULL :girl: (си forever просто:))
 
на насадку нельзя одеть еще одну насадку. можно сказать что насадка уменьшает функциональность шланга, повышая однако при этом заранее известный требуемый параметр.
 
на насадку нельзя одеть еще одну насадку. можно сказать что насадка уменьшает функциональность шланга, повышая однако при этом заранее известный требуемый параметр.

Сам факт наличия насадки не блокирует возможность использования шланга без насадки. Т.е. сам класс TШланг_с_насадкой функциональнее классаTШланг, потому, что может в полной мере использовать весь функционал родительского класса + добавляет свой функционал.
А в каком состоянии находится объект (экземпляр этого класса) и что происходит с его функционалом в конкретный момент времени - вопрос десятый. Иными словами, надета насадка или нет, никак не влияет на саму возможность ее надеть или снять.
Опять таки, при условии "доступности конца" или, если угодно,
private Насадка _Насадка ; будет перенесена в public
 
Назад
Зверху Знизу