Те из вас, у кого ноги немного промокли в океане программирования, наверняка сталкивались с концепцией объектно-ориентированного программирования, или, короче, ООП. Что это? Как лучше его использовать? Что за шумиха вокруг всего этого?

Предпосылки

Я бы использовал примеры на более глубоких уровнях с помощью языка программирования Java (объектно-ориентированный язык). Конечно, существует множество объектно-ориентированных языков (C++, Python, .Net, Ruby и т. д.), так что не стесняйтесь использовать этот пост, чтобы обдумать концепцию обсуждения, так как вы все равно сможете получить повесить его, независимо от используемого языка.

УРОВЕНЬ 1 — ОСНОВНАЯ КОНЦЕПЦИЯ

Представьте, что вы девушка-скаут, занимающаяся производством печенья. Будучи девушкой-скаутом, вы, конечно же, решили формировать печенье в форме круга, квадрата и звезды. Для этого вы берете ингредиенты, форму для печенья и приступаете к работе.

Концепция ООП вращается вокруг двух вещей — класса и объекта.

В аналогии с печеньем девочки-скаута формочка для печенья — это класс, а результирующее печенье — объект. Останься со мной здесь.

Класс можно рассматривать как шаблон для создания объекта. Это схема объекта, но это не совсем сам объект (точно так же, как формочка для печенья формирует печенье, но это не само печенье). На самом деле вы не можете почувствовать запах, вкус или ощущение печенья в руке, пока не создадите его с помощью формочки для печенья.

Форма для печенья предназначена для создания печенья. Круглый резак создает печенье круглой формы; квадратный резак создает печенье квадратной формы; резак в форме звезды создает печенье в форме звезды.

Говоря с точки зрения терминологии программирования, классы создают объекты.

Формат для печенья — это НЕ печенье. Резак для печенья создает файл cookie

Класс НЕ является объектом. Класс создает объект.

УРОВЕНЬ 2 — ГЛУБОКОЕ ПОГРУЖЕНИЕ

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

Думайте о повседневных предметах. Кошка? Стол? Пирог? Автомобиль? Как бы вы описали автомобиль тому, кто понятия не имеет, что такое автомобиль? Вы можете сказать что-то вроде:

  • Изготовлен из металла
  • Имеет 4 колеса
  • Можно управлять
  • Есть головной свет
  • Синий цвет
  • и т.д

Объект можно описать двумя вещами — что он может делать и как он выглядит/ощущается/вкус/звучит/пахнет. Другими словами, у объектов есть методы и свойства.

Методы — это то, что объект может делать. Если бы вы на самом деле создавали файлы cookie, подобные тем, что были в фильме «Гадкий я», вы могли бы включить такие методы, как transform(), walk(), shot(), взорвать() и т. д. (Методы обычно называются с полной квадратной скобкой после их имени).

Свойства, с другой стороны, представляют собой характеристики. В основном, прилагательные используются для описания объекта. Некоторые из свойств объекта cookie могут включать шоколадный вкус, клубничный вкус, аромат арахисового масла, сладкий, хрустящий, липкий и т. д.

УРОВЕНЬ 3 — МЕТАЛЛИЧЕСКИЕ ДЕТАЛИ

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

Кстати, я буду использовать IDE Eclipse.

Сначала создайте Java-проект.

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

Здесь я создал два класса — girlScout и cookie, причем main() находится в girlScout. класс. Здесь особо не о чем волноваться.

Сейчас мы собираемся создать метод в классе cookie, чтобы он мог что-то делать.

Здорово! Теперь у нас есть класс cookie с методом greeting(). Теперь, чтобы использовать этот метод, нам нужно создать сам файл cookie. Помните, что класс — это формочка для печенья, а объект — это само печенье. Класс может только создавать объект, но не делать ничего, что может объект (вы можете съесть печенье, но не формочку для печенья).

Процесс создания файла cookie в терминах технического программирования называется созданием экземпляра класса или, проще говоря, созданием объекта класса.

Для этого сделайте следующее:

Строка cookie round_cookie = new cookie() по существу означает следующее:

Используя класс cookie, создайте новый round_cookie.

P.S. метод cookie() в конце знака «=» является конструктором класса cookie. Конструктор — это просто еще один метод, но названный в честь имени самого класса. Ему дан термин «конструктор» только потому, что он автоматически выполняется первым всякий раз, когда вы создаете объект класса. Ничего особенного.

Если вы попытаетесь запустить программу, вы не увидите абсолютно никаких изменений. Но на самом деле вы только что создали объект. Чтобы использовать метод, вы должны получить к нему доступ через объект следующим образом:

Запустите его снова, и вы должны получить:

Резюме: что вы только что сделали?

Вы создали круглый файл cookie с помощью класса cookie и заставили его приветствовать «Привет, я файл cookie».

ПРОСВЕЩЕНИЕ

"Аккуратный. Ну и что?», — услышал я твой голос.

Если вы еще не убеждены в силе объектно-ориентированного программирования, вот пример.

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

  • Мой Porsche 718 Boxster.
  • Порше автомобильная марка.
  • Автомобиль, категория транспортного средства
  • Транспортное средство, категория товара.

У транспортного средства есть колеса. Транспортным средством можно управлять. Но то же самое относится и к машине, и к Порше, и к моей версии Порше. Вместо того, чтобы явно определять возможность управления для каждого класса, класс может просто наследовать возможность от своего родительского класса или суперкласса (точно так же, как вы унаследовали некоторые характеристики от своих родителей).

Мой Porsche 718 Boxster‹-(является моделью)‹-Porsche‹-(является типом)‹-Car‹-(является типом of)‹-Автомобиль

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

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

Давайте посмотрим на коды ниже:

1. Во-первых, у нас есть класс Car, который определяет методы Car:

2. Затем у нас есть класс Porsche, который наследуется от класса Car. Это делается с помощью ключевого слова extend.

3. Наконец, пришло время увидеть вещи в действии. Для этого мы создадим класс, а в нем создадим объект класса Porsche, чтобы увидеть вещи в действии.

4. Вот результат:

Получите код здесь.

Это лишь одна из крутых вещей, которых может достичь ООП. В дополнение к этому есть и другие концепции, такие как полиморфизм, абстракция и инкапсуляция — все они, если их освоить, могут оказаться бесценными инструментами.

- Просто еще один чувак