Объектно-ориентированный подход в состоянии описать все эти сходства и различия.
Давайте использовать машину в качестве примера для дальнейшего рассмотрения концепции объектно-ориентированного подхода.
Вот коллекция автомобилей.
Они все, кажется, очень хорошие автомобили, которые мы все хотели бы иметь.
Мы знаем, что автомобиль является своего рода транспортным средством, который имеет определенные свойства, такие как колеса, у него есть двигатель, и он нуждается в топливе, чтобы двигатель работал, и каждый автомобиль имеет владельца.
Автомобиль выполняет определенные функции, например, он может ускориться и замедлиться, он может ехать назад и выполнять повороты, и надеюсь, не будет врезаться в другие автомобили.
И существует собственник для каждого отдельного экземпляра автомобиля, это может быть моя машина, или эти автомобили находятся в собственности других людей, и все эти экземпляры имеют некоторые различия, такие как цвет, количество пассажиров, которые могут поместиться, год выпуска, размер двигателя и т.д.
В объектно-ориентированной терминологии, это можно рассматривать как класс автомобилей.
При этом экземпляры индивидуальных автомобилей являются объектами и характеристики этих объектов, это их атрибуты или свойства, такие как цвет, количество пассажиров, год выпуска, размер двигателя и так далее.
Эти свойства часто называются полями объектов.
Объект также может демонстрировать определенное поведение или действия, которые он может выполнять, например, движение вперед, перемещение назад и поворот.
Эти действия называются методами в объектно-ориентированном программировании.
Обратите внимание, что здесь также может быть иерархия автомобилей, это легковые автомобили, вы могли бы также иметь фургоны, грузовики и внедорожники.
Позже, я представлю идею подкласса и суперкласса, где подкласс может наследовать свойства суперкласса.
Таким образом, вы можете видеть, что объекты являются фундаментальными строительными блоками объектно-ориентированных программ.
В объектно-ориентированных программах, программные объекты используются для моделирования объектов реального мира, которые имеют определенные состояния или атрибуты и поведения или действия.
Давайте теперь посмотрим на классы, объекты и методы в Java.
Мы видели, что класс описывает группу объектов с общими свойствами и поведением.
Например, мы можем определить класс автомобиля, который основывается на общей концепции транспортного средства, которое двигается на колесах и может перемещаться из одного места в другое.
Или мы можем определить класс "смартфонов", это мобильные электронные устройства, которые могут быть использованы для совершения телефонных звонков, веб-серфинга, воспроизведения музыки, отправки SMS и т.д.
Мы можем использовать ключевое слово class, чтобы определить класс в Java.
На самом деле, мы уже использовали ключевое слово class в нашей программе СourseGrade, и я уже упоминал ранее, что все программы Java, это классы.
Два выражения здесь объявляют два класса, один для автомобиля, а другой для смартфона, заметьте, что имена Car и SmartPhone являются Java идентификаторами.
Здесь используется верхний CamelCase по соглашению об именах для классов.
Цель определения класса заключается в разработке шаблона для создания объектов.
Т.е. класс – это шаблон для создания объектов.
После того, как класс определен, мы можем создавать экземпляры или объекты в этом классе.
Понятия объект и экземпляр являются взаимозаменяемыми.
В предыдущем примере, в классе автомобилей, могут быть различные экземпляры (или объекты) автомобилей, которые могут принадлежать мне и другим людям.
В классе "смартфон", различные экземпляры могут быть созданы для каждого студента на этом курсе.
Аналогичным образом, если класс студентов определен, экземпляры студентов могут быть созданы для представления каждого студента в классе.
В Java, экземпляры или объекты создаются с помощью конструкторов и ключевого слова new.
Я вернусь к этому позже в лекции.
Как я уже говорил, класс выступает в качестве шаблона или плана для объекта.
Определение класса должно охватить две основные характеристики.
Первая характеристика – это состояния или свойства объекта в классе, которые часто называют полями.
Для объекта автомобиля, поля могут включать имя его владельца и его цвет или местоположение.
Для смартфона, это его марка и модель, такие как iPhone 7 или Samsung Galaxy 5, могут быть сохранены в полях объекта.
2-я характеристика – это поведение объекта.
И объекты демонстрируют свое поведение с помощью методов.
Методы являются операциями, которые могут быть выполнены, чтобы изменить состояние объекта.
Например, чтобы изменить положение автомобиля нужно двигаться вперед или назад, или перевести смартфон в спящий режим, или увеличить громкость.
Прежде чем обсуждать в деталях, как определить поля и методы в Java, давайте сначала посмотрим на простой пример.
Пример
Перед погружением в детальную структуру объектно-ориентированного программирования, я сначала покажу вам пример, чтобы дать вам некоторое представление о том, как объектно-ориентированное программирование может быть использовано для моделирования внутренних состояний и поведения объектов.
Некоторые термины, которые я собираюсь использовать здесь, могут быть для вас в новинку, но не беспокойтесь, мы разберем все из них подробно.
В первой строке программы импортируется класс IO, который мы уже обсуждали.
Далее следует блок комментариев, который начинается с / ** и заканчивается * /.
Это является форматом Javadoc.
Это дает краткое описание того, что программа должна делать.
И эта программа определяет класс объектов автомобиль, который может двигаться вперед, назад и поворачивать.
Есть также комментарии в других различных разделах программы.
Я вернусь к документированию программы позже.
Первая строка после комментария является фактическим объявлением класса с именем Car (автомобиль) с помощью ключевого слова class.
Вы видели ключевое слово class раньше, потому что все программы – это Java классы.
Основная часть определения класса начинается с открытой фигурной скобки, и есть также закрытая фигурная скобка в конце программы.
Определение класса начинается с объявления переменных.
Они называются переменными экземпляра.
И эти переменные экземпляра могут быть использованы для моделирования внутренних состояний или атрибутов объектов в этом классе.
Я вернусь к различным типам переменных позже.
Первой объявляется переменная одометр целого типа, и она устанавливается в нуль.
Как вы знаете, одометр является инструментом, который записывает общее расстояние, пройденное транспортным средством.
Второе объявление определяет переменную с именем владельцем типа String.
String на самом деле класс, определенный в Java.
Он представляет строку символов или последовательность символов.
Мы будем использовать много строк в программах Java, и я буду говорить детально о строках позже.
Это объявление также инициализирует владельца как символьную строку "NoName" с NoName, заключенным в паре двойных кавычек. Обратите внимание, что оба объявления начинаются с ключевого слова private.
private является модификатором доступа.
Я вернусь к этому позже.