Универсальный класс – это:
шаблон, используемый для построения конкретных классов
класс, способный решать любые задачи пользователя
класс, методы которого могут иметь родовые параметры
класс с родовыми параметрами
класс, функциональные возможности которого превосходят возможности его потомков
Отметьте истинные высказывания:
наследник универсального класса всегда универсален
для универсального класса не может указываться атрибут сериализации
родовые параметры универсального класса могут задаваться как на уровне класса, так и на уровне методов
класс без родовых параметров может быть наследником универсального интерфейса
делегаты могут иметь родовые параметры
Какие фрагменты кода корректны?
class A<B, C> { B b; C c;}
class A1<A1, B> { A1 a1; B b;}
class A2<B> : IC<C> { }
class A3<B> where B : A<int, int> { }
Здравствуйте, Воронков Василий, Вы писали:
ВВ>А оригинального текста на англ. языке нет? Все-таки не очень ясно какое отношение "родовые параметры" имеют к программированию.
Готов поспорить, что это generic parameters
Кстати, такой же перевод этого термина был использован и в переводе второго издания Бертрана Мейера, который Eiffel так что или переводчики те же, или заворачивали траву в страницы из той книги
PS: Мне лично этот термин не нравится, но адекватный перевод как-то сразу на ум не приходит...
Здравствуйте, Oyster, Вы писали:
O>Здравствуйте, Воронков Василий, Вы писали:
ВВ>>А оригинального текста на англ. языке нет? Все-таки не очень ясно какое отношение "родовые параметры" имеют к программированию.
O>Готов поспорить, что это generic parameters
Тогда мне лично не понятно чем:
"шаблон, используемый для построения конкретных классов"
отличается от
"класс с родовыми параметрами".
И если универсальный класс — это полиморфный класс, то где в списке вариантов упоминание виртуальных мемберов?
O>>Здравствуйте, Воронков Василий, Вы писали:
ВВ>>>А оригинального текста на англ. языке нет? Все-таки не очень ясно какое отношение "родовые параметры" имеют к программированию.
Оригинальный текст был на русском. Автор — Андрей Биллиг
O>>Готов поспорить, что это generic parameters
да
а универсалный класс — generic class
ВВ>Тогда мне лично не понятно чем:
ВВ>"шаблон, используемый для построения конкретных классов"
ВВ>отличается от
ВВ>"класс с родовыми параметрами".
Можно выбирать любой набор ответов
Здравствуйте, Hasmik, Вы писали:
ВВ>>>>А оригинального текста на англ. языке нет? Все-таки не очень ясно какое отношение "родовые параметры" имеют к программированию. H>Оригинальный текст был на русском. Автор — Андрей Биллиг
О... так он переводчик и научный редактор издания этого перевода Мейера. Теперь-то понятно, откуда у "родовых" ноги растут
Здравствуйте, Hasmik, Вы писали:
ВВ>>>>А оригинального текста на англ. языке нет? Все-таки не очень ясно какое отношение "родовые параметры" имеют к программированию. H>Оригинальный текст был на русском. Автор — Андрей Биллиг
Предлагаю перевести оригинальный русский на более привычный английский. Слишком уж этот русский оригинальный...
Может все-таки не стоит это читать? Выглядит по крайней мере жутко, и даже если вы научитесь "правильно" отвечать на такие тесты, то вам это на пользу не пойдет.
Здравствуйте, Oyster, Вы писали:
O>О... так он переводчик и научный редактор издания этого перевода Мейера. Теперь-то понятно, откуда у "родовых" ноги растут
У родовых то ясно откуда — из Лингво. А вот про шаблоны и другую траву — это круто.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Родовые схватки — знаю. Рассказывали что больно. Родовые параметры — не знаю. Но подозреваю тоже что-то нехорошее. ВВ>>>>А оригинального текста на англ. языке нет? Все-таки не очень ясно какое отношение "родовые параметры" имеют к программированию. H>Оригинальный текст был на русском. Автор — Андрей Биллиг
Что-то юмор больно тупой. Он у Петросяна не выступал?
Здравствуйте, Hasmik, Вы писали:
H> Универсальный класс – это: H> шаблон, используемый для построения конкретных классов H> класс, способный решать любые задачи пользователя H> класс, методы которого могут иметь родовые параметры H> класс с родовыми параметрами H> класс, функциональные возможности которого превосходят возможности его потомков
H> Отметьте истинные высказывания: H> наследник универсального класса всегда универсален H> для универсального класса не может указываться атрибут сериализации H> родовые параметры универсального класса могут задаваться как на уровне класса, так и на уровне методов H> класс без родовых параметров может быть наследником универсального интерфейса H> делегаты могут иметь родовые параметры
Простите за мой "английский"
Generic class is a
— template used for building concrete classes
— class which can solve any user's problems
— class with methods which can contain generic parameters
— class with generic parameters
— class with functionality greater then classes derived from it
Check correct statements
— class derived from generic class is always generic
— serialization attribute can't be specified for generic class
— generic parameters for generic class can be specified both for the class and for methods
— class which doesn't contains generic parameters can be derived from generic interface
— delegates can contain generic parameters
Здравствуйте, kpumuk, Вы писали: K>Простите за мой "английский"
K>Generic class is a K>- template used for building concrete classes
concrete — это цемент. Лучше specific K>- class which can solve any user's problems
Ну и шутники сидят на ББС. А если у юзера жена ушла? K>- class with methods which can contain generic parameters
Это правильный ответ K>- class with generic parameters
И это правильный ответ K>- class with functionality greater then classes derived from it
class wich functionality exceeds that of derived classes
K>Check correct statements K>- class derived from generic class is always generic
K>- serialization attribute can't be specified for generic class
может K>- generic parameters for generic class can be specified both for the class and for methods
что он имеет в виду, непонятно. Ежели так,<> то в заголовке класса. А упоминаться могут в методах. K>- class which doesn't contains generic parameters can be derived from generic interface
нет. А хотя хрен его знает. K>- delegates can contain generic parameters
да
Здравствуйте, Hasmik, Вы писали:
K>>- class with methods which can contain generic parameters H>Это правильный ответ
Сомневаюсь. Согласно п. 25.1 стандарта
A generic class declaration is a declaration of a class that requires type arguments to be supplied in order to
form runtime types.
...
A class declaration that supplies a type-parameter-list is a generic class declaration.
Так что здесь
class C
{
void foo<T>() {}
}
нет generic class declaration.
K>>- class derived from generic class is always generic H>
Не верно
class Base<T> {}
class Derived : Base<object> {}
K>>- generic parameters for generic class can be specified both for the class and for methods H>что он имеет в виду, непонятно. Ежели так,<> то в заголовке класса. А упоминаться могут в методах.
Действительно, не понятно, особенно учитывая, что термин 'generic parameters' в стандарте не используется.
K>>- class which doesn't contains generic parameters can be derived from generic interface H>нет.
Не верно, может.
class C : IEnumerable<int>
{
...
}
В любом случае, вопрос сфорулирован некорректно, т.к. "derived from interface" не говорят.
Наконец, формально говоря, IEnumerable<int> -- это не generic type, а closed constructed type (25.5). Собственно unbound generic type-ом будет IEnumerable<>, от которого наследоваться вообще нельзя (25.5):
An unbound generic type can only be used within a typeofexpression
(§14.5.11).
Здравствуйте, Mab, Вы писали:
Mab>Наконец, формально говоря, IEnumerable<int> -- это не generic type, а closed constructed type (25.5). Собственно unbound generic type-ом будет IEnumerable<>, от которого наследоваться вообще нельзя (25.5): Mab>
Mab>An unbound generic type can only be used within a typeofexpression
Mab>(§14.5.11).
Возможно, тут имеется в виду:
class C<T> : IEnumerable<T>
{
}
что типа именно такой случай рассмотривать как наследование от генерика.
Здравствуйте, Hasmik, Вы писали:
K>>Generic class is a K>>- template used for building concrete classes H>concrete — это цемент. Лучше specific
Concrete вроде вполне устоявшееся название.
K>>- class with functionality greater then classes derived from it H>class wich functionality exceeds that of derived classes
А смысл не поменялся на противположный?
K>>- generic parameters for generic class can be specified both for the class and for methods H>что он имеет в виду, непонятно. Ежели так,<> то в заголовке класса. А упоминаться могут в методах.
Возможно, имеется в виду может ли генерик-параметр класса использоваться так же и для методов. По типу:
Здравствуйте, Igor Sukhov, Вы писали:
IS>Давай еще. Давно так широко не улыбало. Лучше сразу в Rsdn.Humour — если что-отмодерируем в этот форум.
Лучше бы Андрея Биллига отмодерировать...куда нибудь. Это же абзац, люди по этим книгам учатся! Представляете себе, поколение
программистов взрощённое на "родовых параметрах" и "универсальных классах"...
Здравствуйте, VladGalkin, Вы писали:
VG>Здравствуйте, Igor Sukhov, Вы писали:
IS>>Давай еще. Давно так широко не улыбало. Лучше сразу в Rsdn.Humour — если что-отмодерируем в этот форум. VG>Лучше бы Андрея Биллига отмодерировать...куда нибудь. Это же абзац, люди по этим книгам учатся! Представляете себе, поколение VG>программистов взрощённое на "родовых параметрах" и "универсальных классах"...
А чем вам не нравится? Если у вас нет альтернативной терминологии, критиковать чужую неконструктивно.
Здравствуйте, Hasmik, Вы писали:
VG>>программистов взрощённое на "родовых параметрах" и "универсальных классах"... H>А чем вам не нравится? Если у вас нет альтернативной терминологии, критиковать чужую неконструктивно.
Не использовать перевод терминов, для которых в русском языке нет устоявшихся или однословных вариантов. Применять транслитирирование или трансткрипцию как будет более благозвучно. Применяют же здесь на форуме термины контрол, дженерик и это гораздо более удобочтаемо и понятно по русски. Отчаянным русофилам и поклонникам чистоты русского языка могу заметить, что такая практика очень давно существует в других науках (например химии) и её не смогло вытравить даже борьба с космополитизмом в определённый период нашей истории.
... <<My edition based on RSDN@Home 1.2.0 alpha rev. 648>>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Здравствуйте, Воронков Василий, Вы писали:
K>>>- class with functionality greater then classes derived from it H>>class wich functionality exceeds that of derived classes
ВВ>А смысл не поменялся на противположный?
Нет. Только поправка — whose
exceed — превосходить K>>>- generic parameters for generic class can be specified both for the class and for methods H>>что он имеет в виду, непонятно. Ежели так,<> то в заголовке класса. А упоминаться могут в методах.
ВВ>Возможно, имеется в виду может ли генерик-параметр класса использоваться так же и для методов. По типу:
ВВ>
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Hasmik, Вы писали:
А>Незачет. Придете на пересдачу на следующей неделе.
А вот и нет. Уже сдала и этот, и следующий. Осталось всего 2 теста.
K>>>- generic parameters for generic class can be specified both for the class and for methods H>>что он имеет в виду, непонятно. Ежели так,<> то в заголовке класса. А упоминаться могут в методах. Mab>Действительно, не понятно, особенно учитывая, что термин 'generic parameters' в стандарте не используется.
Здравствуйте, Hasmik, Вы писали:
H>Здравствуйте, Воронков Василий, Вы писали:
K>>>>- class with functionality greater then classes derived from it H>>>class wich functionality exceeds that of derived classes
ВВ>>А смысл не поменялся на противположный? H>Нет. Только поправка — whose H>exceed — превосходить
Т.е. смысл фразы получается — "класс, чья функциональность превосходит функциональность отнаследованных от него классов"?
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, Hasmik, Вы писали:
H>>Здравствуйте, Воронков Василий, Вы писали:
K>>>>>- class with functionality greater then classes derived from it H>>>>class wich functionality exceeds that of derived classes
ВВ>>>А смысл не поменялся на противположный? H>>Нет. Только поправка — whose H>>exceed — превосходить
ВВ>Т.е. смысл фразы получается — "класс, чья функциональность превосходит функциональность отнаследованных от него классов"?
класс, функциональные возможности которого превосходят возможности его потомков
Именно так было в первоначальном тексте(тесте)
Здравствуйте, Hasmik, Вы писали:
H>А чем вам не нравится? Если у вас нет альтернативной терминологии, критиковать чужую неконструктивно.
Альтернативное решение есть — не использовать альтернативной терминологии
На самом деле если бы даже перевод всех этих терминов был идеальным (каковым он, мягко говоря, не является), то все равно использовать его было бы не самой лучшей идеей — хотя бы потому, что все вокруг говорят на другом языке, и есть немаленькая вероятность, что, если вы начнете рассуждать в категориях "родовых параметров" и "универсальных классов", то вас просто не поймут.