игра брюс 2048
Главная / Программирование / Объектно-ориентированное программирование и программная инженерия / Тест 3

Объектно-ориентированное программирование и программная инженерия - тест 3

Упражнение 1:
Номер 1
Что происходит с контрактами при наследовании. Укажите корректные утверждения?

Ответ:

 (1) в отличие от компонент класса контракты родительского класса не наследуются 

 (2) контракты родительского класса наследуются и не могут быть изменены 

 (3) контракты родительского класса наследуются, но часть контракта может быть отменена 

 (4) контракты родительского класса наследуются, должны выполняться потомком, но потомок может включить в контракт дополнительные обязательства 


Номер 2
Что происходит с инвариантами класса при наследовании. Укажите корректные утверждения?

Ответ:

 (1) в отличие от компонент класса инварианты родительского класса не наследуются 

 (2) инварианты родительского класса наследуются и не могут быть изменены 

 (3) инварианты родительского класса наследуются, но часть из них может быть отменена 

 (4) инварианты родительского класса наследуются, должны выполняться потомком, но потомок может включить в контракт дополнительные инварианты 


Номер 3
Если у родительского класса есть инвариант, то наследник класса:

Ответ:

 (1) обязан не изменять этот инвариант 

 (2) должен удалить этот инвариант 

 (3) может заменить инвариант собственным инвариантом 

 (4) может дополнить инвариант 


Упражнение 2:
Номер 1
Пусть наследник класса переопределил метод М родителя, задав например реализацию отложенного метода М. В контракте метода М у родителя задано предусловие Р, которое должно выполняться при вызове М. Какие утверждения справедливы относительно предусловия РР метода М в классе наследника?

Ответ:

 (1) наследник обязан сохранить предусловие метода (РР = Р

 (2) наследник может сохранить предусловие метода (РР = Р

 (3) наследник может ослабить предусловие метода (Р => PР and not(PP = P)

 (4) наследник может усилить предусловие метода (РР => Р and not(PP = P)


Номер 2
Пусть наследник класса переопределил метод М родителя, задав например реализацию отложенного метода М. В контракте метода М у родителя задано постусловие Р, которое должно выполняться при вызове М. Какие утверждения справедливы относительно постусловия РР метода М в классе наследника?

Ответ:

 (1) наследник обязан сохранить постусловие метода (РР = Р

 (2) наследник может сохранить постусловие метода (РР = Р

 (3) наследник может ослабить постусловие метода (Р => PР and not(PP = P)

 (4) наследник может усилить постусловие метода (РР => Р and not(PP = P)


Номер 3
Какой связкой объединятся наследуемый инвариант и инвариант, заданный в классе наследника?

Ответ:

 (1) and 

 (2) or 

 (3) and then 

 (4) or else 

 (5) implies 


Упражнение 3:
Номер 1
При переопределении метода возможно и переопределение контракта. Как при переопределении контракта записывается новое постусловие, и каков его эффект?

Ответ:

 (1) постусловие можно не задавать. В этом случае сохранится постусловие родителя 

 (2) постусловие можно не задавать. В этом случае отменяется постусловие родителя 

 (3) постусловие можно задать в форме ensure else new_post, где new_post – дополнительное условие, заданное потомком, расширяющее область возможных значений для результатов метода 

 (4) постусловие можно задать в форме ensure then new_post, где new_post – дополнительное условие, заданное потомком, сужающее область возможных значений для результатов метода 


Номер 2
При переопределении метода возможно и переопределение контракта. Как при переопределении контракта записывается новое предусловие, и каков его эффект?

Ответ:

 (1) предусловие можно не задавать. В этом случае сохранится предусловие родителя 

 (2) предусловие можно не задавать. В этом случае отменяется предусловие родителя 

 (3) предусловие можно задать в форме require else new_pred, где new_pred – дополнительное условие, заданное потомком, расширяющее область возможных значений для входных данных метода 

 (4) предусловие можно задать в форме require then new_pred, где new_pred – дополнительное условие, заданное потомком, сужающее область возможных значений для входных данных метода 


Номер 3
При переопределении метода возможно и переопределение контракта. Какие утверждения справедливы при переопределении контракта:

Ответ:

 (1) предусловие и постусловие записываются в базисной форме – в предложениях require и ensure 

 (2) изменяется базисная форма записи предложений require и ensure 

 (3) если не задавать предусловие и постусловие, то сохраняются условия, заданные родителем 

 (4) если не задавать предусловие и постусловие, то отменяются условия, заданные родителем 


Упражнение 4:
Номер 1
В родительском классе Р задан эффективный метод М с предусловием "Быть пушистым" and "Быть белым". Наследник этого класса Р1 переопределил этот метод, задав соответственно предусловие: require else "Быть белым". Наследник этого класса Р2 переопределил этот метод, задав соответственно предусловие: require else "Быть пушистым".Наследник этого класса Р3 переопределил этот метод, задав соответственно предусловие: require else "Быть натуральным". Объект, передаваемый на вход методу М, обладает свойствами "Быть белым" and "Быть натуральным".  Методы какого класса могут применяться для обработки этого объекта?

Ответ:

 (1) Р 

 (2) Р1 

 (3) Р2 

 (4) Р3 


Номер 2
В родительском классе Р задан эффективный метод М с предусловием "Быть пушистым" and "Быть белым". Наследник этого класса Р1 переопределил этот метод, задав соответственно предусловие: require else "Быть белым". Наследник этого класса Р2 переопределил этот метод, задав соответственно предусловие: require else "Быть пушистым". Наследник этого класса Р3 переопределил этот метод, задав соответственно предусловие: require else "Быть натуральным". Объект, передаваемый на вход методу М, обладает свойствами "Быть пушистым" and "Быть натуральным".  Методы какого класса могут применяться для обработки этого объекта?

Ответ:

 (1) Р 

 (2) Р1 

 (3) Р2 

 (4) Р3 


Номер 3
В родительском классе Р задан эффективный метод М с предусловием "Быть пушистым" and "Быть белым". Наследник этого класса Р1 переопределил этот метод, задав соответственно предусловие: require else "Быть белым". Наследник этого класса Р2 переопределил этот метод, задав соответственно предусловие: require else "Быть пушистым". Наследник этого класса Р3 переопределил этот метод, задав соответственно предусловие: require else "Быть натуральным". Объект, передаваемый на вход методу М, обладает свойствами "Быть пушистым" and "Быть натуральным" and "Быть белым".  Каково число реализаций метода М, которые могут применяться для обработки этого объекта?

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5)


Упражнение 5:
Номер 1
В классе Р задан эффективный метод М с постусловием "Т > 10". Наследник этого класса Р1 переопределил этот метод, задав соответственно постусловие: ensure then "Т > 20". Класс Р2 - наследник Р1 в свою очередь переопределил этот метод, задав соответственно постусловие: ensure then "Т > 50". Класс Р3 - наследник Р2 в свою очередь переопределил этот метод, задав соответственно постусловие: ensure then "Т > 100". Клиенту требуется вызвать метод, обеспечивающий на выходе истинность условия: "T > 15".  Методы каких классов могут гарантировать истинность выполнения этого условия?

Ответ:

 (1) Р1 

 (2) Р2 

 (3) Р3 

 (4) Р 


Номер 2
В классе Р задан эффективный метод М с постусловием "Т > 10". Наследник этого класса Р1 переопределил этот метод, задав соответственно постусловие: ensure then "Т > 20". Класс Р2 - наследник Р1 в свою очередь переопределил этот метод, задав соответственно постусловие: ensure then "Т > 50". Класс Р3 - наследник Р2 в свою очередь переопределил этот метод, задав соответственно постусловие: ensure then "Т > 100". Клиенту требуется вызвать метод, обеспечивающий на выходе истинность условия: "T > 40". Каково число реализаций метода М, которые могут гарантировать истинность выполнения этого условия?

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5)


Номер 3
В классе Р задан эффективный метод М с постусловием "Т > 10". Наследник этого класса Р1 переопределил этот метод, задав соответственно постусловие: ensure then "Т > 20". Класс Р2 - наследник Р1 в свою очередь переопределил этот метод, задав соответственно постусловие: ensure then "Т > 50". Класс Р3 - наследник Р2 в свою очередь переопределил этот метод, задав соответственно постусловие: ensure then "Т > 100". Клиенту требуется вызвать метод, обеспечивающий на выходе истинность условия: "T > 70". Методы каких классов могут гарантировать истинность выполнения этого условия?

Ответ:

 (1) Р1 

 (2) Р2 

 (3) Р3 

 (4) Р 


Упражнение 6:
Номер 1
Какие утверждения относительно экспорта компонентов класса справедливы в Eiffel?

Ответ:

 (1) по умолчанию клиентам класса доступны для чтения все компоненты, но атрибуты класса закрыты для записи 

 (2) в Eiffel нет возможности запретить клиентам класса доступ к компонентам на чтение атрибутов или вызов метода 

 (3) Eiffel позволяет клиентам избранных классов – VIP клиентам - разрешить доступ к некоторым компонентам на чтение атрибутов или вызов метода, задав предложение выборочного экспорта в форме feature { F, …G} 

 (4) Eiffel позволяет полностью запретить доступ к некоторым компонентам, задав предложение выборочного экспорта в форме feature { NONE} 


Номер 2
При проектировании программной системы многие классы связываются отношением наследования. Какие утверждения справедливы для наследования?

Ответ:

 (1) для каждого класса – библиотечного, предопределенного, создаваемого программистом – существует предопределенный класс NONE, являющийся общим потомком 

 (2) класс, создаваемый программистом, может не иметь потомков 

 (3) класс, создаваемый программистом, имеет в качестве потомка класс NONE 

 (4) единственным экземпляром класса NONE является значение VOID, указывающее на отсутствие объекта 


Номер 3
При проектировании программной системы многие классы связываются отношением наследования. Какие утверждения справедливы для наследования?

Ответ:

 (1) для каждого класса – библиотечного, предопределенного, создаваемого программистом – существует предопределенный класс, являющийся общим предком 

 (2) для класса, создаваемого программистом, в предложении наследования inherit необходимо явно указать класс ANY, играющего роль общего предка 

 (3) для класса, создаваемого программистом, предложение наследования inherit может быть опущено, в этом случае у класса не будет предков 

 (4) для класса, создаваемого программистом, предложение наследования inherit может быть опущено, в этом случае у класса будет единственный предок – класс ANY 


Упражнение 7:
Номер 1
Какие утверждения относительно множественного наследования в Eiffel являются справедливыми?

Ответ:

 (1) множественное наследование не допустимо 

 (2) множественное наследование относится к базисным механизмам языка Eiffel 

 (3) замена множественного наследования классов множественным наследованием интерфейсов, как это делается в ряде языков программирования (C#, Java), является непрактичным 

 (4) множественное наследование интерфейсов эквивалентно множественному наследованию классов 


Номер 2
Пусть заданы классы P и F – родители класса S, а M – метод с одним и тем же именем в классах P и F. Какие утверждения в этой ситуации являются справедливыми?

Ответ:

 (1) множественное наследование в этом случае невозможно из-за конфликта имен 

 (2) множественное наследование в этом случае возможно и конфликт имен разрешается автоматически, не требуя каких-либо описаний в классе S 

 (3) если метод M наследован классами P и F от общего родителя и оба класса сохранили реализацию родителя, то конфликт имен разрешается, класс S наследует общий метод М 

 (4) если метод M наследован классами P и F от общего родителя и оба класса изменили реализацию родителя, то для разрешения конфликта в классе S можно переименовать либо метод М из класса Р, либо метод М из класса F, либо оба метода, создав методы с новыми именами в классе S 


Номер 3
Какие утверждения относительно переименования и переобъявления являются справедливыми?

Ответ:

 (1) переименование сохраняет наследуемый компонент, изменяя его имя 

 (2) переобъявление изменяет наследуемый компонент, сохраняя его имя 

 (3) если выполняется переименование компонента, то его переобъявление недопустимо 

 (4) допускается сочетание переименования компонента с его переобъявлением 


Упражнение 8:
Номер 1
Пусть класс Р имеет метод М. Пусть у класса Р есть два наследника F и G, которые являются родительскими классами для класса S.  В каких ситуациях у класса S будет существовать две версии метода М?

Ответ:

 (1) класс Р задал реализацию метода М. Оба наследника наследовали ее без всяких изменений (сохранив имя и реализацию) 

 (2) класс Р метод М определил как отложенный. Один из наследников F задал реализацию метода, другой оставил метод отложенным 

 (3) класс Р задал реализацию метода М. Один из наследников F выполнил переопределение, задав собственную реализацию метода, другой оставил реализацию метода родителя 

 (4) класс Р задал реализацию метода М. Оба наследника выполнили переопределение, задав собственные реализации метода М 


Номер 2
Пусть при повторном наследовании класс Р имеет метод М. Пусть у класса Р есть два наследника F и G, которые являются родительскими классами для класса S.  В каких ситуациях у класса S будут существовать две версии метода М?

Ответ:

 (1) класс Р задал реализацию метода М. Оба наследника наследовали ее без всяких изменений (сохранив имя и реализацию) 

 (2) класс Р метод М определил как отложенный. Один из наследников F задал реализацию метода, другой оставил метод отложенным 

 (3) класс Р задал реализацию метода М. Один из наследников F выполнил переопределение, задав собственную реализацию метода, другой оставил реализацию метода родителя 

 (4) класс Р задал реализацию метода М. Оба наследника выполнили переопределение, задав собственные реализации метода М 


Номер 3
Какие утверждения о наследовании являются корректными?

Ответ:

 (1) при наследовании родительский класс часть своих компонентов завещает одному потомку, а часть другому 

 (2) при наследовании при появлении нового наследника у родительского класса уже существующие наследники передают часть своих компонентов новому наследнику 

 (3) наследование называется повторным, если от потомка к предку ведут ровно два пути 

 (4) наследование называется повторным, если от потомка к предку ведут два или более путей 




Главная / Программирование / Объектно-ориентированное программирование и программная инженерия / Тест 3