ООП
методическая разработка
Предварительный просмотр:
Подписи к слайдам:
Структура занятия понятие ООП; история ООП; принципы ООП (по Алану Кэю ); основные понятия; UML .
Понятия ООП Объектно-ориентированное программирование (ООП) – методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования. ООП помогает справиться с нелинейно растущей сложностью программ при увеличении их объема. Класс – универсальный, комплексный тип данных, состоящий из тематически единого набора «полей» (переменных более элементарных типов) и «методов» (функций для работы с этими полями).
История ООП Smalltalk -80 Smalltalk – объектно-ориентированный язык программирования с динамической типизацией, основанный на идее посылки сообщений. Sketchpad – прообраз будущих CAD систем. Программа, построенная на принципах объектно-ориентированного программирования с высоким (на тот момент) уровнем человеко-машинного взаимодействия. Simula – язык общего назначения , традиционно не считается объектно-ориентированным языком , представляет расширение алгола «объектной» нотацией. Simula 67 Sketchpad Python Java Scala C++ Objective-C C# Ruby
Принципы ООП Алан Кёртис Кэй Принцип 1. Все является объектом. объект – абстракция данных; объект – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом; объект – сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса (например, после запуска результатов компиляции и связывания исходного кода на выполнение).
Принципы ООП Принцип 2. Вычисления осуществляются путем взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие. объекты взаимодействуют, посылая и получая сообщения; сообщение – это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия. Объект 1 Объект 2 Объект 1 Объект 2 Сообщение с набором аргументов
Класс Принципы ООП Принцип 3. Каждый объект имеет независимую память, которая состоит из других объектов. Объект 1 Объект 2 Параметр 1 = значение 1 Параметр 2 = значение 2 Параметр 1 = значение 3 Параметр 2 = значение 4 Кластеры Кластер 1 Кластер 2 Производительность = 64 GFLOPS Количество узлов = 20 Производительность = 32 GFLOPS Количество узлов = 1 0
Принципы ООП Принцип 4. Каждый объект является представителем класса, который выражает общие свойства объектов данного типа. Кластеры Производительность Количество узлов Размер кэша …
Принципы ООП Принцип 5 . В классе задается функциональность (поведение объекта). все объекты, которые являются экземплярами одного класса, могут выполнять одни и те же действия. Класс копилка Добавить монету Количество монет Забрать монету Проверить вместимость
Принципы ООП Принцип 6 . Классы организованы в единую древовидную структуру с общим корнем, называемую иерархией наследования. память и поведение, связанное с экземплярами определенного класса, автоматически доступны любому классу, расположенному ниже в иерархическом дереве.
Основные понятия: абстрагирование Абстрагирование – выделение значимой информации и исключение из рассмотрения незначимой.
Основные понятия: инкапсуляция и сокрытие Инкапсуляция – упаковка данных и функций в единый компонент; Инкапсуляция – позволяет объединить данные и методы, работающие с ними, в классе. механизм языка, позволяющий ограничить доступ одних компонентов программы к другим; языковая конструкция, позволяющая связать данные с методами, предназначенными для обработки этих данных. Сокрытие – принцип проектирования, заключающийся в разграничении доступа различных частей программы к внутренним компонентам друг друга. Отождествление понятий Отсутствие сокрытия С++, Java , Ruby Smalltalk , Python
Инкапсуляция на примере Java class A { private int a; private int b; private void doSomething () { // скрытый метод // actions } public int getSomething () { // открытый метод return a; } }
Основные понятия: наследование Наследование – свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью Наследование – концепция ООП, согласно которой абстрактный тип данных может наследовать данные и функциональность некоторого существующего типа, способствуя повторному использованию компонентов программного обеспечения. класс, от которого производится наследование, называется базовым, родительским или суперклассом; класс, создаваемый на основе другого класса называется потомком, наследником, дочерним или производным классом.
Пример наследования Человек Студент Работник ОФО ЗФО Преподаватель Лаборант Штатный Совместитель
Основные понятия: полиморфизм Полиморфизм – свойство системы, позволяющее использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. Полиморфизм – свойство родственных объектов решать схожие по смыслу задачи разными способами. Абстрактный класс Производный класс 1 Производный класс 2 Фигура Квадрат Круг вычисление площади – метод, применимый к абстрактному классу.
UML в ООП UML (унифицированный язык моделирования) – язык графического описания для объектного моделирования в области разработки программного обеспечения, моделирования бизнес-процессов, системного проектирования и отображения организационных структур. Диаграмма классов ( Class diagram ) – статическая структурная диаграмма, описывающая структуру системы, демонстрирующая классы системы, их атрибуты, методы и зависимости между классами.
UML в ООП Структура диаграммы класса: Имя . Имя класса выравнивается по центру и пишется полужирным шрифтом. Имена классов начинаются с заглавной буквы. Если класс абстрактный – то имя пишется полужирным курсивом. Атрибуты . Они выровнены по левому краю и начинаются с маленькой буквы. Методы . Они также выровнены по левому краю и пишутся с маленькой буквы. BankAccount owner : String balance : Dollars = 0 deposit ( amount : Dollars ) withdrawal ( amount : Dollars)
Видимость в UML + Публичный ( Public) - Приватный ( Private) # Защищенный ( Protected) / Производный ( Derived ) (может быть совмещен с другими) ~ Пакет ( Package) Для задания видимости членов класса (т.е. атрибутов или методов), эти обозначения должны быть размещены перед именем участника public – внутри класса и вне класса ; private – внутри класса; protected – внутри самого класса или внутри производных классов ; package – видимость внутри пакета.
Взаимосвязи в UML