Краткие теоретические и учебно-методические материалы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Краткие теоретические и учебно-методические материалы



По теме лабораторной работы

Работа объектов программы описывается с помощью автоматов (или машин состояний). Существует хорошо развитая теория автоматов, в которой изучаются вопросы их построения и анализа работы.

Автомат – это элемент системы, который характеризуется двумя базовыми понятиями: состояние и переход. Каждый автомат в определенный момент времени может находиться в одном из допустимых состояний. Число этих состояний, возможно, бесконечно. Задан также набор правил, по которому допускается переход из одних множеств состояний в другие.

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

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

Число состояний автомата конечно.

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

В рамках диаграммы у каждого состояния должен быть предшественник (за исключением начального состояния). Это правило запрещает размещение на диаграмме состояний, никак не связанных друг с другом.

Состояния. Конкретное состояние (в общем случае – статический срез системы) формируется инструментом State (Состояние). На диаграмме оно изображается в виде прямоугольника с закругленными углами. Состояние имеет имя, начинающееся с заглавной буквы. Под ним могут записываться условия и действия. Условия проверяются, а действия выполняются, когда автомат находится в соответствующем состоянии.

Отметим принятые правила оформления элементов диаграммы состояний. Элемент State представляет не действие, а описание статического состояния, в котором автомат может находиться неограниченно долго. Автомат может переходить из текущего состояния в другие состояния при выполнении определенных действий пользователя или условий, которые должны быть выполнены. Действия и условия отображаются только на линиях пере- ходов между состояниями.

Подавтоматы. Внутри каждого состояния разрешается формировать собственный автомат (подавтомат) – мини-диаграмму состояний. Благодаря этому возможно проектировать систему постепенно, раскрывая отдельные ее элементы по мере необходимости.

Подавтомат – это автомат, вложенный в другой автомат и описывающий поведение конкретного состояния.

Диаграммы состояний. Диаграммы состояний (State Machine Diagram) стали новым типом диаграмм в версии UML 2.0. Они особенно важны для разработчика, использующего среду Delphi. Дело в том, что в последней версии Delphi 2006 имеется технология моделирования ЕСО III. Она расширена средствами визуального построения алгоритмов. С помощью этих средств описывается работа разных элементов модели. Ранее для описания модели и генерации исходного кода на языке Delphi применялись лишь статические диаграммы классов. Теперь задействованы и диаграммы состояний.

Диаграмма состояний – это средство, описывающее логику функционирования автоматов (машин состояний).

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

Диаграмма состояний всегда относится к конкретному классу и описывает его внутреннее функционирование. На диаграмме конкретное состояние отображается с помощью элемента State. Начальное и конечное состояния – элементы Initial (Начальное) и Final (Конечное) – представлены на диаграмме сплошным кружком. Кружок, соответствующий конечному состоянию, обведен каймой. Фактически, это псевдосостояния, не возникающие при реальной работе. Начальное и конечное состояния лишь наглядно задают последовательность входа в первое рабочее состояние и выхода из последнего рабочего состояния.

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

Пример: Разработать программный код на языке Delphi для разработки простого MDA приложения с использованием машин состояний.

 

# include <iostream.h>

# include <fstream.h>

# include <string.h>

# include <iomanip.h>

# include <stdlib.h>

# include <conio.h>

struct student

  {

    char name[30];

    int kurs;

    char gr[7];

   };

struct group

   {

     char gr[7];

      int ng;

    };

class dmassiv                           

   {

     private:

        student *pst;    

        int n;                               

        group *pz;     

        int k;                               

     public:

        dmassiv() { n=0; pst=NULL; k=0; pz=NULL;} 

        ~dmassiv();                    

        void inputstudentfile (); 

        void outputstudent ();    

         void outputgroup ();     

        void outputgroupfile (); 

        void perechengroup ();  

        void add ();                    

        void deletename ();        

};

void main()

{

massiv a;                                                

a.inputstudentfile ();

cout << ” Исходный массив структур. \n”; 

a.outputstudent ();

a.perechengroup ();

cout << ” Перечень групп, имеющих задолжников. \n”;

a.outputgroup (); a.outputgroupfile ();

}

Задание для лабораторной работы

Разработать программный код на языке Си++ для создания простого приложения MDA с использованием машин состояний.

Контрольные вопросы

1. Дайте определение понятию автомат.

2. В чём заключается схожесть автоматной модели с программированием?

3. Каким инструментом формируется конкретное состояние?

4. Описать функциональные возможности диаграмм состояний.


Лабораторная работа №24-25

«Применение стохастического тестирования классов»

Цель работы: получение навыков при тестировании классов

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен

уметь:

- владеть основными методологиями процессов разработки программного обеспечения;

- использовать методы для получения кода с заданной функциональностью и степенью качества.

 

знать:

-модели процесса разработки программного обеспечения;

-основные принципы процесса разработки программного обеспечения;

-основные подходы к интегрированию программных модулей;

-основные методы и средства эффективной разработки;

 



Поделиться:


Последнее изменение этой страницы: 2021-12-07; просмотров: 35; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.237.255 (0.009 с.)