ООП для “чайников”. Классы и объекты.

Недавно сделал для себя открытие, – оказывается не все хорошие программисты чётко понимают такую важную вещь как принципы объектного-ориентированния, без которого в современном программировании даже плюнуть некуда. Постараюсь восполнить этот пробел на простых примерах, как говорится «на пальцах».

Недавно сделал для себя открытие, — оказывается не все хорошие программисты чётко понимают такую важную вещь как принципы объектного-ориентированния, без которого в современном программировании даже плюнуть некуда. Постараюсь восполнить этот пробел на простых примерах, как говорится «на пальцах».
Начнем с самого базового понятия, — класса. Класс, он же тип, чтобы не мучить, и не сбивать с толку формулировками, можно объяснить на примере: класс это Собака, либо Кошка, либо Мышка, — всё это классы. А вот Жучка, Мурчик и Микки-Маус, — это экземпляры классов Собака, Кошка, Мышка. Экземпляры классов еще называют объектами. Итак, – Жучка это экземпляр класса Собака, Мурчик, — экземпляр класса Кошка, а Микки-Маус, — экземпляр класса Мышка, другими словами объект. Класс — единственный и неповторимый. У вас могут быть классы очень похожие, как овчарка и доберман, но это всё равно разные классы, хоть и очень похожие. Класс представляет собой набор характеристик/свойств, которые описывают его состояние и действия/методы, которые он может выполнить. Например, — нас есть класс Овчарка, к числу её свойств можно отнести «возраст» и «кличку». Экземпляр класса может выполнять действия, описанные в классе (лаять, сидеть, лежать), а также содержит значения свойств класса (класс Овчарка имеет свойство «возраст», а объект Барбос имеет значение, — 3 года). Помимо свойств и методов, объект имеет собственное имя, не путать со свойством «кличка», вот как это может выглядеть:

МояСобака.кличка = "Барбос"

Что означает, что у объекта «МояСобака», есть кличка, и эта кличка — Барбос. А бывает и такая ситуация:

ХозяинСобаки.имя = "Василий"
ХозяинСобаки.отчество = "Иванович"

Тут у нас объект «ХозяинСобаки», у которого свойство «имя» имеет значение «Василий», а отчество равно «Иванович».
Похожим образом работают методы (действия) объектов, например:

МояСобака.лежать()
МояСобака.сидеть()

Методы могут параметризироваться, например, мы знаем что метод «лаять» заданное количество раз:

МояСобака.лаять(3)

Объект всегда должен быть создан. Класс существует как факт, то есть, всегда. Создание объекта выглядит в разных языках программирования по-разному, хотя чаще всего это выглядит так:

МояСобака = new Собака()

Так создается новый экземпляр класса Собака. Иногда он может параметризироваться дополнительной информацией, необходимой для объекта (зависит от реализации класса):

МояСобака = new Собака("Барбос")

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

Comments

comments

31 thoughts on “ООП для “чайников”. Классы и объекты.”

  1. Здравствуйте! Меня зовут Дмитрий. Я недавно начал заниматься програмированием и уже несколько дней пытаюсь найти хорошее объяснение ООП. Прочитал много статтей и объяснений на эту тему, и считаю, что на сегодня для меня этот пример “на пальцах” самый лучший для понимаю ООП. Большое спасибо автору!

  2. Спасибо Дмитрий, рад что пригодилось. Почитай другие статьи, должно быть тоже интересно.

  3. ммм, оригинальное объяснение, именно на пальцах и именно для чайников, таких как я.

    Спасибо большое – пойду читать другие статьи…

  4. Можно глупую просьбу: в таком же стиле “для чайников” на пальцах объяснить понятие интерфейса в ооп.

  5. Большое спасибо!!! Вот теперь можно и начинать детально учить ООП:) Очень помогла статья, просто и доступно! Спасибо автору:)

  6. Отличная статья! Для тех кто только только начинает интересоваться ООП – самое оно;) Текст воспринимается очень легко, а также считаю что очень хорошо, когда примеры написаны не на каком-то конкретном языке программирования. Так легче понимать суть и не задаваться вопросом а что это за синтаксис

  7. Спасибо Вам, sheremetov. Действительно, легко и понятно. Конечно, я соглашусь, что какой-то продвинутый пользователь недовольно сморщится, прочев такое объяснение ООП, мол это же все настолько серьезно, что данная статья не открывает/раскрывает/обучает … и т. д.
    Я рад, что попал на такое объяснение. Главное, что я понял суть, сам смысл ООП. Теперь, читая более продвинутые объяснения, я уже буду знать, что и о чем идет речь.
    Примеры с животными – лучше, по моему, не придумаешь. У Вас дар объяснять сложное просто.
    Извините, что так много написал.

  8. Спасибо, за позитивный отклик. Такие отзывы, придают сил и желания делать и писать. Спасибо, большое.

  9. А может ли класс содержать другие классы? Т.е. возьмем для примера класс текст, в нем класс абзац. в классе абзац класс предложение (утверждение, вопросительное, прямая речь)+ внутри предложения (деепричастные обороты, перечисления), внутри предложения класс слово(сущ,глагол, склонения и прочее), возможна ли такая структура, или её как то иначе стоит реализовывать?

  10. Хороший вопрос Taker!
    Конечно может, – это называется композиция и в простом приближении можно представить в виде матрешки. Другой аспект этого вопроса в том, что если делать как вы говорите, – создавая для каждого класса параграфа, класс с символом, с классами форматирования внутри, – получится весьма громоздкая структура, и на практике целиком так документ не создается а обрабатывается “на лету”, в зависимости от ситуации и нужной глубины проработки. Так что вопрос реализации зависит от аппаратных требований, запросов к системе, и конечно же, – бюджета и отведенного времени :)

  11. Благодарю за статью…,
    Действительно очень толково и понятно описаны принципы строения ООП

    Хотя было бы очень хорошо подобным образом (на пальцах – однако понятно ) изложить
    “Ключевые черты ” такие как Полиморфизм, Инкапсуляция, Наследования и назначение “Конструктора” в этой пьесе.

    P.S. Спасибо , давно искал такую статью

  12. Отличная статья !!! Большое спасибо автору.

  13. Дуже дякую за статтю – ви дійсно гарно вмієте пояснити :)

  14. Спасибо огромное! Предельно ясно, яснее, наверное, и некуда уже. А нет у Вас такой же статьи, объясняющей, что такое инкапсуляция и полиморфизм? Сколько ни читал, нигде не объясняется так, чтобы понять физический смысл.

  15. Вот спасибо, добрый человек! И здесь всё понятно стало.

  16. Спасибо огромное! Давно искала такое объяснение, а то везде советуют “представьте окружающий мир с точки зрения ооп”, а как это сделать новичку, который только открыл учебник и читает первую тему по ооп? В общем спасибо еще раз, буду читать дальше.

  17. У меня после прочтения многое прояснилось. Спасибо автору.

  18. Спасибо автору! Реально-зачетная статья!

  19. Лучшее введение кратко и простым языком о классах и объектах. Из найденного за пару часов в интернете, Ваша статья лучшая для восприятия и понимания. Спасибо большое!

  20. Мне очень помогли ваши статьи, спасибо !

  21. Только надо на самом главном языке дать пример – на С++.

Leave a Reply