Содержание
Введение
1. Анализ технического задания
2. Проектирование структуры классов
3. Программная реализация
4. Тестирование
5. Руководство по программному продукт
Заключение
Список литературы
Приложения
Современный уровень развития различных программных и аппаратно-программных систем, и в первую очередь систем управления, связан со значительным повышением их сложности из-за присущих им требований к гибкости, открытости, эргономичности и перенастраиваемости.
Проектирование таких сложных систем с трудом укладывается в рамки традиционного подхода разработки, когда процесс создания системы рассматривается как последовательность отдельных завершенных этапов и считается, что работа имеет однонаправленный характер.
Все это требует новых подходов к проектированию. На данный момент наиболее перспективным можно считать объектно-ориентированный подход проектирования. К существенным отличиям объектно-ориентированного подхода от традиционного проектирования относят возможность использования итеративно-поступательного цикла создания программного обеспечения и перенос акцента проектирования с разработки алгоритмов функционирования системы на построения системы абстракций и их взаимодействия.
Объектно-ориентированный подход включает в себя такие понятия:
- Абстракция — это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов, подобно тому, какфункциональнаяабстракция разделяет способ использования функции и деталей её реализации в терминах более примитивных функций, таким образом, данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня. Такой подход является основойобъектно-ориентированного программирования. Это позволяет работать собъектами, не вдаваясь в особенности их реализации. В каждом конкретном случае применяется тот или иной подход:инкапсуляция,полиморфизмилинаследование.
- Инкапсуляция — это принцип, согласно которому любойклассдолжен рассматриваться какчёрный ящик — пользователь класса должен видеть и использовать только интерфейсную часть класса (т. е. список декларируемых свойств и методовкласса) и не вникать в его внутреннюю реализацию. Поэтому данные принято инкапсулировать в классе таким образом, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции (теоретически) позволяет минимизировать число связей междуклассамии, соответственно, упростить независимую реализацию и модификацию классов.Сокрытие данных — неотделимая часть ООП, управляющая областями видимости. Является логическим продолжением инкапсуляции. Целью сокрытия является невозможность для пользователя узнать или испортить внутреннее состояние объекта.
- Наследованием называется возможность порождать одинклассот другого с сохранением всех свойств и методов класса-предка (прародителя, иногда его называют суперклассом) и добавляя, при необходимости, новые свойства и методы. Набор классов, связанных отношением наследования, называютиерархией. Наследование призвано отобразить такое свойство реального мира, как иерархичность.
- Полиморфизмом называют явление, при котором функции (методу) с одним и тем же именем соответствует разный программный код (полиморфный код) в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранениемсигнатурыметода. Это обеспечивает сохранение неизменныминтерфейсакласса-предка и позволяет осуществить связывание имени метода в коде с разными классами — из объекта какого класса осуществляется вызов, из того класса и берётся метод с данным именем. Такой механизм называется динамическим (или поздним) связыванием — в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции.
Актуальность выбранного метода разработки иерархии классов – упрощение структурирования данных, гибкость применения созданного алгоритма, открытость, а также эргономичность и перенастраиваемость, позволяющие подстраивать созданные алгоритмы под требования пользователя.
Данный курсовой проект нацелен на создание приложения, позволяющего следить за выполнением курсовых заданий групп студентов. Это позволит легко отслеживать и корректировать выполнение курсовых работ студентами.
Целью проекта является разработка структуры класса «Экран курсового проектирования», которая будет основой для хранения информации о студентах, выполняющих курсовые работы. Также целью проекта является развитие навыков самостоятельной и творческой работы и закрепление навыков работы на языке С++.
В мире есть множество программных продуктов, позволяющих выполнять задачи по структурированию данных подобного типа, а также выполняющих различные действия над ними. Главной отличительной особенностью данного приложения является нацеленность использования в высших учебных заведениях, где требуется необходимость контроля выполнения курсовых работ. Также данное приложение имеет простой пользовательский интерфейс, интуитивно понятные действия, возможность корректировки, поиска и удаления данных.
Основными задачами курсового проекта являются – разработка приложения с использованием структуры иерархии классов по заданной тематике, провести тестирование приложения, разработать справочную систему для созданного приложения.
В настоящем курсовом проекте необходимо разработать структуру иерархии классов «Экран курсового проектирования». На основе этой структуры необходимо создать приложение для тестирования иерархии.
Для реализации поставленных задач необходимо:
- Разработать иерархию классов, определить базовый и наследуемые классы;
- Разработать и описать структуру каждого класса в отдельности, объявить поля и методы класса;
- Реализовать визуальные компоненты для работы иерархией классов.
В программе необходимо обрабатывать данные о студентах, количество которых может быть произвольным. Для удобства отображения данных необходимо использовать таблицу. Таблица максимально приближена к стандартам высших учебных заведений.
При реализации приложения необходимо использование объектно-ориентированного программирования. Оно предусматривает наличие базового и производных классов, что делает приложение более универсальным. По возможности можно добавлять, изменять или удалять в приложении различные методы и поля, т.е. подстраивать приложение под конкретную ситуацию.
Данное приложение было реализовано на мощном и гибком объектно-ориентированном языке программирования С++(Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Лидер, 2010. – 461с., Иванова Г.С, Ничушкина Т.Н., Пугачев Е.К. И21 Объектно-ориентированное программирование: Учеб. для вузов/ Под ред. Г.С. Ивановой. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2001. – 320 с.). Язык С++ предоставляет все средства для реализации базового и производных классов, а также оптимально использует системные ресурсы, что позволяет сделать приложение не только универсальным, но и не очень требовательным к ресурсам компьютера. Также язык С++ поддерживает платформу .NETFramework, что позволяет использовать приложение на различных персональных и переносных компьютерах, на которых установлена эта платформа.
По сравнению с другими объектно-ориентированными языками С++ обладает несколькими особенностями:
- Полная поддержка принципов инкапсуляции, наследования и полиморфизма;
- Полная поддержка классов и объектно-ориентированного программирования, включая наследование реализации и интерфейсов, виртуальные функции и перегрузку операций;
- Согласованный и четко определенный набор базовых типов;
- Возможность переопределения пользователем стандартных типов языка и операторов;
- Автоматическая очистка динамически распределяемой памяти;
- Полная поддержка библиотеки базовых классов .NET Framework наряду с легким доступом к Windows API;
- Указатели и прямой доступ в память при необходимости доступны, но язык спроектирован так, что в большинстве случаев без них можно обойтись.
Данное приложение создается для пользователя, следовательно в тестирующем приложении должен быть реализован понятный и удобный интерфейс. Интерфейс должен обладать всеми функциями для контроля и управления приложением. Также необходимо реализовать справочную систему, которую пользователь сможет вызвать при затруднении использования приложения.
В программе предусмотрено добавление, изменение, поиск и удаление данных. Добавление используется для создания новой строки в таблице. Изменение и удаление данных должно быть безопасным, т.е. приложение должно получать подтверждение от пользователя о совершаемых действиях. В случае ошибочных действий пользователь не сможет потерять данные. Поиск необходимо реализовать по всем полям таблицы. В случае большого количества данных или малой информации для поиска, пользователь сможет найти максимально совпадающее с его запросом поле таблицы.
Метрики качества, выводимые из требований чрезвычайно важны для анализа качества приложения, однако они создаются на начальных этапах разработки, когда степень неопределенности и риск, связанный с разработкой и внедрением новых программных продуктов велики. Для эволюционного процесса разработки должны быть приняты к рассмотрению метрики качества программ, используемые в процессе реализации циклов разработки.
К числу подобных метрик относится:
1. Гибкость, которая аккумулирует ряд свойств: