О разделе
Раздел про объектно-ориентированное программирование без привязки к одному языку: определение парадигмы, класс и объект, абстракция данных, инкапсуляция, наследование, полиморфизм (подтипы, перегрузка, обобщения), инструменты проектирования. Теоретические формулировки согласованы с статьёй в Википедии и адаптированы под учебный стиль энциклопедии. Синтаксис C++ — в разделе C++.
Идеи здесь даются сначала на русском псевдокоде (КЛАСС, метод, НАСЛЕДУЕТ), затем — примерами на Java/C#/Python в статьях и в разделах языков. На старте пройдите этот маршрут до синтаксиса конкретного языка.
Листинги на языках программирования (от ~8 строк) вынесены в каталог code.spirzen.ru и подгружаются через ExternalCodeEmbed. Русский псевдокод, короткие фрагменты (1–7 строк), диаграммы mermaid и интерактивные демо остаются в статьях — последние подгружаются из play.spirzen.ru. Образец интеграции — Каталог примеров кода.
Рекомендуемый маршрут
| Шаг | Статья | Зачем |
|---|---|---|
| 1 | Сложность, декомпозиция и ООП | зачем объекты и границы модулей |
| 2 | Введение в ООП | класс, объект, инстанцирование |
| 3 | Абстракция | скрытие деталей; абстрактный класс и интерфейс |
| 4 | Инкапсуляция | модификаторы доступа |
| 5 | Наследование | иерархии типов |
| 6 | Полиморфизм | единый интерфейс; обобщения — теория |
| 7 | Перечисления | enum, закрытые типы |
| 8 | Коллекции | списки, словари, перебор |
| 9 | Итоги · чек-лист | закрепление |
| 10 | Частые паттерны GoF | Factory, Observer, Strategy и др. после столпов ООП |
Парадигмы и SOLID: Парадигмы и уровни абстракции. Паттерны: design-patterns, шпаргалка — Частые паттерны GoF в реальных проектах.
ООП в разделах языков
| Язык | Статья |
|---|---|
| Python | ООП в Python |
| Java | ООП в Java |
| C# | ООП в C# |
| C++ | ООП в C++ |
| JavaScript | Объекты и прототипы |
| PHP | ООП в PHP |
| Kotlin | ООП в Kotlin |
| Swift | ООП в Swift |
| Rust | ООП-паттерны в Rust |
| Ruby | ООП в Ruby |
| Go | структуры и интерфейсы (композиция вместо классического наследования) |
| Dart | Классы и ООП |
| Groovy | ООП в Groovy |
| Lua | ООП в Lua |
| Smalltalk | ООП-модель |
Объектно-ориентированное программирование
Объект barsik - это конкретная реализация кота. В памяти компьютера он выглядит как блок данных, где каждому полю присвоено конкретное значение.
Абстракция - скрытие деталей реализации
Абстракция и абстракция данных (АДТ). Контракт операций без раскрытия реализации.
Инкапсуляция - защита внутреннего состояния объекта
Инкапсуляция, сокрытие и модификаторы доступа — объединение данных и поведения в классе.
Наследование - повторное использование и иерархия типов
Процесс создания нового типа данных на основе существующего.
Полиморфизм - единый интерфейс для разных реализаций
Полиморфизм подтипов, перегрузка и обобщения — виды полиморфизма в ООП.
Перечисления
Enum, закрытый тип с фиксированным набором констант. Типизация статусов, состояний и ролей в ООП.
Коллекции
Списки, множества, словари и очереди. Хранение данных, перебор, методы и выбор структуры.
Сложность ПО, декомпозиция и объектно-ориентированный подход
Почему программы усложняются, как декомпозиция и ООП помогают удерживать код понятным, и когда лучше выбрать другой стиль.
Объектно-ориентированное программирование — итоги
Итоги раздела «Объектно-ориентированное программирование» — FAQ и краткие ответы по теме.
Объектно-ориентированное программирование — чек-лист
Чек-лист раздела «Объектно-ориентированное программирование» — вопросы для самопроверки.
Объектно-ориентированное программирование — о разделе
Подборка материалов раздела Объектно-ориентированное программирование в энциклопедии Вселенная IT.
В подборках
Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:
База программиста — Парадигмы и уровни абстракции — о разделе, Зависимости — о разделе, Архитектура выполнения — о разделе, ORM и работа с данными — о разделе, Асинхронность — о разделе, Десктопные приложения — о разделе.