КАТЕГОРИИ: Архитектура-(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) |
Основы объектно-ориентированного программирования синтаксис основных конструкций
Пример #include <stdio.h> // см. файл Ex02.cpp #include <string.h> int main() { char *str = "(Base_Cost + Profit) * Margin"; char *tkn = "+*()"; char *ptr = str; printf("%s\n", str); // Первый вызов функции ptr = strtok(str, tkn); printf("Лексемы этой строки: %s", ptr); while (ptr) { // Первый аргумент должен быть равен нулю if ((ptr = strtok(0, tkn))!= 0) printf (",%s", ptr); } printf("\n"); return 0; }
В результате выполнения этой программы на экран выводятся следующие строки: (Base_Cost + Profit) * Margin Лексемы этой строки: Base_Cost, Profit, Margin
Рассмотрим пример программы поиска символов и строк. Листинг 7 (List7_7.cpp) содержит исходный текст программы STRING4.CPP. Программа выполняет следующие задачи: · Запрашивает у вас ввод основной строки · Запрашивает строку поиска · Предлагает вам ввести символ поиска · Выводит линейку цифр и основную строку · Выводит номер символа в основной строке, с которого начинается строка поиска * · Выводит номер символа в основной строке, совпавшего с символом поиска.
Объявление базовых классов
В С++ мы имеем возможность объявлять классы, которые инкапсулируют элементы-данные и функции-элементы. Эти функции изменяют и позволяют обращаться к значениям данных-элементов и выполняют другие задачи.
Базовый класс
Базовый класс определяется следующим образом (синтаксис):
class className { private: <закрытые элементы-данные> <закрытые конструкторы> <закрытые функции-элементы> protected: <защищенные элементы-данные> <защищенные конструкторы> <защищенные функции-элементы> public: <открытые элементы-данные> <открытые конструкторы> <открытый деструктор> <открытые функции-элементы> };
Пример 1:
class point { protected: double х; double у; public: point(double xVal, double yVal); double getX(); double getY(); void assign(double xVal, double yVal); point& assign(point &pt); };
Разделы класса
Классы С++ имеют три различных уровня доступа к своим элементам - как к данным, так и к функциям:
- Закрытые (частные) элементы - Защищенные элементы - Открытые элементы
К данным в закрытом разделе имеют доступ только функции-элементы класса. Классам-потомкам запрещен доступ к закрытым данным своих 6азовых классов. К данным в защищенной секции имеют доступ функции-элементы класса и классов-потомков. Данные из открытой секции находятся в области видимости функций-элементов класса, функций-элементов классов-потомков, и вообще доступны кому угодно.
Существуют следующие правила для разделов класса:
1. Разделы могут появляться в любом порядке. 2. Один и тот же раздел можно определять несколько раз. 3. Если не определен ни один раздел, компилятор (по умолчанию) объявляет все элементы закрытыми. 4. Помещать данные-элементы в открытый раздел следует только в том случае, если в этом есть необходимость, например, если это упрощает вашу задачу. Обычно элементы-данные помещаются в защищенный раздел, чтобы к ним имели доступ функции-элементы классов-потомков. 5. Используйте для изменения значений данных и доступа к ним функции-элементы. При использовании функции вы можете осуществлять проверку данных и, если нужно, изменять другие данные. 6. Класс может иметь несколько конструкторов. 7. Класс может иметь только один деструктор, который должен объявляться в открытом разделе класса. 8. Функции-элементы (в том числе конструкторы и деструкторы), состоящие из нескольких операторов, должны определяться вне объявления класса. Определение функции может содержаться в том же файле, в котором определяется класс. Это напоминает порядок работы с обычными функциями: задание прототипа и определение функции.
Конструкторы являются специфическим типом функций-элементов, тип возвращаемого значения для которых не указывается, а имя должно совпадать с именем класса-хозяина. Вызываются они при создании нового представителя класса. Деструктор вызывается для разрушения представителя класса.
При определении функции-элемента вы должны указать ее имя и имя ее класса. Сначала вы должны Сначала необходимо указать имя класса (т.н. квалификатор), а затем, через два двоеточия (::), имя функции. В качестве примера рассмотрим такой класс:
class point { protected: double x; double y; public: point(double xVal, double yVal); double getX(); // другие функции-элементы };
Определения конструктора и функций-элементов должны выглядеть так
point::point (double xVal, double yVal) { // операторы } double point::getX() { // операторы }
После того, как вы объявили класс, вы можете использовать имя класса в качестве спецификатора типа данных при объявлении представителей класса. Синтаксис объявления тот же, что и при объявлении переменной. В листинге 8.1 приведен исходный текст программы RECT.CPP. Программа предлагает вам ввести длину и ширину прямоугольника (в данном примере прямоугольник является объектом). Затем программа выводит значения длины, ширины и площади определенного вами прямоугольника.
Дата добавления: 2014-01-05; Просмотров: 277; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |