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();
}
}
}