Индивидуальное задание №1

  • Свой вариант каждый выбирает сам и сообщает его номер преподавателю.
  • Допускается повторение одного и того же варианта не более, чем у двух людей из группы.
  • Срок выполнения - три недели, макс. 6 баллов.
  • Четыре недели, макс. 4 балла.
  • Пять недель, макс. 3 балла.

Требования и рекомендации

  • Четко представьте себе, в какого рода программах может использоваться ваш класс (и как именно). Исходя из этого придумывайте состав полей и операций.
  • Иногда вам может понадобиться разработать один или несколько вспомогательных классов (или использовать какие-то из классов платформы - стандартно: java.util.Date, DateFormat и GregorianCalendar).
  • Консольное взаимодействие с пользователем ни коим образом не должно быть реализовано в "классе из задания". Сделайте для него отдельный класс или реализуйте его в главном модуле программы.
  • Не стесняйтесь разбить программу на несколько отдельных файлов (если она явно состоит из нескольких отдельных частей).
  • Избегайте дублирования кода: когда надо поменять логику какой-то одной операции, это не должно требовать синхронных изменений в нескольких отдельных местах в коде!
  • Проектируйте класс с упором на универсальность - так, чтобы его можно было без изменения повторно использовать в любой программе, в которой понадобится.
  • В программах, где предусмотрен массив: создайте его уже заполненным какими-то правдоподобными данными для удобства тестирования.

Варианты поинтереснее

  1. Разработайте класс, инкапсулирующий в себе текуще состояние и поведение змейки в игре "змейка". Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей.
  2. Разработайте класс, инкапсулирующий в себе текуще состояние и поведение корабля в игре "морской бой". Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей.
  3. Разработайте класс, инкапсулирующий в себе загаданное число в игре "быки-коровы" (а также "числа-пробы" отгадывающего игрока и сам процесс их сопоставления). Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей.
  4. Разработайте класс, инкапсулирующий в себе текуще состояние и операции с "рукой" (hand) в "техасском холдеме". Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей.
  5. Разработайте класс для ведения счета в (большом) теннисе (поддерживаются операции "добавления очка", доступа к текущему счету, определения победителя, также отслеживается, чья сейчас подача). Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей.
  6. Во многих программах (например, в word'е) есть меню с последними открытыми файлами. В нем, в порядке возрастания "давности", отображаются n (или менее) последних открытых документов (n-константа). Разработайте класс, инкапсулирующий в себе логику работы такого меню (сохранение данных на диск при закрытии программы не требуется). Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей.
  7. Разработайте класс для инкапсуляции текущего состояния "проданности билетов" в плацкартном вагоне (54 места, 26 верхних, 18 боковых). Класс будет использоваться в программе для кассиров, которая будет показывать, какие места еще свободны и их статус (обычное, верхнее/нижее, боковое). Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей.
  8. Разработайте класс, инкапсулирующий в себе текуще состояние и поведение игрового поля (3x3) в игре "крестики-нолики". Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей.
  9. Разработайте класс, инкапсулирующий в себе информацию о "составе" некоторого пищевого продукта (массив названий ингредиентов). Помимо прочего, предусмотрите операции объединения и пересечения таких объектов (может быть актуально для кулинаров и аллергиков). Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей.
  10. Разработайте класс для подсчета количества медалей разных стран на олимпийский играх (поддерживаются операции добавления медали (с указание ее "цвета" и страны), а также получения доступа к итоговой статистике). Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей.
  11. Разработайте класс, инкапсулирующий в себе некоторое химическое вещество (формула). Должны поддерживаться операции вычисления молярной массы и плотности (будем предполагать, что вещество - газ при н.у.). Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей.

Варианты побанальнее

(но баллов все равно столько же)

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

13. Разработайте класс для хранения паспортных данных человека. Предусмотрите операции сопоставления двух объектов на предмет того, что они выданы одной организацией, имеют общую серию и т.п. То же касается сравнения номеров и дат выдачи (сравнение на "больше-меньше"). Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей. Программа должна оперировать массивом объектов, поддерживая при этом добавление и удаление элементов И ПОИСК по различным критериям.

14. Разработайте класс для хранения адреса организации. Предусмотрите операции сопоставления двух объектов на предмет совпадения дома, улицы, города и т.п. Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей. Программа должна оперировать массивом объектов, поддерживая при этом добавление и удаление элементов И ПОИСК по различным критериям.

15. Разработайте класс, инкапсулирующий информацию о банковской карте (что обычно требуется для проведения платежа?). Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей. Программа должна оперировать массивом объектов, поддерживая при этом добавление и удаление элементов И ПОИСК по номеру и дате окончания (вводится диапазон дат!).

16. Разработайте класс, инкапсулирующий информацию об игральной карте (масть, номинал; возможность сравнения, какая карта старше). Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей. Программа должна оперировать массивом объектов, поддерживая при этом добавление и удаление элементов И ПОИСК по различным критериям.

17. Разработайте класс, инкапсулирующий в себе номер телефона (с кодом города и страны). Предусмотрите операцию сопоставления двух объектов на предмет совпадения города. Сделайте небольшую интерактивную консольную программу для тестирования всех его возможностей. Программа должна оперировать массивом объектов, поддерживая при этом добавление и удаление элементов И ПОИСК по номеру и городу.
Comments