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

Содержание

Слайд 2

Содержание Этапы развития программирования Программная инженерия Фундаментальные понятия ООП Этапы разработки

Содержание

Этапы развития программирования
Программная инженерия
Фундаментальные понятия ООП
Этапы разработки программ с использованием ООП
Основополагающие

концепции ООП
Инкапсуляция
Наследование
Полиморфизм
Объекты
Анатомия класса
Управление доступом к элементам класса
Объявление класса в программе. Пример1. «Класс TPerson»
Контрольные вопросы
Мини-тест
Список литературы
Слайд 3

Этапы развития программирования Технология программирования – это система методов, способов и

Этапы развития программирования

Технология программирования – это система методов, способов и приемов

обработки и выдачи информации.
Написание программ в машинных кодах
Появление языков низкого уровня
Языки высокого уровня. Технология нисходящего структурного программирования
Появление ООП
Слайд 4

Предпосылки и история Первый кризис программирования Повторное использование кода Модульное программирование

Предпосылки и история

Первый кризис программирования
Повторное использование кода
Модульное программирование
Рост сложности программ
Структурное программирование
Модификация

программ
Объектно-ориентированное программирование
Продолжение кризиса программирования
Слайд 5

Повторное использование кода Проблема Дублирование фрагментов кода Модульное программирование Выделение фрагментов

Повторное использование кода

Проблема
Дублирование фрагментов кода
Модульное программирование
Выделение фрагментов в модули
Повторное использование модулей
Создание

библиотек модулей
Слайд 6

Рост сложности программ Проблема Сложные программные комплексы Объем кода, к-во связей,

Рост сложности программ

Проблема
Сложные программные комплексы
Объем кода, к-во связей, к-во разработчиков, к-во

пользователей
Жизненный цикл: стадии внедрения и сопровождения
Структурное программирование
«Правильное» проектирование и кодирование
Основные принципы:
Нисходящее проектирование
Применение специальных языков проектирования
Дисциплина проектирования и разработки:
планирование и документирование проекта
поддержка соответствие кода проектной документации
Структурное кодирование (линейный блок, If-then-else, цикл)
Слайд 7

Модификация программ Проблема изменения в проекте и программе без изменения ранее

Модификация программ

Проблема
изменения в проекте и программе без изменения ранее написанного кода
Объектно-ориентированное

программирование
Класс – модуль со свойствами, поведением, обязанностями
Парадигмы ООП:
Инкапсуляция и сокрытие деталей
Наследование
Полиморфизм

Отдел 1

Отдел 2

Отдел 3

Зарплата

Отдел 1

Отдел 2

Отдел 3

Зарплата

Зарплата 1

Слайд 8

Некоторые итоги Главная цель программной инженерии - сокращение стоимости ПО Сформировались

Некоторые итоги

Главная цель программной инженерии - сокращение стоимости ПО
Сформировались основные принципы

и методы проектирования ПО:
Жизненный цикл ПО
Модульное программирование
Структурное проектирование и программирование
Объектно-ориентированное проектирование и программирование
Слайд 9

Продолжение кризиса Кризис программирования принимает хронические формы: США тратит более $200

Продолжение кризиса

Кризис программирования принимает хронические формы:
США тратит более $200 млрд.

на более чем 170 тыс. проектов
потери от недополученного эффекта измеряются триллионами.
Успешные проекты не часты (30000 проектов)

Источник: The Standish Group International, Inc., Extreme Chaos, 2000
http://www1.standishgroup.com//sample_research/PDFpages/extreme_chaos.pdf

Слайд 10

Определения Программная инженерия – это установление и использование обоснованных инженерных принципов

Определения

Программная инженерия – это
установление и использование обоснованных инженерных принципов (методов) для

экономного получения ПО, которое надежно и работает на реальных машинах. [Bauer 1972].
та форма инженерии, которая применяет принципы информатики (computer science) и математики для рентабельного решения проблем ПО. [CMU/SEI-90-TR-003]
применение систематического, дисциплинированного, измеряемого подхода к разработке, использованию и сопровождению ПО [IEEE 1990].
дисциплина, целью которой является создание качественного ПО, которое завершается вовремя, не превышает выделенных бюджетных средств и удовлетворяет выдвигаемым требованиям [Schach, 99]
Слайд 11

Абстрактные и реальные объекты Абстрактный объект это описание реального объекта минус

Абстрактные и реальные объекты

Абстрактный объект это описание реального объекта минус подробности
Пример

1:
Абстрактные человек-это описание человека, которое содержит атрибуты и варианты поведения:
Имя
Фамилия
Рост
Вес
Реальный человек определяет значения атрибутов:
Майкл
Джексон
180 см
80 кг

Пример 2: формочки для печенья

Слайд 12

Почему объекты? Фокусирование на объектах упрощает для нас понимание сложных вещей.

Почему объекты?

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

лишь важным аспектам
Пример : преподаватель - студент
Слайд 13

Объекты в деловом мире Бизнес процесс: Заказ товара. Объекты: Форма заказа

Объекты в деловом мире

Бизнес процесс: Заказ товара.
Объекты:
Форма заказа
Список товаров
Товарная

накладная
Ордер на отгрузку
Метка отгрузки

Поведение:
Ввод информации
Изменение информации
Удаление информации
Отображение формы
Обработка заказа
Отмена заказа

Слайд 14

Концепция Класс и Объект Класс - принципиально новый тип данных. Класс

Концепция

Класс и Объект
Класс - принципиально новый тип данных.
Класс представляет собой

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

Концепция Объект является представителем (экземпляром) какого-либо класса. Объект обладает состоянием поведением

Концепция

Объект является представителем (экземпляром) какого-либо класса.
Объект обладает
состоянием
поведением
идентичностью.
Состояние

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

Класс простое объяснение Класс – это шаблон который определяет атрибуты и

Класс простое объяснение

Класс – это шаблон который определяет атрибуты и методы реального

мира.
Пример: форма для печенья в виде буквы «А» - это не буква А, она лишь определяет , как буква А выглядит.
Если вам необходим объект, представляемый классом, создаете экземпляр.
Каждый экземпляр содержит те же самые атрибуты и методы, которые определены в классе. У каждого экземпляра своя копия.
Метод – поведение объекта. (опять про печенье, но в форме собаки)
Слайд 17

Этапы разработки программ с использованием ООП ООП представляет собой систематизированный подход

Этапы разработки программ с использованием ООП

ООП представляет собой систематизированный подход к

алгоритмической формализации сложных предметных областей.
ООП предполагает этапы разработки программ:
Первый этап: абстрагирование
Второй этап: инкапсуляция
Третий этап: модульность
Четвертый этап: иерархия
Слайд 18

Этапы разработки программ с использованием ООП Абстрагирование Выделение абстракций. Это -

Этапы разработки программ с использованием ООП

Абстрагирование
Выделение абстракций. Это - анализ предметной

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

Этапы разработки программ с использованием ООП Инкапсуляция Типизация объектов и синтез

Этапы разработки программ с использованием ООП

Инкапсуляция
Типизация объектов и синтез абстрактных типов

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

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

Парадигмы ООП:

инкапсуляция
наследование
полиморфизм

Слайд 21

Инкапсуляция (encapsulation) - это объединение производного типа данных с набором функций,

Инкапсуляция (encapsulation)

- это объединение производного типа данных с набором функций, используемых

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

Инкапсуляция и ограничение доступа к данным Инкапсуляция предполагает возможность ограничения доступа

Инкапсуляция и ограничение доступа к данным

Инкапсуляция предполагает возможность ограничения доступа к

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

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

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

Слайд 24

Управление доступом Ключи доступа private - элементы данных могут использоваться только

Управление доступом

Ключи доступа
private - элементы данных могут использоваться только функциями-методами класса, к

которому принадлежат эти элементы данных
public - элементы данных могут использоваться любыми функциями программы
protected - элементы данных могут использоваться функциями-методами того же класса, к которому принадлежат эти элементы данных, а также функциями- методами производных классов (классов-потомков)
По умолчанию ключ доступа private. Т.е. если ключи доступа не указаны, то все элементы класса являются скрытыми (недоступными).
Попытка обратиться в программе к скрытым данным или методам вызывает сообщение:
<имя элемента класса> is not accessible
Слайд 25

Наследование (inheritance) - это возможность определять новые классы посредством добавления полей,

Наследование (inheritance)

- это возможность определять новые классы посредством добавления полей, свойств

и методов к уже существующим классам.
Такой механизм получения новых классов называется порождением.
При этом новый, порожденный, класс (потомок) наследует все поля, методы и свойства своего базового, родительского класса.
Наследование поддерживает концепцию иерархии классов (hierarchical classification).
Применение иерархии классов делает управляемыми большие потоки информации.
Наследование обеспечивает поэтапное создание сложных классов и разработку собственных библиотек классов
Слайд 26

Полиморфизм (polymorphism)

Полиморфизм (polymorphism)

Слайд 27

Полиморфизм (polymorphism) Это возможность заменить в классе потомке метод класса родителя,

Полиморфизм (polymorphism)

Это возможность заменить в классе потомке метод класса родителя,

сохранив при этом имя метода.
Это свойство классов решать схожие по смыслу проблемы разными способами.
Цель полиморфизма - использование одного имени для задания общих для класса действий.
Для изменения метода необходимо перекрыть его в потомке, т.е. объявить в потомке одноименный метод и реализовать в нем нужные действия.
В результате объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющие разную алгоритмическую основу.
Концепция полиморфизма - идея «один интерфейс - множество методов».
Полиморфизм позволяет манипулировать объектами различной степени сложности путем создания общего для них стандартного интерфейса для реализации похожих действий.
Слайд 28

Описание класса в Delphi type = class( ) public published protected private end;

Описание класса в Delphi

type
< имя класса > = class(< имя

класса-родителя >)
public
< описание общедоступных элементов >
published
< описание элементов, доступных в Инспекторе Объектов >
protected
< описание элементов, доступных в классах-потомках >
private
< описание элементов, доступных только в модуле >
end;
Слайд 29

Пример описания класса TControl = class(TComponent) private FOnDblClick: TNotifyEvent; FOnHouseDown: TMouseEvent;

Пример описания класса

TControl = class(TComponent)
private
FOnDblClick: TNotifyEvent;
FOnHouseDown: TMouseEvent;
FOnHouseHove:

TMouseMoveEvent;
protected
property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick;
property OnMouseDown: TMouseEvent read FOnMouseDown write FOnMouseDown;
property OnMouseMove: TMouseMoveEvent read FOnMouseMove write FOnMouseMove;
end;
Слайд 30

Пример описания класса type TStudent = class FAge : integer; function

Пример описания класса

type
TStudent = class
FAge : integer;
function GetAge : integer;
procedure SetAge(Value

: integer);
property Age : integer read GetAge write SetAge;
end;
Слайд 31

Пример 1. Объявление класса в программе. Постановка задачи Пусть необходимо создать

Пример 1. Объявление класса в программе. Постановка задачи

Пусть необходимо создать

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

Пример 1. Объявление класса в программе. Программная реализация #include #include //описание

Пример 1. Объявление класса в программе. Программная реализация

#include
#include
//описание структуры

класса
class TPerson
{
private:
char fname[15];
int frost;
float fwes;
public:
char * Show() ;
void SetName (char* value);
void SetRost (int value);
void SetWes (float value);
} ;
Слайд 33

Пример 1. Объявление класса в программе. Реализация методов класса //реализация методов

Пример 1. Объявление класса в программе. Реализация методов класса

//реализация методов класса

char* TPerson::Show()
{static char S[100];
sprintf (S,"Это %s; его рост - %d см, вес - %3.2f кг", fname, frost, fwes);
return S; }
void TPerson::SetName(char* value)
{ strcpy(fname,value);
return; }
void TPerson::SetRost(int value)
{ frost=value;
return; }
void TPerson::SetWes(float value)
{ fwes=value;
return; }
Слайд 34

Итоги Контрольные вопросы Перечислите основные этапы развития технологии программирования. Определите понятие

Итоги Контрольные вопросы

Перечислите основные этапы развития технологии программирования.
Определите понятие и назначение класса
Определите

понятие и характеристики объекта
Перечислите и охарактеризуйте этапы разработки программ с использованием ООП
Назовите и охарактеризуйте основные концепции ООП
Из каких элементов состоит класс?
Как ограничить доступ к составляющим класса?
Слайд 35

вопрос 1 1. Что такое класс? Это модуль, сохраненный в файле

вопрос 1

1. Что такое класс?
Это модуль, сохраненный в файле
Это функция
Это библиотека
Это

тип данных
Это специальная программа
Слайд 36

вопрос 2 2. Что такое методы класса? Это инкапсулированные в классе

вопрос 2

2. Что такое методы класса?
Это инкапсулированные в классе данные
Это

функции для работы с полями класса
Это специальные функции в составе ОС Windows
Слайд 37

вопрос 3 2. Что такое полиморфизм? Это переключатель Это спец.функция для

вопрос 3

2. Что такое полиморфизм?
Это переключатель
Это спец.функция для работы с

полями класса
Это одно имя – разный функционал