Лабораторная работа № 4. Класс "Динамическая строка" и перегрузка операций - Технология разработки программного обеспечения систем управления
Объект ориентированный класс программирование
Цель Работы - изучить методику создания одномерных динамических символьных массивов при помощи конструкторов с захватом динамической памяти и деструкторов для их уничтожения, а также способа работы со строковыми объектами, познакомиться с механизмом перегрузки операций.
- Теоретические сведения
Для представления символьной (текстовой) информации можно использовать символы, символьные переменные и символьные константы.
Символьная константа представляется последовательностью символов, заключенной в кавычки: "Начало строки ". В С++ нет отдельного типа для строк. Массив символов - это и есть строка. Количество элементов в таком массиве на один элемент больше, чем изображение строки, т. к. в конец строки добавлен '' (нулевой байт).
Присвоить значение массиву символов с помощью обычного оператора присваивания нельзя. Поместить строку в массив можно либо при вводе, либо с помощью инициализации:
Char s[] = "ABCDEF".
Для работы со строками существует специальная библиотека string. h. Примеры функций для работы со строками из библиотеки string. h приведены в таблице 2.
Таблица 2 - Функции работы со строками
Функция |
Прототип и краткое описание функции |
Strcmp |
Int strcmp(const char *str1, const char *str2); Сравнивает строки str1 и str2. Если str1 < str2, то результат отрицательный, если str1 = str2, то результат равен 0, если str1> str2, то результат положительный. |
Strcpy |
Char* strcpy(char*s1, const char *s2); Копирует байты из строки s1 в строку s2. |
Strdup |
Char *strdup (const char *str); Выделяет память и переносит в нее копию строки str. |
Strlen |
Unsigned strlen (const char *str); Вычисляет длину строки str. |
Strncat |
Char *strncat(char *s1, const char *s2, int kol); Приписывает kol символов строки s1 к строке s2. |
Strncpy |
Char *strncpy(char *s1, const char *s2, int kol); Копирует kol символов строки s1 в строку s2. |
Strnset |
Char *strnset(char *str, int c, int kol); Заменяет первые kol символов строки s1 символом с. |
Строки при передаче в функцию в качестве фактических параметров могут быть определены либо как одномерные массивы типа char[], либо как указатели типа char*. В отличие от обычных массивов, в этом случае нет необходимости явно указывать длину строки.
Функции преобразования строки S в число:
Целое: int Atoi(S);
Длинное целое: long Atol(S);
Действительное: double atof(S),при ошибке возвращает значение 0.
Функции преобразования числа V в строку S:
Целое: Itoa(int V, char S, int kod);
Длинное целое: Ltoa(long V, char S, int kod); 2<=kod<=36, для отрицательных чисел kod=10.
Перегрузка Операций
Для перегрузки операции для класса в С++ используется следующий синтаксис:
<Тип> operator <операция>(<входные параметры>)
{
<операторы>;
}
Где < Тип > - тип, возвращаемый функцией;
Operator - ключевое слово;
< операция > - перегружаемая операция.
В языке С++ имеются следующие ограничения на перегрузку операций:
- - С++ не различает префиксную и постфиксную формы ++ и - -; - переопределяемая операция должна присутствовать в языке (например, нельзя определить операцию с символом #); - нельзя переопределить операторы, заданные следующими символами: * :: ? ; - переопределенные операции сохраняют свой изначальный приоритет.
Наличие в классе конструктора String:: String(String&;) и операторов присваивания позволяет защитить объекты класса от побитового копирования.
Файловые Потоки. Классы файловых потоков:
Ifstream - файл ввода, производный от istream,
Ofstream - файл вывода, производный от ostream,
Fstream - файл ввода-вывода, производный от iostream.
Флаги Режимов Работы С Файлом:
Enum ios::open_mode
{
In = 0x01, // Открыть файл только для чтения
Out = 0x02, // Открыть файл только для записи
Ate = 0x04, // При открытии позиционироваться в конец файла
App = 0x08, // Открыть существующий для дополнения
Trunc = 0x10, // Создание нового файла взамен существующего
Nocreate=0x20, // Не создавать новый файл при его отсутствии
Noreplace=0x40, // Не создавать новый файл, если он существует
Binary= 0x80 // Двоичный файл ("прозрачный" ввод-вывод без // преобразования символов конца строки)
}
Конструкторы объектов (для классов ifstream, ofstream, fstream) и функции открытия/закрытия файлов:
Ifstream(); // Без открытия файлов
Ifstream( // С открытием файла в заданном
Char *name, // режиме imode
Int imode=ios::in,
Int prot=filebuf::openprot);
Ifstream(int fd); // С присоединением файла с дескриптором fd
Ifstream (// То же, с явно заданным буфером
Int fd,
Char *buf, int sz);
Void ifstream::open
Char *name, // Открытие файла в заданном режиме
Int imode=ios::in,
Int prot=filebuf::openprot);
Void close(); // Закрыть файл
Void setbuf(
Char *p, int sz);// Установить буфер потока
Int fd(); // Дескриптор открытого в потоке файла
Int is_rtl_open(); // 1 - файл открыт в потоке
Унаследованные переопределения операторов позволяют проверять наличие ошибок в потоках в виде:
Fstream ss;
If (ss) ... или if (!ss).
- Задание К Лабораторной Работе
Общая постановка. Пользовательский класс String должен содержать необходимые элементы-данные, которые создаются в динамической области памяти.
Конструктор для создания строк: String (...);
Деструктор: ~String();
Метод ввода исходной строки: Set();
Метод печати: void print(...);
Код методов - вне пространства определения класса. Программа иллюстрирует прямой и косвенный способы обращения к методам.
Ввести с клавиатуры строку символов S1. Признак окончания ввода строки - нажатие клавиши "Ввод". Программа должна содержать перегруженную операцию "=", использование которой скопирует S1 в S2 .
Исходную и преобразованную строки вывести в файл.
- - Варианты заданий 1. Если длина L нечетная, то удаляется символ, стоящий посередине строки. 2. Если длина L четная, то удаляются 2 первых и 2 последних символа. 3. Если длина L кратна 2, то удаляются все числа, которые делятся на 2. 4. Если длина L кратна 3, то удаляются все числа, делящиеся на 3. 5. Если длина L >10, то удаляются все цифры. 6. Если длина L >15, то удаляются все a..z. 7. Если длина L=10, то удаляются все A..Z. 8. Если длина L кратна 4, то первая часть строки меняется местами со
Второй.
9. Если длина L кратна 5, то подсчитывается количество скобок всех
Видов.
- 10. Если длина L >5, то выделяется подстрока до первого пробела. 11. Если длина L >6, то выделяется подстрока { } скобках. 12. Если длина L >10, то удаляется подстрока в [] скобках. 13. Если длина L >12, то удаляется подстрока до первой открывающейся скобки. 14. Если длина L кратна 4, то выделяется подстрока после последнего
Пробела.
- 15. Если длина L >5, то удаляются все точки. 16. Если длина L четная, то выделяется подстрока до первого пробела. 17. Если длина L четная, то удаляется подстрока до первого пробела. 18. Если длина L четная, то выделяется подстрока со второго пробела. 19. Если длина L нечетная, то выделяется подстрока после первого пробела. 20. Если длина L нечетная, то удаляется подстрока со второго пробела. 21. Если длина L кратна 3, то удаляется каждый 3-й символ. 22. Если длина L четная, то удаляется каждый 2-й символ. 23. Если длина L нечетная, то удалить средние 3 символа. 24. Если длина L четная, то выделяется подстрока до последнего пробела. 25. Если длина L нечетная, то выделяется подстрока от последней цифры. 26. Если длина L=15, то удаляются все символы кроме A - Z. 27. Если длина L делится на 5, то удаляется все символы кроме a - z. 28. Если длина L четная и >=10, то удаляются все пробелы. 29. Если длина L нечетная и 30. Если длина L >5 и - Контрольные вопросы 1. Как объявить динамическую строку в С++? 2. Какие вы знаете функции работы со строками? 3. Как определяются строки при передаче в функцию в качестве фактических параметров? 4. Поясните механизм перегрузки операций для объектов данного класса.
Похожие статьи
-
Цель Работы - научиться использовать элемент управления ListBox а также основные методы класса СListBox. Использование возможности контроля правильности...
-
Цель Работы - изучить приемы создания и использования шаблонов классов. - Теоретические сведения Достаточно часто встречаются классы, объекты которых...
-
Цель Работы - изучить основные способы работы с пользовательским типом данных "класс", его объектами, методами и способы доступа к ним. - Теоретические...
-
Цель Работы - использовать принципы архитектуры "Документ-Представление" для выборки и сохранения данных в файлах, а также взаимодействия элементов меню,...
-
Цель Работы - изучить принципы работы элементов управления Progress и Slider. Получить навыки по самостоятельному созданию модальных диалоговых окон. -...
-
Цель Работы - изучить одну из базовых концепций ООП, наследование классов в С++, заключающуюся в построении цепочек классов, связанных иерархически,...
-
Цель Работы - научиться использовать операции динамического выделения и освобождения памяти на примере работы с одномерными и двумерными массивами, а...
-
Введение - Технология разработки программного обеспечения систем управления
С++ является языком объектно-ориентированного программирования (ООП). Объект - абстрактная сущность, наделенная характеристиками объектов реального мира....
-
Постановка задачи на разработку программного обеспечения Для того чтобы предлагаемая схема была интегрирована в САПР, который не имеет функции интеграции...
-
В настоящее время систем видеонаблюдения на рынке продается очень много, и обычно бывает очень сложно принять правильное решение, выбрать нужное решение....
-
Проведем сравнительную оценку напряженность процесса эксплуатации системы в процессе работы. Для этого заполним таблицу 7.2, в которой отражается степень...
-
Работа с контентом Контент системы содержит как отдельные медийные составляющие - текст, таблицы, ссылки, графику, так и связанные между собой....
-
Выбор средств реализации информационной системы Названные в параграфе 1.4. настоящей работы задачи могут быть решены тремя типами средств автоматизации:...
-
Для перехода в административный раздел системы необходимо выбрать пункт меню "Файл" > "Администратор", после чего откроется окно, показанное на...
-
Поскольку клиентская часть представляет собой приложение на базе операционной системы Android, то для ее разработки был выбран рекомендуемый...
-
Особенности функционального назначения Разрабатываемый программный продукт - это модуль вебсайт для системы управлением контентом портала с архивом...
-
Установка и системные требования приложения Для установки программы необходимо зайти в папку "Файловый менеджер [Setup]", и запустить файл "setup. exe"....
-
Так как количество выявленных вредных факторов не превышает пяти, то степень напряженности трудового процесса пользователя при работе с программным...
-
Общие сведения о тестировании Данный раздел посвящен проведению тестирования клиентского приложения. Тестирование для серверной части системы не...
-
Data Encryption Standard - созданный в 1975 году и стандартизированный в 1977 году блочный алгоритм симметричного шифрования. Алгоритм Triple DES (3DES)...
-
Структура системы В ходе разработки выпускной квалификационной работы использовались базы данных, созданные в среде MySQL Workbench, и создано клиентское...
-
Лоцман: КБ относится к классу PDM-систем и предназначен для быстрого формирования и поддержания в актуальном состоянии электронного архива...
-
1. Изучение теоретических аспектов использования: MS Word, MS Excel, MS Access, Paint и Photoshop... (ППО) Часть 1 : Руководство по выполнению...
-
Разработка динамических библиотек
Лекция №42. Разработка динамических библиотек Содержание: Создание собственной DLL Вызов функций из DLL Загрузка DLL с неявной компоновкой Загрузка DLL с...
-
В разработке системы принимал участие один инженер-программист. Длительность выполнения работ по проектированию и разработке системы представлена в...
-
В этой главе представлено описание инструментов и методов, использованных при написании кода программы. Инструменты разработки серверной части Для...
-
Основная цель системы ДИСКОР - совершенствование оперативного управления работой железных дорог на основе более эффективного использования пропускной...
-
В данном разделе была разработана функциональная схема работы программного комплекса, которая в общем виде описывает состав комплекса, характер и виды...
-
Алгоритм работы. В результате работы АИС генерируются три xml документа - два со структурой сравниваемых баз данных и один с результатами сравнения. В...
-
Для написания АИС использовались следующие языки программирования, программные средства и библиотеки: - Язык программирования PHP 5.4; -...
-
Ubuntu Mate является операционной системой [11], основанной на Debian GNU/Linux. Установка операционной системы заключается в записи на карту памяти...
-
В течении года от команды разработчиков пришло 6 пакетов, содержащих изменения в ядре программы. Для каждого пакета составлялось в среднем от 1-ого до...
-
В работе использовались следующее программное обеспечение для решения поставленных задач: AutoCAD, ANSYS Workbench, ANSYS Icepak. Система AutoCAD...
-
Введение - Программное обеспечение для пропускной системы на основе технологии NFC
Массовые мероприятия стали неотъемлемой частью современного мира. Для таких мероприятий требуется быстрая организация временного разделенного доступа для...
-
Появление на рынке систем управления электронными документами - EDMS (Electronic Document Management Systems) вызвано стремлением сократить поток...
-
Разработка программного продукта - Автоматизированные системы управления и обработки информации
В большей степени программные продукты не являются монолитом и имеют конструкцию (архитектуру) построения - состав и взаимосвязь программных модулей....
-
При работе над проектом разрабатывались два основных компонента системы: база данных (далее - БД) и интерфейс клиентского приложения. Затем необходимо...
-
В результате проведенной работы были спроектированы и реализованы модули редактора и вебсайта. Были решены поставленные в работе задачи в полном объеме....
-
Заключение - Программное обеспечение для пропускной системы на основе технологии NFC
Обеспечение удобной пропускной системы - важная и актуальная задача. Появление новых технологий, таких как NFC и HCE, позволяет решить эту проблему. В...
-
Наименование системы Программная система управления контентом портала с архивом конструкторской документации. Цели, назначение и область использования...
Лабораторная работа № 4. Класс "Динамическая строка" и перегрузка операций - Технология разработки программного обеспечения систем управления