Главная / Программирование /
Язык программирования C++ для профессионалов / Тест 12
Язык программирования C++ для профессионалов - тест 12
Упражнение 1:
Номер 1
Какой вид иерархии реализует наследование?
Ответ:
 (1) "общее-частное" 
 (2) "целое-часть" 
 (3) "клиент-сервер" 
Номер 2
Какой вид иерархии реализует использование?
Ответ:
 (1) "общее-частное" 
 (2) "целое-часть" 
 (3) "клиент-сервер" 
Номер 3
Какой вид иерархии реализует принадлежность?
Ответ:
 (1) "общее-частное" 
 (2) "целое-часть" 
 (3) "клиент-сервер" 
Упражнение 2:
Номер 1
Какие существуют виды наследования?
Ответ:
 (1) использование 
 (2) расширение 
 (3) ограничение 
Номер 2
Какое свойство объекта называется инвариантом?
Ответ:
 (1) полностью определяющее состояние объекта 
 (2) позволяющее изменить состояние объекта 
 (3) проверяющее состояние объекта 
Упражнение 3:
Номер 1
Какое отношение между классами реализовано в данном случае?
class A
{ public: A(B &b) { this->b = &b; };
B* f() { return b;}
B* b;
};
class B
{ public: B() { b = 0; };
int b;
void f1() { }
}
Ответ:
 (1) наследование 
 (2) принадлежность 
 (3) использование 
Номер 2
Если объект класса А
может содержать несколько объектов класса В
, какое должно быть между ними отношение?
Ответ:
 (1) принадлежности 
 (2) использования 
 (3) наследования 
Номер 3
Может ли класс, которому принадлежит другой класс, переопределить виртуальные функции этого класса?
Ответ:
 (1) не может 
 (2) может 
 (3) может, если принадлежащий класс - абстрактный 
Упражнение 4:
Номер 1
Какое отношение между классами реализовано в данном случае?
class A
{ public: A() { a = 0; };
virtual int f() { return a; }
int a;
};
class B: public A
{ public: B() { a = 1; };
virtual int f() { return a; }
};
Ответ:
 (1) наследование 
 (2) использование 
 (3) принадлежность 
Номер 2
Какими способами класс Х
может использовать класс Y
?
Ответ:
 (1) X
вызывает функцию-член Y
 
 (2) X
читает член Y
 
 (3) X
пишет в член Y
 
 (4) X
разрушает Y
 
Номер 3
Каким образом можно избежать неоднозначности при делегировании?
Ответ:
 (1) использовать явные операции преобразования типов 
 (2) устранять циклы в графе применения операций преобразования типа 
 (3) определять несколько версий операций преобразования типов 
Упражнение 5:
Номер 1
Что называется инкапсуляцией?
Ответ:
 (1) возможность наследования 
 (2) ограничение доступа ко внутренней структуре объекта 
 (3) возможность описания классов в отдельных модулях 
Номер 2
Что называется иерархичностью?
Ответ:
 (1) возможность наследования 
 (2) ограничение доступа ко внутренней структуре объекта 
 (3) возможность описания классов в отдельных модулях 
Номер 3
Что следует использовать для представления понятий?
Ответ:
 (1) встроенные типы 
 (2) классы 
 (3) функции 
Упражнение 6:
Номер 1
Отметьте все верные высказывания об интерфейсе:
Ответ:
 (1) должен быть строго типизированным 
 (2) должен иметь не более одного наследника 
 (3) должен скрывать специфику реализации от пользователя 
Номер 2
Основные типы классов:
Ответ:
 (1) классы, которые отражают понятия области приложения 
 (2) классы, являющиеся продуктами самой реализации 
 (3) классы, являющиеся деталями реализации 
Номер 3
Перечислите верные высказывания:
Ответ:
 (1) интерфейс представляет собой абстрактный класс 
 (2) все методы интерфейса являются закрытыми 
 (3) можно наследовать класс от нескольких интерфейсов 
Упражнение 7:
Номер 1
Почему метод объектно-ориентированного программирования предпочтительнее метода функциональной декомпозиции?
Ответ:
 (1) функциональная декомпозиция не дает достаточной абстракции данных 
 (2) меньший объем кода 
 (3) более простая структура программы 
Номер 2
В чем состоит преимущество строго типизированных интерфейсов?
Ответ:
 (1) только совместимые части программы могут быть скомпилированы и скомпонованы воедино 
 (2) минимум проверок на этапе выполнения 
 (3) обеспечение взаимодействия программных частей системы, созданных разными людьми 
Номер 3
Какое преимущество дает статическая типизация?
Ответ:
 (1) позволяет переместить контроль ошибок с этапа выполнения на этап компиляции 
 (2) позволяет создать более эффективную программу 
 (3) позволяет обнаружить все ошибки 
Упражнение 8:
Номер 1
Интерфейс определен следующим образом:
class X
{ Y a; Z b;
void set(Y&);
public: void f(const char*);
void g(int[10], int);
}
Какая проблема может возникнуть при его использовании?
Ответ:
 (1) типы Y
и Z
используются так, что их определения должны быть известны 
 (2) в функции X::f
неизвестна длина строки 
 (3) функция X::g
имеет низкий уровень абстракции 
Номер 2
Интерфейс определен следующим образом:
class X
{ Y* a; Z & b;
public: void f(const char*);
void h(int, ...);
void g(int[10], int);
}
Какая проблема из перечисленных ниже может возникнуть при его использовании?
Ответ:
 (1) в функции X::f
неизвестна длина строки 
 (2) в функции X::h
может быть произвольное число параметров 
 (3) типы Y
и Z
используются так, что их определения должны быть известны 
Номер 3
Интерфейс определен следующим образом:
class X
{ Y* a; Z & b;
public: void f(const char*);
X& get(int);
void g(int[], int);
}
Какая проблема может возникнуть при его использовании?
Ответ:
 (1) в функции X::f
неизвестна длина строки 
 (2) типы Y
и Z
используются так, что их определения должны быть известны 
 (3) функция X::g
имеет низкий уровень абстракции 
Упражнение 9:
Номер 1
Как называется язык, если в нем реализованы классы, но не реализовано наследование?
Ответ:
 (1) функциональный 
 (2) объектный 
 (3) объектно-ориентированный 
Номер 2
Какой из способов описания функций и переменных, совместно используемых несколькими классами, наиболее безопасен?
Ответ:
 (1) использовать глобальные имена 
 (2) описать их в одном из файлов программы как статические 
 (3) поместить их в специальный класс, определение которого закрыто для пользователей 
Номер 3
Может ли конструктор быть статическим?
Ответ:
 (1) не может 
 (2) может 
Упражнение 10:
Номер 1
Есть ли в С++ специальные средства для описания интерфейсов?
Ответ:
 (1) нет 
 (2) есть 
Номер 2
Перечислите верные ответы:
Ответ:
 (1) полиморфизм позволяет именам обозначать объекты разных классов 
 (2) полиморфизм реализуется с помощью наследования и виртуальных методов 
 (3) полиморфизм позволяет воздействовать на разнотипные объекты одинаковым образом 
Номер 3
Когда предпочтительно использовать представления объекта класса Х
описанием Х*
вместо Х&
?
Ответ:
 (1) если нужно передавать объекты в качестве параметров 
 (2) если приходится перестраивать указатель на объект–элемент в течение жизни объекта-владельца 
 (3) если известно, что значение указателя не будет изменяться 
Упражнение 11:
Номер 1
Если метод в базовом классе не объявлен как виртуальный, а в производном он переопределен, когда определяется, какой из методов вызывается?
Ответ:
 (1) во время компиляции 
 (2) во время выполнения 
Номер 3
Каким может быть наследование?
Ответ:
 (1) внешним 
 (2) внутренним 
 (3) защищенным 
Упражнение 12:
Номер 1
Можно ли определить реализацию чисто виртуального метода, определённого в классе-родителе?
Ответ:
 (1) можно 
 (2) нельзя 
Номер 3
Какой тип наследования употребляется чаще всего?
Ответ:
 (1) private
 
 (2) public
 
 (3) protected