Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лекция № 1 от 11.02.2005

Проект приложения

Каркас приложения

Архитектура приложения

 

У всех Windows-приложений существует фиксированная структура, определяемая функцией WinMain. Структура приложения, построенного из объектов классов библиотеки MFC, является еще более определенной.

Приложение состоит из объекта theApp, функции WinMain и некоторого количества других объектов. Сердцевина приложения – объект theApp – отвечает за создание всех остальных объектов и обработку очереди сообщений. Объект theApp является глобальным и создается еще до начала работы функции WinMain. Работа функции WinMain заключается в последовательном вызове двух методов объекта theApp: InitInstance и Run. В терминах сообщений можно сказать, WinMain посылает объекту theApp сообщение InitInstance, которое приводит в действие метод InitInstance.

Получив сообщение InitInstance, theApp создает внутренние объекты приложения. Процесс создания выглядит как последовательное порождение одних объектов другими. Набор объектов, порождаемых в начале этой цепочки, определен структурой MFC практически однозначно - это главная рамка, шаблон, документ, облик. Их роли в работе приложения будут обсуждаться позже.

Следующее сообщение, получаемое theApp, – Run – приводит в действие метод Run. Объект theApp циклически выбирает сообщения из очереди и инициирует обработку сообщений объектами приложения.

Некоторые объекты имеют графический образ на экране, с которым может взаимодействовать пользователь. Эти интерфейсные объекты обычно связаны с Windows-окном. Именно им объект, прежде всего, распределяет сообщения через механизм Windows-окон и функцию Dispatch.

Когда пользователь выбирает команду меню окна главной рамки, то возникают командные сообщения. Они отправляются сначала объектом theApp, а затем обходят по специальному маршруту целый ряд объектов, среди которых первыми являются документ и облик, информируя их о пришедшей от пользователя команде.

При работе приложения возникают и обычные вызовы одними объектами методов других объектов. В объектно-ориентированной терминологии такие вызовы могут называться сообщениями. В Visual C++ некоторым методам приписан именно этот статус (например, методу OnDraw).

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

 

 

Наследование – одна из фундаментальных идей объектно-ориентированного программирования. Именно этот механизм наследования позволяет программисту дополнять и переопределять поведение базового класса, не вторгаясь в библиотеку MFC, которая остается неизменной. Все изменения делаются в собственном производном классе. Именно в этом и заключается работа программиста.

Объекты, из которых состоит приложение, являются объектами классов, производных от классов библиотеки MFC. Разработка приложения состоит в том, что программист берет из библиотеки MFC классы CWinApp, CFrameWnd, CDocument, CView и т.д. и строит производные классы. Приложение создается как совокупность объектов этих производных классов. Каждый объект несет в себе как наследуемые черты, определяемые базовыми классами, так и новые черты, добавленные программистом. Наследуемые черты определяют общую схему поведения, свойственную таким приложениям. Новые же черты позволяют реализовать специфические особенности поведения приложения, необходимые для решения стоящей перед ним задачи.

При определении производного класса программист может:

- переопределить некоторые методы базового класса, причем те методы, что не были переопределены, будут наследоваться в том виде, в каком они существуют в базовом классе;

- добавить новые методы;

- добавить новые переменные.

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

Если метод базового класса объявлен виртуальным и разработчик переопределил его в производном классе, это значит, что при вызове данного метода в некоторой полиморфной функции базового класса в момент исполнения будет вызван метод производного класса, и следовательно, каркас вызывает метод, определенный программистом. Точнее говоря, обращение к этому методу должно производиться через ссылку на производный объект либо через объект, являющийся формальным параметром и получающий при вызове в качестве своего значения объект производного класса. Когда вызывается виртуальный метод М1, переопределенный разработчиком то, согласно терминологии Visual C++, каркас посылает сообщение М1 объекту производного класса, а метод М1 этого объекта обрабатывает это сообщение. Если сообщение М1 послано объекту производного класса, а обработчик этого сообщения не задан программистом, объект наследует метод М1 ближайшего родительского класса, в котором определен этот метод. Если же обработчик такого сообщения создан программистом, он автоматически отменяет действия, предусмотренные родительским классом в отсутствие этого обработчика.

 

 

О принципах устройства приложения рассказывалось выше. Теперь рассмотрим, как оно создается с помощью Visual C++. Сначала разберем одно важное понятие – проект. До сих пор приложение рассматривалось только как совокупность объектов базовых и производных классов. Но для обеспечения работы приложения требуется нечто большее – наряду с описанием классов необходимо описание ресурсов, связанных с приложением, нужна справочная система и т.п. Термин "проект" как раз и используется, когда имеется в виду такой, более общий взгляд на приложение.

В среде Visual C++ можно строить различные типы проектов. Такие проекты после их создания можно компилировать и запускать на исполнение. Фирма Microsoft разработала специальный инструментарий, облегчающий и ускоряющий создание проектов в среде Visual C++. Например, мастер MFC AppWizard (exe) позволяет создать проект Windows-приложения, который имеет однодокументный, многодокументный или диалоговый интерфейс и использует библиотеку MFC.

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

 

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

 

1. Простое открытое наследование.

2. Конструкторы и деструкторы при наследовании.

3. Поля и методы при наследовании.

4. Вложенные классы и наследование.

5. Закрытое наследование.

6. Виртуальные функции.

7. Введение в Visual C++.

8. Основы программирования под Windows.

9. Типы данных в Windows.

 


ЗАКЛЮЧЕНИЕ

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

В конспекте лекций рассмотрены основные подходы и принципы профессионального создания программного обеспечения. В качестве языка программирования высокого уровня рассматривается язык С++.

Язык программирования С++ является универсальным языком программирования высокого уровня, наиболее широко распространенным и часто используемым языком программирования в мире. Это первое знакомство студентов не с академическим языком, созданным для изучения основ программирования, а с языком промышленной разработки, на котором с одинаковым успехом может быть создано как прикладное, так и системное программное обеспечение.

Данный конспект лекций знакомит студентов с основными положениями языка программирования С++ и некоторыми прикладными задачами его практического использования.

Дальнейшее изучение языка программирования С++ возможно при самостоятельном изучении литературы, приведенной в библиографическом списке.


Список Литературы

 

1. Страуструп, Б. Язык программирования C++: Специальное издание / Б. Страуструп. – М.: Бином, 2005. – 1104 с.

2. Франка, П. C++: Учебный курс / П. Франка. - Сб.П.: Питер, 2004. – 528 с.

3. Фридман, А.Л. Язык программирования Си++: Курс лекций / А.Л. Фридман – М.: Интернет-университет информационных технологий, 2003.

4. Глушаков, С.В. Программирование на Visual C++ / С.В. Глушаков. – М.: АСТ, 2003. – 726 с.

5. Шилдт, Г. Полный справочник по С++ / Г. Шилдт. - 4-е изд., пер. с англ. – М.: Издательский дом «Вильямс», 2006. – 800 с.

6. Лафоре, Р. Объектно-ориентированное программирование в С++, / Р. Лафоре. Классика Computer Science. - 4-е изд. – СПб.: Питер, 2006. – 928 с.

7. C/C++. Структурное программирование: Практикум / Т.А. Павловская, Ю.А. Щупак. – СПб.: Питер, 2003. – 240 с.

8. Павловская Т.А., Щупак Ю.А. C++. Объектно-ориентированное программирование: Практикум. – СПб.: Питер, 2006. – 265 с.

9. Лаптев В. В., Морозов А. В., Бокова А.В. C++. Объектно-ориентированное программирование. Задачи и упражнения. – СПб.: Питер, 2007. – 288 с.

10. Программирование на языке С для AVR и PIC микроконтроллеров./ Сост. Ю.А. Шпак – К.: “МК-Пресс”, 2006. – 400 с.

<== предыдущая лекция | следующая лекция ==>
 | Средства измерения и их основные элементы.
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 240; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.021 сек.