Материал предоставлен https://it.rfei.ru

Параметризация

6 лет назад

Андрей Анатольевич, я думаю,что эти два ответа верные.

Каковы преимущества параметризованного класса List[T] по сравнению с обычным классом List?

  • List[T] может быть расширен конкретными классами (например, LinkedList[T]), а List — нет
  • List[T], в отличие от List, не позволит разместить экземпляр неподходящего типа

С уважением,Истомин Алексей

6 лет назад

Добрый день, Алексей Сергеевич.

Ну что-же вы так...

Давайте использовать метод “от противного”. (это не прилагательное :-))

Может ли быть расширен класс List? Очевидно, может, если он только не final. Он 'final'?

Второй вариант, очевидно, верен. Давайте отметим почему:

Потому что мы параметризуем List[T] соответствующим типом T (понятно, что вместо T, может быть всё что угодно, хоть Брабуляка). Соответственно, после этого такой список List[Брабуляка] будет подходить только для экзепляров типа Брабуляка, чтобы это ни означало.

С уважением,

Станислав Евгеньевич Лахтин

4 года назад

Здравствуйте!

Не получается ответить на такой вопрос:

Отметьте абстракции, которые целесообразно моделировать с помощью универсальных классов:

  • зарядное устройство, подходящее фотоаппаратам, медиаплеерам или мобильным телефонам - верно, т.к. может быть разная форма разъема,
  • книга, состоящая из разделов и страниц. Неверно, т.к. страница принадлежит классу “раздел”, который в свою очередь является подтипом класса “Книга”
  • подшивка для различных типов документов - Верно, т.к. она может применяться и к газете, и к отчету..
  • документ (текст, презентация, электронная таблица) ~~Верно~~, т.к. подтипы слишком разные)
  • рамка для картины, сертификата или фотографии - Верно, т.к. рамка может отличаться, как по форме и методу построения, так и по материалу и размерам.
  • треугольник, который может быть задан тремя способами (—Верно—, т.к. разные входные данные для построения треугольника: по углу и двум сторонам, по двум сторонам и углу, по трем сторонам)

Правильно ли я рассуждаю? Спасибо за ответ!

4 года назад

Добрый день, Михаил Львович.

Местами вы рассуждаете верно, местами — нет. Абстракции, которые допускают универсальное поведение, выделение типа реализующего такое поведение, и реализацию этого поведения целесообразно создавать на базе универсальных типов.

В ваших рассуждениях я вижу несколько ошибок. Во-первых, треугольник это всегда треугольник. Количество конструкторов такого типа является не определяющим для выделения универсального типа. Может быть простой тип (унаследованный, например, от общего типа “Фигура”, содержащий несколько конструкторов)

Во-вторых, у вас ошибка в определении необходимой функциональности для описания Документа. Подумайте уж сами, почему.

С уважением,

Станислав Евгеньевич

Ваш комментарий

Комментирование доступно только для авторизованных пользователей.