Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТП лаба 2-3 вар 4.doc
Скачиваний:
7
Добавлен:
29.08.2019
Размер:
1.19 Mб
Скачать

Trigger.Cs

using System;

using System.Collections.Generic;

using System.Text;

namespace Laba2_3_var_4

{

//------Задание 3 Класс триггер---------------------

class Trigger : Element

{

private byte q = 0;//значение на прямом выходе триггера

private byte qi = 0;//значение на инверсном выходе триггера

private byte[] PreEnter;//значения выхода тригера в предыдущем такте

private byte[] TrigEnter;//входные значения

//конструктор создающий массивы

public Trigger(string name, int enter, int quit)

: base(name, enter, quit)

{

PreEnter = new byte[Enter];

TrigEnter = new byte[Enter];

}

//метод задающий значения на входе

public bool SetEnter(byte[] TrigEnter)

{

PreEnter[0] = q;

PreEnter[1] = qi;

try

{

for (int i = 0; i < Enter; i++)

{

this.TrigEnter[i] = TrigEnter[i];

}

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

return false;

}

return true;

}

//метод возвращающий состояние триггера на прямом выходе

public byte GetQuitL()

{

if (TrigEnter[1] == 1)

{

if (TrigEnter[0] == 1)

q = 0;

else q=1;

}

else

{

if (TrigEnter[0] == 0)

q = 0;

else q=1;

}

return q;

}

//метод возвращающий состояние триггера на инверсном выходе

public byte GetQuitI()

{

if (TrigEnter[1] == 1)

{

if (TrigEnter[0] == 1)

qi = 1;

else qi = 0;

}

else

{

if (TrigEnter[0] == 0)

qi = 1;

else qi = 0;

}

return qi;

}

//метод сбрасывающий все параметры триггера

public void Reset()

{

q = 0;

qi = 0;

Array.Clear(PreEnter, 0, Enter);

Array.Clear(TrigEnter, 0, Enter);

return;

}

//переопределение метода equals

public override bool Equals(object obj)

{

if (obj == null || GetType() != obj.GetType())

return this == (Trigger)obj;

else return false;

}

//переопределение оператора ==

public static bool operator ==(Trigger x, Trigger y)

{

if (y.GetType() == x.GetType())

return x.PreEnter == y.PreEnter && x.q == y.q && x.qi == y.qi && x.TrigEnter == y.TrigEnter;

else return false;

}

//переопределение оператора !=

public static bool operator !=(Trigger x, Trigger y)

{

if (y.GetType() == x.GetType())

return !(x == y);

else return false;

}

//

public override int GetHashCode()

{

return PreEnter.GetHashCode() ^ q.GetHashCode() ^ qi.GetHashCode() ^ TrigEnter.GetHashCode();

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]