Объектное программирование в языке С++

Содержание

Слайд 2

Было: Объектное программирование DATA CODE Стало: Процедурное программирование Объектно-ориентированное Объект: некоторая

Было:

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

DATA

CODE

Стало:

Процедурное программирование

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

Объект: некоторая структура, которая включает в себя данные и

код, который взаимодействует с этими данными.

Для создания объектов используют специальные структуры данных, называемые классами.

class <имя класса>
{
[описание данных]
[описание кода]
};

Класс – тип данных, объект – экземпляр класса:
<имя класса> <объект1>, <объект2>,…

Вычисление в ООП рассматривается как модель поведения

Слайд 3

Инкапсуляция: пакетирование данных – механизм языка программирования, который позволяет объединять данные

Инкапсуляция: пакетирование данных – механизм языка программирования, который позволяет объединять данные

и код, взаимодействующий с этими данными. Инкапсуляция – это способность скрывать внутренние детали при предоставлении открытого интерфейса к определяемому пользователем типу данных.

Принципы объектного программирования

Наследование: это механизм, который позволяет определить новые классы в терминах существующих классов. Может быть единичное наследование и множественное, когда новый класс наследует свойства сразу нескольких базовых.

Полиморфизм: способность различных объектов по разному обрабатывать одинаковые сообщения. Полиморфизм – это свойство, позволяющее использовать одно и то же имя для обработки различных типов данных.

Слайд 4

Моделирование деятельности мира Концепции объектного программирования Сокрытие деталей реализации Повторное использование

Моделирование деятельности мира

Концепции объектного программирования

Сокрытие деталей реализации

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

Наличие

типов, определяемых пользователем

Разрешение интерпретации вызова функции во время выполнения

Некоторые из концепций неясны, некоторые абстрактны, а некоторые обобщены. Тем не менее они образуют фундамент иной точки зрения на программирование!

Слайд 5

С++ - преемник С. Он был изобретен в фирме Bell Labs

С++ - преемник С. Он был изобретен в фирме Bell Labs

Бьярном Страуструпом в середине 1980 года.
Решались две основные задачи:
Сделать С++ совместимым со стандартным С;
Расширить С конструкциями ООП
(Объектно-ориентированного программирования)

История языка С++

Истоки ООП – итоги 25 летнего опыта и практики программирования.
Впервые сформулированы в языке Simula 67 и развивались в таких языках, как
Smalltalk, Lisp, Clu,
а еще позже –
Actor, Eiffell, Objective C и С++

Конечная цель С++ - обеспечить язык для профессионального программиста, который может быть использован для создания объектно-ориентированного программного обеспечения, без ущерба для эффективности и компактности С

Слайд 6

С++ - преемник С. Он сохраняет большую часть этого языка: состав

С++ - преемник С. Он сохраняет большую часть этого языка:

состав операторов, выразительный стиль, мобильность, расширяемость, эффективность (быстродействие программ) и экономичность (не расходуются ресурсы на динамическую проверку типов и сборку мусора) реализации.
С++ совершенствует С по разным направлениям, особенно с точки зрения строгой типизации данных, и в силу этого является более безопасным языком.
С++ - гибридный язык. Он позволяет писать программы как на низком, так и на высоком уровнях.
В С++ возможна перегрузка операторов, поддерживающая реализацию новых пользовательских типов
В С++ для удобного управления динамически распределяемой памяти введены два специальных оператора – new и delete
Не смотря на то, что работа с указателями в С++ сохраняется в том же объеме, что и для языка С, классы обеспечивают удовлетворительные средства простой реализации обобщенных массивов.

С++ лучше С

Слайд 7

Язык C - Ключевые слова Cлова, которые имеют специальное значение для

Язык C - Ключевые слова

Cлова, которые имеют специальное значение для

компилятора языка. В языке Си используются следующие ключевые слова:
auto break case char
const continue default do
double else enum extern
float for goto if
int long register return
short signed sizeof static
struct switch typedef union
unsigned void volatile while
Вы не можете переопределять ключевые слова у себя в программе. В рамках конкретной системы программирования состав ключевых слов может быть расширен.
Слайд 8

Ключевые слова языка С++ (дополнительно к С) class delete friend inline

Ключевые слова языка С++ (дополнительно к С)

class delete friend inline
new operator

private protected
public this template virtual
Операции
:: - операция разрешения контекста;
.* и ->* - операции обращения через указатель к компоненте класса
new и delete – операции динамического выделения и освобождения памяти
Типы данных – те же, что и в С + классы и ссылки
Передача аргументов по умолчанию
Пространство имен – using namespace std;

Ключевые слова языка С++ (дополнительно к С)

Слайд 9

Организация Windows-программы Компьютер Операционная система Программа пользователя Как они взаимодействуют? Любое

Организация Windows-программы

Компьютер
Операционная система
Программа пользователя

Как они взаимодействуют?

Любое приложение в Windows =

Функция инициализации (WinMain) +
функция обслуживания приложения (WinProc)

Основное назначение WinMain связано с решением 3 основных задач:
– зарегистрировать в Windows класс главного окна приложения (всех используемых окон)
– создать главное окно и показать его на экране
– организовать цикл обнаружения поступающих в приложение сообщений

Функция обслуживания приложения WinProc – обработка присланных сообщений.

Windows-программирование и Visual C++

Сообщения являются реакцией системы Windows на различные происходящие в системе события: движение мыши, нажатие клавиши, срабатывание таймера и др. Отличительной особенностью сообщений является их специальный код. Для системных сообщений зарезервировано значение кода от 1 до 0х3FF.

Слайд 10

Организация обработки сообщений Процедура создания и пересылки сообщений от мыши: Windows-программирование

Организация обработки сообщений

Процедура создания и пересылки сообщений от мыши:

Windows-программирование и Visual

C++

Примеры сообщений:
WM_LBUTTONDOWN, WM_TIMER,
WM_SIZE, WM_ERASEBKGND,
WM_COMMAND.

WM_COMMAND

Слайд 11

Событийное управление Прием сообщения – событие. Характеристики события в Windows: Получатель

Событийное управление

Прием сообщения – событие.
Характеристики события в Windows:
Получатель (кому

адресовано)
Тип, связанный с источником
Время возникновения
Положение на экране курсора мыши
Дополнительные параметры, специфичные для каждого конкретного случая

Windows-программирование и Visual C++

Программа с событийно-управляемой архитектурой

Цикл обработки сообщений организуется при помощи функций GetMessage (PeekMessage) и DispatchMessage.
При создании приложений в среде VS’98 – цикл организуется автоматически и не требует от программиста каких-либо действий

Слайд 12

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

Распределение оперативной памяти

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

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

Windows-программирование и Visual C++

Динамическая память – на самом деле способ ее распределения.
В языке С – захват памяти при помощи специальных функций: malloc, calloc, realloc. Освобождение ранее захваченной памяти – free.
В языке C++ - можно использовать еще и специальные операторы:
new и delete.
Фрагментация памяти – разбиение пространства памяти на множество мелких кусочков, что может приводить к существенному замедлению работы программы.

Слайд 13

Компоненты среды программирования Visual Studio 98 Одним из языков программирования, поддерживаемых

Компоненты среды программирования Visual Studio 98

Одним из языков программирования, поддерживаемых средой

VS’98 является язык С++.
Разработка программ осуществляется в рамках интегрированной среды разработки IDE (Integrated development environment).
Данная среда объединяет такие компоненты как:
Компилятор C/C++ (Compiler).
Редактор исходного текста (Editor).
Компилятор ресурсов (Resource compiler).
Компоновщик (Linker).
Отладчик (Debugger).
Генератор кода (AppWizard).
Поддержка ведения классов (ClassWizard).
Справочная система (MSDN).
Библиотека классов (MFC).

Windows-программирование и Visual C++

Слайд 14

Понятие ресурсов Windows-программирование и Visual C++ Различные варианты ресурсов обладают различными

Понятие ресурсов

Windows-программирование и Visual C++

Различные варианты ресурсов обладают различными наборами свойств

и обслуживаются специализированными средствами редактирования
Слайд 15

Процесс построения программ Windows-программирование и Visual C++

Процесс построения программ

Windows-программирование и Visual C++

Слайд 16

Начало 1

Начало 1

Слайд 17

Начало 2 Solution (sln) – решение – группа проектов, объединенных под

Начало 2

Solution (sln) – решение – группа проектов, объединенных под одной

крышей. Например, все проекты, выполненные в рамках одной лабораторной работы.
Project (vcproj) – отдельный проект, исходное состояние которого генерируется при помощи мастера Application Wizard. Проект содержит информацию о версии языка, используемой платформе, конфигурации и других особенностей, заказываемых пользователем при создании проекта
Слайд 18

Начало 3

Начало 3

Слайд 19

Начало 4

Начало 4

Слайд 20

Варианты проектов

Варианты проектов

Слайд 21

Проекты ATL и CLR

Проекты ATL и CLR

Слайд 22

Проекты General и MFC

Проекты General и MFC

Слайд 23

Архитектура Документ - Вид CWinApp – класс инициализации приложения. Основная задача

Архитектура Документ - Вид

CWinApp – класс инициализации приложения. Основная задача –

разместить все, что нужно, в памяти и организовать цикл обработки сообщений.

CDocTemplate – стандартный шаблон, объединяющий основные компоненты приложения, каждый из которых предназначен для обработки своей группы сообщений.
CFrameWnd – класс, определяющий основное окно приложения.
CDocument – класс, представляющий в себе всю совокупность данных, для переработки которых предназначено приложение.
CView – класс, предназначенный для проведения демонстрации пользовательских данных приложения

Слайд 24

Создание приложения MFC Application

Создание приложения MFC Application

Слайд 25

Создание приложения MFC Application

Создание приложения MFC Application

Слайд 26

Создание приложения MFC Application

Создание приложения MFC Application

Слайд 27

Создание приложения MFC Application

Создание приложения MFC Application

Слайд 28

Создание приложения MFC Application БИБЛИОТЕКА MICROSOFT FOUNDATION CLASS: обзор проекта MFC1

Создание приложения MFC Application

БИБЛИОТЕКА MICROSOFT FOUNDATION CLASS: обзор проекта MFC1
==============================
Данное

приложение MFC1 создано мастером приложений. Это приложение показывает основы использования фундаментальных классов Microsoft, а также является отправной точкой для создания конкретного приложения. В этом файле содержится краткое описание содержимого файлов, составляющих конкретное приложение MFC1.
MFC1.vcproj
Это основной файл проекта для проектов VC++, создаваемых с помощью мастера приложений. В нем содержатся сведения о версии Visual C++, создавшей файл, а также сведения о платформах, конфигурациях и свойствах проекта, выбранных с помощью мастера приложений.
Слайд 29

Создание приложения MFC Application MFC1.h Это основной файл заголовка для приложения.

Создание приложения MFC Application

MFC1.h
Это основной файл заголовка для приложения. В

него включены другие определенные для проекта заголовки (в том числе Resource.h) и объявлен класс приложения CMFC1App.
MFC1.cpp
Это основной исходный файл приложения, содержащий класс приложения CMFC1App.
MFC1.rc
Это список всех ресурсов Microsoft Windows, используе-мых программой. В него включены значки, рисунки и кур-соры, хранящиеся в подкаталоге RES. Этот файл можно редактировать непосредственно в Microsoft Visual C++. Ресурсы конкретного проекта находятся в 1049.
res\MFC1.ico
Это файл значка, используемого в качестве значка приложения. Этот значок включен посредством основного файла ресурсов MFC1.rc.
Слайд 30

Создание приложения MFC Application res\MFC1.rc2 Этот файл содержит ресурсы, не редактируемые

Создание приложения MFC Application

res\MFC1.rc2
Этот файл содержит ресурсы, не редактируемые в

Microsoft Visual C++. Все ресурсы, не редактируемые редактором ресурсов, следует поместить в этот файл.
////////////////////////////////////////////////////////////////////////
Для окна основной рамки:
В проект включается стандартный интерфейс MFC.
MainFrm.h, MainFrm.cpp
Эти файлы содержат класс рамок CMainFrame, получен-ный из CMDIFrameWnd и управляющий всеми свойствами рамок MDI.
/////////////////////////////////////////////////////////////////////////
Для окна дочерней рамки:
ChildFrm.h, ChildFrm.cpp
Эти файлы определяют и реализуют класс CChildFrame,
поддерживающий дочерние окна в MDI-приложении.
Слайд 31

Создание приложения MFC Application ///////////////////////////////////////////////////////////////////////// Мастер приложений создает один тип документов

Создание приложения MFC Application

/////////////////////////////////////////////////////////////////////////
Мастер приложений создает один тип документов и одно

представление:
MFC1Doc.h, MFC1Doc.cpp — документ
Эти файлы содержат класс CMFC1Doc. Измените эти файлы, чтобы добавить особые данные документа и реализовать сохранение и загрузку файлов (с помощью CMFC1Doc::Serialize).
MFC1View.h, MFC1View.cpp — представление документа Эти
файлы содержат класс CMFC1View.
Объекты CMFC1View используются для представления объектов CMFC1Doc.
res\MFC1Doc.ico
Это файл значка, который используется в качестве значка для дочерних окон MDI для класса CMFC1Doc. Этот значок включен с помощью главного файла ресурсов MFC1.rc.
Слайд 32

Создание приложения MFC Application ///////////////////////////////////////////////////////////////////////// Другие возможности: Элементы ActiveX Приложение включает

Создание приложения MFC Application

/////////////////////////////////////////////////////////////////////////
Другие возможности:
Элементы ActiveX
Приложение включает поддержку использования элементов

ActiveX.
Поддержка функций печати и предварительного просмотра
Мастер приложений создает код для обработки команд печати, настройки печати и предварительного просмотра с помощью вызова функций-членов класса CView из библиотеки MFC.
/////////////////////////////////////////////////////////////////////////
Прочие стандартные файлы:
StdAfx.h, StdAfx.cpp
Эти файлы используются для построения файла предкомпилированного заголовка (PCH) с именем MFC1.pch и файла предкомпилированных типов с именем StdAfx.obj.