Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДипломКрутова.docx
Скачиваний:
59
Добавлен:
03.05.2015
Размер:
1.46 Mб
Скачать
    1. Тз на разработку ппп передачи информации

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

Разрабатываемый пакет прикладных программ предназначен для:

    • считывания, хранения и отображения данных регистрации от РПДП стационарными устройствами стенда расшифровки РПДП для всего парка вагонов электродепо;

    • анализа работы вагонного оборудования системы «Витязь»;

    • отображения параметров регистрации в виде графиков.

Технические требования на ППП

  1. Считывание данных из памяти блока РПДП должно осуществляться средствами беспроводного соединения (WI-FI).

  2. Считанные данные от блока РПДП должны храниться на жестком диске сервера стенда расшифровки под соответствующими именами (далее – регистрации) в удобной для восприятия пользователем ПЭВМ форме.

  3. ППП должен обеспечивать возможность отображения интересующей информации на мониторе ПЭВМ.

  4. ППП должен обеспечивать визуальное отображение информации регистраций в виде графиков на экране ПЭВМ.

  5. При работе с графиками, ППП должен изменять масштаб графика (сжатие/растяжение).

  6. Для анализа регистраций, ППП должен обеспечить возможность покадрового вывода регистраций на экран.

    1. Выбор концепции программирования

Парадигма программирования — это система идей и понятий, определяющих стиль написания компьютерных программ. Это способ концептуализации, определяющий организацию вычислений и структурирование работы, выполняемой компьютером. Важно отметить, что парадигма программирования не определяется однозначно языком программирования; практически все современные языки программирования в той или иной мере допускают использование различных парадигм (мультипарадигмальное программирование). Язык не поддерживает технику программирования, если для написания соответствующей программы требуются чрезмерные усилия либо мастерство. Поддержка парадигмы проявляется не только в наличии средств языка, позволяющих непосредственно использовать парадигму, но и в виде проверок в момент компиляции на неумышленное отклонение от парадигмы [3].

Процедурное программирование

Акцент процедурного программирования делается на обработке – алгоритме, необходимом для выполнения требуемых вычислений. Языки поддерживают эту парадигму, предоставляя средства для передачи аргументов функциям и возврата значений из функций. Литература, имеющая отношение к такому образу мыслей, содержит обсуждения способов передачи аргументов, различий между разными видами аргументов, описаниями разновидности функций.

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

Исходная парадигма процедурного программирования: «Реши, какие требуются процедуры; используй наилучшие доступные алгоритмы».

Основные средства языка, предоставляемые для организации вычислений:

  • Переменные и арифметические операции

  • Условия и циклы

  • Указатели и массивы

Модульное программирование

С течением времени акцент при разработке программ сместился от проектирования процедур в сторону организации данных. Помимо прочего, это явилось отражением факта увеличения размеров программ. Набор связанных процедур вместе называется модулем. Парадигмой программирования становится: «Реши, какие требуются модули; разбей программу так, чтобы скрыть данные в модулях».

Эта парадигма также известна как «принцип сокрытия данных». Там, где не требуется группировка процедур вместе с данными, достаточно процедурного стиля программирования. Техника проектирования «хороших процедур» теперь применяется для каждой процедуры в модуле.

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

Абстракция данных

Модульность – фундаментальный аспект всех успешно работающих крупных систем. Однако модули не достаточны для описания сложных систем. Модульное программирование приводит к централизации управления данными определенного типа в отдельном модуле. Абстракция данных подразумевает использование модулей для предоставления некой формы типов данных, определяемых пользователем. Некоторые языки позволяют пользователю непосредственно определять типы, которые ведут себя почти также, как и встроенные. Такой тип очень часто называют абстрактным типом данных или же пользовательским типом или классом. Везде, где нужно более одного объекта определенного типа, не достаточно программирования с сокрытием данных при помощи модулей.

Парадигма программирования становится: «Реши, какие требуются типы; обеспечь полный набор операций для каждого типа».

Объектно-ориентированное программирование

Абстракция данных является фундаментальным аспектом качественного проектирования. Однако типы, определяемые пользователем, сами по себе не достаточно гибки. Такие типы, определенные с помощью модулей, описывают нечто «вроде черного ящика». После того, как черный ящик определен, он практически не взаимодействует с остальной частью программы. Нет иного способа приспособить его к нуждам других пользователей, кроме как изменить его определение. Проблема в том, что очень сложно показать разницу между общими свойствами всех объектов такого класса и особыми свойствами. Выражение этой разницы и использование вытекающих отсюда преимуществ составляет основу объектно-ориентированного программирования (ООП). Механизма наследования позволяет решить проблемы с выделением общих свойств объектов в отдельный класс. Желательность иерархии классов (а значит, наследования) вытекает из требований к повторному использованию кода — если несколько классов имеют сходное поведение, нет смысла дублировать их описание, лучше выделить общую часть в общий родительский класс, а в описании самих этих классов оставить только различающиеся элементы.

В тех случаях, когда общности нет, достаточно абстракции данных.

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

Парадигма программирования звучит так: «Реши, какие требуются классы; обеспечь полный набор операций для каждого класса; явно вырази общность через наследование».

Обобщенное программирование

Если алгоритм можно выразить независимо от деталей представления и если это можно сделать приемлемым (с точки зрения накладных расходов) способом и без логических искажений, то так и нужно поступать. Парадигма программирования для этого стиля звучит так: «Реши, какие требуются алгоритмы; параметризируй их так, чтобы они могли работать со множеством подходящих типов и структур данных». Представителями обобщенного программирования являются шаблоны (template), где конкретные типы заменяются на параметры шаблона.

Класс, содержащий набор элементов некоторого типа, обычно называют классом-контейнером или просто контейнером.

При разработке программного обеспечения использовалось несколько парадигм программирования. За основу была принята модульная парадигма по причине достаточно большого размера будущей программы. Модульное программирование представляет собой набор связанных процедур, используемых для наведения порядка в хаосе алгоритмов. Модульное программирование позволяет помещать объявление, которое описывает интерфейс модуля, в файл с характерным именем, отражающим его использование.

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

Помимо этого для абстракции было также решено использовать элементы объектно-ориентированного программирования для создания отдельных классов. Это было сделано с целью упрощения программы и закрытия доступа к некоторым данным.