AAA
Обычный Черный

Кто не делится найденным, подобен свету в дупле секвойи (древняя индейская пословица)

версия для печатиВерсия для печати



Библиографическая запись: Понятие объектно-ориентированного программирования и объектной декомпозиции, преимущества объектно-ориентированного программирования, статический и динамический аспект представления объектно-ориентированной программы, класс, объект, поля, свойства, методы, средства построения объектной модели. — Текст : электронный // Myfilology.ru – информационный филологический ресурс : [сайт]. – URL: https://myfilology.ru//165/yazyki-programmirovaniya-i-ix-ispolzovanie-v-informaczionnyx-sistemax/ponyatie-obektno-orientirovannogo-programmirovaniya-i-obektnoj-dekompoziczii-preimushhestva-obektno-orientirovannogo-programmirovaniya-staticheskij-i-dinamicheskij-aspekt-predstavleniya-obektno-orientirovannoj-programmy-klass-obekt-polya-svojstva-metody/ (дата обращения: 20.04.2024)

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

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

Содержание

    Понятие объектно-ориентированного программирования и объектной декомпозиции

    Объектно-ориентированное программирование — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования.

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

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

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

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

    Техника декомпозиции — разбиение на составляющие элементы. Известны две схемы декомпозиции: алгоритмическая декомпозиция и объектно-ориентированная декомпозиция.

    В основе алгоритмической декомпозиции лежит разбиение по действиям — алгоритмам. Эта схема представления применяется в обычных ПС.

    Объектно-ориентированная декомпозиция обеспечивает разбиение по автономным лицам — объектам реального (или виртуального) мира. Эти лица (объекты) — более «крупные» элементы, каждый из них несет в себе и описания действий, и описания данных.

    Преимущества объектно-ориентированного программирования

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

    Принципиальное преимущество объектно-ориентированного проектирования в том, что природа объектов приводит к созданию слабо сцепленных систем. Фундаментальное свойство объектно-ориентированного проектирования заключается в скрытости содержания объекта. Как правило, содержание объекта невидимо внешним элементам. Степень автономности объекта достаточно высока. Любой объект может быть замещен другим объектом с таким же интерфейсом.

    Основными преимуществами парадигмы разработчики считают следующие особенности:

    • Модульность: инкапсуляция объектов в себе упрощает разработку, уменьшает количество ошибок и ускоряет разработку при участии большого количества программистов, так как каждый может работать независимо друг от друга.
    • Реюзабельность кода: благодаря абстракциям, полиморфизму и наследованиям можно не писать один и тот же код много раз, что заметно ускоряет создание нового ПО.
    • Высокая скорость разработки: классы и интерфейсы в ООП могут легко трансформироваться в подобие полноценных библиотек, которые можно переиспользовать в новых проектах.
    • Расширяемость: ООП-код легче развивать, дополнять и менять. Этому способствует независимая модульная структура.
    • Простота восприятия: использование ООП упрощает понимание кода за счет взаимодействия с объектами, а не логикой. Не нужно углубляться в то, как построено ПО, чтобы модифицировать его.
    • Безопасность: инкапсулированный код недоступен извне, поэтому «поломать» ООП-программу сложнее.
    • Гибкость: полиморфизм позволяет быстро адаптировать ООП-код под свои нужды, не описывая новые функции и объекты. 

    Статический и динамический аспект представления объектно-ориентированной программы

    Статические модели обеспечивают представление структуры систем в терминах базовых строительных блоков и отношений между ними. «Статичность» этих мо­делей состоит в том, что здесь не показывается динамика изменений системы во времени. Вместе с тем следует понимать, что эти модели несут в себе не только структурные описания, но и описания операций, реализующих заданное поведе­ние системы. Основным средством для представления статических моделей явля­ются диаграммы классов. Вершины диаграмм классов нагружены классами, а дуги (ребра) - отношениями между ними.

    Динамические модели обеспечивают представление поведения систем. «Дина­мизм» этих моделей состоит в том, что в них отражается изменение состояний в про­цессе работы системы (в зависимости от времени). Средства языка UML для соз­дания динамических моделей многочисленны и разнообразны. Эти средства ориентированы не только на собственно программные системы, но и на отображение требований заказчика к поведению таких систем.

    Класс, объект, поля, свойства, методы

    Класс

    Класс — описание множества объектов, которые разделяют одинаковые свойства, операции, отношения и семантику (смысл). Любой объект — просто экземпляр класса.

    Объекты-переменные одного типа образуют класс. То есть класс — это тип объектов. Объекты в этом случае называются также экземплярами класса. Связанные с классом процедуры и функции обычно называют методами, точнее методами экземпляра или функциями-членами. Расширение типов — наследование. Рассматриваются классы-предки (суперклассы) и классы-потомки (субклассы, производные классы). 

    Класс — универсальный, комплексный тип данных, состоящий из тематически единого набора «полей» (переменных более элементарных типов) и «методов» (функций для работы с этими полями), то есть он является моделью информационной сущности с внутренним и внешним интерфейсами для оперирования своим содержимым (значениями полей). В частности, в классах широко используются специальные блоки из одного или чаще двух спаренных методов, отвечающих за элементарные операции с определённым полем (интерфейс присваивания и считывания значения, геттер-сеттер), которые имитируют непосредственный доступ к полю. Эти блоки называются «свойствами» и почти совпадают по конкретному имени со своим полем (например, имя поля может начинаться со строчной, а имя свойства — с заглавной буквы).

    Объект

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

    Имя (идентификатор) — это строка символов, используемая для обозначения некоторой сущности в программе. Такими сущностями могут быть переменные, типы, метки, подпрограммы, формальные параметры и другие конструкции языков программирования. В общем случае идентификаторы не имеют какого-либо смысла, а используются только в качестве имен программных объектов или их атрибутов.

    Константа — это объект данных, имя которого связано со значением (значениями) в течение всего времени жизни. В языках программирования используются константы двух видов:

    • литералы;
    • именованные константы.

    Литерал представляет собой буквальную запись значения константы. Например, 25 — это десятичная форма записи целочисленной константы,
    представляющей собой объект данных со значением 25. Форма записи значений литералов предопределенного типа задается в языке. Именованная константа (константа, определяемая программистом) — это объект данных, который связывает имя с буквальным значением константы. Значения именованных констант известны во время компиляции, поэтому компилятор будет обнаруживать все ошибки, связанные с попыткой присвоения именованной константе нового значения.

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

    • имя;
    • адрес;
    • значение;
    • тип;
    • время жизни;
    • область видимости.

    Поля

    Поле класса или атрибут (переменная-член, data member, class field, instance variable) в объектно-ориентированном программировании — переменная, описание которой создает программист при создании класса. Все данные объекта хранятся в его полях. Доступ к полям осуществляется по их имени. Обычно тип данных каждого поля задаётся в описании класса.

    Свойства

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

    Методы

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

    Инкапсуляция

    Инкапсуляция — свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. Одни языки (например, C++, Java или Ruby) отождествляют инкапсуляцию с сокрытием, но другие (Smalltalk, Eiffel, OCaml) различают эти понятия. Инкапсуляция позволяет изменять реализацию класса без плохо контролируемых последствий для программы в целом.

    Абстракция

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

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

    Наследование

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

    Полиморфизм

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

    Средства построения объектной модели

    Иерархическая организация задает размещение абстракций на различных уровнях описания системы.

    Двумя важными инструментами иерархической организации в объектно-ориентированных системах являются:

    • структура из классов («is a»-иерархия);
    • структура из объектов («part of»-иерархия).

    Чаще всего «is а»-иерархическая структура строится с помощью наследования. Наследование определяет отношение между классами, где класс разделяет структуру или поведение, определенные в одном другом (единичное наследование) или в нескольких других (множественное наследование) классах.


    1. Опалева Э. А., Самойленко В. П. Языки программирования и методы трансляции. — СПб.: БХВ-Петербург, 2005. — 480 с.
    2. Технологии разработки программного обеспечения: Учебник/ С. Орлов. — СПб.: Питер, 2002. — 464 с.
    3. Свердлов С. 3. Языки программирования и методы трансляции: Учебное пособие. — СПб.: Питер, 2007. — 638 с.
    4. Что такое объектно-ориентированное программирование. - Текст: электронный / База Знаний Timeweb Community : [сайт]. - URL: https://timeweb.com/ru/community/articles/obektno-orientirovannoe-programmirovanie (дата обращения 15.05.2022).

    10.05.2022, 714 просмотров.


    Уважаемые посетители! С болью в сердце сообщаем вам, что этот сайт собирает метаданные пользователя (cookie, данные об IP-адресе и местоположении), что жизненно необходимо для функционирования сайта и поддержания его жизнедеятельности.

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

    Dear visitors! It is a pain in our heart to inform you that this site collects user metadata (cookies, IP address and location data), which is vital for the operation of the site and the maintenance of its life.

    If you do not want to provide this data for processing under any pretext, please leave the site immediately and we will not tell anyone that you were here. With the same care, the site administration.