Темы

Объектно-ориентированное программирование

Object-Oriented Programming · 93 статей

  1. Математические модели типов данных

    Абстрактные типы данных (ADT): математическая модель для типов данных в информатике. Определение поведения, операций и отличия от структур данных.

    #454 · 11 мин чтения

  2. Классы и объекты в объектно-ориентированном программировании.

    Классы в программировании: определение, создание объектов, переменные экземпляра и класса. Объектно-ориентированное программирование, шаблоны кода.

    #1655 · 11 мин чтения

  3. Эйфель: Объектно-ориентированный язык программирования

    Эйфель – объектно-ориентированный язык программирования, разработанный Бертраном Мейером для повышения надежности ПО. Стандартизирован ISO в 2005 году.

    #2283 · 8 мин чтения

  4. Множественное наследование в программировании

    Множественное наследование в программировании: преимущества, недостатки (проблема ромба), виртуальное наследование и альтернативы. Объектно-ориентированное программирование.

    #4722 · 9 мин чтения

  5. Язык программирования Oberon: Простота и Эффективность

    Oberon – язык программирования, разработанный Никлаусом Виртом в 1987 году. Улучшенная версия Pascal и Modula-2 с поддержкой расширения типов и наследования.

    #5383 · 6 мин чтения

  6. Паттерн проектирования "Посетитель"

    Паттерн "Посетитель" в программировании: разделение алгоритмов и структуры данных. Добавление новых операций без изменения классов. Открытость/закрытость.

    #9095 · 6 мин чтения

  7. Постусловия в программировании: определение и применение

    Постусловие в программировании: что это такое и зачем нужно? Узнайте о проверке условий после выполнения кода, использовании утверждений и документации.

    #9247 · 1 мин чтения

  8. Абстрактная фабрика: шаблон проектирования программного обеспечения

    Абстрактная фабрика – шаблон проектирования ПО для создания семей связанных объектов без привязки к конкретным классам. Гибкость и расширяемость кода.

    #9843 · 1 мин чтения

  9. Сравнение языков программирования Java и C++

    Java и C++: сравнение языков программирования. Отличия в синтаксисе, целях разработки и применении в высокопроизводительном ПО. Выбор языка для проекта.

    #10105 · 21 мин чтения

  10. Абстракция в компьютерных системах: методы и уровни

    Абстракция в программировании: упрощение сложных систем путем обобщения данных и сокрытия деталей. Ключевые понятия: абстрактные типы, функции, наследование.

    #14166 · 9 мин чтения

  11. Прототипное программирование: наследование через объекты

    Прототипное программирование: переиспользование объектов вместо классов. Наследование через клонирование и расширение прототипов. Объектно-ориентированный подход.

    #14299 · 5 мин чтения

  12. Паттерн проектирования "Одиночка" в объектно-ориентированном программировании

    Паттерн Singleton в объектно-ориентированном программировании: гарантия единственного экземпляра класса, контролируемая инициализация и доступ к нему.

    #15145 · 1 мин чтения

  13. Обобщённое программирование: стили и реализации

    Общий стиль программирования: алгоритмы без конкретных типов данных, повторное использование кода в C++, Ada и других языках. Уменьшение дублирования!

    #24784 · 6 мин чтения

  14. Библиотеки в программировании: концепция и виды.

    Библиотека в программировании: что это такое? Коллекция ресурсов (код, данные, изображения) для разработки ПО. Упрощает создание программ и системных вызовов.

    #24918 · 11 мин чтения

  15. Шаблон проектирования "Легковес" в программировании.

    Паттерн "Муха" в программировании: экономия памяти за счет совместного использования данных объектами. Оптимизация, повторное использование кода, GoF паттерны.

    #45139 · 3 мин чтения

  16. Шаблон проектирования "Снимок" (Memento)

    Паттерн "Memento" в проектировании ПО: сохранение и восстановление состояния объекта. Реализация через originator, caretaker и memento. Откат изменений, версионирование.

    #45141 · 1 мин чтения

  17. Аспектно-ориентированное программирование: парадигма и реализация.

    Аспектно-ориентированное программирование (AOP): повышение модульности кода за счет разделения сквозных задач. Добавление поведения без изменения кода.

    #46120 · 4 мин чтения

  18. Шаблон проектирования «Фабричный метод» в объектно-ориентированном программировании

    Фабричный метод – шаблон проектирования в ООП для создания объектов без указания конкретного класса. Гибкость и расширяемость кода. 🏭✨

    #50774 · 2 мин чтения

  19. Шаблон "Прототип": Клонирование объектов в программировании

    Шаблон "Прототип" в программировании: создание объектов клонированием, избегая затратных операций и наследования. Реализация через абстрактный класс и метод клонирования.

    #50775 · 2 мин чтения

  20. Шаблон проектирования "Композит" в разработке программного обеспечения

    Паттерн "Композит" в разработке ПО: создание древовидных структур из объектов, позволяющее единообразно работать с частями и целым.

    #50776 · 2 мин чтения

  21. Паттерн проектирования "Декоратор" в объектно-ориентированном программировании

    Паттерн "Декоратор" в ООП: добавление поведения объектам динамически без изменения класса. Расширяемость, гибкость, повторное использование кода.

    #50777 · 5 мин чтения

  22. Шаблон проектирования "Состояние" и конечные автоматы

    Шаблон "Состояние" в программировании: поведенческий паттерн для изменения поведения объекта в зависимости от его состояния. Улучшает читаемость и поддержку кода.

    #50782 · 1 мин чтения

  23. Объекты в программировании: концепции и парадигмы.

    Объекты в программировании: переменные, функции, данные. Объектно-ориентированное vs объектно-базированное программирование, классы и базы данных.

    #51834 · 2 мин чтения

  24. Классовые переменные в объектно-ориентированном программировании

    Классовые переменные в ООП: общее свойство всех объектов класса. Отличие от переменных экземпляра, статическое выделение памяти и методы класса.

    #51864 · 1 мин чтения

  25. Парадигмы программирования: классификация и концепции

    Программные парадигмы: классификация языков программирования, структуры и концепции реализации. Высокоуровневый подход к разработке ПО.

    #56270 · 9 мин чтения

  26. Множественная отправка и полиморфизм в программировании

    Множественная отправка в программировании: динамический выбор функции на основе типов нескольких аргументов. Оптимизация кода и гибкость в разработке.

    #56525 · 7 мин чтения

  27. Объектно-ориентированное программирование в Common Lisp: CLOS и Метаобъектный протокол

    CLOS: объектно-ориентированное программирование в Common Lisp. Мощная, динамическая система, вдохновленная Flavors и CommonLoops. MOP расширение.

    #56526 · 2 мин чтения

  28. Обобщенные функции в программировании

    Обобщённые функции в программировании: полиморфизм, параметрический полиморфизм, статическая диспетчеризация, TypeParameters. C++, Java, Smalltalk.

    #56527 · 1 мин чтения

  29. Неизменяемые объекты: концепция и применение

    Неизменяемые объекты в программировании: что это, преимущества и примеры (строки). Объект, состояние которого нельзя изменить после создания. ООП, функциональное программирование.

    #57762 · 4 мин чтения

  30. Проблема "Йо-йо" в программировании

    Проблема "йо-йо" в программировании: сложная иерархия классов заставляет разработчика постоянно переключаться между определениями. Антипаттерн ООП.

    #57788 · 1 мин чтения

  31. Полиморфизм типов: Подтипирование

    Полиморфизм типов: субтипизация в программировании. Отношения подтипов и супертипов, заменяемость типов, безопасность использования в коде.

    #60691 · 7 мин чтения

  32. Методы копирования объектов в объектно-ориентированном программировании

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

    #63622 · 8 мин чтения

  33. Языки программирования с возможностью расширения во время выполнения

    Динамические языки программирования: расширение кода во время выполнения, добавление новых функций и типов. Lisp – пионер в этой области.

    #64322 · 3 мин чтения

  34. Точки разреза в аспектно-ориентированном программировании: принципы и ограничения.

    Точки разреза (pointcut) в аспектно-ориентированном программировании: определение, применение, синтаксис AspectJ. Разделение логики и модульность.

    #64395 · 2 мин чтения

  35. Миксины в объектно-ориентированном программировании

    Миксины в ООП: что это, зачем нужны и как решают проблему множественного наследования. Реализация и примеры использования в языках программирования.

    #70888 · 5 мин чтения

  36. Фреймворк Foundation в Objective-C: Обзор и Реализации

    Foundation Kit: базовая структура Objective-C в OpenStep. Классы для работы с данными, строками (Unicode, UTF-16), управление памятью и объекты NS.

    #71265 · 3 мин чтения

  37. Разделение команд и запросов в архитектуре приложений

    Разделение команд и запросов (CQS) в IT-архитектуре: принцип проектирования от Бертрана Мейера. Методы – либо действие, либо данные, без побочных эффектов.

    #73236 · 3 мин чтения

  38. Принцип подстановки Лисков

    Принцип подстановки Лисков (LSP) в ООП: гарантия семантической совместимости типов и наследования. Обеспечивает замену объектов подтипов без поломок программы.

    #74798 · 4 мин чтения

  39. Проблема хрупкого базового класса в объектно-ориентированном программировании

    Проблема хрупкого базового класса в ООП: риски изменений в базовых классах, влияющих на подклассы. Решения: инкапсуляция, контроль доступа к методам.

    #77673 · 2 мин чтения

  40. Боксирование и анбоксирование в программировании

    Боксинг в программировании: преобразование примитивных типов в объекты и обратно. Автобоксинг, Java, типы данных, эффективность кода. Объяснение концепции.

    #83179 · 2 мин чтения

  41. Объекты IBM i: Типы и особенности

    Объекты IBM i: ключевые отличия от файловой системы. Уникальная объектная модель, типы объектов, ограничения и возможности платформы IBM i. i

    #97487 · 3 мин чтения

  42. Утиная типизация в объектно-ориентированном программировании

    Утиная типизация в ООП: определение объектов по наличию методов, а не по объявленному типу. Гибкость и динамичность в программировании.

    #98910 · 2 мин чтения

  43. Оберon 2: Расширения и особенности языка программирования

    Oberon 2: расширение языка Oberon с поддержкой рефлексии и ООП. Разработан Niklaus Wirth в 1991 году. Совместим с Oberon, включает виртуальные методы.

    #100329 · 5 мин чтения

  44. Поле записи данных: определение и типы

    Запись в компьютерных науках: поля, структура данных, реляционные базы данных, объектно-ориентированное программирование. Определение и примеры полей.

    #107091 · 1 мин чтения

  45. Модули Perl: структура, использование и документация.

    Perl модули: компоненты для языка Perl, определяющие пространства имен и классы. Узнайте о структуре, пакетах и использовании модулей в Perl программировании.

    #112476 · 2 мин чтения

  46. Метаклассы: описание и реализация в объектно-ориентированном программировании.

    Метаклассы в ООП: что это такое? Определение, поведение классов и их экземпляров. Как метаклассы влияют на создание классов в Python и других языках.

    #116371 · 2 мин чтения

  47. Инварианты классов в объектно-ориентированном программировании

    Инвариант класса: концепция ООП, обеспечивающая неизменность свойств объектов. Поддерживает целостность состояния, устанавливается при создании и сохраняется.

    #119147 · 2 мин чтения

  48. Метаобъекты: манипулирование и самоописание объектов в программировании.

    Метаобъекты в информатике: объекты, управляющие другими объектами, их типом и реализацией. Отражение, самомодификация, рефлексия в программировании.

    #121260 · 2 мин чтения

  49. Информация о типе во время выполнения (RTTI) в программировании

    Информация о типах во время выполнения (RTTI) в C++, Ada, Pascal. Позволяет узнать тип объекта в runtime, безопасно преобразовывать типы и использовать typeid.

    #121980 · 3 мин чтения

  50. Делегирование в объектно-ориентированном программировании

    Делегирование в ООП: передача ответственности между объектами. Явное и неявное делегирование, переиспользование поведения, языки Self и JavaScript.

    #122737 · 2 мин чтения

  51. Система объектных моделей SOM/DSOM: история и перспективы

    SOM: объектно-ориентированная библиотека IBM для обмена данными между программами и языками. DSOM на базе CORBA для распределенных систем. Обновление без перекомпиляции!

    #147420 · 7 мин чтения

  52. Классное программирование и наследование в ООП

    Классное программирование: наследование через классы в ООП. Объекты создаются на основе классов, определяющих их состояние и поведение. Основа популярных языков.

    #156816 · 3 мин чтения

  53. Таблица виртуальных методов: механизм динамической диспетчеризации.

    Виртуальные таблицы методов (VMT) в программировании: механизм динамической диспетчеризации, используемый в C++, C#, Delphi и других языках. Оптимизация вызова функций во время выполнения.

    #161134 · 5 мин чтения

  54. Частичная специализация шаблонов классов в C++

    Частичная специализация шаблонов C++: гибкий способ специализировать лишь некоторые аргументы, а не все. Создание классов с нужными данными. 🚀💻

    #161157 · 1 мин чтения

  55. Модульное программирование: принципы и история развития

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

    #162228 · 7 мин чтения

  56. Конструкторы в объектно-ориентированном программировании

    Конструктор в ООП: специальная функция для создания объектов. Инициализирует данные, задает инварианты класса. Отличия от методов и правила использования.

    #162260 · 4 мин чтения

  57. Божественный объект в программировании

    Божественный объект в программировании: антипаттерн, признаки (много типов, методов). Разделяйте большие задачи на мелкие для чистого кода!

    #162916 · 2 мин чтения

  58. Программирование на основе каркасов: принципы и применение.

    Программирование-скелет: разработка ПО с использованием простых структур и "заглушек" кода. Топ-даун подход, тестирование на ранних этапах, ускорение разработки.

    #163873 · 8 мин чтения

  59. Двойная диспетчеризация в объектно-ориентированном программировании.

    Двойная отправка в программировании: механизм вызова функций в зависимости от типов двух объектов. Обзор, примеры и применение в CLOS и Smalltalk.

    #170487 · 4 мин чтения

  60. Вариативность в системах типов программирования

    Вариативность в языках программирования: как подтипирование сложных типов (списки, функции) связано с подтипированием их компонентов. Объяснение концепции.

    #181447 · 3 мин чтения

  61. Методы-мутаторы: управление изменениями переменных в программировании

    Методы-мутаторы (сеттеры) в программировании: изменение переменных, инкапсуляция, доступ к данным. Объектно-ориентированное программирование, геттеры.

    #182478 · 3 мин чтения

  62. Аспекты и применение советов в программировании.

    Советы в программировании: модификация функций без изменения исходного кода. Обходные пути, преимущества и почему их избегают в Lisp.

    #189362 · 3 мин чтения

  63. Идентичность объектов в объектно-ориентированном программировании

    Идентичность объекта в ООП: уникальность, независимая от свойств. Референсы обеспечивают доступ к объекту по его идентификатору. Ключевые понятия ООП.

    #202437 · 3 мин чтения

  64. Инъекция зависимостей в программировании

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

    #222028 · 4 мин чтения

  65. Файлы реализации классов в объектно-ориентированном программировании

    Реализация классов в ООП: разделение интерфейса и кода методов (C++, Objective-C). Скрытие реализации для удобства проектирования и использования объектов.

    #234729 · 1 мин чтения

  66. Фабрика объектов в объектно-ориентированном программировании

    Фабрика в программировании: создание объектов. Паттерн проектирования, абстракция конструктора/прототипа. Гибкое создание объектов разных классов и схем.

    #246297 · 7 мин чтения

  67. Объектно-ориентированные и объектно-базированные языки программирования

    Объектно-ориентированные языки программирования: определение, отличия от объектно-базированных. Примеры: Simula, C++, Java, Python и другие.

    #248713 · 2 мин чтения

  68. Вложенные классы в объектно-ориентированном программировании

    Вложенные классы в ООП: что это, как работают и чем отличаются от подклассов. Создание экземпляров внутренних классов требует привязки к внешнему классу.

    #252141 · 3 мин чтения

  69. Хрупкость бинарного интерфейса: проблема совместимости объектно-ориентированных библиотек.

    Проблема хрупкого бинарного интерфейса (FBI) в ООП: как изменения в библиотеках классов ломают совместимость программ. Причины и история возникновения.

    #253082 · 6 мин чтения

  70. Реализация объекта: понятие экземпляра в информатике.

    Создание экземпляров (instance) в программировании: что это такое? Объяснение процесса инстанцирования классов и выделения памяти для объектов в ООП.

    #255569 · 1 мин чтения

  71. Объектная композиция и агрегация в программировании

    Объектный состав и агрегация в программировании: объединение объектов и типов данных. Различия, примеры и связь с ООП и структурами данных.

    #263545 · 4 мин чтения

  72. Простые Java-объекты (POJO)

    POJO в Java: что это такое? Простое Java-объект без привязки к фреймворкам и ограничениям. Узнайте о POJO, POCO, PORO и других "простых" объектах в программировании.

    #277503 · 2 мин чтения

  73. Обзор классов в средах разработки: история и современные возможности.

    Класс-браузеры в IDE: история, функции и влияние Smalltalk на современные среды разработки. Обзор структуры ООП кода и навигация по классам.

    #291515 · 3 мин чтения

  74. Принцип единого доступа в программировании

    Единый доступ в программировании: принцип Бертрана Мейера для объектно-ориентированного кода. Отсутствие синтаксической разницы между атрибутами и методами.

    #297058 · 3 мин чтения

  75. Современное проектирование на C++: обобщённое программирование и шаблоны проектирования

    Современный дизайн на C++: обобщённое программирование, шаблоны и метапрограммирование от Андрея Александреску. Книга, повлиявшая на C++ разработку.

    #299836 · 6 мин чтения

  76. Цепочки исключений: обработка и отладка

    Цепочки исключений в программировании: обработка ошибок через "обёртки". Сохранение исходной ошибки для отладки, упрощение обработки на верхних уровнях.

    #324918 · 1 мин чтения

  77. Наследование и иерархия классов в объектно-ориентированном программировании

    Наследование в ООП: создание новых классов на основе существующих, иерархия классов, повторное использование кода и расширение ПО. C++, интерфейсы, граф наследования.

    #325567 · 7 мин чтения

  78. Object orgy

    #338620 · 1 мин чтения

  79. Пассивные структуры данных: понятие и реализация в различных языках программирования.

    Пассивные структуры данных (PDS) в программировании: определение, применение на границах систем, хранение данных. POD, простые структуры данных.

    #343894 · 3 мин чтения

  80. Принцип инверсии зависимостей в объектно-ориентированном проектировании

    Принцип инверсии зависимостей в объектно-ориентированном программировании: снижение связанности модулей, абстракции высокого и низкого уровня. ООП, дизайн.

    #365815 · 2 мин чтения

  81. Паттерн проектирования "Мультон" в разработке программного обеспечения

    Паттерн Multiton в разработке ПО: контролируемое создание нескольких экземпляров класса через карту. Альтернатива Singleton, расширяющая возможности.

    #383713 · 2 мин чтения

  82. Типовые классы в информатике и полиморфные типы.

    Типовые классы в информатике: поддержка полиморфизма и ограничений для переменных типов. Реализация в Haskell и Standard ML. Принципы и примеры.

    #398042 · 3 мин чтения

  83. Верхний тип в логике и информатике

    Универсальный тип в логике и программировании (⊤): определение, свойства, отличие от нижнего типа. Полиморфизм в языках Haskell и других системах типов.

    #412609 · 2 мин чтения

  84. Абстрактные типы в языках программирования

    Абстрактные типы в программировании: определение, отличие от конкретных типов, реализация через абстрактные классы и интерфейсы. Основы объектно-ориентированного программирования.

    #412620 · 2 мин чтения

  85. Ключевое слово для ссылки на текущий объект в программировании.

    `this`, `self`, `Me` в программировании: ключевые слова для доступа к объекту/классу, в котором выполняется код. Различия в языках и их применение.

    #412908 · 6 мин чтения

  86. Патчинг "обезьяной лапкой": динамическое изменение кода во время выполнения

    Динамическое изменение кода: что такое monkey patching в программировании? Расширение и модификация кода во время выполнения без изменения исходников. Python, JavaScript и др.

    #422653 · 1 мин чтения

  87. Коллекции в Java: Обзор и преимущества использования

    Коллекции Java: интерфейсы и классы для работы с данными. Удобная альтернатива массивам, не требующая указания размера при создании.

    #434822 · 11 мин чтения

  88. Структурные системы типов: принципы и особенности

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

    #444733 · 2 мин чтения

  89. Curiously recurring template pattern

    #462397 · 2 мин чтения

  90. Criticism of Java

    #494816 · 10 мин чтения

  91. Friend class

    #495990 · 3 мин чтения

  92. Boilerplate code

    #500057 · 2 мин чтения

  93. Initialization-on-demand holder idiom

    #509180 · 1 мин чтения