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