Главная / Программирование /
Объектно-ориентированное программирование и программная инженерия / Тест 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) 1 
 (2) 2 
 (3) 3 
 (4) 4 
 (5) 0 
Упражнение 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) 1 
 (2) 2 
 (3) 3 
 (4) 4 
 (5) 0 
Номер 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) наследование называется повторным, если от потомка к предку ведут два или более путей