Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет 2 кон.doc
Скачиваний:
13
Добавлен:
08.11.2019
Размер:
703.49 Кб
Скачать

Trigger.Cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Second

{

class Trigger : Element

{

bool[] Input;

bool Out, NOut, Qt = true;

//Конструктор(по умолчанию сбрасывает экземпляр класса)

public Trigger()

: base("Триггер", 2, 1)

{

Input = new bool[2];

Out = false;

NOut = false;

}

// Конструктор копирования

public Trigger(Trigger Prev)

{

Prev.Input.CopyTo(this.Input, 0);

this.Out = Prev.Out;

this.NOut = Prev.NOut;

}

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

public bool SetValue(bool[] Value)

{

if (Value.GetLength(0) == Input.GetLength(0))

{

Value.CopyTo(this.Input, 0);

return true;

}

else

return false;

}

//Метод опрашивающий входы

public bool GetValue(int Index, out bool Error)

{

if (Index < Input.GetLength(0))

{

Error = false;

return Input[Index];

}

else

{

Error = true;

return false;

}

}

public bool SetQt(bool Value)

{

return Qt = Value;

}

//Метод вычисляющий состояние экземпляра класса на выходе

public bool Calculate()

{

if (!Input[1]) //R = 0;

{

if (Input[0] == Qt) // S = Qt

{

Out = Input[0];

NOut = !Out;

}

else

{

Out = !Input[0];

NOut = !Out;

Qt = Input[0];

}

}

else

{

Out = false;

Qt = false;

NOut = false;

}

return Out;

}

//Значение на выходе

public bool GetOut()

{

return Out;

}

//Значение на инверсном выходе

public bool GetNOut()

{

return NOut;

}

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

public override bool Equals(System.Object obj)

{

// если параметр не может быть приведен к CombElem false:

Trigger p = obj as Trigger;

if ((object)p == null)

{

return false;

}

// сравнение на общее число элементов массива Input

if (Input.Length != p.Input.Length) return false;

//сравнение массива со значением входов

for (int i = 0; i < Input.Length; i++)

{

if (Input[i] != p.Input[i])

return false;

}

return true;

}

public override int GetHashCode()

{

return base.GetHashCode() ^ NOut.GetHashCode();

}

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

public static bool operator ==(Trigger a, Trigger b)

{

return (a.NOut == b.NOut) && (a.Out == b.Out) && (a.Input == b.Input);

}

public static bool operator !=(Trigger a, Trigger b)

{

return !(a == b);

}

}

}

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