Разработка текстового редактора в С++ Builder

Автор: Пользователь скрыл имя, 21 Декабря 2012 в 11:31, курсовая работа

Описание работы

В С++ некоторые объекты являются частью самого языка. Но в целом задача создания новых объектов ложится на пользователя. В C++Builder имеется множество типов объектов, но реальное использование языка требует создания новых типов. Эффективность ООП проявляется только при создании и применении групп связанных между собой объектов. Такие группы называют иерархиями классов. Развитие этих иерархий классов является основой деятельности в ООП.

Содержание

Введение……………………………………………………….............................3 1История языка C++………………………........................................................5
1.1 Стандартизация языка…………….....................................................7
1.2 История названия……………………….............................................8
1.3 Достоинства…………………………………………...........................8
2 C++ Builder…………………………………………..........................................12
2.1 Интегрированная Среда Разработки..............................................13
3 Системные диалоги......................................................................................14
3.1 Компоненты закладки Dialog..........................................................14
3.2 Диалоги открытия и сохранения файлов ……….………................16
3.3 Диалог выбора шрифта…………....................................................17
3.4 Диалоги печати и установки принтера.............................................20
4 Реализация программы в среде «С++ Builder 6»..........................................23
Заключение………………………………………..……………………………..30
Библиографический список…..............................................................................31

Работа содержит 1 файл

KURSOVIKSE.docx

— 108.66 Кб (Скачать)

МИНИСТЕРСТВО  ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального  образования

«Кубанский государственный университет»

Филиал в  г. Новороссийске

Кафедра информатики и математики

 

Допустить к  защите

«_______»______________2012  г.

Научный руководитель – 

Кандидат  физико-математических наук

С.В. Дьяченко ________________

 

КУРСОВАЯ  РАБОТА

 

Разработка  текстового редактора в С++ Builder

 

 

 

Работу выполнил: ______________  Гриценко С.С.

Филиал ФГБОУ ВПО «Куб ГУ»  в г. Новороссийске

Специальность     010501.65 «ПМиИ» 3 курс ОФО

 

Нормоконтролер   ______________  специалист по УМР Данилова Е.А.

 

 

 

 

 

 

Новороссийск 2012

 

 

СОДЕРЖАНИЕ

 

Введение……………………………………………………….............................3 1История языка C++………………………........................................................5

    1. Стандартизация языка…………….....................................................7
    2. История названия……………………….............................................8
    3. Достоинства…………………………………………...........................8

2 C++ Builder…………………………………………..........................................12

           2.1 Интегрированная Среда Разработки..............................................13

3 Системные диалоги......................................................................................14

      3.1 Компоненты закладки Dialog..........................................................14

      3.2 Диалоги открытия и сохранения файлов ……….………................16

      3.3 Диалог выбора шрифта…………....................................................17

      3.4 Диалоги печати и установки  принтера.............................................20

4 Реализация программы в среде «С++ Builder 6»..........................................23

Заключение………………………………………..……………………………..30

Библиографический список…..............................................................................31

 

 

 

 

 

 

 

 

 

 

 

 

                                       

 

 

ВВЕДЕНИЕ

 

C++Builder является объектно-ориентированным языком программирования и на примере создания текстового редактора я хочу продемонстрировать всю мощь и быстроту визуального, объектно-ориентированного программирования. Программа должна обеспечивать ввод и редактирование текста в окне представления и отображать полосы прокрутки. Меню программы должно содержать команды печати, команды вырезания, копирования и вставки текста, а так же команды открытия и сохранения файлов, а так же соответствующие пункты меню «Файл», «Правка», «Шрифт». Меню «Файл» должно содержать 5 пунктов: «Открыть файл», «Сохранить файл», «Установка принтера», «Печать», «Выход». Меню «Правка» должно содержать 4 пункта, такие как: «Копировать», «Вставить», «Вырезать», «Удалить». И пункт меню «Шрифт», который содержит в себе один подпункт «Настройка шрифта».

Несколько лет назад  исследователи заметили, что программисты в течение определенного времени  пишут и отлаживают  приблизительно одинаковый по объему код, независимо от используемого языка программирования. Объем работы примерно тот же, но результаты разные. Написание 100 строк  на С требует столько же затрат, сколько и 100 строк кода на ассемблере, но возможности кода на С гораздо шире. Поняв это, исследователи начали разрабатывать языки высокого уровня, которые увеличивали бы потенциал отдельного программиста, сокращая тем самым строки и стоимость разработки проектов.

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

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

В С++ некоторые объекты являются частью самого языка. Но в целом задача создания новых объектов ложится на пользователя. В C++Builder имеется множество типов объектов, но реальное использование языка требует создания новых типов. Эффективность ООП проявляется только при создании и применении групп связанных между собой объектов. Такие группы называют иерархиями классов. Развитие этих иерархий классов является основой деятельности в ООП.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 История языка C++

 

Язык возник в начале 1980-х годов, когда сотрудник фирмы Bell Laboratories Бьёрн Страуструп придумал ряд усовершенствований к языку C под собственные нужды. До начала официальной стандартизации язык развивался в основном силами Страуструпа в ответ на запросы программистского сообщества. В 1998 году был ратифицирован международный стандарт языка C++: ISO/IEC 14882:1998 «Standard for the C++ Programming Language»; после принятия технических исправлений к стандарту в 2003 году — нынешняя версия этого стандарта — ISO/IEC 14882:2003.

Ранние версии языка, известные  под именем «C с классами», начали появляться с 1980 года. Идея создания нового языка берёт начало от опыта программирования Страуструпа для диссертации. Он обнаружил, что язык моделирования Simula имеет такие возможности, которые были бы очень полезны для разработки большого программного обеспечения, но работает слишком медленно. В то же время язык BCPL достаточно быстр, но слишком близок к языкам низкого уровня и не подходит для разработки большого программного обеспечения. Страуструп начал работать в Bell Labs над задачами теории очередей (в приложении к моделированию телефонных вызовов). Попытки применения существующих в то время языков моделирования оказались неэффективными. Вспоминая опыт своей диссертации, Страуструп решил дополнить язык C (преемник BCPL) возможностями, имеющимися в языке Симула. Язык C, будучи базовым языком системы UNIX, на которой работали компьютеры Bell, является быстрым, многофункциональным и переносимым. Страуструп добавил к нему возможность работы с классами и объектами. В результате, практические задачи моделирования оказались доступными для решения как с точки зрения времени разработки (благодаря использованию Симула-подобных классов) так и с точки зрения времени вычислений (благодаря быстродействию C). В начале в C были добавлены классы (с инкапсуляцией), производные классы, строгая проверка типов, inline-функции и аргументы по умолчанию.

Разрабатывая C с классами (позднее C++), Страуструп также написал программу cfront — транслятор, перерабатывающий исходный код C с классами в исходный код простого C. Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег и вскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячи вопросов.

В 1983 году произошло переименование языка из C с классами в C++. Кроме того, в него были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Его первый коммерческий выпуск состоялся в октябре 1985 года. В 1985 году вышло также первое издание «Языка программирования C++», обеспечивающее первое описание этого языка, что было чрезвычайно важно из-за отсутствия официального стандарта. В 1989 году состоялся выход C++ версии 2.0. Его новые возможности включали множественное наследование, абстрактные классы, статические функции-члены, функции-константы и защищённые члены.

В 1990 году вышло «Комментированное справочное руководство по C++», положенное впоследствии в основу стандарта. Последние обновления включали шаблоны, исключения, пространства имён, новые способы приведения типов и булевский тип.

Стандартная библиотека C++ также развивалась  вместе с ним. Первым добавлением  к стандартной библиотеке C++ стали  потоки ввода/вывода, обеспечивающие средства для замены традиционных функций C printf и scanf. Позднее самым значительным развитием стандартной библиотеки стало включение в неё Стандартной библиотеки шаблонов.

Никто не обладает правами на язык C++, он является свободным. Однако сам  документ стандарта языка (за исключением  черновиков) не доступен бесплатно.

1.1 Стандартизация языка

 

В 1998 году был опубликован стандарт языка ISO/IEC 14882:1998 (известный как C++98), разработанный комитетом по стандартизации C++ (ISO/IEC JTC1/SC22/WG21 working group).

В 2003 году был опубликован стандарт языка ISO/IEC 14882:2003, где были исправлены выявленные ошибки и недочёты предыдущей версии стандарта.

В 2005 году был выпущен отчёт «Library Technical Report 1» (кратко называемый TR1). Не являясь официально частью стандарта, отчёт описывает расширения стандартной библиотеки, которые, как ожидалось авторами, должны быть включены в следующую версию языка C++. Степень поддержки TR1 улучшается почти во всех поддерживаемых компиляторах языка C++.

С 2009 года велась работа по обновлению предыдущего стандарта, предварительной версией нового стандрата сперва был C++99, а спустя год C++0x, сегодня — C++11, куда были включены дополнения в ядро языка и расширение стандартной библиотеки, в том числе большую часть TR1.

1.2 История названия

 

Название C++ было придумано Риком Масситти (Rick Mascitti) и впервые было использовано в декабре 1983 года. Ранее, на этапе разработки, новый язык назывался «C с классами».

Имя языка, получившееся в итоге, происходит от оператора унарного постфиксного инкремента C ++ (увеличение значения переменной на единицу). Имя C+ не было использовано потому, что является синтаксической ошибкой в C и, кроме того, это имя было занято другим языком. Язык также не был назван D, поскольку «является расширением C и не пытается устранять проблемы путём удаления элементов C».

 

1.3 Достоинства

 

C++ — чрезвычайно мощный язык, содержащий средства создания эффективных программ практически любого назначения, от низкоуровневых утилит и драйверов до сложных программных комплексов самого различного назначения. В частности:

  • Поддерживаются различные стили и технологии программирования, включая традиционное директивное программирование, ООП, метапрограммирование.
  • Предсказуемое выполнение программ является важным достоинством для построения систем реального времени. Весь код, неявно генерируемый компилятором для реализации языковых возможностей (например, при преобразовании переменной к другому типу), определён в стандарте. Также строго определены места программы, в которых этот код выполняется. Это даёт возможность замерять или рассчитывать время реакции программы на внешнее событие.
  • Автоматический вызов деструкторов объектов при их уничтожении, причём в порядке, обратном вызову конструкторов. Это упрощает (достаточно объявить переменную) и делает более надёжным освобождение ресурсов (память, файлы, семафоры и т. п.), а также позволяет гарантированно выполнять переходы состояний программы, не обязательно связанные с освобождением ресурсов (например, запись в журнал).
  • Пользовательские функции-операторы позволяют кратко и ёмко записывать выражения над пользовательскими типами в естественной алгебраической форме.
  • Язык поддерживает понятия физической (const) и логической (mutable) константности. Это делает программу надёжнее, так как позволяет компилятору, например, диагностировать ошибочные попытки изменения значения переменной. Объявление константности даёт программисту, читающему текст программы дополнительное представление о правильном использовании классов и функций, а также может являться подсказкой для оптимизации. Перегрузка функций-членов по признаку константности позволяет определять изнутри объекта цели вызова метода (константный для чтения, неконстантный для изменения). Объявление mutable позволяет сохранять логическую константность при использовании кэшей и ленивых вычислений.
  • Используя шаблоны, возможно создавать обобщённые контейнеры и алгоритмы для разных типов данных, а также специализировать и вычислять на этапе компиляции.
  • Возможность имитации расширения языка для поддержки парадигм, которые не поддерживаются компиляторами напрямую. Например, библиотека Boost.Bind позволяет связывать аргументы функций.
  • Возможность создания встроенных предметно-ориентированных языков программирования. Такой подход использует, например библиотека Boost.Spirit, позволяющая задавать EBNF-грамматику парсеров прямо в коде C++.
  • Используя шаблоны и множественное наследование можно имитировать классы-примеси и комбинаторную параметризацию библиотек. Такой подход применён в библиотеке Loki, класс SmartPtr которой позволяет, управляя всего несколькими параметрами времени компиляции, сгенерировать около 300 видов «умных указателей» для управления ресурсами.
  • Кроссплатформенность: стандарт языка накладывает минимальные требования на ЭВМ для запуска скомпилированных программ. Для определения реальных свойств системы выполнения в стандартной библиотеке присутствуют соответствующие возможности (например,std::numeric_limits <T>). Доступны компиляторы для большого количества платформ, на языке C++ разрабатывают программы для самых различных платформ и систем.
  • Эффективность. Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы. Ни одна из языковых возможностей, приводящая к дополнительным накладным расходам, не является обязательной для использования — при необходимости язык позволяет обеспечить максимальную эффективность программы.
  • Имеется возможность работы на низком уровне с памятью, адресами.
  • Высокая совместимость с языком C, позволяющая использовать весь существующий C-код (код на C может быть с минимальными переделками скомпилирован компилятором C++; библиотеки, написанные на C, обычно могут быть вызваны из C++ непосредственно без каких-либо дополнительных затрат, в том числе и на уровне функций обратного вызова, позволяя библиотекам, написанным на C, вызывать код, написанный на С++).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 C++ Builder

 

C++ Builder — мощная система визуального объектно-ориентированного проектирования, позволяющая решать множество задач, в частности:

• Создавать законченные приложения для Windows самой различной направленности, от чисто вычислительных и логических, до графических и мультимедиа.

• Быстро создавать (даже начинающим программистам) профессионально выглядящий оконный интерфейс для любых  приложений, написанных на любом языке; интерфейс удовлетворяет всем требованиям Windows и автоматически настраивается на ту систему, которая установлена на компьютере пользователя, поскольку использует многие функции, процедуры, библиотеки Windows.

• Создавать свои динамически присоединяемые библиотеки (DLL) компонентов, форм, функций, которые затем можно использовать из других языков программирования.

• Создавать мощные системы работы с локальными и удаленными базами данных любых типов; при этом имеются  средства автономной отладки приложений с последующим выходом в сеть.

• Формировать и печатать сложные  отчеты, включающие таблицы, графики  и т.п.

• Создавать справочные системы (файлы .hlp), как для своих приложений, так и для любых других, с которыми можно работать не только из приложений, но и просто через Windows.

• Создавать профессиональные программы  инсталляции для приложений Windows, учитывающие всю специфику и все требования Windows.

• И многое, многое другое.

2.1 Интегрированная Среда Разработки

Интегрированная Среда Разработки — это среда, в которой есть все необходимое для проектирования, запуска и тестирования приложений и где все нацелено на облегчение процесса создания программ. ИСР интегрирует в себе редактор кодов, отладчик, инструментальные панели, редактор изображений, инструментарий баз данных — все, с чем приходится работать. Эта интеграция предоставляет разработчику гармоничный набор инструментов, дополняющих друг друга. Результатом является быстрая и в значительной степени свободная от ошибок разработка сложных прикладных программ.

 

 

 

 

 

 

 

 

 

 

 

3 Системные диалоги

В приложениях часто приходится выполнять стандартные действия: открывать и сохранять файлы, задавать атрибуты шрифтов, выбирать цвета  палитры, производить контекстный  поиск и замену и т.п.

Разработчики C++Builder позаботились о том, чтобы включить в библиотеку простые для использования компоненты, реализующие соответствующие диалоговые окна. Они размещены на странице Dialogs (Риcунок 1 - Компоненты Dialog).

Информация о работе Разработка текстового редактора в С++ Builder