Универсальный класс – это:
шаблон, используемый для построения конкретных классов
класс, способный решать любые задачи пользователя
класс, методы которого могут иметь родовые параметры
класс с родовыми параметрами
класс, функциональные возможности которого превосходят возможности его потомков
Отметьте истинные высказывания:
наследник универсального класса всегда универсален
для универсального класса не может указываться атрибут сериализации
родовые параметры универсального класса могут задаваться как на уровне класса, так и на уровне методов
класс без родовых параметров может быть наследником универсального интерфейса
делегаты могут иметь родовые параметры
Какие фрагменты кода корректны?
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>что он имеет в виду, непонятно. Ежели так,<> то в заголовке класса. А упоминаться могут в методах.
Возможно, имеется в виду может ли генерик-параметр класса использоваться так же и для методов. По типу: