- •Ранняя история объектного подхода
- •Современные объектные технологии
- •Архитектура платформы Microsoft.Net
- •Оболочка .Net Framework
- •Критерии качества декомпозиции проекта
- •Понятие класса в ооп
- •Понятие объекта в ооп Объекты в ооп – это объекты реального мира
- •Наследование
- •Инкапсуляция
- •Полиморфизм
- •Паттерны проектирования
- •Порождающие паттерны
- •Структурные паттерны
- •Паттерны поведения
Понятие класса в ооп
Класс - это абстрактное понятие, сравнимое с понятием категория в его обычном смысле. По определенным свойствам этого элемента можно установить, что он принадлежит к какой-то категории. Сама категория определяется общими свойствами, которые имеют все экземпляры этой категории.
Класс в ООП - это абстрактный тип данных, который включает в себя не только данные, но и функции и процедуры. Функции и процедуры класса называются методами и содержат исходный код, предназначенный для обработки внутренних данных объекта данного класса. После того, как Вы объявили состав класса, необходимо определить (описать), что делает каждая функция-член (метод).
Существует 2 способа включения метода в класс:
Определение метода при описании класса.
Объявление метода при описании, а его описание - при вызове.
Методы, определенные внутри класса, являются неявно встроенными. Для определения метода вне класса укажите имя класса, за ним знак :: и имя функции-члена. Официальное название двойного двоеточия - оператор разрешения области действия. Он указывает, что данная функция-член является частью определенного класса.
Также как и структуры, классы можно задавать либо статически, либо динамически. Например, статически - Toplist foo; динамически - Toplist *bar ; bar=new Toplist; Для статических и динамических классов применимы те же правила и принципы, что и для статических и динамических переменных. Объект - экземпляр класса.
Понятие объекта в ооп Объекты в ооп – это объекты реального мира
Любые программные системы предназначены для моделирования реальных систем, поэтому очень важно в каких терминах мы пытаемся описать эти реальные системы. Описание в виде последовательности действий (процедурный подход к программированию) оказался довольно сложным. Объектно-ориентированный подход предлагает описывать системы в виде взаимодействия объектов.
Предположим что нам нужно разработать систему автоматизации банка. Эта система могла быть осуществлена следующим образом:
Схема взаимодействия объектов
В операции снятия денег через банкомат участвуют 3 объекта: «клиент Иванов», «банкомат на Тверской» и «счет № 66579801″, который открыт в данном банке для Иванова. Подойдя к банкомату и засунув свою карточку, объект «клиент Иванов» посылает банкомату сообщение «Начать работу». Получив такое сообщение, банкомат выводит на экран какую-нибудь информацию и запрашивает код доступа, т.е объект «банкомат на Тверской» посылает сообщение объекту «клиент Иванов» – «Сообщить идентификационный код». Если идентификация прошла успешно, «клиент Иванов» просит выдать ему 1000 рублей. Он посылает сообщение об этом банкомату, а тот в свою очередь объекту »счет № 66579801″. Приняв это сообщение объект «счет № 66579801″ проверяет есть ли у него 1000 рублей, и, если есть, пересылает разрешение на снятие денег, одновременно уменьшая свой баланс на соответствующую сумму. Банкомат передает деньги и на этом процедура заканчивается.
Объекты выполняют необходимые действия передавая друг другу сообщения.
Описание в виде объектов позволяет определить различные компоненты системы. Те же самые объекты – «счет № 66579801″ и «клиент Иванов» – будут учавствовать в другой операции при которой клиент приходит в отделение банка для снятие или зачисления денег на свой счет.
Приведенная ситуация является ярким примером сущности понятия «объект в ООП«. Сложно дать четкое определение этому понятию, приведу цитату этого определения Ивара Якобсона:
Объект в ООП – это сущность, способная сохранять свое состояние (информацию) и обеспечивающая набор операций (поведение) для проверки и изменения этого состояния.
Объект в объектно-ориентированном программировании – это модель или абстракция реальной сущности в программной системе. Предмет моделирования при построении объекта в ООП может быть различным. Например, могут существовать следующие типы абстракции, используемые при построении объекта:
абстракция понятия: объект – это модель какого-то понятия предметной области;
абстракция действия: объект объединяет набор операций для выполнения какой-либо функции;
абстракция виртуальной машины: объект объединяет операции, которые используются другими, более высокими уровнями абстракции;
случайная абстракция: объект объединяет не связанные между собой операции.