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

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

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

Класс TStore

Класс реализует терминал склада.

Операции:

  • Метод GetStatus() вызывает функцию внешнего модуля IStore.GetStoreStat(...) и в случае, если она вернула 0, GetStatus() возвращает значение статуса склада, в противном случае возвращается -1.
  • Метод AddBearingAxle() добавляет запись об обслуженной оси в базу данных на основе переданной в качестве параметра команды.
  • Метод AddBearing() добавляет запись о принятом подшипнике в базу данных на основе переданной в качестве параметра команды.
  • Метод RemoveBearing() удаляет запись о выданном подшипнике из базы данных на основе переданной в качестве параметра команды.
  • Метод MarkCellBad(...) помечает ячейку как проблемную, порядковый номер ячейки передается как параметр.
  • Метод GetMessage() вызывает функцию внешнего модуля IStore.GetStoreMessage(...) и возвращает код сообщения склада
  • Конструктор TStore() читает из конфигурационного файла имя сервера SQL , имя пользователя, пароль и инициализирует все поля типа SqlConnection.
  • Метод Process() вызывает метод GetStatus(). В зависимости от полученного статуса склада он производит следующие действия:
    • Статус = 32. Добавляется сообщение в журнал и вызывается метод обработки ситуации прихода подшипника - TerminalBearing.Process().
    • Статус = 16. Добавляется сообщение в журнал и вызывается метод постановки команды "Положить в резерв" в очередь CommandQueue.AddCommand().
    • Статус = 8. Добавляется сообщение в журнал.
    • Статус = 4. Добавляется сообщение в журнал и вызывается метод постановки команды "Произвести зануление" в очередь CommandQueue.AddCommand().
    • Статус = 0. Добавляется сообщение в журнал.
    • При любом другом статусе в журнал добавляется сообщение об ошибке.
  • Метод ProcessMessage() вызывает метод GetMessage() и в зависимости от полученного результата выполняет следующие действия:
    • Полученный результат - -1. Добавляется сообщение в журнал. Предпринимается повторная попытка получить сообщение, после второй неудачной попытки происходит выход из приложения.
    • Полученный результат - 0. Добавляется сообщение в журнал. Продолжается опрос (вызов метода GetMessage() ).
    • Полученный результат -1. Добавляется сообщение в журнал. Производит обновление базы данных по выданному или принятому подшипнику и удаляет команду из очереди.
    • Полученный результат -2. Добавляется сообщение в журнал. Пытается выполнить команду повторно, после второй неудачной попытки удаляет команду из очереди.
    • Полученный результат -3. Добавляется сообщение в журнал. Пытается выполнить команду повторно, после второй неудачной попытки удаляет команду из очереди.

Операция FindFreeCell(...) ищет свободную ячейку в резервной (параметр IsReserve установлен в true ) или рабочей (параметр IsReserve установлен в false ) области с наименьшим порядковым номером и возвращает ее координаты: порядковый номер - CNum, сторона - TagSt, ряд - TagRow, колонка - TagCol.

Операция GetCoord(...) возвращает для переданного порядкового номера ячейки ( CNum ) номер строки ( Side ), колонки ( Col ) и ряда ( Row ).

public class TLog
{
static private FileStream fs =
  new FileStream("system.log",
  FileMode.Create,FileAccess.Write, FileShare.ReadWrite);
static private StreamWriter srLog =
  new StreamWriter(fs);
  // Деструктор
  ~ TLog()
  // Добавляет запись в журнал сообщений системы
  static public void AddToLog(string LogMessage)
}

Класс TLog

Класс реализует журнал сообщений системы.

Операции:

  • Метод AddToLog() сохраняет переданное ему в качестве параметра сообщение в файл.
public class TModel
{
  private TLog Log;                         //Ссылка на журнал сообщений
  private TStore Store;                     //Ссылка на склад
  private TTerminalAxle TerminalAxle;       //Ссылка на
                                            //терминал оси
  private TTerminalBearing TerminalBearing; //Ссылка на
                                            //терминал подшипника
  private TCommandQueue CommandQueue;       //Ссылка на очередь
                                            //команд
  public Thread QueryThread;                //Поток опроса
  public Thread CommandThread;              //Поток команд
  public bool QueryThreadTerminated;        //Флаг окончания
                                            //работы потока опроса
  public bool CommandThreadTerminated;      //Флаг окончания
                                            //работы потока команд
  // Конструктор
  public TModel()
  // Метод, реализующий поток опроса
  public void QueryThreadExecute()
  // Метод, реализующий поток выполнения команд
  public void CommandThreadExecute()
}

Класс TModel

Класс реализует журнал сообщений системы.

Операции:

  • Метод QueryThreadExecute() реализует поток опроса. Здесь последовательно вызываются методы TStore.Process() и TTerminalAxle.Process().
  • Метод CommandThreadExecute() реализует поток выполнения команд. Здесь вызывается метод TcommandQueue.ProcessCommand().
< Дополнительный материал 2 || Дополнительный материал 3: 12345
Федор Антонов
Федор Антонов

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

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

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

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

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