Читать книгу Основы программирования с Java - Тимур Машнин - Страница 29
Пример
ОглавлениеПеред погружением в детальную структуру объектно-ориентированного программирования, я сначала покажу вам пример, чтобы дать вам некоторое представление о том, как объектно-ориентированное программирование может быть использовано для моделирования внутренних состояний и поведения объектов.
Некоторые термины, которые я собираюсь использовать здесь, могут быть для вас в новинку, но не беспокойтесь, мы разберем все из них подробно.
В первой строке программы импортируется класс IO, который мы уже обсуждали.
Далее следует блок комментариев, который начинается с / ** и заканчивается * /.
Это является форматом Javadoc.
Это дает краткое описание того, что программа должна делать.
И эта программа определяет класс объектов автомобиль, который может двигаться вперед, назад и поворачивать.
Есть также комментарии в других различных разделах программы.
Я вернусь к документированию программы позже.
Первая строка после комментария является фактическим объявлением класса с именем Car (автомобиль) с помощью ключевого слова class.
Вы видели ключевое слово class раньше, потому что все программы – это Java классы.
Основная часть определения класса начинается с открытой фигурной скобки, и есть также закрытая фигурная скобка в конце программы.
Определение класса начинается с объявления переменных.
Они называются переменными экземпляра.
И эти переменные экземпляра могут быть использованы для моделирования внутренних состояний или атрибутов объектов в этом классе.
Я вернусь к различным типам переменных позже.
Первой объявляется переменная одометр целого типа, и она устанавливается в нуль.
Как вы знаете, одометр является инструментом, который записывает общее расстояние, пройденное транспортным средством.
Второе объявление определяет переменную с именем владельцем типа String.
String на самом деле класс, определенный в Java.
Он представляет строку символов или последовательность символов.
Мы будем использовать много строк в программах Java, и я буду говорить детально о строках позже.
Это объявление также инициализирует владельца как символьную строку "NoName" с NoName, заключенным в паре двойных кавычек. Обратите внимание, что оба объявления начинаются с ключевого слова private.
private является модификатором доступа.
Я вернусь к этому позже.
После объявление переменных экземпляра следует определение конструкторов.
Конструкторы используются для создания новых объектов в классе.
Здесь определены два конструктора.
Первый без параметров внутри пары скобок.
В то время как 2-й конструктор имеет один параметр с типом String.
В принципе, все, что 2-й конструктор делает, это присваивает переменной владельца экземпляра новое имя, данное параметром, в то время как 1-й конструктор будет оставлять имя по умолчанию "NoName" без изменений.
Остальная часть программы является определением методов.
Методы моделируют определенное поведение автомобиля.
Здесь определяются три метода.
Первый метод moveCar перемещает автомобиль на определенное расстояние, и расстояние указано здесь параметром dist целого типа.
Обратите внимание, комментарий говорит, что метод moveCar может двигать автомобиль вперед или назад.
Значение dist будет положительным, если автомобиль двигается вперед, и отрицательным, если автомобиль двигается назад.
Так как автомобиль переехал на некоторое расстояние, показания одометра должны быть обновлены путем добавления пройденного расстояния.
Но тут нельзя просто добавить значение dist.
Подумайте о том, что произойдет, если автомобиль движется назад или расстояние отрицательно?
Добавление отрицательного значения в одометр уменьшит показания одометра.
Но вы знаете, отмотка одометра транспортного средства, является незаконной.
Таким образом, вместо того чтобы просто добавить расстояние, расстояние должно быть заменено абсолютной величиной dist, так что общее пройденное расстояние будет увеличено независимо от того, перемещается автомобиль вперед или назад.
Можно вычислить абсолютное значение с помощью метода abs библиотеки Math.
Метод затем просто печатает сообщение о действии, которое метод, как предполагается, выполняет.
Следующий метод turnCar будет осуществлять действие поворота автомобиля, и угол поворота задается в виде параметра angle, но в этом случае типа double.
Опять же, этот метод просто печатает сообщение, без фактической реализации поворота.
Последний метод getOdometer используется для получения показаний одометра.
Заметьте, что метод getOdometer возвращает тип int и выражение начинается с ключевого слова return внутри метода.
Я буду обсуждать метод, который возвращает значение, детально позже.
Программа заканчивается закрывающей фигурной скобкой.
Теперь давайте вернемся к среде IntelliJ IDEA, чтобы увидеть, как этот класс автомобилей работает.