
- •Содержание
- •1. Цели и задачи курсовой работы
- •2. Тематика курсовых работ
- •3. Порядок выполнения курсовой работы
- •4. Основные требования к выполнению и оформлению курсовой работы
- •5. Оценка курсовой работы.
- •6. Список рекомендуемой литературы
- •2. Работа с графикой.
- •4. Работа с файлами с помощью mfc(классы cFile, cStdioFile, ... )и стандартный классMfc cFileDialog.
- •5. Использование таймера.
6. Список рекомендуемой литературы
Буч Г. Дж. Объектно-ориентированный анализ и проектирование. – М.: Мир, 1998. – 620с.
Дунаев С.П. Доступ к базам данных. – М.: МИФИ,1999. – 490с.
Ахаян Р.В., Горев А.В. Эффективная работа с СУБД. – Санкт-Петербург: Питер, 1998. – 720с.
Хомоненко А.Д. Основы современных компьютерных технологий. – Санкт-Петербург: КоронаПринт, 1998. – 448с.
Шилдт Г. Самоучитель С++.2–е изд. /Пер. с англ.–СПб.: БХВ –Петербург, 1997.– 512с.
Шилдт Г. Справочник программиста по С/С++.: Пер. с англ.: Учебное пособие. – М.: Издательский дом «Вильямс», 2000. – 448с.
Страуструп Б. Язык программирования С++ (2–ред)./Пер. с англ.–М.: Радио и связь, 1995. – 352с.
Культин Н.Б. С/С++ в задачах и примерах. – СПб.: БХВ- Петербург, 2001. – 288с.
Visual C++ 5.0. Руководство разработчика.: Пер. с англ./ Д. Беннет, С. Маконин, В.В. Мейфилд и др. – К.; М.; СПб.: Диалектика, 1998. – 768с.
Кнут, Дональд. Эрвин. Искусство программирования, том 3. Сортировка и поиск. 2-е изд. : Пер. с англ. : Уч. пос. — М. : Издательский дом "Вильямc" 2000. — 832 с. : ил.
Вирт Н. Алгоритмы + структуры данных = программы: Пер. с англ.–М.: Мир, 1985. – 406 с.
Вирт Н. Алгоритмы и структуры данных: Пер. с англ. – М.: Мир, 1989. – 360с.
ПРИЛОЖЕНИЕ А
(справочное)
1. Классы (язык C++)
Важнейшие концепции объектно-ориентированного программирования (инкапсуляция, наследование, полиморфизм) отражены в новом типе данных – class, который был разработан в С++,.
Классы служат для того, чтобы свойства (данные-члены) и методы для обработки этих свойств (функции-члены) объединить в один тип данных. Классы могут предоставить различные права доступа к отдельным своим членам, они могут создавать иерархии классов посредством наследования.
Объектно-ориентированное программирование характеризуется тремя основными свойствами:
1. Инкапсуляция – это комбинирование записей с процедурами и функциями, манипулирующими полями этих записей. Объединение в одном классе свойств и методов называется инкапсуляцией. С данным термином тесно связаны понятия сокрытия информации и хорошо разработанного интерфейса.
Классы должны общаться к своим свойствам преимущественно через свои методы. Эти методы образуют интерфейс между классом и программой. После выполнения описания класса для программиста важно, чтобы он мог использовать класс только через его интерфейс. О корректной обработке вызова функции и корректном поведении класса заботится сам класс.
2. Наследование. Определение класса и его дальнейшее использование для построения иерархии порожденных классов с возможностью для каждого порожденного класса, относящегося к иерархии, доступа к коду и данным всех порождающих классов.
3. Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии классов, причем каждый класс иерархии выполняет это действие способом, именно ему подходящим.
Объявление класса:
Тип_класса имя_класса [: базовые классы]
{ список_членов_класса
} ;
Базовые классы — список классов, разделяемых запятыми, элементы которых наследуются определяемым (производным) классом.
Свойства класса
Классы содержат собственные поля данных. Если образуется объект класса, то в его распоряжение предоставляется память для свойств (данных-членов). Каждый объект, следовательно, имеет собственную копию свойств. Одновременно создание объекта используется для того, чтобы инициализировать данные-члены. Эту задачу берет на себя конструктор класса. Классы задают свою собственную область определения, т.е. свойства уничтожаются вместе с объектом, эти действия выполняет деструктор класса.
Свойства класса:
могут быть описаны с атрибутом доступа public, protected или private;
могут быть описаны как static; статические члены класса не копируются при создании объекта, а остаются в единственном экземпляре для всех объектов класса; статические члены класса должны определяться где-либо в программе, но не в рамках описания класса, и к ним можно обращаться не только через объекты, но и через имена классов:
имя_класса:: static_член_класса;
могут быть описаны как const; члены класса, которые описываются как const, могут быть инициализированы только один раз и после этого больше не могут быть изменены (следовательно, они должны инициализироваться конструктором);
описание класса заканчивается точкой с запятой.
Классы, описываемые в рамках определения какой-либо функции, называются локальными.
Внутри класса разрешается определять типы, следовательно, один класс может быть описан внутри другого.
Методы класса
Методы класса:
имеют доступ ко всем свойствам класса;
представляют единственную возможность доступа к private-свойствам своего класса;
могут быть описаны как public, protected или private;
могут быть описаны как static;
могут быть описаны как const; методы класса, описанные как const, не могут изменять значения свойств и могут возвращать указатель или ссылку только на свойства класса, описанные как const. Они являются единственными методами класса, которые могут вызываться для свойства-константы;
методы могут быть определены как внутри класса, так и за его рамками.
Атрибуты доступа
Атрибуты доступа public, private и protected регулируют возможность доступа к членам класса изнутри или извне класса (табл.1). Следовательно, они являются важным инструментом инкапсуляции. Прежде всего, с помощью этих атрибутов доступ к отдельным членам класса может быть ограничен.
Таблица 1
Атрибуты доступа к членам класса
Атрибут доступа |
Значение |
public |
Член класса может использоваться любым методом, который является членом данного или производного класса. Доступ извне осуществляется через имя объекта и оператор расширения области видимости: имя_о6ъекта.имя_члена_класса ссылка_на_объект.имя_члена_класса указатель_на_объект->имя_члена_класса |
private |
Член класса может использоваться только методами данного класса и функциями-«друзьями» того класса, в котором он описан |
protected |
To же, что и private. Но дополнительно член класса с данным атрибутом доступа может использоваться методами и функциями-«друзьями» классов, производных от описанного класса. Если нет производных классов, то private и protected идентичны. |
Специальные методы класса
Конструктор выделяет память для объекта класса и инициализирует данные-члены класса. Он вызывается автоматически для каждого объекта. Для того чтобы каждый класс имел в своем распоряжении конструктор, компилятор классов, кроме явно объявленного конструктора, предоставляет конструктор по умолчанию. Создание объекта регулируется путем описания одного или нескольких собственных конструкторов.
Для конструкторов существует несколько важных правил:
Имя конструктора совпадает с именем его класса;
Конструктор не имеет никакого возвращаемого значения (даже void);
Классу без конструктора предоставляется конструктор по умолчанию;
Если конструктор описан явно, то конструктор по умолчанию не генерируется;
Конструкторы могут быть перегружены;
Перегрузка чаще всего используется для передачи конструктору аргументов, предназначенных для инициализации данных-членов класса;
Конструкторы не наследуются.
Деструкторы вызываются автоматически, если объекты классов становятся недействительными (например, при выходе за область определения или при вызове оператора delete для указателя на объект класса). Деструктор уничтожает объект и освобождает зарезервированную память.
Для деструкторов действительны правила, аналогичные правилам для конструкторов:
Имя деструктора также совпадает с именем его класса, но предваряется символом «~» (тильдой):
~имя_класса()
Деструктор не имеет никакого возвращаемого значения (даже void);
Деструктор не может быть описан с ключевым словом static и const;
Если в классе деструктор явно не описан, то компилятор генерирует деструктор по умолчанию;
Деструктор не наследуется;
Указатель на деструктор не может быть определен.
Деструкторы отличаются от конструкторов следующими особенностями:
Деструкторам не могут передаваться аргументы, следовательно: деструкторы могут переопределяться, но не перегружаться, деструкторы могут описываться как virtual, деструкторы классов, производных от базовых классов, имеющих виртуальные деструкторы, автоматически становятся виртуальными;
Деструкторы могут вызываться явно;
Деструктор в некоторых случаях должен быть обязательно задан явно (например, если область памяти выделена с помощью оператора new).
Пример объявления класса.
Пример объявления класса СVideoRecorder:
class VideoRecorder
{
//свойства
char* producer;
int* resolution;
bool fast_shooting, longplay, two_canal;
public:
//методы
void turn_on()
{//операторы}
void play()
{//операторы}
void record()
{//операторы}
void play_on_fast_shooting()
{//операторы}
void turn_off()
{//операторы}
};
Имея, класс СVideoRecorder, создадим объект данного класса ту_rеcorder и обратимся к его функциям в программе:
СVideoRecorder mу_rеcorder; // создали объект
my_recorder.turn on(); // вызвали соответствующие функции
my_recorder.play_on_fast shooting();
my_recorder.turn_off();