|
|
|
ООП
|
|||
|---|---|---|---|
|
#18+
maXmoто есть если, скажем, мы будем писать приложение для накачки мячей, мы в нём можем мяч и насос объединить в один класс, потому что мы можем так сделать? Неудачная аналогия для данного случая. Точнее так: есть мяч (базовый класс коллекции, производный класс коллекции, о которых мы говорим). Есть насос (базовый-производный класс элементов). И есть ниппель (переходник между ними, который мы и обсуждаем). Вы полагаете, что ниппель необходимо выделять в отдельный класс. Я пока что такой необходимости не вижу. Она может появиться - например, если по условиям задачи могут появиться одинаковые мячи с разными ниппелями. Может не появиться. maXmoclass DerivedClass: BaseClass Это на C#? К сожалению, я его не знаю и не собираюсь ничего утверждать; в моей фразе подразумевалась реализация вложенных классов в Java. Сожалению, что не обозначил это четко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2006, 11:35 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
softwarerесть мяч (базовый класс коллекции, производный класс коллекции, о которых мы говорим). Есть насос (базовый-производный класс элементов). И есть ниппель (переходник между ними, который мы и обсуждаем).Насчёт мяча согласен, а насос – это не элемент, это фабрика элементов (в моих терминах StuffFactory), ниппель – интерфейс (IStuffFactory), поддерживаемый всеми насосами и мячами. Элемент – это неизвестный газ (object), который каждый насос берёт неизвестно откуда, неизвестно как. И при накачке базовый мяч просто говорит в ниппель: «ещё газу», его не волнует, что за насос и что в него накачивают. softwarerЭто на C#? К сожалению, я его не знаю и не собираюсь ничего утверждать; в моей фразе подразумевалась реализация вложенных классов в Java. Сожалению, что не обозначил это четко.ну… можно и не вкладывать класс насоса в класс мяча, а будет просто глобальная куча насосов, из которых каждый мяч будет выбирать свой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2006, 15:03 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
maXmoНасчёт мяча согласен, а насос – это не элемент, это фабрика элементов (в моих терминах StuffFactory), ниппель – интерфейс (IStuffFactory), поддерживаемый всеми насосами и мячами. Элемент – это неизвестный газ (object), который каждый насос берёт неизвестно откуда, неизвестно как. И при накачке базовый мяч просто говорит в ниппель: «ещё газу», его не волнует, что за насос и что в него накачивают. "Построители виртуальных миров" в действии ??? ;))) Кстати, ты не понял вообще, о чем говорил softwarer. Достаточно бесполезно выделять в классы (а тем более - в эти замудренные паттерны) все что движется, и что может "показаться" полезным выделять в классы. Ибо в таком случае - можно дойти чуть ли не до атомарно-молекулярного уровня там, где это - в принципе не нужно (т.е. принцип абстракции должен быть - по меньшей мере (а вернее - прежде всего) оправдан в заданном масштабе рассматриваемой предметной области, вернее - решаемой задачи). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2006, 15:20 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
maXmoИ при накачке базовый мяч просто говорит в ниппель: «ещё газу», его не волнует, что за насос и что в него накачивают. Если обратите внимание, в моем решении этот принцип полностью соблюден. Это важно, он ключевой. А вот насчет интерфейса есть одна важная деталь - плохо совместимые параметры инициализации. Мы можем либо искусственно стандартизировать их, сделав объемлющий объект "набор параметров", либо предоставить объектам разбираться с ними на месте. Выбор решения зависит от ситуации. Чем сложнее логические цепочки, тем уместнее будет такой вот объемлющий объект; в простом случае, когда данные передаются от конструктора к ниппелю и только туда, вполне можно и обойтись. maXmoну… можно и не вкладывать класс насоса в класс мяча, а будет просто глобальная куча насосов, из которых каждый мяч будет выбирать свой. Это уже будет другая задача. В постановке, как я ее понял изначально, проводится прямая связь между конкретным классом коллекции и конкретным классом элемента коллекции. Хотя по своему опыту я привык не доверять такой постановке. Очень часто хочется влезть и заменить кого-нибудь из них на наследника, не трогая другого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2006, 15:23 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
softwarer maXmoИ при накачке базовый мяч просто говорит в ниппель: «ещё газу», его не волнует, что за насос и что в него накачивают. Если обратите внимание, в моем решении этот принцип полностью соблюден. Это важно, он ключевой.хм… да, но не он у нас камень преткновения, а вызов метода на несконструированном объекте (в процессе его конструирования). Я не отрицаю, что это можно реализовать. Можно, если не лень потом будет разгребать там ясно-какие-баги. softwarerА вот насчет интерфейса есть одна важная деталь - плохо совместимые параметры инициализации. Мы можем либо искусственно стандартизировать их, сделав объемлющий объект "набор параметров", либо предоставить объектам разбираться с ними на месте.такие параметры будет уместно передавать в фабрику при её создании прямо в DerivedClass, в качестве бонуса получим строгую типизацию. softwarerВ постановке, как я ее понял изначально, проводится прямая связь между конкретным классом коллекции и конкретным классом элемента коллекции.ну обычно связь элемента с коллекцией выражается в том и только в том, что элемент содержится в коллекции. Если элемент явно зависит от коллекции – тут, да, согласен – фабрика не спасёт, придётся доинициализировать после отработки базового конструктора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2006, 17:28 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
maXmoхм… да, но не он у нас камень преткновения, а вызов метода на несконструированном объекте (в процессе его конструирования). Хм. Мы же уже вроде разобрались, что идеологически такой подход не является априори плохим. "Несконструированный объект" - это малоудачная абстракция. Технически она имеет определенное значение в C++ и только там. Практически же - она может быть и имела бы смысл, если бы после вызова new всегда и везде выходили полностью инициализированные объекты. Но это не так; мы обычно не хотим запихивать в конструктор необходимое количество параметров, мы хотим определенную свободу, поэтому в относительно сложных объектах между "окончанием начального конструирования" и "возможностью практического использования" выполняется еще уйма действий, "доинициализация". Вызов методов при этом допускается и активно осуществляется - а если так, почему собственно граница проведена именно так? Почему, с Вашей точки зрения, код Код: plaintext 1. 2. 3. 4. 5. 6. является нормальным, а вот код Код: plaintext 1. 2. 3. 4. 5. 6. Вы вдруг считаете плохим, подверженным ошибкам и вообще идеологической проблемой? maXmoЯ не отрицаю, что это можно реализовать. Можно, если не лень потом будет разгребать там ясно-какие-баги. Ну кому ясно.... я так могу наверное придумать, какой бы баг туда внести, но только если специально озадачиться. Скажем, в той постановке, которую я обрисовал, метод может быть сделан статическим [если я правильно употребляю терминологию - в дельфе это называется class method, метод, принадлежащий "классу в целом", а не конкретному экземпляру]. И какие ясно-какие-баги при этом удастся внести? maXmoтакие параметры будет уместно передавать в фабрику при её создании прямо в DerivedClass, в качестве бонуса получим строгую типизацию. К сожалению, получим мы кукиш, псевдострогую типизацию. Терминологически, что есть строгая типизация: проверка компилятором соответствия передаваемого значения ожидаемому. Согласны? И тут следует ключевой момент: "ожидаемому" можно понимать как "формально ожидаемому", а можно как "фактически ожидаемому". Практически нам интересен второй вариант, а получаем мы первый. Это легко проиллюстрировать следующим кодом: Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. Вы предлагаете примерно то же самое - вводится абстрактный базовый класс, на этапе компиляции хвостов не вылезает, на этапе выполнения каждый наследник начинает с приведения полученного параметра к реальному типу, и тут, если что, лезут ошибки. maXmo softwarerВ постановке, как я ее понял изначально, проводится прямая связь между конкретным классом коллекции и конкретным классом элемента коллекции.ну обычно связь элемента с коллекцией выражается в том и только в том, что элемент содержится в коллекции. Обычно - может быть, хотя имхо это неверное утверждение. Скажем, если у меня есть коллекция сотрудников, вполне уместно иметь в ней методы "найти сотрудника по фамилии", "найти сотрудников отдела X" итп. maXmoЕсли элемент явно зависит от коллекции – тут, да, согласен – фабрика не спасёт, придётся доинициализировать после отработки базового конструктора. Не понял мысль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2006, 18:21 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
Надоело? :) А я с таким интересом читаю... :) Аналогия моей задачи с мячами, насосами и ниппелями у меня плохо получилась... :) кто у меня насос, а кто - ниппель? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 11:31 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
Насос - элемент коллекции. Ниппель - способ, которым коллекция взаимодействует с элементом. Именно его конструкцию мы и обсуждаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 14:13 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
softwarerНасос - элемент коллекции. Ниппель - способ, которым коллекция взаимодействует с элементом. Именно его конструкцию мы и обсуждаем. Забавно, насколько я помню начало топика - речь не шла: ни о коллекциях, ни о наполнении их (коллекций) какими-либо элементами. Оченно даже наоборт - был предъявлен совершенно "абстрактный" (к контексту обсуждения, а не в терминах ООП) класс BaseClass с "простым" конструктором BaseClass(guid) и чуть более "продвинутый" наследник DerivedClass с "навороченным" конструктором DerivedClass(guid, guid, int), а также был вопрос - как избежать повторного кода в реализации этих конструкторов. Насколько я смог понять аллегорию с мячами: Мяч (мячи) - это экземпляры BaseClass и DerivedClass (должны быть наполнены "газом"); Газ (газы) - внутренние члены BaseClass и DerivedClass (коллекции, у BaseClass, например: одна, у DerivedClass - еще парочка к уже существующей от предка); Насос (насосы) - метод для "накачки" мячей газом (сложная логика заполнения коллекций, вынесенная в отдельную функцию, вполне возможно существование 3-х различных "насосов" для каждой из описанных выше коллекций); Ниппель (ниппели) - вспомогательный класс (фабрика, делегат), позволяющий получать результат работы "насоса" внутри конструктора "мяча", пока "мяч" еще не "инстацирован" (код не вышел за scope конструктора). По-вашему, softwarer, получается, что - раз "ниппель" не нужен (отрезан бритвой Оккама), то "насос" должен быть помещен внутри "мяча", если не экземплярным методом, то хоть статическим, а если и статическим низзя, то тогда - методом внутреннего класса... (кривовато как-то выглядит, ИМХО, даже на "насосно-газово-мячной" аллегории). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 16:51 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
dejavewЗабавно, насколько я помню начало топика - речь не шла: ни о коллекциях, ни о наполнении их (коллекций) какими-либо элементами. Попробуйте прочитать чуть дальше начала - потом постановка вопроса была уточнена. Если бы не это, до сих пор бы шел абсолютно бессмысленный треп в духе первых постов. dejavewМяч (мячи) - это экземпляры BaseClass и DerivedClass (должны быть наполнены "газом"); Газ (газы) - внутренние члены BaseClass и DerivedClass Газов в моей аналогии нет. Если Вы умеете считать, обнаружите, что описали четыре элемента, а мы до этого говорили только о трех. dejavewПо-вашему, softwarer, получается, что - раз "ниппель" не нужен Еще одно неверное утверждение, приписываемое мне, скорее всего в силу крайне невнимательного чтения, возможно в силу изначальной одиозности. Я говорю о том, что в данной задаче "ниппель нужен только в мяче и не нужен отдельно от мяча", а следовательно может быть совмещен с ним без потери в функциональности. Как оно и происходит в реальных мячах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 16:57 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
softwarer... Газов в моей аналогии нет. Если Вы умеете считать, обнаружите, что описали четыре элемента, а мы до этого говорили только о трех. ... Еще одно неверное утверждение, приписываемое мне, скорее всего в силу крайне невнимательного чтения, возможно в силу изначальной одиозности. ... Я говорю о том, что в данной задаче "ниппель нужен только в мяче и не нужен отдельно от мяча", а следовательно может быть совмещен с ним без потери в функциональности. Как оно и происходит в реальных мячах. Кто уж тут занимается "крайне невнимательным чтением" или "изначальной одиозностью" (вот уж точно не понял - к чему ето ты про "одиозность" вставил, может значение слова не знаешь?) - не мне судить... Однако ж, пересмотрев топик по ключевым словам еще раз, обнаружил следующее: автор...Беда в том, что в конструкторе базового класса происходит добавление в некие коллекции неких элементов... По-моему, здесь достаточно ясно русским по белому написано то, что не сами BaseClass и DerivedClass являются коллекциями (с твоей "легкой" руки), а заполняют эти коллекции внутри своих конструкторов? (-1). maXno...то есть если, скажем, мы будем писать приложение для накачки мячей, мы в нём можем мяч и насос объединить в один класс, потому что мы можем так сделать? maXno...а насос – это не элемент, это фабрика элементов (в моих терминах StuffFactory), ниппель – интерфейс (IStuffFactory), поддерживаемый всеми насосами и мячами. Элемент – это неизвестный газ (object), который каждый насос берёт неизвестно откуда, неизвестно как. И при накачке базовый мяч просто говорит в ниппель: «ещё газу », его не волнует, что за насос и что в него накачивают... Отсюда я делаю вывод о том, что автором "мячно-газово-насосной" аллегории являешься не ты, однако же берешь на себя смелось интерпретировать чужие высказывания и учить других считать сущности... (-2). И наконец, если уж речь зашла о реальных мячах (как последнем аргументе в споре), то ниппель может быть там и встроен (смотря что понимать под ниппелем), но уж никак не насос, о чем ты "скромно" решил не вспоминать... (-3). Веди и впредь дискуссии в том же стиле и может быть когда-нибудь кто-то объяснит тебе значение слова "одиозность"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 17:33 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
dejavewПо-моему, здесь достаточно ясно русским по белому написано то, что не сами BaseClass и DerivedClass являются коллекциями Написано. С точки зрения обсуждаемой темы прочие их особенности не являются существенными, поэтому в моей аналогии я отождествил классы с их единственно значимым членом, возражений ни у собеседника, ни у автора темы не было. dejavewОтсюда я делаю вывод о том, что автором "мячно-газово-насосной" аллегории являешься не ты, Можешь, конечно, отсюда, а можешь посмотреть сообщение непосредственно перед цитируемым, написанным мной. Я действительно не являюсь автором "мячно-газово-насосной" аналогии, я являюсь автором "мячно-ниппельно-насосной" аналогии. В цитируемом тобой письме maXmo добавил к газ, но далее он нигде не упоминался по одной простой причине: он несущественнен, не несет функции, интересной с точки зрения задачи. dejavewоднако же берешь на себя смелось интерпретировать чужие высказывания и учить других считать сущности... (-2). Ну если учительница в школе не научила, должен же кто-то исправить это недостаток. dejavewИ наконец, если уж речь зашла о реальных мячах (как последнем аргументе в споре), Речь о реальных мячах зашла как о последнем способе объяснить нечто плохо врубающемуся человеку. Судя по развитию дискуссии, врубаться он не хочет. Печально, но это его дело. dejavewно уж никак не насос, о чем ты "скромно" решил не вспоминать... (-3). Зачем вспоминать то, что сказано постов десять назад? Насос - снаружи, отделимый и независимый. Ниппель - внутри, встроенный, обеспечивает взаимодействие с насосом. Резюмируя: очередной представитель серого племени серых ников. К сожалению, ничего интересного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 17:52 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
softwarerНасос - элемент коллекции... softwarerНасос - снаружи, отделимый и независимый... softwarerо последнем способе объяснить нечто плохо врубающемуся человеку... Да уж, трудно врубиться в то, что элемент коллекции оказывается для нее - "снаружи, отделимый и независимый"... или ты свой собственный русский язык изобрел? softwarerочередной представитель серого племени серых ников... Не суди и не судим будешь... (например: судя по тому, что ты не процитировал мои высказывания про "одиозность" - таки не знаешь значения этого слова, а еще за "учительниц в школе" пытаешься выступать, с собой сначала разберись, сиятельный "зарегистрированный член форума"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 18:08 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
dejavewДа уж, трудно врубиться в то, что элемент коллекции оказывается для нее - "снаружи, отделимый и независимый"... или ты свой собственный русский язык изобрел? Ты можешь вытащить элемент из коллекции и работать с ним? Можешь убрать из коллекции все его следы, по-прежнему при этом храня прямую ссылку на него и работая с ним? Значит, он отделим. Если дашь себе труд подумать, разберешься и с остальным, в рамках общепринятого русского языка. dejavew softwarerочередной представитель серого племени серых ников... Не суди и не судим будешь... Склонность к банальностям не красит человека. "Не судить" минимально вменяемый человек не может физически, поскольку это означает "не иметь собственного мнения". "Не судим будешь" меня не интересует, обратная перспектива не пугает. dejavew(например: судя по тому, что ты не процитировал мои высказывания про "одиозность" - таки не знаешь значения этого слова Если бы я не знал значения этого слова, я бы воспользовался гуглем, причем перед употреблением. Машину логического вывода тебе стоит поднастроить. Я не процитировал твои слова потому, что не нашел в них чего-либо интересного и/или заслуживающего ответа. dejavew, а еще за "учительниц в школе" пытаешься выступать Обычно я выступаю против них. За редкими исключениями их квалификация представляется мне недопустимо низкой. В твоем конкретном случае они, похоже, также не блеснули. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 18:47 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
dejavewЗабавно, насколько я помню начало топика - речь не шла: ни о коллекциях, ни о наполнении их (коллекций) какими-либо элементами. Оченно даже наоборт - был предъявлен совершенно "абстрактный" (к контексту обсуждения, а не в терминах ООП) класс BaseClass с "простым" конструктором BaseClass(guid) и чуть более "продвинутый" наследник DerivedClass с "навороченным" конструктором DerivedClass(guid, guid, int), а также был вопрос - как избежать повторного кода в реализации этих конструкторов.Железно! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 00:11 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
Я действительно хотел поставить вопрос в общем виде, безотносительно к внутреннему содержанию конструкторов. О коллекциях пришлось сказать просто для того, чтобы хоть как-то конкретизировать постановку задачи, что называется, для затравки. :) Если бы в конструкторах не заполнялись бы никакие коллекции, а осуществлялась бы какая-то другая деятельность, то вопрос все равно оставался бы актуальным. Впрочем, ответ на свой вопрос я получил еще в начале, как теперь оказывается, обсуждения и задачу свою решил, за что, повторяю, благодарен. Далее обсуждающие стали развивать тему, а заодно - и представленный мною пример, на свой лад. Такое обсуждение имеет полное право на существование, но имеет так же и весьма косвенное (уже теперь) отношение к поставленному мною вопросу. Извините за сложносочиненность моих предложений. Аналогия же с мячами, со вполне справедливой иронией названная аллегорией, действительно изложена весьма путанно, с некоторой подменой понятий по ходу дела. Поэтому я не до конца понимаю, о чем же, все-таки, спорят собеседники. Мое непонимание, надеюсь, будет простительным с вашей точки зрения, если примете во внимание, что я - начинающий ООП программер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 00:29 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
BrokenPot...Извините за сложносочиненность моих предложений... Меня не напрягает (я умею читать и писать по-русски), а softwarer-у - по-боку (его никакие другие мнения, кроме своего собственного, изначально непогрешимого, не "вставляют"). BrokenPot...Аналогия же с мячами ... изложена весьма путанно, с некоторой подменой понятий по ходу дела... "Подмена понятий" - это, опять же, к softwarer-у (его "изначально одиозный" приемчик), я всего-навсего другими словами и в одном посте изложил то, что у maXno (как автора идеи) было "размазано" по нескольким постам. Заменять сущности базовых классов коллекциями, засовывать "насосы" внутрь "мячей", притягивать за уши "отчуждаемость" элемента коллекции от ее самое - это очень показательный уровень "настройки машины логического вывода" с его стороны. BrokenPot... Поэтому я не до конца понимаю, о чем же, все-таки, спорят собеседники... Я спорю о том, что на твой вопрос о сути предлагаемой аналогии (что здесь "мяч", а что - "насос"?) softwarer начал нести абсолютную чушь ("мяч" - коллекция, "насос" - отчуждаемый??? элемент коллекции, "ниппель" - х/з что, очевидно, метод Add(item) коллекции же), при этом становясь в позу непогрешимого знатока, от которого сияние исходит только на том основании, что он когда-то дал себе труд ввести пароль на форме регистрации этого сайта, а также на основании того, что никто (кроме меня) не стал ему возражать сразу же после того как он вбрасывал в ветку очередную порцию чуши (" ...не являются существенными ... в моей аналогии ... я отождествил ... возражений ни у собеседника, ни у автора темы не было... "). 2softwarer: Иногда люди не дают себе труда возражать на откровенную белиберду, т.к. им жалко тратить на это бесцельное занятие свое драгоценное время (я - печальное исключение из этого "банального" правила). Однако, мне все ж таки интересно как ты, как гигант мысли и великий настройщик машины логического вывода, сможешь убедительно "отчуждить" тип int от коллекции IList<int>, например? Так, чтобы всем было доступно понятно - int находится "внутри" IList<int> или "вне ее"? (и не заводи опять бодягу с притягиванием за уши конкретных экземпляров в конкретных ячейках коллекции, никто и не собирался сомневаться в том, что экземпляр может быть выкинут из коллекции без следа). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 11:07 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
dejavew Иногда люди не дают себе труда возражать на откровенную белиберду, т.к. им жалко тратить на это бесцельное занятие свое драгоценное время И давно ты это выяснил? Или только после того, как я объяснил тебе, почему не отвечаю на каждую твою фразу? dejavew Однако, мне все ж таки интересно как ты, как гигант мысли и великий настройщик машины логического вывода, сможешь убедительно "отчуждить" тип int от коллекции IList<int>, например? "Смочь" я наверное не смогу, это уже давным-давно сделано без моего участия. Ответь сам себе на два простых вопроса: Пользовался ли ты когда-нибудь типом int вне коллекции IList<int>? Если не пользовался, сможешь ли воспользоваться, когда будет такая потребность? Если ответом на оба вопроса будет "нет" - ты прав, тип int неотчуждаем. Для тебя. dejavew Так, чтобы всем было доступно понятно - int находится "внутри" IList<int> или "вне ее"? Во-первых, не путай типы и экземпляры (они же классы и объекты). Тип int определенно находится "вне" любой коллекции, он описан совершенно отдельно. Что касается экземпляров - они могут быть помещены в контейнер и могут быть извлечены оттуда, они также вполне отчуждаемы. Чтобы ты понял, придется снова прибегнуть к аналогии - водитель вполне отчуждаем от машины. Он ни к чему внутри не приклеен, может открыть дверь, выйти и даже никогда не вернуться. dejavew(и не заводи опять бодягу с притягиванием за уши конкретных экземпляров в конкретных ячейках коллекции, Ага, то есть наполовину ты понял, теперь пытаешься передернуть к типам. Итак, по-твоему, "тип int" является "неотчуждаемым от типа IList<int>". Теперь ты позиционируешься на этой чуши? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 14:50 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
softwarer...Во-первых, не путай типы и экземпляры (они же классы и объекты). Ну, примерно такого именно ответа я от тебя и ожидал, куда уж нам с нашей серостью отличить "насос" (тип/элемент/экземпляр?) от "мяча" (класс/коллекция/контейнер?). Это только блистательным гигантам мысли и мастерам настройки машин логического вывода (без водителей) позволено запросто "отождествлять" элемент коллекции (суть - экземпляр) с каким-то непонятным "насосом" (почему-то обозванным потом типом), класс BaseClass ("мяч" без возражений с твоей стороны, суть - тип) с коллекцией (она же - экземпляр контейнера, из которого "водитель" может выйти и не вернуться). softwarer...Тип int определенно находится "вне" любой коллекции, он описан совершенно отдельно. Вот-вот, абсолютно предсказуемое поведение для т.н. "завсегдатаев" этого форума (с многими тысячами постов, дарующими их обладателям право гадить на всех вокруг) - представить оппонента идиотом, прицепиться к формулировкам и добивать железо-бетонными "банальностями" чтобы ему (оппоненту) и другим неповадно было усомниться в непогрешимости их сиятельности "действительного члена". softwarerОтветь сам себе на два простых вопроса: Сможет ли коллекция IList<int> принять в себя экземпляры типов отличных от int (без передергивания к наследникам, что слава БГ, для int и невозможно)? Если не сможет, сможешь ли ты заставить ее это сделать, когда будет такая потребность? Если ответом на оба вопроса будет "да" - ты прав, тип int отчуждаем (не сам по себе, как сферический конь от вакуума) от коллекции IList<int>. Для тебя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 18:06 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
dejavewНу, примерно такого именно ответа я от тебя и ожидал, куда уж нам с нашей серостью отличить "насос" (тип/элемент/экземпляр?) от "мяча" (класс/коллекция/контейнер?). Это только блистательным гигантам мысли и мастерам настройки машин логического вывода Хм. Что-то знакомое чудится в этом сером уничижении. Ты случаем не тот же провокатор, который недавно вылезал под ником 1cник ? Кстати, если чего не знаешь - например про тот же логический вывод - ты не стесняйся, спрашивай. Лучше всего - у гугля. dejavewВот-вот, абсолютно предсказуемое поведение для т.н. "завсегдатаев" этого форума (с многими тысячами постов, дарующими их обладателям право гадить на всех вокруг) - представить оппонента идиотом, Cпасибо, конечно, за высокую оценку моего риторического мастерства, но подумай вот о чем: ты уже сутки с лишним здесь слюной брызгаешь, и так, и эдак заходишь, в соответствии с провозглашенным тобой алгоритмом цепляешься к словам даже там, где ежу понятна безнадежность - а представить идиотом меня все никак не удается. dejavewприцепиться к формулировкам и добивать железо-бетонными "банальностями" Хм. Такое впечатление, что ты считаешь меня обязанным помочь тебе опровергнуть и развенчать меня, и мое несогласие с такой политикой тебя обижает. Если твои аргументы столь сильны, что железобетонно опровергаются банальностями - кто жe в этом виноват? Неужели все обязаны игнорировать это, выдумывать достойные тебя, высокоумные возражения и в конце неизбежно склониться перед твоим подавляющим превосходством? Не черезчур ли щедро губки раскатываешь? Высочайшее самомнение и беспримерная наглость - дело конечно хорошее и правильное, но лишь тогда, когда они подкреплены харизмой и интеллектом, как например у меня. dejavew Сможет ли коллекция IList<int> принять в себя экземпляры типов отличных от int (без передергивания к наследникам, что слава БГ, для int и невозможно)? Фу, совсем скучно передергиваешь, словно по обязанности. Так, будто сказать нечего, а надо. Ухитряешься от изначальной задачи (положить в коллекцию наследника) перейти к задаче, где "слава БГ наследники невозможны". Впрочем, возможно для тебя это новость - но правильный ответ таков: зависит от деталей реализации в конкретном случае. IList как понятие вроде бы есть только в .NET; в нем я некомпетентен и не могу ответить. Для дельфы ответом на аналогичный вопрос будет "да, без проблем". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 23:41 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
softwarer...ты уже сутки с лишним здесь слюной брызгаешь .... ...там, где ежу понятна безнадежность ... ...представить идиотом меня все никак не удается ... ...склониться перед твоим подавляющим превосходством ... ...Высочайшее самомнение и беспримерная наглость ... подкреплены харизмой и интеллектом, как например у меня ... ...будто сказать нечего, а надо ... ...зависит от деталей реализации в конкретном случае ... ...в .NET ... я некомпетентен и не могу ответить ... ...Для дельфы ответом на аналогичный вопрос будет "да, без проблем". Х-хоспаде, да кому ты нужен со своими "харизмой" (от базарной бабы) и "интеллектом" (от Шарикова П.П.), я ничего и не собирался доказывать тебе лично ("ежу понятна безнадежность"), а уж тем более не представлял тебя идиотом (ты с этим и сам прекрасно справляешься). А ввязался я в дискуссию только затем, чтобы люди читающие эту ветку не глотали "на веру" (потому что - "никто не возразил", © твой) ту кашу из понятий, которую ты тут щедро выливаешь из своей забитой помоями головы. И то, что ты "некомпетентен в .NET", зато очень "компетентен" в дельфах (можешь "отождествить" при случае нетипизированную коллекцию указателей на все на свете TList со строго типизированной по содержмому IList<int>), не дает тебе никакого бонуса в этом споре, т.к. только лишний раз показывает уровень твоего "интеллекта" и забитость твоей головы кашей из понятий, постепенно переваривающихся в помои. Очень удобная позиция - там где это выгодно прикинуться дурачком, не знающим и не желающим знать синтаксиса generic-ов в C#2.0, и на этом основании вещать о возможностях типизированных коллекций как о возможностях нетипизированных. Зато в другом месте, можно и "интеллект" проявить - напихать в "мяч" (коллекцию) "насосов" (элементов коллекции) и гордиться собственной "харизмой" и удачностью аналогии, попинывая радостно под столом мяч набитый насосами под завязку. Если хочешь продожать разговор "по теме", то прежде всего - избавь свой лексикон от понятий и терминов, не имеющих никакого отношения к ООА ("отчуждаем", "извне" и т.п.), потому что это заводит людей, пытающихся тебя понять и обсудить вопрос "по существу" в дебри терминологических споров. Нет никакой "отчуждаемости" в отношениях между типами (классами), есть "зависимость", вполне адекватный термин, в обсуждении которого противоречий быть не может: int НЕ зависит от IList<int>; IList<int> ЗАВИСИТ от int; И в этой (второй) зависимости ни один из типов не может быть "отчужден" от другого. Зависимость - суть связь, понятие двусторонее по определению. Нет зависимости - нет связи, ничто не задает ограничение по типу элементов коллекции, следовательно - IList<int> перестает существовать и "вырождается" в TList. P.S. я все думал, что это maXno не высказывается "за" или "против" твоих извращений собственной аналогии? Теперь начинаю догадываться - твои "харизма" и "интеллект", видимо, на здешнем форуме уже успели приобрести "изначальную одиозность"... 2all: С наступающим Новым Годом, друзья!! Всем - пока... (из этого топика). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2006, 13:01 |
|
||
|
ООП
|
|||
|---|---|---|---|
|
#18+
dejavewОчень удобная позиция - там где это выгодно прикинуться дурачком, не знающим и не желающим знать синтаксиса generic-ов в C#2.0, Теперь понятно, почему ты вещаешь чушь вместо того, чтобы временами честно сказать "я этого не знаю" - для тебя это эквивалентно "выглядеть дурачком". Не комплексуй. Как говаривал классик, "не стыдно не знать - стыдно не учиться". В частности, если для тебя возможности механизма сводятся к синтаксису - определенно, еще "учиться и учиться". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2006, 13:22 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34228902&tid=1346350]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 434ms |

| 0 / 0 |
