Абстракция ООП aka All You Need Are Stick Figures

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

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

2 ноги, 2 руки, туловище и голова, и этого обычно достаточно, чтобы донести до зрителя идею «человека». Я могу добавить дополнительные детали, чтобы указать пол или что-то еще, но только если это действительно необходимо.

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

Теперь я знаю, что это должен быть технический пост об объектно-ориентированном программировании, а не блог об искусстве, но на самом деле это прекрасный пример нашей следующей основной концепции в ООП: Абстракция!

Дьявол в деталях

Словарь определяет абстракцию как:

абстракция
[ ab-strak-shuhn ]
noun
акт рассмотрения чего-либо как общего качества или характеристики, в отрыве от конкретных реалий, конкретных объектов или реальных примеров.

*заметьте, что это второе определение на сайте dictioary.com, но оно самое полезное.

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

Это уже должно звучать знакомо, если вы читали первые два поста этой серии, потому что именно так мы определяем, что включить в наши классы!

Но абстракция идет еще глубже. Или лучше сказать «глубже»?

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

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

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

Мы, вероятно, не будем смотреть на человека, поэтому мы можем опустить все, что связано с внешним видом человека (количество ног, размер, цвет волос и т.д.).

Если только это не программа консультирования или что-то в этом роде, мы можем опустить все, что связано с внутренним состоянием человека.

На самом деле, быстрее будет просто подумать о том, какие детали нам действительно нужны, которые будут общими для всех наших объектов «человек/пользователь».

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

class Person
    def initialize(name)
        @name = name
    end
end
Вход в полноэкранный режим Выход из полноэкранного режима

Кроме того, все люди в нашей программе захотят что-то сделать в нашей программе, поэтому им понадобится деталь поведения.

class Person
    def initialize(name)
        @name = name
    end

    def do_something
        # does something in the program
    end

end
Войти в полноэкранный режим Выйти из полноэкранного режима

И знаете что, я думаю, это все.

Как и в случае с фигурками, мы можем добавить еще что-нибудь, если решим, что нам это нужно, но для нашего приложения человек может быть просто «вещью с именем, которая что-то делает».

Вот это абстракция!

Заключение

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

Оцените статью
devanswers.ru
Добавить комментарий