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

Содержание

Слайд 2

1. Технологии программирования

1. Технологии программирования

Слайд 3

Технология программирования = методы + средства для разработки ПО.
В зависимости от назначения

Технология программирования = методы + средства для разработки ПО. В зависимости от
программирование подразделяют на:
• системное — разработка средств общего ПО (ОС, вспомогательных программ, автоматизированных систем управления, систем управления базами данных и т. д.);
• прикладное — разработка и отладка программ для конечных пользователей (бухгалтерских, обработки текстов и т. п.)
В зависимости от метода программирование подразделяют на:
• процедурное — программы пишутся как перечни последовательно выполняемых команд.
• структурное, модульное — программы пишутся как небольшие независимые структурированные части (модули), каждый из которых связан с какой-либо процедурой или функцией. Результирующая программа = совокупность взаимосвязанных по определенным правилам модулей.
• декларативное — решение задач искусственного интеллекта. В указанном контексте программа описывает логическую структуру решения задачи, указывая преимущественно, что нужно сделать, не вдаваясь в детали.
• параллельное — разработка программ, обеспечивающих одновременное выполнение нескольких операций, связанных с обработкой данных;
• ООП
• функциональное — разбиение алгоритма решения задачи на отдельные функциональные модули, а также описании их связей и характера взаимодействия.
• эвристическое — моделирование мыслительной деятельности человека. Используется для решения задач, не имеющих строго формализованного алгоритма или связанных с неполнотой исходных данных.
• компонентное — сбор объектов-компонентов (физически отдельно существующих частей ПО), взаимодействующих между собой через стандартизованные двоичные интерфейсы, в библиотеки или исполняемые файлы.
• блочное – решение задач путем разложения модели на блоки.

Слайд 4

Примеры технологий
программирования

Примеры технологий программирования

Слайд 5

Процедурное программирование // Алгоритмическое

Код в Matlab

Код в C++

• Задача разбивается на шаги

Процедурное программирование // Алгоритмическое Код в Matlab Код в C++ • Задача
и решается шаг за шагом.
• Программа состоит из последовательности операторов (инструкций), задающих процедуру решения задачи.
• Часть кода программы можно объединить в отдельные блок (процедуру). Такой блок команд можно вызывать из любой части программы.
• Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, т. е. значений исходных данных, в результаты.

Слайд 6

Функциональное программирование

Основа – функция = функция в математике.
Функции не производят никаких

Функциональное программирование Основа – функция = функция в математике. Функции не производят
побочных действий. Они не изменяют никаких флагов состояния, не записывают никакой информации в глобальные переменные, не пытаются освободить занятую другими объектами память. Никакая функция не сможет вызвать ошибок доступа к памяти.
Не нужно соблюдать последовательность выполнения операторов в программе - каждая функция может вычислить своё значение в любой момент => легко распараллеливать программы.
Программы на функциональных языках могут быть в десятки раз короче тех же самых программ, написанных на традиционных языках.
Имеют плохую совместимость с самыми популярными из императивных языков программирования, плохую переносимость программ на функциональных языках на различные платформы и низкую популярность этих языков
Работа с функционалами (функция от функции возвращает функцию, например, производная, первообразная).

Код в Lisp

Слайд 7

Блочное программирование // Визуальное

Код в Scratch

Код в LeGo Education Mindstorms

Блочное программирование // Визуальное Код в Scratch Код в LeGo Education Mindstorms

Слайд 8

2.ООП. Составные части

2.ООП. Составные части

Слайд 9

ООП

ОБЪЕКТЫ

КОД

ДАННЫЕ

Абстрагирование

Модульность

Иерархия

Типизация

Параллелизм

Сохраняемость

Полиморфизм

ООП

ООП ОБЪЕКТЫ КОД ДАННЫЕ Абстрагирование Модульность Иерархия Типизация Параллелизм Сохраняемость Полиморфизм ООП

Слайд 10

Абстрагирование

Абстрагирование — отделение существенного от несущественного.
В ООП это упрощенное описание объекта, при

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

Слайд 11

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

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

Инкапсуляция Это свойство ЯП, которое позволяет объединить данные и методы, работающие с
детали реализации от пользователя.
public, protected, private.

Слайд 12

Интерфейс

Это контракт, который объявляет, что мы должны делать.
???

Интерфейс Это контракт, который объявляет, что мы должны делать. ???

Слайд 13

Абстрагирование

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

Интерфейс

Абстрагирование Инкапсуляция Интерфейс

Слайд 14

Модульность

Разделение программы на сегменты = модули, которые компилируются отдельно.
Модули могут устанавливать связь

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

Слайд 15

Иерархия

Уровни расположения абстракций.
Основу составляет наследование.
Наследование одними классами свойства и поведение других

Иерархия Уровни расположения абстракций. Основу составляет наследование. Наследование одними классами свойства и
классов.

Иерархия

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

Слайд 16

Типизация

Типы значений
Простые типы
sbyte, short, int, long
byte, ushort,

Типизация Типы значений Простые типы sbyte, short, int, long byte, ushort, uint,ulong
uint,ulong
char
float, double
decimal
bool
Типы перечисления
enum E {...}
Типы структур
struct S {...}
Типы значений, допускающие
значение NULL

Типы классов
object
string
class C {...}
Типы интерфейсов
interface I {...}
Типы массивов
Одно- и многомерные, например, int[] и int[,]
Типы делегатов
delegate int D(...)

Слайд 17

Типизация

Способ защитить объекты одного класса от вляния другого класса.
Тип <=> класс.
Раннее

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

Слайд 18

Параллелизм

Каждая программа имеет по крайней мере 1 поток управления.
В параллельной системе может

Параллелизм Каждая программа имеет по крайней мере 1 поток управления. В параллельной
быть несколько таких потов.
Используется при работе с БД.

Слайд 19

Сохраняемость

Если объекты присутствуют во время вычисления, а потом удаляются, то это говорит

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

Слайд 20

3. Члены класса

3. Члены класса

Слайд 21

Члены класса

Поля и свойства – хранят данные для описания объекта или данные,

Члены класса Поля и свойства – хранят данные для описания объекта или
необходимые для работы объекта.
Методы – производит действия над объектом и возвращает результат своей работы.
События – уведомляет о том, что изменилось состояние объекта.

поля, свойства, методы, события

Слайд 22

Методы

В С# все функции — это методы
Последовательно выполняют операции и могут возвращать/не

Методы В С# все функции — это методы Последовательно выполняют операции и
возвращать результат работы.
модификатор_доступа возвращаемый_тип имя (параметры_метода)
{
тело метода
}
Сигнатура метода — тип и порядок входных значений и тип выходных значений.

Слайд 23

4. Делегаты

4. Делегаты

Слайд 24

Делегаты

Делегат — самостоятельная структура в С#.
Это объект, в который помещается ссылка на

Делегаты Делегат — самостоятельная структура в С#. Это объект, в который помещается
метод. Эта ссылка может использоваться для вызова метода.
Делегат — можно упаковать метод в объект и делать с ним все, что хочется: передавать в качестве аргумента другого метода, вызывать этот метод когда угодно и где угодно.
Мы не можем какой угодно метод поместить в делегат, нужно точно указать параметры метода и возвращаемое значение. Т.е. сигнатура метода и делегата должна совпадать.

Слайд 25

1.Тип делегата:
delegate string MyDelegate (int paramA, string paramB)
2. Нужен метод, сигнатура

1.Тип делегата: delegate string MyDelegate (int paramA, string paramB) 2. Нужен метод,
которого совпадает с сигнатурой делегата.
string SomeMethod (int someIntParam, string someStringParam)
3. Создаем экземпляр делегата
string method = new MyDelegate(SomeMethod);
MyDelegate method2 = SomeMethod;
method2 — это объект, в котором хранится ссылка на метод SomeMethod
4. Вызов метода через экземпляр делегата.
string method = new MyDelegate(SomeMethod);
method(10, «Эти делегаты жутко страшные!»);
5. Можно передавать его в качестве параметра для других методов.
6. Т.к. тип делегата на уровне классов и структур, объявлять делегат можно вне классов, прямо в пространстве имен, также вложенный в класс.