
- •09.03.02 «Информационные системы и технологии»
- •2 Курса группы 12002108
- •Содержание
- •Введение
- •1 Разработка программы «животный мир»
- •Основные таксономические ранги животных
- •Общая постановка задачи
- •Разработка программного продукта
- •Иерархия классов и uml-диаграмма
- •Класс Animals
- •2.3. Класс doAnimals
- •2.4 Класс Main
- •2.5 Класс AnimalsXml
- •Тестирование разработанного программного обеспечения
- •Заключение
- •Список использованных источников
- •Приложение а
- •Приложение б
- •Приложение в
- •Прилоежение г
Разработка программного продукта
Иерархия классов и uml-диаграмма
Программа содержит классы:
- Main;
- Animals;
- Bird;
- Mammal;
- Reptile;
- Amphibian;
- Fish;
- doAnimals;
- AnimalsXML.
Класс Main – это главный класс, содержащий точку входа в программу. Также в нём реализованы методы работы с XML-файлом.
Класс Animals – абстрактный класс для описания базовых атрибутов и поведения объектов классов животных.
Классы Bird (птицы), Mammal (млекопитающие), Reptile (пресмыкающиеся (рептилии)), Amphibian (земноводные (амфибии)) и Fish (рыбы) наследуют класс Animas и реализованы аналогично друг другу и содержат:
- коллекцию типа ArrayList для хранения объектов этого класса;
- конструктор с параметрами, проверяющий правильность ввода и соответствие диапазону размеров животных этого класса;
- конструктор без параметров, заполняющий значения атрибутов объекта значениями по умолчанию.
Класс doAnimals реализует операции пользовательского меню, позволяющего вызывать методы работы с объектами (добавление, изменение, удаление и т. д.).
Класс AnimalsXML – «класс-обёртка» для корректной обработки коллекций при работе с XML.
Для демонстрации связей классов разработана UML-диаграмма, представленная на рисунке 2.1.1.
Рисунок 2.1.1 – UML-диаграмма
Класс Animals
Поля и конструкторы класса Animals представлены на рисунке 2.2.1. Конструкторы позволяют создавать объекты по введённым значениям атрибутов при работе с пользовательским меню
Рисунок
2.2.1 - Поля и конструкторы класса Animals
Как описано в п. 2.1, классы животных реализованы аналогично друг другу, поэтому далее (на рисунке 2.2.2) продемонстрирован один из них – класс Bird.
Рисунок 2.2.2 - Реализация класса Bird
2.3. Класс doAnimals
Класс doAnimals содержит поля numChoiceMenu, numChoiceGroup, запоминающие введённый пользователем номер функции меню и номер группы животных, а также read, позволяющее считывать информацию (строковую, числовую) из консоли. Первый метод класса doAnimals showMenu выводит в консоль возможные функции меню и предлагает ввести число для последующего их выбора и вызова с помощью оператора switch. Поля и начало первого метода представлены на рисунке 2.3.1.
Рисунок 2.3.1 - Поля и начало первого метода doAnimals
В случае ввода 1 будет предложено выбрать группу (класс) животных, а затем, в зависимости от ввода, будет вызван метод добавления животного соответствующего класса. После его выполнения будет вновь выведен список функций меню. Выбор метода добавления животного при работе с меню представлен на рисунок 2.3.2.
Рисунок 2.3.2 – Выбор метода добавления
Выбор удаления и изменения реализованы аналогично выбору добавления. Выбор отображения отличается тем, что в дополнение имеет метод вывода животных всех классов. Выбор метода отображения при работе с меню представлен на рисунке 2.3.3.
Рисунок 2.3.3 – Выбор метода отображения
Выбор сохранения и чтения XML-файла вызывают соответствующие методы и после их выполнения будет вновь выведен список функций меню. При выборе вводе 7 программа завершается. При неправильном вводе цифры вновь выводится список функций меню и предлагается ввести цифру. Описанные выборы представлены на рисунке 2.3.4.
Рисунок 2.3.4 – Последние выборы метода showMenu
Метод addBird предлагает ввести название (вид) птицы, её размер в сантиметрах и хищность, а затем добавляет в коллекцию объект с помощью конструктора соответствующего класса с введёнными значениями атрибутов в качестве аргументов. Реализация метода addBird представлена на рисунке 2.3.5.
Рисунок 2.3.5 – Реализация метода addBird
Методы добавления млекопитающего (addMammal), пресмыкающегося (addReptile), земноводного (addAmphibian), рыбы (addFish) реализованы аналогично addBird.
Метод removeBird предлагает ввести название (вид) птицы, её размер в сантиметрах и хищность, а затем удаляет из коллекции соответствующего класса объект с введёнными значениями атрибутов. Если такой птицы не существует, то выводится сообщение об ошибке. Реализация метода removeBird представлена на рисунке 2.3.6.
Рисунок 2.3.6 – Реализация метода removeBird
Методы удаления млекопитающего (removeMammal), пресмыкающегося (removeReptile), земноводного (removeAmphibian), рыбы (removeFish) реализованы аналогично removeBird.
Метод changeBird предлагает ввести текущее название (вид) птицы, её размер в сантиметрах и хищность, а затем ввести новые желаемые значения атрибутов. Далее эти значения присваиваются существующему объекту. Если такой птицы не существует, то выводится сообщение об ошибке. Реализация метода changeBird представлена на рисунке 2.3.7.
Рисунок 2.3.7 – Реализация метода changeBird
Методы изменения атрибутов млекопитающего (changeMammal), пресмыкающегося (changeReptile), земноводного (changeAmphibian), рыбы (changeFish) реализованы аналогично changeBird.
Метод displayFish перебирает все методы коллекции класса Fish и выводит их в консоль, используя переопределённый метод toString класса Object. Методы вывода информации о млекопитающих (displayMammal), пресмыкающихся (displayReptile), земноводных (displayAmphibian), рыбы (displayFish) реализованы аналогично displayBird. Метод displayAll вызывает все методы вывода в консоль класса животных. Реализация методов displayBird и displayAll представлена на рисунке 2.3.8.
Рисунок 2.3.8 – Реализация методов displayBird и displayAll
Метод inputNumInt запрашивает ввод целого числа и пропускает знак конца строки, если он есть, а также обрабатывает исключение, сообщая о том, что ввод некорректен. После исключения заново запрашивается ввод числа. Метод inputNumInt представлен на рисунке 2.3.9:
Рисунок 2.3.9 – Реализация метода inputNumInt