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

Презентация:



Advertisements
Похожие презентации
OOП Инна Исаева. Подпрограмма – это большая программа, разделённая на меньшие части. В программе одна из подпрограмм является главной. Её задача состоит.
Advertisements

Методология объектно- ориентированного программирования.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
В. И. Дихтяр ИНФОРМАТИКА Российский университет дружбы народов Институт гостиничного бизнеса и туризма Раздел 3Моделирование объектов и процессов и его.
Алгоритмический подход – главное алгоритм решения задачи ( в основном, используется для вычислительных задач ); Структурное программирование – декомпозиция,
Введение в объектно- ориентированное программирование.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Информационные технологии Стандартные библиотечные функции манипулирование данными преобразование и шифрование определение пользователями функций.
Объектно-ориентированное программирование С++. Лекция 6 Карпов В.Э.
В. Дихтяр ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ (для бакалавров) Российский университет дружбы народов Институт гостиничного бизнеса и туризма Раздел 1.Разработка.
ООП Лекция 1. Основные понятия. Литература Шилдт Г. С#: полное руководтво.-М.:ООО Вильямс, с. Культин Н.Б. Microsoft Visual C# в задачах и.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Проектирование архитектуры ИСО 1. UML 2 Структура определения языка 4.
Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 7.
Проектирование ИС (часть 2) Тема 3: Метрики объектно- ориентированных систем Объем лекций по теме: 4 часа Лектор: Щеголева Людмила Владимировна.
EPAM Systemswww.epam.com EPAM Systemswww.epam.com Программирование на языке C# Основы ООП.
Классы в C#. Две роли классов Класс Класс – это модуль, архитектурная единица построения программной системы. Модульность построения – основное свойство.
Объектно-ориентированное программирование Объектно-ориентированное программирование (ООП) - основная методология программирования. Она является продуктом.
Объектно- ориентированный подход к моделированию систем.
Транксрипт:

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

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

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

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

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

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

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

8 Некоторые итоги Главная цель программной инженерии - сокращение стоимости ПО Сформировались основные принципы и методы проектирования ПО: – Жизненный цикл ПО – Модульное программирование – Структурное проектирование и программирование – Объектно-ориентированное проектирование и программирование

9 Продолжение кризиса Кризис программирования принимает хронические формы: – США тратит более $200 млрд. на более чем 170 тыс. проектов – потери от недополученного эффекта измеряются триллионами. Успешные проекты не часты (30000 проектов) %23%49% 26%28%46% 27%40%33% 16%31%53% УспешныеПроблемныеПроваленные Источник: The Standish Group International, Inc., Extreme Chaos,

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

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

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

Объекты в деловом мире Бизнес процесс: Заказ товара. Объекты: Форма заказа Список товаров Товарная накладная Ордер на отгрузку Метка отгрузки 13 Поведение: Ввод информации Изменение информации Удаление информации Отображение формы Обработка заказа Отмена заказа

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

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

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

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

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

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

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

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

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

Инкапсуляция 23 ID F_Name L_Name Graduation Write() Display() Student A_Major A_School YearGraduated Write() Display() Aspirant

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

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

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

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

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

Пример описания класса 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; 29

Пример описания класса type TStudent = class FAge : integer; function GetAge : integer; procedure SetAge(Value : integer); property Age : integer read GetAge write SetAge; end; 30

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

Пример 1. Объявление класса в программе. Программная реализация #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); } ; 32

Пример 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; } 33

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

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

вопрос 2 2. Что такое методы класса? – Это инкапсулированные в классе данные – Это функции для работы с полями класса – Это специальные функции в составе ОС Windows 36

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

38