игра брюс 2048
Главная / Программирование / Компонентный подход в программировании / Тест 1

Компонентный подход в программировании - тест 1

Упражнение 1:
Номер 1
Отметьте среди указанных ниже характеристик программ более свойственные сложным программным системам по сравнению с простыми.

Ответ:

 (1) Необходимость обучения пользователей работе с программой 

 (2) Небольшое число четко поставленных, неизменных требований 

 (3) Исходный код, написанный на языке C 

 (4) Большой размер исходного кода 

 (5) Значительные расходы на разработку и отладку 

 (6) Отсутствие проектной документации 


Номер 2
Отметьте среди указанных ниже характеристик программ более свойственные простым программам по сравнению со сложными программными системами.

Ответ:

 (1) Необходимость разработки архитектуры до перехода к кодированию 

 (2) Отсутствие значительного ущерба от некорректной работы программы 

 (3) Исходный код, написанный на нескольких языках программирования 

 (4) Отсутствие поддержки и развития 

 (5) Большое значение, придаваемое удобству использования при разработке 

 (6) Большое число задействованных разработчиков 


Номер 3
Отметьте среди указанных ниже характеристик программ те, которые могут в равной степени относиться и к большим системам, и к небольшим программам.

Ответ:

 (1) Необходимость регулярно дополнять программу новыми возможностями 

 (2) Исходный код, написанный на языке Java 

 (3) Высокая стоимость разработки 

 (4) Ощутимый ущерб пользователей в связи с недостаточной производительностью 

 (5) Использование объектно-ориентированных методов разработки 

 (6) Наличие набора тестов 


Упражнение 2:
Номер 1
Отметьте среди перечисленных пунктов определение абстракции как одного из методов работы со сложными системами.

Ответ:

 (1) Это изучение совокупности факторов, имеющих значение для данной цели, и взаимосвязей между ними 

 (2) Это отвлечение от характеристик системы, несущественных для выбранной цели ее рассмотрения 

 (3) Это использование интерфейсов и их операций без детального определения их реализаций 

 (4) Это выделение одного аспекта системы и его изучение в отрыве от других 


Номер 2
Отметьте среди перечисленных пунктов определение модульности как одного из методов работы со сложными системами.

Ответ:

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

 (2) Это рассмотрение системы как набора классов и интерфейсов 

 (3) Это представление системы в виде набора компонентов, взаимодействующих только через четко определенные интерфейсы 

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


Номер 3
Отметьте среди перечисленных пунктов определение переиспользования как одного из методов работы со сложными системами.

Ответ:

 (1) Это использование ранее написанного кода вместо написания нового всякий раз, когда это возможно 

 (2) Это использование при построении системы наименьшего возможного числа различных компонентов 

 (3) Это выделение одного аспекта системы и его изучение в отрыве от других 

 (4) Это фиксация одного элемента знаний о системе в одном месте и использование этого описания во всех случаях, когда затрагивается этот элемент знаний 


Упражнение 3:
Номер 1
Какие из основных принципов работы со сложными системами иллюстрируются набором Java классов, состоящим из абстрактного класса java.lang.Number, представляющим числа вообще, и классов  java.lang.Integer, java.lang.Long, java.lang.Double, представляющими, соответственно, 32-битные целые числа со знаком, 64-битные целые числа со знаком и 64-битные числа с плавающей запятой?

Ответ:

 (1) Абстракция и уточнение 

 (2) Выделение интерфейсов и сокрытие информации 

 (3) Разделение ответственности 

 (4) Переиспользование 


Номер 2
Какие из основных принципов работы со сложными системами иллюстрируются набором Java классов, состоящим из абстрактного класса java.util.AbstractList, определяющего реализации для таких методов работы со списками, как add(Object) (добавление в конец списка), clear() (удаление всех элементов списка), indexOf(Object) (вычисление индекса первого вхождения объекта в список), sublist(int, int) (выделение подсписка), и конкретного класса java.util.ArrayList, определяющего реализацию списка на основе расширяемого массива, наследующего первому классу, и реализующего остальные методы работы со списками?

Ответ:

 (1) Абстракция и уточнение 

 (2) Выделение интерфейсов и сокрытие информации 

 (3) Разделение ответственности 

 (4) Переиспользование 


Номер 3
Какие из основных принципов работы со сложными системами иллюстрируются набором Java классов, состоящим из интерфейса java.lang.CharSequence, представляющего любые последовательности символов, и классов java.lang.String и java.lang.StringBuffer, реализующих этот интерфейс и представляющих, соответственно, неизменные и изменяемые строки?

Ответ:

 (1) Абстракция и уточнение 

 (2) Выделение интерфейсов и сокрытие информации 

 (3) Разделение ответственности 

 (4) Переиспользование 


Упражнение 4:
Номер 1
Какие из основных принципов работы со сложными системами иллюстрируются на примере планирования процессов в операционной системе на основе очереди с приоритетами? Незаблокированные, но не работающие в данный момент процессы выстраиваются в виде очереди, причем процесс с большим приоритетом стоит раньше процесса с меньшим приоритетом. Планировщик всегда в качестве следующего активного выбирает первый процесс в очереди. Приоритеты процессов могут выставляться пользователями при их запуске.

Ответ:

 (1) Абстракция и уточнение 

 (2) Выделение интерфейсов и сокрытие информации 

 (3) Разделение ответственности 

 (4) Переиспользование 


Номер 2
Какие из основных принципов работы со сложными системами иллюстрируются на примере системы управления динамической памятью, имеющей две основных операции: выделить блок памяти нужного размера void* malloc(int), и освободить ранее выделенный блок памяти free(void*)? Алгоритм выделения блока памяти нужного размера обычно неизвестен.

Ответ:

 (1) Абстракция и уточнение 

 (2) Выделение интерфейсов и сокрытие информации 

 (3) Разделение ответственности 

 (4) Переиспользование 


Номер 3
Какие из основных принципов работы со сложными системами иллюстрируются на примере многоуровневой модели OSI для стека протоколов? Эта модель выделяет 7 уровней протоколов — физический, передачи данных, сетевой, транспортный, сеансовый, уровень представления и прикладной. Протоколы, работающие на разных уровнях, решают различные задачи, используют для своей работы только сервисы, предоставляемые протоколами предыдущего уровня, и сами предоставляют определенные сервисы протоколам следующего уровня. Таким образом, протоколы одного уровня могут быть изменены без необходимости менять остальные части системы.

Ответ:

 (1) Абстракция и уточнение 

 (2) Выделение интерфейсов и сокрытие информации 

 (3) Разделение ответственности 

 (4) Переиспользование 


Упражнение 5:
Номер 1
Отметьте те из указанных интерфейсов для работы с объектами типа IntSet, представляющими множества целых чисел, которые полны.

Ответ:

 (1) boolean add(int i) - добавляет число в множество, возвращая true, если его до этого там не было, и false иначе

void remove(int i) - удаляет число из множества

void replace(int i, int j) - заменяет число i в множестве, если оно есть, на j

 

 (2) void add(int i, int j) - добавляет сразу два числа в множество

boolean remove(int i) - удаляет число из множества, возвращая true, если оно до этого там было, и false иначе

int contains(int i) - проверяет наличие числа в множестве

 

 (3) void add(int i) - добавляет число i в множество

void remove(int i) - удаляет число i из множества

int size() - возвращает число элементов в множестве

 


Номер 2
Отметьте те из указанных интерфейсов для работы с объектами типа List, представляющими списки произвольных объектов, которые полны.

Ответ:

 (1) void add(int i, Object o) - добавляет объект o на i-е место в списке

void remove(int i) - удаляет из списка i-й элемент

Object get(int i) - возвращает i-й элемент списка

 

 (2) void add(int i, Object o) - добавляет объект o на i-е место в списке

Object remove(int i) - удаляет из списка i-й элемент и возвращает его

int size() - возвращает длину списка

 

 (3) void add(int i, String s) - вставляет строку s на i-е место в списке

void add(int i, List l) - вставляет список l как объект на i-е место в списке

void remove(int i) - удаляет из списка i-й элемент

Object get(int i) - возвращает i-й элемент списка

int size() - возвращает длину списка

 


Номер 3
Отметьте те из указанных интерфейсов для работы с объектами типа BitArray, представляющими наборы флагов, которые полны.

Ответ:

 (1) boolean flip(int i) - изменяет значение i-го флага на противоположное и возвращает прежнее значение

int size() - возвращает число флагов в данном наборе

 

 (2) void set(int i) - выставляет i-й флаг (делает его равным true)

void remove(int i) - снимает i-й флаг (делает его равным false)

int size() - возвращает число флагов в данном наборе

 

 (3) boolean set(int i) - выставляет i-й флаг (делает его равным true) и возвращает его предыдущее значение

boolean remove(int i) - снимает i-й флаг (делает его равным false) и возвращает его предыдущее значение

int size() - возвращает число флагов в данном наборе

 


Упражнение 6:
Номер 1
Отметьте те из указанных интерфейсов для работы с объектами типа IntSet, представляющими множества целых чисел, которые минимальны.

Ответ:

 (1) boolean add(int i) - добавляет число в множество, возвращая true, если его до этого там не было, и false иначе

void remove(int i) - удаляет число из множества

boolean contains(int i) - проверяет наличие числа в множестве

 

 (2) void add(int i) - добавляет число в множество

void remove(int i) - удаляет число из множества

boolean contains(int i) - проверяет наличие числа в множестве

int numberOfItemsBefore(int n) - возвращает число элементов в множестве, меньших или равных числу n

 

 (3) boolean f(int i, int mode) - если mode == 0, то возвращает true в том случае, когда i принадлежит множеству;

если mode > 0, то добавляет число i в множество и возвращает true в том случае, когда i не принадлежало множеству до этого;

если mode < 0, то удаляет число i из множества и возвращает true в том случае, когда i принадлежало множеству до этого.

int size() - возвращает число элементов в множестве

 


Номер 2
Отметьте те из указанных интерфейсов для работы с объектами типа List, представляющими списки произвольных объектов, которые минимальны.

Ответ:

 (1) void add(int i, Object o) - добавляет объект o на i-е место в списке

void remove(int i) - удаляет из списка i-й элемент

Object get(int i) - возвращает i-й элемент списка

 

 (2) void add(int i, List l) - вставляет все элементы списка l на места, начиная с i-го, в данном списке, сохраняя их последовательность

void add(int i, Object o) - вставляет объект o на i-е место в списке

void remove(int i) - удаляет из списка i-й элемент

Object get(int i) - возвращает i-й элемент списка

 

 (3) Object add(int i, Object o) - добавляет объект o на i-е место в списке и возвращает ранее находившийся на этом месте

Object remove(int i) - удаляет из списка i-й элемент и возвращает его

Object get(int i) - возвращает i-й элемент списка

int size() - возвращает длину списка

 


Номер 3
Отметьте те из указанных интерфейсов для работы с объектами типа BitArray, представляющими наборы флагов, которые минимальны.

Ответ:

 (1) boolean flip(int i) - изменяет значение i-го флага на противоположное и возвращает прежнее значение

boolean get(int i) - возвращает значение i-го флага

void set(int i, boolean value) - присваивает i-му флагу значение value

 

 (2) void set(int i) - выставляет i-й флаг (делает его равным true)

void remove(int i) - снимает i-й флаг (делает его равным false)

boolean get(int i) - возвращает значение i-го флага

 

 (3) boolean set(int i, boolean value) - присваивает i-му флагу значение value и возвращает его предыдущее значение

int size() - возвращает число флагов в данном наборе

 




Главная / Программирование / Компонентный подход в программировании / Тест 1