Вопросы для самоконтроля
Представленные в подразделе контрольные вопросы разработаны на основе рабочей программы по дисциплине «Объектно-ориентированное программирование на Java». Приводятся также ссылки на литературу, которую необходимо изучить при самостоятельной проработке тем.
Тема: «Классы и объекты, введение»
Литература: [1]: 1-24 стр., [6]: 1-46 стр., [8]: 1-46 стр. См. также Э.Брауде. Технология разработки программного обеспечения.
- Дайте определения полиморфизма. Какие особенности его реализации на языке Java?
- Назовите отличия индустриального и экстремального программирования. Какие приёмы программирования существуют для двух этих подходов в языке Java
- Опишите основные отличия класса String от StringBuffer?
- Что такое механизм автоматической сборки мусора (garbage collector)?
- Основные классы библиотеки для разработки тестов JUNIT
- Какие действия необходимо произвести, чтобы создать компонент и подписатьсяна событие, которое он генерирует?
- Из каких частей состоит заголовок объявления класса? Тело класса?
- Какие элементы языка Java имеют имена? Какие из них должны быть объявлены? Какие элементы языка Java имеют имена? Какие из них должны быть объявлены?
Тема: «Понятия структур данных. Массивы, списки, перечисления»
Литература: [1]: 44-65 стр., [6]: 47-60 стр
- Сравните использование операторов выбора switch в языке Pascal и Java.
- Как отсортировать массив пользовательских объектов на языке Java ?
- Когда для реализации списка типа List нужно использовать объект класса ArrayList, а когда LinkedList ?
- Какие особенности использования коллекций для списков, множеств, пар значений?
- Какие изменения для работы с коллекциями были внесены в версии Java 2 SE 5.0?
- Ввести число, занести его цифры в стек. Вывести в число, у которого цифры идут в обратном порядке.
- Задать два стека, поменять информацию местами.
- Для каких элементов класса работает полиморфизм?
Тема: «Диаграммы классов в UML. Классы и отношения в Java»
Литература: [1]: 65-85 стр., [6]: 120-134 стр. См. также Р.С. Мартин. UML для Java-программистов
- Нарисуйте иерархию классов ввода вывода на основе классов InputStream OutputStream.
- Какие модификаторы позволяют обращаться к элементу из классов того же пакета?
- Как генерируется документация утилитой javadoc и набор воспринимаемой утилитой тегов в тексте программы для формирования документации, если в классе заводится новый элемент, и пока нет никаких факторов, позволяющих выбрать тот или иной модификатор доступа. Какой модификатор использовать в таком случае?
- Есть ли какие-либо ограничения на набор интерфейсов, которые может реализовывать класс?
Тема: «Класс Object. Передача и возврат объектов, дублирующие ссылки. Клонирование объектов»
Литература: [1]: 60-120 стр., [6]: 47-60 стр.
- Нарисуйте иерархию классов ввода вывода на основе классов Reader и Writer ?
- Как реализованы в классе Object методы equals(), toString(), hashCode()?
- Какие объекты могут быть клонированы?
- Какие условия должны быть выполнены при переопределении метода equals()?
- Сколько объектов может быть создано в процессе выполнения клонирования одного объекта средствами JVM?
- Хотя примитивные массивы не могут участвовать в преобразованиях, однако массивы int[][] и byte[][] могут рассматриваться как одномерные объектные массивы, основанные на ссылочном типе «одномерный примитивный массив». Могут ли такие типы быть преобразованы из одного в другой?
- Как определить, можно ли преобразовать один тип массива к другому?
- Сколько объектов порождается при инициализации массива new int[3][4]? new int[3][][]?
- Для каких примитивных типов Java существуют классы-обертки? Что будет получено в результате выполнения: (new Integer(1)).equals(new Byte(1)) ?
Тема: «Абстрактные классы, интерфейсы, работа с пакетами, внутренние, вложенные, анонимные классы»
Литература: [1]: 85-96 стр., [6]: 200-223 стр.
- Чем отличается внутренний (inner) класс от вложенного (nested) класса?
- Может ли переменная иметь тип абстрактный класс? Интерфейс? Если да, то какие значения она может хранить?
- Может ли переменная иметь тип абстрактный класс? Интерфейс? Если да, то какие значения она может хранить?
Тема: «Идентификация времени выполнения, рефлексия, аннотации, объект Class»
Литература: [6]: 321-360 стр.
- Как узнать, какие события генерирует стандартный графический компонент?
Тема: «Потоки и многопоточность, жизненный цикл потока»
Литература: [1]: 212-230 стр., [6]: 360-402 стр.
- Опишите жизненный цикл потока.
- Если объявить метод synchronized, то какой эффект будет этим достигнут?
- Опишите механизмы синхронизации потоков
- Как работают static synchronized методы?
- Если один поток начал исполнение synchronized-блока, указав ссылку на некий объект, может ли другой поток обратиться к полю этого объекта? К методу?
- Почему метод wait требует обработки InterruptedException, а методы notify и notifyAll– нет?
- Может ли поток никогда не выйти из метода wait, даже если будет вызван метод notify? notifyAll?
Тема: «Сетевое программирование. Сокеты и сокетные соединения»
Литература: [1]: 230-241, стр., [6]: 509-543 стр.
- Какие действия необходимо предпринять для установления TCP соединения между
- Какие действия необходимо предпринять для установления TCP соединения между двумя Java-приложениями?
- Какие действия необходимо предпринять для обмена данными по UDP протоколу?
- Можно ли с помощью класса URL пересылать данные на сервер?
Тема: «Графика в Java»
Литература: [1]: 165-179 стр., [1]: 190-212, [6]: 223-270 стр. [8]: 341-366 стр.
- Для чего нужны менеджеры компоновки? Исходя из каких параметров они выполняют свою работу?
- Напишите класс-компоненту, у которого по центру рисуется квадрат размерами 10х10.
- Может ли быть дважды вызван метод init у апплета? Метод start?
- Опишите на память ирархию классов, применяемых для построения визуальных приложений
- Промоделировать вращение спутника вокруг планеты по эллиптической орбите. Когда скрывается за планетой – спутник не виден.
- Создать фрейм и разместить на нем окружность (одну или несколько). Объект должен «убегать» от указателя мыши. При приближении на некоторое расстояние объект появляется в другом месте фрейма.
Тема: «Потоки ввода-вывода»
Литература: [1]: 119-133, стр., [6]: 270-302 стр.
- Имея два объекта класса File, каким образом будет наиболее корректно узнать, указывают ли они на одну и ту же директорию (и на директорию ли)? Возможно ли только с помощью этих двух объектов удалить директорию? Если да, то как изменится содержимое другого объекта (если они действительно указывают на одну и туже директорию)?
- Какие классы предоставляют методы для записи в поток двоичного представления значений примитивных типов Java?
- Если необходимо записать (и после считать) несколько строк в файл (из файла), в каком порядке и какие следует настроить фильтры (и для чтения, и для записи)? Какие из них можно пропустить?
- Что произойдет при попытке к одному объекту PipedWriter присоединить несколько различных объектов PipedReader? Что произойдет, если несколько раз подряд присоединять один и тот же PipedReader?
- Какая кодировка используется классом OutputStreamWriter по умолчанию?
- Что будет записано в поток, если вызвать метод print() класса PrintWriter, передав в качестве параметра new File(“d:\\word.txt”) ?
- Какие значения могут быть переданы в конструктор RandomAccessFile для указания режима доступа (чтение/запись)?
- Какое значение следует передать методу seek() объекта RandomAccessFile, чтобы последний байт файла был считан одиночным вызовом read()?
- Какие методы объявлены в интерфейсе Serializable?
- Что произойдет, если записать в файл, используя ObjectOutputStream, значения типов long, int, byte именно в таком порядке, а считать в обратном, используя DataInputStream?
Библиографический список
- Блинов, И.Н., Романчик, В.С. Java 2. Практическое руководство. Мн.: УниверсалПресс, 2005. – 400с.
- Буч Г. Объектно-ориентирование проектирование с примерами применения: Пер. с англ. – М.: Конкорд, 1992.
- Кен Арнольд, Джеймс Гослинг - Язык программирования Java. С-Пб.: Изд-во Питер.– 1997 г.
- Давыдов, С.В Профессиональное программирование на Java. – BHV. 2005.
- Дарвин, Я.Ф. Java: Сборник рецептов для профессионалов. -СПб.: Питер, 2002. – 764 с.
- Эккель, Б. Философия Java. СПб.: Питер, 2001. – 880 с.
- Хорстман, К.С., Корнелл, Г. Библиотека профессионала. Java 2. Основы. –Том 1. – М.: «Вильямс».– 2004. – 848 c.
- Хорстман, К.С., Корнелл, Г. Библиотека профессионала. Java 2. Тонкости программирования. Том 2. – М.: «Вильямс», 2002. 1120 с.
- Холмс, Д., Шилдт, Г. Искусство программирования на Java. –М.: «Вильямс», 2005. – 336 с.
- Ноутон, П., Шилдт, Г. Java 2 в подлиннике. – BHV, 2005. – 1072 с.
- Фаулер М., Скотт К. UML в кратком изложении. Применение стандартного языка объектного моделирования: Пер. с англ. – М: Мир.: 1999.
- Шилдт, Г. Java 2 v.5.0. [Электрон. ресурс] http://bsu.iba.by/books/Java2v5.zip
CC-BY-CA Юдин Е.Б., 05.02.2013