Книга: Основы программирования с Java
Назад: Демонстрация примера
Дальше: Конструктор

Пример

Перед погружением в детальную структуру объектно-ориентированного программирования, я сначала покажу вам пример, чтобы дать вам некоторое представление о том, как объектно-ориентированное программирование может быть использовано для моделирования внутренних состояний и поведения объектов.

Некоторые термины, которые я собираюсь использовать здесь, могут быть для вас в новинку, но не беспокойтесь, мы разберем все из них подробно.





В первой строке программы импортируется класс 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, чтобы увидеть, как этот класс автомобилей работает.

Демонстрация примера

Давайте откроем IntelliJ IDEA.







Вы можете создать новый проект, выбрав "Create New Project".







Выберем создание Java проекта.







Вы можете выбрать место, где вы хотите сохранить ваш проект, а затем дать ему имя.

Давайте просто назовем проект «Cars».

И нажмем кнопку "Finish".







Появится окно нового проекта, который не содержит пока никакого кода.

Мы можем начать писать нашу программу, создав новый класс, так как все программы Java это классы.







После нажатия "New Java Class", появится диалоговое окно.







И вы должны ввести имя класса, который вы создаете.

В нашем случае, Car является именем класса, с которым мы хотим работать.







Вы увидите значок Car, созданный в окне проекта.

Дважды щелкните по нему, и класс откроется в окне редактора.

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

Это на самом деле уже готовый класс, который может быть скомпилирован без ошибок, хотя он не может делать ничего полезного.

Я вернусь к этому шаблону, чтобы обсудить общую структуру программ Java.

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

Кроме того, вы можете просто открыть проект, который подготовлен для вас, выбрав "Open", а затем открыть готовый проект.







Вы можете дважды нажать на значок Car, чтобы увидеть исходный код.

Опять же, это та же программа, которую мы обсудили, но как мы можем запустить эту программу?

Помните, что метод main является точкой входа в программу Java, но мы еще не написали метод main.

Поэтому создадим еще один класс Main с методом main, в который добавим код ввода значений полей класса и вызова его методов.







Здесь мы сначала запрашиваем ввод имени владельца автомобиля, и затем создаем экземпляр класса.

Запрашиваем ввод дистанции, на которую нужно переместить автомобиль, и вызываем метод класса, перемещающий автомобиль.

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

Вызываем метод перемещения автомобиля.

Давайте сначала попытаемся скомпилировать программу.

Хорошо, что здесь нет синтаксической ошибки.

И нажмем кнопку Run.







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

Введем имя, затем введем дистанцию.







В результате появится вывод, что этот автомобиль проехал введенную дистанцию и мы увидим показание одометра.

Запустим программу заново и введем теперь расстояние «– 100».







Показание одометра все равно останутся 100.

Введем угол поворота и повернем автомобиль.







Назад: Демонстрация примера
Дальше: Конструктор