Меню Рубрики

Объект с точки зрения ооп состояние поведение

Программирование как моделирование реальности.

Понятие объекта в ООП.

Объектная нотация UML.

Окружающий мир состоит из объектов (object), пребывающих в состоянии (state), которое определяется текущими значениями атрибутов объекта.

Например, кружка на столе находится в состоянии filled (наполнена), поскольку она приспособлена для хранения жидкостей и в ней все еще есть кофе. Когда в ней нет больше кофе, состояние кружки можно определить как empty (пуста). Если она упадет на пол и разобьется, она перейдет в состояние broken (разбита).

Моя кофейная чашка, конечно, пассивна – она не обладает собственным поведением (behavior). Однако, этого нельзя сказать о моей собаке или березе за моим окном. Моя собака лает, дерево растет и т.д. Итак, некоторые объекты реального мира обладают поведением.

Все объекты реального мира обладают также уникальностью (identity) – постоянным свойством, с помощью которого мы отличаем один объект от другого. Если на моем столе стоят две чашки из одного набора, я могу сказать, что они одинаковые, но не идентичные. Чашки одинаковые, потому что значения их свойств совпадают (они одинакового размера и формы, черного цвета и пустые). Однако, на объектно-ориентированном языке они не идентичны, поскольку их две, и у меня есть выбор, которую из них использовать.

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

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

Искусственные системы являются моделью реальности. Кофейная чашка на экране моего компьютера всего лишь модель реальной «сущности» так же, как собака или береза на моем экране. Кофейная чашка может быть, таким образом, смоделирована с помощью поведенческих свойств. Она может, к примеру, упасть на пол, если ее уронить. Действие «падения» можно смоделировать как поведенческую операцию (operation) чашки. Еще одним логическим «действием» чашки может быть операция «разбиться» при ударе об пол. Большинство, если не все, объекты в компьютерной системе «оживают» – они обладают поведением.

Понятие объекта

Объект – это экземпляр (instance) некоей «сущности». Он может быть одним из множества экземпляров одной и той же «сущности». Моя чашка – экземпляр множества всевозможных чашек.

Общее описание «сущности» называется классом (class). Поэтому объект является экземпляром класса.

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

понимание прикладной задачи (проблемы);

введение основы для реализации на компьютере.

Примеры объектов: форточка, Банк «Империал», Петр Сидоров, дело № 7461, сберкнижка и т.д.

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

Гради Буч дает следующее определение объекта:

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

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

Рассмотрим пример. Любой человек может находиться в некотором положении (состоянии): стоять, сидеть, лежать, и — в то же время совершать какие либо действия.

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

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

Для рассмотренных выше примеров такими характеристиками, или атрибутами, объекта «Человек» являются:

текущее положение человека (стоит, сидит, лежит);

наличие удочки (есть или нет).

В конкретной задаче могут появиться и другие свойства, например, физическое состояние, здоровье (больной человек обычно не прыгает).

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

Состояние объекта характеризуется перечнем всех свойств объекта и текущими значениями каждого из этих свойств

Какие действия можно производить с объектом? (Любые или есть ограничения?)

Для каждого объекта существует определенный набор действий, которые с ним можно произвести.

Например, назовите возможные действия с некоторым файлом операционной системы ПК:

читать из файла;

Всегда ли эти действия можно производить?

Результат выполнения действий зависит от состояния объекта на момент совершения действия, т.е. нельзя, например, удалить файл, если он открыт кем-либо (заблокирован). В то же время действия могут менять внутреннее состояние объекта — при открытии или закрытии файла свойство «открыт» принимает значения «да» или «нет», соответственно.

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

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

Поведение (behavior) — действия и реакции объекта, выраженные в терминах передачи сообщений и изменения состояния; видимая извне и воспроизводимая активность объекта.

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

В машинном представлении под параметром уникальности объекта чаще всего понимается адрес размещения объекта в памяти.

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

Наиболее распространенной ошибкой является понимание уникальности как имени ссылки на объект.

Это неверно, т.к. на один объект может указывать несколько ссылок, и ссылки могут менять свои значения (ссылаться на другие объекты).

Уникальность (identity) — свойство объекта; то, что отличает его от других объектов (некоторые авторы переводят этот термин как индивидуальность и даже идентичность, но мы будем говорить уникальность)

Вопрос состоит в том, каким образом объект узнает об уникальности другого объекта, которому требуется отправить сообщение. Каким образом объект Order узнает свой объект Shipment так, чтобы сообщение shipOrder попало к своему адресату?

Ответ заключается в том, что каждому объекту при создании присваивается идентификатор объекта (object identifier OID). Идентификатор объекта (OID) представляет собой дескриптор (handle) объекта – уникальный номер, который остается с объектом на протяжении всего времени его существования. Если объекту X необходимо отправить сообщение объекту Y, объект X каким-либо образом должен узнать OID объекта Y.

На практике для установления связи по OID между объектами существует два подхода, каждому из которых соответствует определенный тип связи.

Постоянная связь по OID.

Временная связь по OID.

Различие между этими видами связи определяется продолжительностью существования объекта. Время жизни некоторых объектов не превышает времени выполнения программы – они создаются программой и уничтожаются во время выполнения программы или по ее завершении. Это так называемые временные объекты (transmit object). Другие объекты «переживают» выполнение программы – после завершения программы они запоминаются в долговременной дисковой памяти и доступны при следующем выполнении программы. Это так называемые постоянные объекты (persistent object).

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

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

Читайте также:

  1. Лекция 2. Объектно-ориентированное программирование
  2. Лекция № 11. Исследования, планирование и программирование – основа эффективных ПР-технологий
  3. Микропрограммирование процессора
  4. Мультипрограммирование в системах пакетной обработки
  5. Объектно-ориентированное программирование
  6. Объектно-ориентированное проектирование
  7. Оконное программирование
  8. Подпрограмма, работа с осью вращения, макропрограммирование
  9. ПРОГРАММИРОВАНИЕ
  10. Программирование аналогового выхода (АЦП).
  11. Программирование в полярных координатах

ЗАМЕЧАНИЕ

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

Платформа .NET рассчитана на объектно-ориентированную технологию созда­ния программ, поэтому прежде чем начинать изучение языка С#, необходимо познакомиться с основными понятиями объектно-ориентированного програм­мирования (ООП).

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

Понятие объекта в программе совпадает с обыденным смыслом этого слова: объект представляется как совокупность данных, характеризующих его состояние, и функций их обработки, моделирующих его поведение. Вызов функции на выпол­нение часто называют посылкой сообщения объекту. (Например, вызов функции «повернуть руль» интерпретируется как посылка сообщения «автомобиль, поверни руль!»)

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

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

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

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

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

Читайте также:  Глаз человека орган зрения орган слуха

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

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

Наследование является мощнейшим инструментом ООП и применяется для сле­дующих взаимосвязанных целей:

1. исключения из программы повторяющихся фрагментов кода;

2. упрощения модификации программы;

3. упрощения создания новых программ на основе существующих.

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

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

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

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

Подводя итог сказанному, сформулируем достоинства ООП:

1. использование при программировании понятий, близких к предметной области;

2. возможность успешно управлять большими объемами исходного кода благо­даря инкапсуляции, то есть скрытию деталей реализации объектов и упроще­нию структуры программы;

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

4. сравнительно простая возможность модификации программ;

5. возможность создания и использования библиотек объектов.

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

Кроме того, идеи ООП не просты для понимания и, в особенности для практиче­ского применения. Чтобы эффективно использовать готовые объекты из биб­лиотек, необходимо освоить большой объем достаточно сложной информации. Неграмотное же применение ООП способно привести к созданию излишне сложных программ, которые невозможно отлаживать и усовершенствовать.

Классы

Для представления объектов в языках С#, Java, C++, Delphi и т. п. используется понятие класс, аналогичное обыденному смыслу этого слова в контексте «класс членистоногих», «класс млекопитающих», «класс задач» и т. п. Класс является обобщенным понятием, определяющим характеристики и поведение некоторого множества конкретных объектов этого класса, называемых экземплярами класса.

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

Все классы библиотеки .NET, а также все классы, которые создает программист в среде .NET, имеют одного общего предка — класс object и организованы в единую иерархическую структуру. Внутри нее классы логически сгруппированы в так называемые пространства имен, которые служат для упорядочивания имен классов и предотвращения конфликтов имен: в разных пространствах имена могут совпадать. Пространства имен могут быть вложенными, их идея аналогична знакомой вам иерархической структуре каталогов на компьютере, любая программа, создаваемая в .NET, использует пространство имен System. В нем определены классы, которые обеспечивают базовую функциональность, напри­мер, поддерживают выполнение математических операций, управление памятью и ввод-вывод.

Обычно в одно пространство имен объединяют взаимосвязанные классы. Напри­мер, пространство System.Net содержит классы, относящиеся к передаче данных по сети, System.Windows.Forms — элементы графического интерфейса пользователя, такие как формы, кнопки и т. д. Имя каждого пространства имен представляет собой неделимую сущность, однозначно его определяющую.

Последнее, о чем необходимо поговорить, прежде чем начать последовательное изучение языка С#, — среда разработки Visual Studio.NET.

| следующая лекция ==>
ЗАМЕЧАНИЕ | Среда Visual Studio.NET

Дата добавления: 2014-01-07 ; Просмотров: 1081 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Основные понятия в объектно-ориентированном программировании ИЛИ
моя шпаргалка по ООП

С целью освежения базовых знаний по ООП, я решила перечитать потрясающую книгу «Объектно-ориентированный анализ и проектирование с примерами приложений», Гради Буч

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

А теперь для ленивых и для себя любимой я составила краткий конспект-шпаргалку по этой книги.

ШПАРГАЛКА ПО ООП

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

Основные принципы ООП

  • абстрагирование
  • инкапсуляция
  • модульность
  • иерархия

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

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

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

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

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

Иерархия — это упорядочение абстракций, расположение их по уровням.

Типизация — способ защититься от использования объектов одного класса вместо другого, или, по крайней мере, управлять таким использованием.

Тип — точная характеристика некоторой совокупности однородных объектов, включающая структуру и поведение.

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

Параллелизм — это свойство, отличающее активные объекты от пассивных.

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

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

Устойчивость — способность объекта сохранять свое существование во времени и/или пространстве (адресном, в частности при перемещении между узлами вычислительной системы). В частности, устойчивость объектов может быть обеспечена за счет их хранения в базе данных.

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

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

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

Любой объект обладает состоянием, поведением и индивидуальностью.

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

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

Индивидуальность — это свойства объекта, отличающие его от всех других объектов.

Структура и поведение схожих объектов определяют общий для них класс.

Объект в JavaScript создаётся с помощью функции Object.create. Эта функция из родителя и опционального набора свойств создаёт новую сущность. Пока что мы не будем беспокоиться о параметрах.

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

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

Класс (class) — это группа данных и методов(функций) для работы с этими данными. Это шаблон. Объекты с одинаковыми свойствами, то есть с одинаковыми наборами переменных состояния и методов, образуют класс.

Конструктор класса — специальный блок инструкций, вызываемый при создании объекта.

var s = new String();

Деструктор — специальный метод класса, служащий для деинициализации объекта (например освобождения памяти).

Атрибут — поименованное свойство класса, определяющее диапазон допустимых значений, которые могут принимать экземпляры данного свойства. Атрибуты могут быть скрыты от других классов, это определяет видимость атрибута: рublic (общий, открытый); private (закрытый, секретный); protected (защищенный).

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

Дескриптор — это атрибут объекта со связанным поведением (англ. binding behavior), т.е. такой, чьё поведение при доступе переопределяется методами протокола дескриптора.

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

Метод — это функция или процедура, принадлежащая какому-то классу или объекту.

Различают простые методы и статические методы (методы класса):

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

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

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

  • открытый (public) интерфейс — общий интерфейс для всех пользователей данного класса;
  • защищённый (protected) интерфейс — внутренний интерфейс для всех наследников данного класса;
  • закрытый (private) интерфейс — интерфейс, доступный только изнутри данного класса.

Такое разделение интерфейсов позволяет сохранять неизменным открытый интерфейс, но изменять внутреннюю реализацию.

Полиморфизм — способность скрывать множество различных реализаций под единственным общим именем или интерфейсом.

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

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

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

Компонент представляет собой физическую реализацию проектной абстракции и может быть: компонентом исходного кода (cpp-шник); компонентом времени выполнения (dll, ActiveX и т. п.); исполняемый компонентом (exe-шник). Компонент обеспечивает физическую реализацию набора интерфейсов. Компонентная разработка (component-based development) представляет собой создание программных систем, состоящих из компонентов (не путать с объектно-ориентированным программированием (ООП).

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

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

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

Читайте также:  Что такое жизнь с точки зрения химии кратко

-единицей управления конфигурацией.

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

Объект с точки зрения ооп состояние поведение

Название «Объектно-ориентированное программирование» говорит само за себя. Центром внимания ООП является объект.

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

Рассмотрим физические объекты, которые нас окружают. Про любой из физических объектов можно сказать, что он:

  1. имеет какое-то состояние (или находится в каком-то состоянии). К примеру, про собаку можно сказать, что она имеет имя, окраску, возраст, голодна она или нет и т.д.
  2. имеет определенное поведение. Т.е., та же собака может вилять хвостом, есть, лаять, прыгать и т.д.

А теперь рассмотрим формальное определение объекта в ООП:

Объект— это осязаемая сущность, которая четко проявляет свое поведение.

Объект состоит из следующих трех частей:

  • имя объекта;
  • состояние (переменные состояния);
  • методы (операции).

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

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

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

А теперь в двух словах о нескольких терминах ООП:

Класс (class) — это группа данных и методов(функций) для работы с этими данными. Это шаблон. Объекты с одинаковыми свойствами, то есть с одинаковыми наборами переменных состояния и методов, образуют класс.

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

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

Методы (methods)— это функции(процедуры), принадлежащие классу.

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

Возможно некоторые моменты пока не очевидны для Вас. Уверен, что основные понятия ООП объяснят все возникающие на данном этапе вопросы.

Урок 7.Экземпляры и состояния. Жизненный цикл и поведение объектов:сообщения,события,методы,действия

Состояние объекта в ООП

Каждый объект в ООП характеризуется своим состоянием. Состояние банковского счета — это сумма лежащих на нем денег. Состояние банкомата включает в себя состояние «включен» или «выключен», готов или не готов к принятию запроса, наличию денег в банкомате.

Состояние объекта характеризуется текущим значением его атрибутов. В нашем примере у счета есть атрибут -баланс. В простейшем случае он отражается числом — количеством рублей и копеек на счету. Операция снятия или зачисления на счет изменяет баланс и атрибут объекта «счет № 66579801». У объекта «банкомат на Тверской» есть несколько атрибутов. Количество денег в банкомате может характеризоваться числом. Состояние «включен» или «выключен» и состояние «готов или не готов к принятию запроса» — логическим значением.

Стоит заметить, что атрибутами объекта в ООП могут быть не только простейшие значения (число, логическое значение и т.д.), но и сложные величины или другие объекты. Например, наш банк для целей контроля будет хранить историю всех транзакций. Транзакция — это объект, который имеет атрибуты (характеристики) тип транзакции, сумма переведенных денег, место совершения и имена контрагентов этой операции. У объекта «счет № 66579801» появится новый атрибут — «история транзакций», который будет состоять из набора объектов-транзакций.

Экземпляр

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

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

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

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

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

1) анализ требований,
2) проектирование,
3) кодирование (программирование),
4) тестирование и отладка,
5) эксплуатация и сопровождение.

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

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

Существующие модели ЖЦ определяют порядок исполнения этапов в ходе разработки, а также критерии перехода от этапа к этапу.

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

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

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

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

В объектно-ориентированном анализе для описания динамического поведения объектов принято использовать модель состояний.

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

Согласно , событие — это «абстракция инцидента или сигнала в реальном мире, который сообщает нам о перемещении чего- либо в новое состояние». Далее, выделяются четыре аспекта события:

· метка — уникальный идентификатор события.

· значение — текстовое сообщение о сути произошедшего.

· предназначение — модель событий, которая принимает событие.

· данные — данные, которые переносятся от одного объекта к другому.

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

Одно из событий может логически предшествовать другому, либо следовать за другим, либо они могут быть независимыми; примерами логически (причинно) связанных событий являются старт и финиш одного забега, начало проводки и выдача денег клиенту (в результате этой проводки), примерами независимых событий — старт ракеты и финиш забега, проводки, запущенные с разных ATM, и т.п. Если события не имеют причинной связи (т.е. они логически независимы), они называются независимыми (concurrent); такие события не влияют друг на друга. Независимые события не имеет смысла упорядочивать, так как они могут происходить в произвольном порядке. Модель распределенной системы обязательно должна содержать независимые события и активности.

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

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

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

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

Читайте также:  Какой вид влажности имеет наибольшее значение с гигиенической точки зрения

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

Взаимодействие объектов в абсолютном большинстве случаев обеспечивается вызовом ими методов друг друга.

Доступ

studopedia.org — Студопедия.Орг — 2014-2019 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.002 с) .

Объект с точки зрения ооп состояние поведение

Вопросы к экзамену по ООП

  1. Эволюция методологий программирования. Парадигмы программирования.
  2. Основные принципы объектного подхода. Абстрагирование.
  3. Основные принципы объектного подхода. Инкапсуляция.
  4. Основные принципы объектного подхода. Модульность.
  5. Основные принципы объектного подхода. Иерархия.
  6. Основные принципы объектного подхода. Типизация.
  7. Основные принципы объектного подхода. Параллелизм. Сохраняемость.
  8. Объект с точки зрения ООП. Состояние. Поведение.
  9. Объект с точки зрения ООП. Идентичность и жизненный цикл объектов.
  10. Объект с точки зрения ООП. Взаимоотношения между объектами.
  11. Классы. Природа классов. Метамодель. Инстанцирование.
  12. Классы. Структура класса. Абстрактные классы и интерфейсы.
  13. Классы. Отношения между классами. Ассоциация и агрегация.
  14. Классы. Иерархии классов. Зависимость.
  1. Модель памяти и структура программы. Классы памяти. Ссылки.
  2. Средства абстракции C ++. Структура класса. Статические члены.
  3. Средства инкапсуляции C ++. Инкапсуляция и наследование. Друзья.
  4. Модульность, раздельная компиляция, пространства имен, using директива.
  5. Представление иерархических отношений. Наследование.
  6. Представление иерархических отношений. Агрегация. Зависимость по времени жизни.
  7. Правила преобразования типов в C ++. Параметрический и виртуальный полиморфизм.
  8. C ++: средства реализации состояния объектов; реализация поведения.
  9. Перегрузка операторов.
  10. Жизненный цикл объекта. Инициализация массивов. Конструкторы и деструкторы. Порядок вызова конструкторов и деструкторов при наследовании.
  11. Варианты реализации отношения клиент-сервер. Объекты при передаче параметров и возврате из методов.
  12. Исключения в C ++. Обработка исключений.
  13. Шаблоны классов и шаблоны функций. Специализация.
  14. Основы STL . Структура и назначение. Контейнеры.
  1. Виртуальная машина. Структура программ. Типы переменных в Java . Принципы работы >.
  2. Средства абстракции Java . Структура класса. Статические члены.
  3. Внутренние и вложенные классы. Статический и динамический контекст. Локальные и анонимные классы.
  4. Средства инкапсуляции Java . Поддержка модульности. Пакеты.
  5. Представление иерархических отношений. Наследование. Интерфейсы и абстрактные классы.
  6. Агрегация и зависимость от времени жизни. Реализация отношений клиент-сервер. Стандартные контейнеры.
  7. Типизация. Правила преобразования типов. instanceof и >. Класс >
  8. Средства поддержки параллелизма. Активные и пассивные объекты. Класс Object .
  9. Использование Thread и Runnable . Пул потоков, назначение и принципы реализации.
  10. Исключения. Обработка исключительных ситуаций.
  11. Сохраняемость . Serializable и Externalizable. Программирование распределенных приложений.
  12. Модель безопасности Java . Policy, Permissions, AccessController.
  13. Графическая подсистема. Основы AWT , Applet , Swing components . Событийная модель.
  14. Средства поддержки Java машины. System, Runtime, сборка мусора .

ITandLife.ru

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

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

Этой статьей я начинаю серию публикаций о теории объектно-ориентированной методологии разработки программного обеспечения. Сегодня речь пойдет об одной из основных концепций ООП — объекте.

Объекты в ООП — это объекты реального мира

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

Предположим что нам нужно разработать систему автоматизации банка. Эта система могла быть осуществлена следующим образом:

Схема взаимодействия объектов

В операции снятия денег через банкомат участвуют 3 объекта: «клиент Иванов», «банкомат на Тверской» и «счет № 66579801», который открыт в данном банке для Иванова. Подойдя к банкомату и засунув свою карточку, объект «клиент Иванов» посылает банкомату сообщение «Начать работу». Получив такое сообщение, банкомат выводит на экран какую-нибудь информацию и запрашивает код доступа, т.е объект «банкомат на Тверской» посылает сообщение объекту «клиент Иванов» — «Сообщить идентификационный код». Если идентификация прошла успешно, «клиент Иванов» просит выдать ему 1000 рублей. Он посылает сообщение об этом банкомату, а тот в свою очередь объекту «счет № 66579801». Приняв это сообщение объект «счет № 66579801» проверяет есть ли у него 1000 рублей, и, если есть, пересылает разрешение на снятие денег, одновременно уменьшая свой баланс на соответствующую сумму. Банкомат передает деньги и на этом процедура заканчивается.

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

Описание в виде объектов позволяет определить различные компоненты системы. Те же самые объекты — «счет № 66579801» и «клиент Иванов» — будут учавствовать в другой операции при которой клиент приходит в отделение банка для снятие или зачисления денег на свой счет.

Приведенная ситуация является ярким примером сущности понятия «объект в ООП«. Сложно дать четкое определение этому понятию, приведу цитату этого определения Ивара Якобсона:

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

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

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

Состояние объекта в ООП

Каждый объект в ООП характеризуется своим состоянием. Состояние банковского счета — это сумма лежащих на нем денег. Состояние банкомата включает в себя состояние «включен» или «выключен», готов или не готов к принятию запроса, наличию денег в банкомате.

Состояние объекта характеризуется текущим значением его атрибутов. В нашем примере у счета есть атрибут -баланс. В простейшем случае он отражается числом — количеством рублей и копеек на счету. Операция снятия или зачисления на счет изменяет баланс и атрибут объекта «счет № 66579801». У объекта «банкомат на Тверской» есть несколько атрибутов. Количество денег в банкомате может характеризоваться числом. Состояние «включен» или «выключен» и состояние «готов или не готов к принятию запроса» — логическим значением.

Стоит заметить, что атрибутами объекта в ООП могут быть не только простейшие значения (число, логическое значение и т.д.), но и сложные величины или другие объекты. Например, наш банк для целей контроля будет хранить историю всех транзакций. Транзакция — это объект, который имеет атрибуты (характеристики) тип транзакции, сумма переведенных денег, место совершения и имена контрагентов этой операции. У объекта «счет № 66579801» появится новый атрибут — «история транзакций», который будет состоять из набора объектов-транзакций.

Идентификация объектов в ООП

Иногда нужно идентифицировать объекты в ООП, т.е., если имеются два объекта, как можно определить что эти объекты разные. Например, такая процедура очень важна для идентификации банковского счета (объект «счет № 66579801») клиента банка Иванова.

На самом деле существует два вопроса: равны ли два объекта или тождественны.

Обычно для идентификации применяются специальные атрибуты объектов — идентификаторы. Например, для объекта «счет № 66579801» идентификатором является его атрибут «номер счета», который является уникальным (соблюдается требование предметной области).

В свою очередь, зная идентификаторы объектов можно точно определить являются ли они тождественными или нет.

Интерфейс объекта в ООП

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

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

В нашем примере у объекта «счет № 66579801» есть следующие методы — «снять деньги со счета» и «положить деньги на счет». Эти два метода и составляют интерфейс объекта. У объекта «клиент Иванов» имеется метод «Сообщить свой код». А у объекта «банкомат на Тверской » есть методы «начать работу», «принять деньги», «выдать деньги».

У объекта «счет № 66579801» есть еще один атрибут «баланс». Является ли он частью интерфейса объекта? Интерфейс — это внешнее описание объекта. При разработке банковской системы и, в частности, объекта «счет», мы решаем вопрос: является ли баланс необходимой информацией для других объектов? Очевидно, что является. Тогда нам нужно ответить на еще один вопрос: что именно нужно другим объектам? Остаток денег на счете. В таком случае необходимо добавить еще один метод «сообщить остаток денег на счете» к объекту «счет» , и его интерфейс будет теперь состоять из трех методов.

Таким образом, атрибут баланс не является непосредственно частью интерфейса. Другие объекты могут обратиться к этому атрибуту только опосредственно, с помощью метода «сообщить остаток на счете» (тем самым они не могут непосредственно менять значение этого атрибута).

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

Время жизни объекта в ООП

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

  1. Объекты должны уничтожаться явно, с помощью специальных вызовов
  2. Объекты уничтожаются тогда, когда они никому не нужны (в системе отсутствуют все ссылки на данный объект). Такое уничтожение иногда называется уничтожением по достижимости

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

Временная диаграмма сохранения и восстановления объекта

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

Временная диаграмма создания объекта в базе данных

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

Композиция объектов в ООП

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

Включение объектов и ссылка на объект

В следующей статье будут рассмотрены классы в ООП, как способ описания структуры и поведения объектов.

Объект в ООП (Объектно-ориентированном программировании) : 6 комментариев

Очень полезная статья. Одна из немногих, написанных понятным простому человеку языком!

  1. M_a_Ge Автор записи 11 октября 2013 в 15:07

омг, спасибо огромное за статью

  1. M_a_Ge Автор записи 10 января 2014 в 14:20

Очень хорошая статья, жаль конечно что на словах и кода реализации клиента, счёта и банкомата нет…

Про сериализацию чуть не понял…Момент на схеме, там где «создание объекта ===> запуск программы», а не наоборот?

Источники:
  • http://studopedia.su/8_42407_ob-ektno-orientirovannoe-programmirovanie.html
  • http://medium.com/@annacherenshchykova/-98ffef738f1d
  • http://www.firststeps.ru/theory/oop/r.php?3
  • http://studopedia.org/14-75721.html
  • http://ccfit.nsu.ru/~rylov/OOPExaminationQuestions.html
  • http://itandlife.ru/programming/object-oriented-programming/obektno-orientirovannoe-programmirovanie-oop-ponyatie-obekta/