Вопросы к модулю №1

Темы

I Java без классов
  1. 8 простых типов данных/
  2. Арифметические, логические и побитовые операции.
  3. if-ы и циклы.
  4. Области видимости и локальные переменные (вопрос: где объявлять счетчик цикла: внутри for или перед ним?).

II Использование готовых классов
  1. Простые и ссылочные типы данных.
  2. Массивы (вопрос: какие различия между массивами простых типов и ссылочных?).
  3. Массивы как параметры функций.

III Программирование собственных классов
  1. Поля, методы, конструкторы.
  2. private и public.
  3. this
  4. Статические (static) поля и методы.
  5. Ограничение доступа к полям, setter'ы и getter'ы.
IV Вопросы проектирования
  1. Инкапсуляция и ее правильное использование.
  2. Использование полей для хранения атрибутов объектов.
  3. Правильное использование статических полей.
  4. Сокрытие реализации.


Типовые вопросы:

Повторяя материал по каждой теме, уделите внимание следующим вопросам:

1. Объяснить в чем суть данной концепции или возможности языка.

Примеры:

  • Как ограничить доступ к полю или методу? Что именно станет невозможным после того, как мы этот доступ ограничим? (пример кода, который ограничивает, и кода, который не сможет выполниться из-за этого ограничения)
  • Что такое класс?

2. Зачем это придумали? Какую проблему это решает?

Примеры:

  • Зачем придумали this? Привести пример, где ипользование this необходимо.
  • Зачем придумали конструкторы? Чем без них "плохо"?

3. Привести простой пример использования данной возможности.

Примеры:

  • Привести простой пример кода, демонстрирующий использование конструктора (как его создать, а затем вызвать).
  • Привести простой пример класса.

4. Привести пример проблемной ситуации, где эта концепция или возможность языка помогает решить проблему.

Примеры:

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

5. Пояснить отличие данной концепции от "родственных" или противоположной.

Примеры:
  • На примере кода пояснить отличие статических полей от обычных (т.е. показать, как эти две разновидности полей в аналогичных ситуациях ведут себя по-разному).
  • Пивести пример кода, где в аналогичных ситуациях переменные простого и ссылочного типа ведут себя по-разному.

(не все вопросы применимы ко всем темам)
Comments