Когда вы слышите что-то, вы забываете это.
Когда вы видите что-то, вы запоминаете это.
Но только когда вы начинаете делать это,
вы начинаете понимать это

Старинная китайская поговорка

 

Несколько лет занимаясь преподаванием, пытаясь научить студентов программированию и при первой возможности посвятить их в Java-технологии, я все время хотел создать пример, который используя одну задачу смог бы рассказать про основные возможности этой широко распространенной платформы. С одной стороны, мне очень не хотелось вникать подробно в каждую деталь, а с другой — очень хотелось охватить как можно больше, показать насколько широкий спектр задач охватывает данная платформа. Часто встает необходимость увидеть не тонкости реализации, а просто возможности системы в целом. Да и сколько раз приходилось читать вопросы типа: «А что можно сделать с помощью Java ?» или «Могу ли я на Java сделать то-то и то-то ?».
В итоге появился «Студенческий отдел кадров», который функционально достаточно прост, т.е. количество сущностей и функций не очень велико, и в то же время решая эту задачу мы можем продемонстрировать различные технологии Java. Т.е. автору хотелось просто показать как можно больше технологий Java в действии без особого подробного описания — некий общий обзор и начальное понимание. Более подробное описание каждого элемента можно будет найти в документации или других книгах.
Кроме этого мы будем затрагивать некоторые аспекты программирования, которые могут совсем не иметь отношения к Java. Подробное описание этих аспектов выходит за рамки нашей цели, но в то же время автор настоятельно советует ознакомиться самостоятельно с этими понятиями. Я постараюсь дать наиболее интересные ссылки на конкретные темы.
Также стоит отметить некоторую «эскизность» примеров, за которую профессионалы имеют право поругать. Это касается не только кода, но и проектирования. Надо ли так делать или не надо — судить сложно. Возможно, что при редактировании удастся со временем избежать большинства таких ляпов. Но цель «эскизности» — показать главное, суть, идею. И если перегрузить код излишними проверками и дополнительными «бантиками», то можно не увидеть за деревьями леса.

Рекомендуем: — такое слово обозначает, что материал, указанный в данном разделе рекомендуется к прочтению и самостоятельной проработке.

Автор полагает, что читатель уже знаком с языком Java и понимание основных конструкций для него не проблема. Также автор надеется, что читатель знаком с понятием объектно-ориентированного программирования (ООП) и дизайна, знает, что такое классы, методы, объекты, наследование, полиморфизм и инкапсуляция.
Если у Вас нет таких знаний, то Вам необходимо почитать книги по основным конструкциям Java и по ООП.
Также необходим опыт в чтении кода на Java — без этого Вы просто не сможете работать и учиться. Странно, но умение читать код почему-то выпадает из общей практики обучения. Хотя является на взгляд автора крайне важным элементом в овладении профессией программиста.

Рекомендуем: Если Вы совсем ничего не понимаете в программировании на Java, то придется искать ресурс для совсем начинающих. Например можно посмотреть здесь:
Разработка приложений на Java
На форуме Vingrad вы можете посмотреть такого рода информацию по следующим ссылкам:
Что такое Java ?
Как начать работать с Java
Эти ссылки я привел для тех, кто только слышал, что есть такой язык и больше вообще ничего не знает. «Студенческий отдел кадров» предназначен для более продвинутых. Хотя можно пытаться изучать параллельно.

Важно: — в данных статьях я использую Java версии 1.5. Можно использовать версию и выше, но ниже — у вас многое не получится. Та же работа с коллекциями требует нового синтаксиса, который появился только в версии 1.5. Так что будьте внимательны.

Функциональные требования к системе.

Важно отметить, что любой проект начинается с того, что мы узнаем у потенциального пользователя системы, что ему нужен некий продукт для выполнения определенной работы. Возможно, мы сможем получить от него даже некоторые описания тех функций, которые он хотел бы там видеть. Вероятность того, что заказчик системы сможет нам описать визуальные формы, порядок перехода по этим формам крайне низка. Но общие (функциональные) требования скорее всего уже есть. Определим функциональные требования к нашей системе (в произвольной форме).

  1. Система должна позволять хранить и редактировать информацию о студентах.
  2. Система должна позволять хранить и предоставлять информацию о группах
  3. Система должна выдавать некоторые отчеты по данным о студентах и группах.

Например: список одной группы, студентов определенного года рождения, только девушек и т.д. После того, как были сформулированы функциональные требования, начинается более подробный процесс описание все тех же самых функциональных требований.

 

Рекомендуем: Для таких описаний существует специальный язык — UML (Unified Modelling Language — Универсальный язык моделирования). В нем существует специальные структуры описания функциональных требований (или Бизнес-процессов) — Use case. Также этот язык имеет механизмы описания классов, их взаимодействия и прочая. Достаточно неплохое описание находилось здесь: Леоненков. Самоучитель UML

Для проектирования классов для какой-либо части проекта (если он очень большой) или для всего проекта целиком (как в нашем случае) часто (и достаточно успешно) применяется очень простой способ составления предварительного списка классов с их функциональностью. Описываем с помощью просто составленных предложений функциональность системы и существительные становятся классами, а глаголы — методы для этих классов.

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

Если внимательно посмотреть, то достаточно ясно видно три класса. Первый — это программа (управляющая система), которая по идее всем управляет — добавляет, удаляет, делает отчеты и пр. Также явно наличествует студент и группа. Давайте на основании этой информации попробуем составить список классов.

УправляющаяСистема:
— Список студентов
— Список групп

— Добавить студента
— Удалить студента
— Редактировать данные о студенте
— Перевести всех студентов из одной группы в другую
— Удалить всех студентов из группы
— Отчеты (список группы, список юношей и т.д.)

Студент:
— ИД студента
— Фамилия
— Имя
— Отчество
— Дата рождения
— Пол
— ИД Группы (ссылка на группу в которой учится студент)
— Год обучения в группе

Группа:
— ИД группы
— Название
— Фамилия куратора
— Название специальности

Комментарий к параметрам класса:
Студент — год обучения в группе. Каждый год студенты обычно переходят в следующую группу. Чтобы отличать студентов в группе нынешнего года и следующего (когда перевели). Все остальные поля не особо нуждаются в комментариях. Тем, кому не совсем понятен смысл введения полей ИД — мы рассмотрим их подробнее в следующих статьях.

ВНИМАНИЕ: Файлы с исходными кодами будут приводится в конце каждой части. Будьте внимательны.

Теперь мы можем перейти к следующей части нашего описания Часть 1 — Коллекции

Leave a reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.