Часть 2. Проектирование иерархии классов

Я хочу дать вам объяснение, используя мой «Скребок новостей». Но, к сожалению, веб-страница, которую я очистил, уже изменила свою веб-страницу на динамическую. Его по-прежнему можно парсить другими методами, но для объяснения ООП я решил написать другой простой код для лучшего понимания.

Диаграмма классов

На приведенной выше диаграмме классов UML это самая простая форма использования ООП. Я создаю класс с именем Book, который имеет 5 атрибутов: название, автор, страницы, цена и список книг и 1 поведение: showBook.
Помните, атрибуты совпадают со свойствами, поведение такое же, как с методами/функциями.
После создания класса вы можете сгруппировать его в еще одну общую категорию. Итак, давайте посмотрим ниже пример диаграммы с некоторыми классами и их связью.

На этой диаграмме показано, что я создал пять классов: Publication, Book, Periodical, Magazine ии Newspaper.
Если вы видите стрелку, соединяющую классы

  • Журнал и газета, связанные с периодическим классом
  • Класс Book и Periodical, связанный с классом Publication.

Это означает, что:

  • Журнал и газета, унаследованные от класса Periodical,
  • Классы Book и Periodical наследуются от класса Publication.

Вы также можете сказать, что

  • Publication является родителем/надклассом классов Book и Periodical.
  • Класс Periodical является родителем/надклассом Magazine и Newspaper.

Вам может быть интересно, что унаследоваласредства? Что означает родительский/надкласс?

Хорошо, позвольте мне сначала объяснить 4 фундаментальные идеи в объектно-ориентированном программировании, ПИРОГ (абстракция, полиморфизм, наследование и инкапсуляция). Каждый из них имеет значение:

  • Абстракция
    Абстракция означает, что идея или концепция человека полностью отделена от любого конкретного случая. Это сердце объектно-ориентированного программирования, потому что это то, что мы делаем, когда создаем класс. Итак, при создании программы вы должны подумать, каков один и тот же атрибут нескольких объектов, чтобы я мог сгруппировать их вместе?
    Без абстракции вы никогда не создадите класс, потому что вы не думаете об этом.
    На приведенной выше диаграмме я создал 5 классов, а значит, я могу создать столько же объектов как я хочу, не определяя их атрибуты или поведение один за другим, и им легче управлять.
  • Полиморфизм
    Простые средства полиморфизма имеют множество форм. В программировании мы можем узнать это по терминам переопределение и перегрузка. Переопределение означает, что вы наследуете метод от суперкласса, а затем изменяете метод исключительно для самого класса. Хотя выходные данные одинаковы, атрибут может иметь другое значение. В то время как перегрузка означает, что вы наследуете один и тот же метод, но модифицируете его, используя различные типы входных параметров, которые могут изменить выходные данные.
  • Наследование
    При создании нового класса может быть проще использовать в качестве основы другой класс с некоторыми атрибутами и/или теми же методами, чем создавать его с нуля. Подобно фразе «не изобретайте велосипед», этот процесс использования уже созданных классов сделает вашу работу более эффективной и управляемой. Это идея наследования. Вы используете класс, который имеет тот же атрибут и метод. Таким образом, если вы хотите изменить какое-то значение или метод, вам не нужно менять его из другого места. Просто измените его на родительский класс, и все последует.
    На приведенной выше диаграмме мы реализуем наследование, отмеченное пустой стрелкой, которая соединяется с его родителем/суперклассом.
  • Инкапсуляция
    Идея инкапсуляции заключается в содержании элементов объекта. Не только для того, чтобы держать их вместе, но и для их защиты. Это необходимо для ограничения доступа к некоторым компонентам объекта.

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

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

Увидимся в следующей статье

Все серии статей "Освоение объектно-ориентированного программирования на Python":

  1. Освоение объектно-ориентированного программирования на Python — Часть 1: Что такое ООП?
  2. Опыт объектно-ориентированного программирования на Python. Часть 2. Проектирование иерархии классов
  3. Освоение объектно-ориентированного программирования на Python — Часть 3: Реализация ООП!

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.