Философия Java


Упражнения


Решения предложенных упражнений содержатся в электронном документе The Thinking in Java Annotated Solution Guide (Думая на Java. Ответы на вопросы с комментариями), доступном за умеренную плату на сайте http://www.bruceeckel.com/.

  1. Реализуйте дублирующие ссылки второго уровня. Создайте метод, который получает ссылку на объект, но при этом не изменяет этот объект, но вызывает другой метод, передает ему ссылку и этот второй метод изменяет объект.
  2. Создайте класс myString, содержащий объект String, который вы инициализируете в конструкторе, используя параметр конструктора.  Добавьте метод toString() и метод concatenate(), который объединяет объект String с текстовой строкой. Наследуйте clone() в классе myString. Создайте два статических (static) метода, каждый из которых получает в качестве параметра ссылку myString x и вызывает x.concatenate("тест"), но во втором методе перед этим вызывается метод clone(). Проверьте работу обоих методов и укажите на различия в их работе.
  3. Создайте класс Battery содержащий int, который является номером батареи (уникальный идентификатор). Сделайте его клонируемым и создайте для него метод  toString(). Затем создайте класс Toy, содержащий массив Battery и метод toString(), распечатывающий номера всех батареек. Напишите clone() для Toy, который автоматически клонирует все свои Battery объекты. Протестируйте его, клонируя Toy и распечатав результаты.
  4. Модернизируйте код примера CheckCloneable.java таким образом, чтобы все методы clone() обрабатывали ситуацию CloneNotSupportedException перед тем как возвращать ее вызвавшим их методам.
  5. Используя технологию изменяемых классов-компаньонов, создайте неизменный класс, содержащий int, double и массив char.
  6. Модернизируйте код примера Compete.java, увеличив количество объектов в классах Thing2 и Thing4 и посмотрите, удастся ли вам определить как зависят задержки времени от их сложности, и является ли эта зависимость линейной или нет.
  7. Модернизируйте код примера Snake.java, реализовав вариант глубокого копирования "змеи".



  8. Начало  Назад  Вперед