Д.з.№4 Инкапсуляция

Задания

  1. Разберитесь по учебнику, как создавать классы, объявлять поля и методы, конструкторы, создавать экземпляры классов (Хорстманн, гл.4, Шилдт, гл. 6-7).
  2. Разберитесь, чем статические поля и методы отличаются от обычных. Обратите внимание на небольшой пункт про порождающие статические методы у Хорстманна (это скоро понадобится!). Дополнительно можно почитать, например, тут.
  3. Найдите (в книге или интернете) и разберитесь как (и зачем) перегружать метод toString. Например тут и тут (это тоже скоро понадобится).
  4. (О) Переделайте задачу про бегунов из д.з.1 с использованием ООП: вместо двух массивов - names[] и times[] - создавайте один массив объектов класса (класс напишите сами, имя ему придумайте на свой вкус). В этом классе реализуйте:
    • два поля: имя, время;
    • конструктор с параметрами;
    • метод toString(); (желательно)
    • статический метод scan, который читает из Scanner'а и возвращает новый объект вашего класс-бегуна (сигнатура: public static ВАШ_КЛАСС scan(Scanner s){...}). (желательно)
    Используйте тот же, что и ранее Runners_Tests.java для тестирования.
  5. (О) Задача о простом классе ShortDate (инструкции | ShortDate_Tests.java).
  6. (О) Задача про трактористов и перегрузку методов (инструкции | Traktorist_Tests.java).

Контрольные вопросы

  • Из чего состоит класс?
  • Как создать объект класса? (пример кода)
  • Что такое this? Приведите пример использования. Приведите пример, где без ключевого слова this не обойтись.
  • Что такое конструктор? Зачем нужны конструкторы? Напишите фрагмент кода, в котором вызывается конструктор.
  • Почему необходимо ограничивать доступ к полям класса (и как это делается)? Объясните на примере кода.
  • Приведите фрагмент кода, в котором создается 100 объектов какого-либо класса и все они помещаются в массив.
  • Что такое инкапсуляция? Приведите пример.
  • Как вызвать один конструктор из другого? Приведите пример кода, где это имеет смысл.
  • Чем статические поля и методы отличаются от обычных? Для чего их придумали? Приведите пример кода, где они используются.