2.45M
Категория: ПрограммированиеПрограммирование

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

1.

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

2.

ЧТО ТАКОЕ ОБЪЕКТ ?
Объект - это то, на что направлена деятельность субъекта, и это может быть что-то реальное или
вымышленное, включая самого субъекта.

3.

ЧТО ТАКОЕ ООП?
ООП - это подход к программированию, где программы представляются в виде объектов с состояниями
и методами взаимодействия.

4.

ПЛЮСЫ И МИНУСЫ ООП
Плюсы:
Наглядность
Удобство отладки
Модульность и переиспользуемость
Масштабируемость
Минусы:
• Плохая работа с памятью
• Отсутствие стандартов
• Отсутствие единой спецификации

5.

КОГДА МОЖНО ПРИМЕНЯТЬ ООП?
1. Большой автоматизируемый процесс
2. Сложное взаимодействие объектов
3. Несколько источников данных
«ООП ради ООП не имеет смысла»
ООП можно применять в различных ситуациях, где
требуется структурировать и организовать код,
особенно в больших и сложных проектах. Оно может
быть полезно при разработке программного
обеспечения, где требуется моделирование
реальных объектов или систем, а также при работе в
команде, так как ООП способствует повторному
использованию кода и упрощает его понимание и
поддержку.

6.

КОГДА НЕ СТОИТ ПРИМЕНЯТЬ ООП?
1. Маленькая программа
2. Нет/одна сущность
3. Нереляционные сущности (отсутствует взаимодействие)
4. Потоки данных
5. Критична производительность

7.

ТЕМА 1. МОДЕЛИРОВАНИЕ
ПРОЦЕССОВ.
UML ДИАГРАММЫ.

8.

МОДЕЛИРОВАНИЕ. ИСТОРИЯ
Как описать назначение и процессы системы?
ЭМПИРИЧЕСКИЙ ПОДХОД
ОПИСАТЕЛЬНЫЙ ПОДХОД
СХЕМАТИЧЕСКИЙ ПОДХОД

9.

МОДЕЛИРОВАНИЕ. ЗАЧЕМ?
Моделирование - представление процесса в виде какой-либо графической схемы.
Зачем?
• Наглядность
• Возможность увидеть «узкие места»
• Фиксация требований

10.

МОДЕЛИРОВАНИЕ. КАК?
Виды нотаций
• UML
• IDEF
• BPMN
• EPC
• ...

11.

UML
UML (unified modeling language) – язык графического описания для объектного моделирования бизнеспроцессов, системного проектирования и отображения организационных структур.
Что будет делать приложение?
Кто будет пользоваться приложением?
Кому что будет доступно?
Как происходит передача данных?
USE-CASE
ACTIVITY
SEQUENCE
CLASS

12.

USE-CASE DIAGRAMM
UCD (диаграмма вариантов использования) - группы пользователей и их возможности.

13.

USE-CASE DIAGRAMM

14.

ACTIVITY DIAGRAMM
Activity diagramm (диаграмма действий) - уточняет USE-CASE DIAGRAMM. Показывает, как поток
управления переходит от одной сущности к другой. Описывает один бизнес-процесс.

15.

SEQUENCE DIAGRAMM
Sequence diagramm (диаграмма последовательностей) - уточняет ACTIVITY DIAGRAMM.
Показывает жизненный цикл объекта (создание - деятельность - уничтожение) и взаимодействие
акторов в рамках прецедента.

16.

CLASS DIAGRAMM
Class diagramm (диаграмма классов) - демонстрирует структуру и иерархию классов системы и их
взаимодействие.

17.

CLASS DIAGRAMM. СТРУКТУРА КЛАССА
Модификаторы доступа: + public | - private | # protected
Курсивное название – абстракция.
Свойства класса.
[МД] название: тип
Методы класса.
[МД] название ([параметры]): [тип возвращаемого значения]
Каждый параметр в методе может также иметь описание направленности
метода: in, out, inout.
in - параметр используется методом, но не изменяется (мутирует) в
процесса
out - метод возвращает параметр
inout - параметр применяется на вход, мутирует в процессе и
возвращается
Статические методы и атрибуты обозначаются подчёркиванием

18.

CLASS DIAGRAMM. ОТНОШЕНИЯ

19.

CLASS DIAGRAMM. ОТНОШЕНИЯ
Зависимость - показывает, что существует прямая связь между двумя классами (один класс
является параметром другого класса). При этом изменения в зависящем классе могут повлиять на
зависимый класс, но не наоборот.

20.

CLASS DIAGRAMM. ОТНОШЕНИЯ
Ассоциация - зависимость, при которой зависящий объект является атрибутом зависимого класса
(можно перейти от одного класса к другому). Используется в композиции и агрегации.

21.

CLASS DIAGRAMM. ОТНОШЕНИЯ
Агрегация - ассоциация типа «целое - части», при котором зависящие объекты могут существовать
без целого (доступ по ссылке).

22.

CLASS DIAGRAMM. ОТНОШЕНИЯ
Композиция - «агрегация по значению» (агрегация с удалением).
Части существуют только при жизни целого.

23.

CLASS DIAGRAMM. ОТНОШЕНИЯ
Обобщение (наследование) - показывает, что один класс является частным случаем другого.
Реализация - наследование от абстрактной сущности-интерфейса. Клиент реализует поведение
поставщика.

24.

ТЕМА 2. ТИПЫ ДАННЫХ.

25.

ТИПЫ ДАННЫХ
По способу организации
Простые (основные):
Сложные (в ООП – абстрактные):
- целые (short, int)
- структуры
- классы
- логические (bool/bit)
- символы (char)
- строки (string)
- с плавающей точкой (double, float, decimal)
- дата и время (datetime, timestamp)
- перечисления (enum)

26.

ТИПЫ ДАННЫХ
По способу расположения в памяти
Значимые
Ссылочные
хранятся в памяти по значению. Stack
хранятся в памяти по ссылке. Heap
Целые
Классы (class)
Логические
Объекты (object)
Символьные
Ссылки (ref)
С плавающей точкой
Дата и время
Массивы
Перечисления
Структуры
Инициализация
Int x = 1;
x = new X {val = 1};
В памяти выделяется ячейка со значением 1.
В памяти выделяется ячейка со значением 1.
В переменную копируется значение ячейки.
В переменную копируется ссылка на ячейку.

27.

ТИПЫ ДАННЫХ
При копировании значимых типов получаем новые ячейки. При копировании ссылочных получаем новые
ссылки на ту же ячейку.
Значимый тип
Int x = 1;
Int y = x; //копируем х
x = 2;
//y будет равен 1
Ссылочный тип
X x = {val = 1};
X y = x;
x.val = 2;
//y.val станет равен 2
При сравнении значимые типы при одинаковых значениях будут равны.
Ссылочные при одинаковых значениях будут НЕ равны.
Значимый тип
Point x = new Point(1, 2);
Point y = new Point(1, 2);
x == y //true
Ссылочный тип
X x = {val = 1};
X y = {val = 1};
x == y //false

28.

ТИПЫ ДАННЫХ. ОСОБЕННОСТИ
• Некоторые типы по-умолчанию поддерживают null-значения без специального указания. В противном
случае возможно указание такого разрешения: int и int?.
• Целые типы данных обладают разной размерностью (место в памяти). Могут быть signed и unsigned.
• Decimal является самым точным, float неявно округляется.
• Значимый тип можно передать как ссылочный (&, ref, *).
• String может быть ссылочным типом с поведением значимого.
• Если элементу перечисления (enum) явно не присвоено конкретное значение, то ее значение будет
сформировано автоматически. Если это первый член перечисления, то будет присвоено значение 0. Для
всех последующих членов значения будет вычисляться на основе значения предыдущего члена путем
прибавления единицы.
• В языках существуют дополнительные типы данных: color (hex), coordinate (Point), json, xml, html и др.
Отличие структур от классов:
- Структура – значимый тип. Класс – ссылочный.
- Структура не поддерживает наследование.
В С++ структура – тоже класс, только в структуре по-умолчанию public, а в классе – private.

29.

ТЕМА 3. ОПЕРАТОРЫ.
ВАЛИДАЦИЯ И
ОБРАБОТКА ИСКЛЮЧЕНИЙ.

30.

ОПЕРАТОРЫ
- объявления (var, let, define, const и др. [с указанием типа]) define X : Integer
- присваивания (=,:=, :, +=, -=) X = 1
- инициализации (объявление с присваиванием) cont Integer X = 1
- конструирование (new) x = new X
- математические (+, -, * и др.)
- сравнение (==, !=, >, < и др.)
- логические (AND, OR и др.)
- условные (if-then-else, switch-case) – для логики, ветвления в зависимости от условий, валидации
- циклические (for, while-do) – используют условные и логические
- возврат значения (return)
- перехват исключений (try-catch-finally) – расширяют остальные
- null-объединяющие (null coalescing) (?? – левое, иначе правое / ?: - «условие ? да : нет»)
- прочие – (зависят от языка) (goto, begin-end, alloc, <=> и др.)

31.

ОПЕРАТОРЫ
Условный оператор
if (a > b) [then] …
else …
switch (a)
case 1: … break;
case …
default:
… break;
Логический оператор
if (a > b AND b > c) …
Оператор цикла
for (a = x, a < y, a++)
[do] … //пост-условие
while (a < b)
[do] … // пред-условие

32.

ОБРАБОТКА ИСКЛЮЧЕНИЙ
Исключения – ошибки программы вследствие неправильной логики / плохого кода.
Без обработки исключений
X = 1 / 0; //вызовет необработанное исключение
Обработка исключений
try
{
X = 1 / 0;
}
catch (exception) // exception.message
{
print «На ноль делить нельзя»
}
[finally] // Сделать что-то не смотря на результат
{
Х = 1;
}

33.

ВАЛИДАЦИЯ
Валидация – проверка параметра на соответствие заданным условиям.
Возвращение булевого значения
function divider (x, y) {
if (validator(y, except: 0)) return x / y;//валидация
return null;
}
function validator (y, min, max, except = 0) {
if (y < min OR y > max OR y == 0) return false;
return true;
}
Генерация исключения
function divider (x, y) {
try {
validator (y, except: 0);
return x / y;
}
catch (exception) {return null;}
}
function validator (y, min, max, except = 0) {
if (y < min OR y > max OR y == 0)
throw Exception (“Out of validation range”);
}
English     Русский Правила