Опубликован: 05.03.2005 | Уровень: специалист | Доступ: платный
Дополнительный материал 3:

Высокоуровневый дизайн

< Дополнительный материал 2 || Дополнительный материал 3: 12345

Класс TСomm andQueue

public class TCommandQueue : System.Windows.Forms.ListBox
{
  private TTerminalBearing TerminalBearing;
  //Терминал подшипника
  private TStore Store;                   //Склад
  // Конструктор
public TCommandQueue(TStore store,        // Ссылка на экземпляр
//TStore
TTerminalBearing terminalBearing)         // Ссылка на экземпляр
//TTerminalBearing
// Добавляет команду в очередь команд на указанную позицию
  public void AddCommand(int NameCommand, // Код команды
    int CntRoll,                          // Номер выдаваемого подшипника
    int CellSourse,                       // Порядковый номер исходной ячейки
  int CellTarget,                         // Порядковый номер результирующей
                                          // ячейки
    TBearingParam PR,                     // Параметры подшипника
    TAxleParam PA,                        // Параметры оси
    int Position)                         // Позиция в очереди
  // Удаляет команду из очереди
public void DeleteCommand(int Position)
  // Выполняет первую команду в очереди
public void ProcessCommand()
  // Отправляет команду складу
private int SendCommand()
}

Класс реализует очередь FIFO объектов типа TCommand. Наследуется от System.Windows.Forms.ListBox библиотеки .NET. Количество команд в очереди не ограничено. Имеет ссылки на экземпляры классов TTerminalBearing и TStore.

Операции:

  • Конструктор TCommandQueue(...) создает экземпляр класса и инициализирует поля TerminalBearing и Store с помощью передаваемых указателей. Передаваемые указатели должны указывать на существующие объекты, внутри конструктора такой проверки не происходит.
  • Операция AddCommand(...) создает объект типа TCommand, присваивает ему переданные параметры и добавляет в очередь команд на указанную позицию. При добавлении команды GetR (см. табл. 14.1 "Список команд складу") должен быть запрещен опрос терминала подшипника, т.е. полю TerminalBearing.IsQuery должно быть присвоено значение false. Позиции в очереди нумеруются, начиная с 0. Значение позиции в очереди = -1 означает, что команда будет добавлена в конец очереди. Можно также явно задавать позицию, на которую следует добавить команду.
  • Операция DeleteCommand(...) удаляет команду из очереди на указанной позиции. При удалении команды GetR (см. табл. 14.1 "Список команд складу") должен быть разрешен опрос терминала подшипника, т.е. полю TerminalBearing.IsQuery должно быть присвоено значение true.
  • Операция ProcessCommand() при наличии команд в очереди посылает первую команду из очереди складу при помощи метода SendCommand(). В зависимости от возвращенного этим методом значения - статуса команды - должны быть предприняты следующие действия, описанные в FS, глава 3 "Специфические требования", пункт 3.
  • Операция SendCommand() посылает первую в очереди команду (с индексом 0) складу с помощью функции IStore.SendStoreCom() из Store.dll и возвращает код ответа склада. Перед отправкой команды устанавливаются следующие ее поля:
    • Для команды GetR "Получить из входной ячейки" координаты ячейки источника - ( SourseSt = 0, SourseCol = 0, SourseRow =0 ), а координаты результирующей ячейки возвращает метод TStore.FindFreeCell() с параметром, определяющим зону склада, для поиска установленным в true (поиск в рабочей зоне склада).
    • Для команды SendR "Отправить из ячейки в выходную ячейку" координаты результирующей ячейки - ( TagSt = 9, TagCol = 9, TagRow = 9 ), а координаты ячейки источника возвращает метод TStore.GetCoord() на основе значения поля CellSourse посылаемой команды.
    • Для команды PutR "Положить в резерв" координаты ячейки источника - ( SourseSt = -1, SourseCol = -1, SourseRow = -1 ), а координаты результирующей ячейки возвращает метод TStore.FindFreeCell() с параметром, определяющим зону склада для поиска установленным в false (поиск в резервной зоне склада).

Для выполнения деструктора не требуется никаких предварительных условий.

public class TStore
{
public TTerminalBearing TerminalBearing;    //Ссылка на
                                            //терминал подшипника
public TCommandQueue CommandQueue;          //Ссылка на очередь
                                            //команд
private static string ConnectionString;     //Строка
                                            //подключения к серверу БД
  private SqlConnection connFindFreeCell;
  private SqlConnection connFindBearing;
  private SqlConnection connAddBearing;
  private SqlConnection connMarkFree;
  private SqlConnection connRemoveBearing;
  private SqlConnection connGetCoord;
// Возвращает статус склада
private long GetStatus()
// Добавляет запись об обслуженной ОСИ в базу данных
private bool AddBearingAxle(TCommand Command)
// Добавляет запись о подшипнике в базу данных
private bool AddBearing(TCommand Command)
// Удаляет запись о подшипнике из базы данных
private bool RemoveBearing(TCommand Command)
// Помечает ячейку как проблемную
private bool MarkCellBad(int Cell)
// Возвращает сообщение склада о выполнении команды
private long GetMessage()
// Конструктор
public TStore()
// Запрашивает и обрабатывает статус склада
public void Process()
// Запрашивает и обрабатывает сообщение склада
public void ProcessMessage()
// Находит свободную ячейку
public bool FindFreeCell(ref int CNum, ref int TagSt,
  ref int TagRow, ref int TagCol, bool IsReserve)
// Возвращает координаты ячейки по номеру
public bool GetCoord(int CNum, ref int Side,
  ref int Row, ref int Col)
//Находит подшипники в складе на основании параметров ОСИ
public bool FindBearingInStore(TAxleParam AxleParam)
}
< Дополнительный материал 2 || Дополнительный материал 3: 12345
Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Сергей Чурбанов
Сергей Чурбанов
Валерий Слиж
Валерий Слиж
Беларусь
Андрей Морозов
Андрей Морозов
Россия, Минск