Учебно-методические материалы для студентов кафедры АСОИУ

Вопросы для самоконтроля

Представленные в подразделе контрольные вопросы разработаны на основе рабочей программы по дисциплине «Объектно-ориентированное программирование на Java». Приводятся также ссылки на литературу, которую необходимо изучить при самостоятельной проработке тем.

Тема: «Классы и объекты, введение»

Литература: [1]: 1-24 стр., [6]: 1-46 стр., [8]: 1-46 стр. См. также Э.Брауде. Технология разработки программного обеспечения.

  1. Дайте определения полиморфизма. Какие особенности его реализации на языке Java?
  2. Назовите отличия индустриального и экстремального программирования. Какие приёмы программирования существуют для двух этих подходов в языке Java
  3. Опишите основные отличия класса String от StringBuffer?
  4. Что такое механизм автоматической сборки мусора (garbage collector)?
  5. Основные классы библиотеки для разработки тестов JUNIT
  6. Какие действия необходимо произвести, чтобы создать компонент и подписатьсяна событие, которое он генерирует?
  7. Из каких частей состоит заголовок объявления класса? Тело класса?
  8. Какие элементы языка Java имеют имена? Какие из них должны быть объявлены? Какие элементы языка Java имеют имена? Какие из них должны быть объявлены?

Тема: «Понятия структур данных. Массивы, списки, перечисления»

Литература: [1]: 44-65 стр., [6]: 47-60 стр

  1. Сравните использование операторов выбора switch в языке Pascal и Java.
  2. Как отсортировать массив пользовательских объектов на языке Java ?
  3. Когда для реализации списка типа List нужно использовать объект класса ArrayList, а когда LinkedList ?
  4. Какие особенности использования коллекций для списков, множеств, пар значений?
  5. Какие изменения для работы с коллекциями были внесены в версии Java 2 SE 5.0?
  6. Ввести число, занести его цифры в стек. Вывести в число, у которого цифры идут в обратном порядке.
  7. Задать два стека, поменять информацию местами.
  8. Для каких элементов класса работает полиморфизм?

Тема: «Диаграммы классов в UML. Классы и отношения в Java»

Литература: [1]: 65-85 стр., [6]: 120-134 стр. См. также Р.С. Мартин. UML для Java-программистов

  1. Нарисуйте иерархию классов ввода вывода на основе классов InputStream OutputStream.
  2. Какие модификаторы позволяют обращаться к элементу из классов того же пакета?
  3. Как генерируется документация утилитой javadoc и набор воспринимаемой утилитой тегов в тексте программы для формирования документации, если в классе заводится новый элемент, и пока нет никаких факторов, позволяющих выбрать тот или иной модификатор доступа. Какой модификатор использовать в таком случае?
  4. Есть ли какие-либо ограничения на набор интерфейсов, которые может реализовывать класс?

Тема: «Класс Object. Передача и возврат объектов, дублирующие ссылки. Клонирование объектов»

Литература: [1]: 60-120 стр., [6]: 47-60 стр.

  1. Нарисуйте иерархию классов ввода вывода на основе классов Reader и Writer ?
  2. Как реализованы в классе Object методы equals(), toString(), hashCode()?
  3. Какие объекты могут быть клонированы?
  4. Какие условия должны быть выполнены при переопределении метода equals()?
  5. Сколько объектов может быть создано в процессе выполнения клонирования одного объекта средствами JVM?
  6. Хотя примитивные массивы не могут участвовать в преобразованиях, однако массивы int[][] и byte[][] могут рассматриваться как одномерные объектные массивы, основанные на ссылочном типе «одномерный примитивный массив». Могут ли такие типы быть преобразованы из одного в другой?
  7. Как определить, можно ли преобразовать один тип массива к другому?
  8. Сколько объектов порождается при инициализации массива new int[3][4]? new int[3][][]?
  9. Для каких примитивных типов Java существуют классы-обертки? Что будет получено в результате выполнения: (new Integer(1)).equals(new Byte(1)) ?

Тема: «Абстрактные классы, интерфейсы, работа с пакетами, внутренние, вложенные, анонимные классы»

Литература: [1]: 85-96 стр., [6]: 200-223 стр.

  1. Чем отличается внутренний (inner) класс от вложенного (nested) класса?
  2. Может ли переменная иметь тип абстрактный класс? Интерфейс? Если да, то какие значения она может хранить?
  3. Может ли переменная иметь тип абстрактный класс? Интерфейс? Если да, то какие значения она может хранить?

Тема: «Идентификация времени выполнения, рефлексия, аннотации, объект Class»

Литература: [6]: 321-360 стр.

  1. Как узнать, какие события генерирует стандартный графический компонент?

Тема: «Потоки и многопоточность, жизненный цикл потока»

Литература: [1]: 212-230 стр., [6]: 360-402 стр.

  1. Опишите жизненный цикл потока.
  2. Если объявить метод synchronized, то какой эффект будет этим достигнут?
  3. Опишите механизмы синхронизации потоков
  4. Как работают static synchronized методы?
  5. Если один поток начал исполнение synchronized-блока, указав ссылку на некий объект, может ли другой поток обратиться к полю этого объекта? К методу?
  6. Почему метод wait требует обработки InterruptedException, а методы notify и notifyAll– нет?
  7. Может ли поток никогда не выйти из метода wait, даже если будет вызван метод notify? notifyAll?

Тема: «Сетевое программирование. Сокеты и сокетные соединения»

Литература: [1]: 230-241, стр., [6]: 509-543 стр.

  1. Какие действия необходимо предпринять для установления TCP соединения между
  2. Какие действия необходимо предпринять для установления TCP соединения между двумя Java-приложениями?
  3. Какие действия необходимо предпринять для обмена данными по UDP протоколу?
  4. Можно ли с помощью класса URL пересылать данные на сервер?

Тема: «Графика в Java»

Литература: [1]: 165-179 стр., [1]: 190-212, [6]: 223-270 стр. [8]: 341-366 стр.

  1. Для чего нужны менеджеры компоновки? Исходя из каких параметров они выполняют свою работу?
  2. Напишите класс-компоненту, у которого по центру рисуется квадрат размерами 10х10.
  3. Может ли быть дважды вызван метод init у апплета? Метод start?
  4. Опишите на память ирархию классов, применяемых для построения визуальных приложений
  5. Промоделировать вращение спутника вокруг планеты по эллиптической орбите. Когда скрывается за планетой – спутник не виден.
  6. Создать фрейм и разместить на нем окружность (одну или несколько). Объект должен «убегать» от указателя мыши. При приближении на некоторое расстояние объект появляется в другом месте фрейма.

Тема: «Потоки ввода-вывода»

Литература: [1]: 119-133, стр., [6]: 270-302 стр.

  1. Имея два объекта класса File, каким образом будет наиболее корректно узнать, указывают ли они на одну и ту же директорию (и на директорию ли)? Возможно ли только с помощью этих двух объектов удалить директорию? Если да, то как изменится содержимое другого объекта (если они действительно указывают на одну и туже директорию)?
  2. Какие классы предоставляют методы для записи в поток двоичного представления значений примитивных типов Java?
  3. Если необходимо записать (и после считать) несколько строк в файл (из файла), в каком порядке и какие следует настроить фильтры (и для чтения, и для записи)? Какие из них можно пропустить?
  4. Что произойдет при попытке к одному объекту PipedWriter присоединить несколько различных объектов PipedReader? Что произойдет, если несколько раз подряд присоединять один и тот же PipedReader?
  5. Какая кодировка используется классом OutputStreamWriter по умолчанию?
  6. Что будет записано в поток, если вызвать метод print() класса PrintWriter, передав в качестве параметра new File(“d:\\word.txt”) ?
  7. Какие значения могут быть переданы в конструктор RandomAccessFile для указания режима доступа (чтение/запись)?
  8. Какое значение следует передать методу seek() объекта RandomAccessFile, чтобы последний байт файла был считан одиночным вызовом read()?
  9. Какие методы объявлены в интерфейсе Serializable?
  10. Что произойдет, если записать в файл, используя ObjectOutputStream, значения типов long, int, byte именно в таком порядке, а считать в обратном, используя DataInputStream?

Библиографический список

  1. Блинов, И.Н., Романчик, В.С. Java 2. Практическое руководство.   Мн.: УниверсалПресс, 2005. – 400с.
  2. Буч Г. Объектно-ориентирование проектирование с примерами применения: Пер. с англ. – М.: Конкорд, 1992.
  3. Кен Арнольд, Джеймс Гослинг - Язык программирования Java. С-Пб.: Изд-во Питер.– 1997 г.
  4. Давыдов, С.В Профессиональное программирование на Java. – BHV. 2005.
  5. Дарвин, Я.Ф. Java: Сборник рецептов для профессионалов. -СПб.: Питер, 2002. – 764 с.
  6. Эккель, Б. Философия Java. СПб.: Питер, 2001. – 880 с.
  7. Хорстман, К.С., Корнелл, Г. Библиотека профессионала. Java 2. Основы. –Том 1. – М.: «Вильямс».– 2004. – 848 c.
  8. Хорстман, К.С., Корнелл, Г. Библиотека профессионала. Java 2. Тонкости программирования. Том 2. – М.: «Вильямс», 2002.   1120 с.
  9. Холмс, Д., Шилдт, Г. Искусство программирования на Java. –М.: «Вильямс», 2005. – 336 с.
  10. Ноутон, П., Шилдт, Г. Java 2 в подлиннике. – BHV, 2005. – 1072 с.
  11. Фаулер М., Скотт К. UML в кратком изложении. Применение стандартного языка объектного моделирования: Пер. с англ. – М: Мир.: 1999.
  12. Шилдт, Г. Java 2 v.5.0. [Электрон. ресурс] http://bsu.iba.by/books/Java2v5.zip

CC-BY-CA Юдин Е.Б., 05.02.2013