
- •Омск 2007
- •Введение
- •1. Этапы разработки программного обеспечения
- •2.1 Операции
- •Приоритеты операций
- •2.2 Операторы языка Си
- •9. Оператор break;
- •10. Оператор continue;
- •2.3 Перегрузка функций
- •2.4 Перегрузка операций
- •2.5 Шаблоны функций
- •2.6 Возврат из функции нескольких значений
- •2.7 Стандартные типы данных
- •Типы данных
- •2.8 Типы, определяемые пользователем
- •2.8.1 Структуры
- •2.8.2 Поля битов
- •2.8.3 Объединения Используются для хранения значений различных типов в одной и той же области памяти, но не одновременно.
- •Пример: а) union u int I; б) struct s int I;
- •2.8.4 Перечисления
- •2.8.5 Переименование типов typedef
- •Объявление typedef применяется:
- •2.9 Файлы
- •2.11 Директивы препроцессора Условная компиляция
- •Оператор defined или знак операции препроцессора
- •Директивы #ifdef и #ifndef
- •Директива #error
- •Директива #line
- •Предопределенные макросы
- •Директива #pragma
- •3. Объектно-ориентированное программирование
- •3.1 Объект
- •3.2 Управление доступом к элементам и функциям класса
- •3.3 Конструкторы и деструкторы
- •Деструктор
- •Конструктор с параметрами
- •3.4 Аргументы функций, задаваемые по умолчанию
- •3.5 Дружественные функции и классы
- •Дружественные классы
- •3.6 Наследование классов
- •3.7 Конструкторы с параметрами при наследовании
- •3.8 Множественное наследование
- •3.10 Полиморфизм
- •Ключевое слово this
- •3.11 Использование виртуальных функций
- •3.12 Виртуальные базовые классы
- •4. Организация выполнения курсовой работы
- •4.1 Этапы выполнения курсовой работы
- •4.2 Требования к пояснительной записке
- •4.3 Задания на курсовое проектирование
- •4.3.1 Проектирование пакетов прикладных программ для предприятий
- •4.3.2 Разработки для учебного процесса
- •4.3.3 Задание на разработку типового проекта - компилятора языка и стекового калькулятора
- •Индивидуальное задание
- •Состав пакета
- •Варианты заданий
- •Библиографический список
- •Курсовой проект (работа)
- •Пример оформления листа задания к курсовому проектированию
- •Задание
- •Студент Азанова Александра Александровна группа в-515
- •Аннотация
- •Оглавление
- •Структура слайд-доклада
- •Структура-компонент проекта
3. Объектно-ориентированное программирование
3.1 Объект
Наиболее важное понятие ООП – это объект. Объект – это логическая единица, которая содержит данные и правила (методы) обработки этих данных.
В С++ в качестве правил выступают функции, обрабатывающие эти данные.
Внутри объекта данные и функции могут быть частными или приватными (private), защищенным (protected) и общими (public) [4-10]. Объектно-ориентированные языки характеризуютя абстракцией типов и обладают следующими важнейшими характеристиками:
1) инкапсуляцией;
2) наследованием;
3) полиморфизмом.
Инкапсуляция – это слияние данных и функций, работающих с этими данными, порождающее абстрактные типы данных, определяемые пользователем.
В терминологии С++ эти абстрактные типы данных называются классами. Концепция классов отражает принцип пакетирования: данные и функции, которые манипулируют этими данными, объединяются в единый пакет; устанавливаются специальные правила доступа к элементам пакета (функциям и данным). Максимально изолируются друг от друга интерфейс и реализация, отражающая всю совокупность действий, необходимых для поддержки интерфейса.
Наследование позволяет одним объектам приобретать свойства и атрибуты других объектов, строить иерархию объектов, переходя от более общего к частному, уточняя и конкретизируя объект. Наследование обеспечивает общность интерфейса между базовыми и производными классами. Базовый класс является родителем, а производный – ребенком. Родитель передает все лучшее, что он имеет, а ребенок наследует это лучшее и дополняет его чем-то своим, индивидуальным. Производный класс является более мощным, чем его базовый класс. Использование данного принципа позволяет развивать и совершенствовать программные продукты, используя в них идеи предшествующих программ (например, развитие библиотек классов) без изменения их исходного кода и без повторной компиляции.
Полиморфизм – это метод использования одного и того же имени для выполнения различных действий. Например, + – это сложение для базовых типов языка, а для строк – это переопределение операций.
Другое применение полиморфизма связано с применением так называемых виртуальных функций. При этом использовуется одно и то же имя для выражения разных действий в базовом и производных классах. Полиморфизм в С++ поддерживается как во время компиляции, так и во время выполнения программы.
Одним из главных понятий языка является понятие класса. Класс – это расширенное понятие структуры в языке С. Он позволяет создавать типы и определять функции, которые задают поведение типа. Каждый представитель класса называется объектом.
Определение класса напоминает определение структуры за исключением следующего:
– класс обычно содержит одну или несколько спецификаций доступа:
private, protected, public;
– вместо ключевого слова struct может применяться ключевое слово
class или union;
– класс обычно включает в себя функции (функции – элементы или методы)
наряду с элементами-данными.
– обычно в классе имеются некоторые специальные функции, такие, как конструктор и деструктор. Конструктор имеет то же имя, что и класс. Деструктор имеет то же имя, но ему предшествует префикс-тильда «~».
Примеры объявления классов
1) Определение класса Rect совпадает с определением структуры
struct Rect //прямоугольник
{
int x1; // Элементы-данные Rect
int y1;
int x2;
int y2;
}
2) Класс Point содержит как элементы-данные, так и элементы-функции, а также использует спецификаторы доступа.
struct Point // точка
{
private: // Спецификатор частного доступа
int x; // Элементы данных класса типа «Point»
int y; // Члены-данные
public: // Спецификатор общего доступа
int GetX(); // Элементы-функции класса
int GetY();
void SetX(int);
void SetY(int);
}
3) Класс Line
class Line
{
Point pt1; // точка 1 // Элементы-данные
Point pt2; // точка 2
int width; // толщина
public: // Спецификатор общего доступа
Line(int _x, int _y); // Функция-элемент: конструктор!
~Line(); // Функция-элемент: деструктор!
}