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

Element.Cs

using System;

using System.Collections.Generic;

using System.Text;

namespace Laba2_3_var_4

{

//----------Задание 1 Описать базовый класс "Элемент"-------

abstract class Element : IComparable

{

//--------------------2------------------------------

//конструктор без параметров

public Element()

{

}

//конструктор с установкой входов и имени

public Element(string name, int enter)

{

this.name = name;

this.enter = enter;

quit = 1;

}

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

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

{

this.name = name;

this.enter = enter;

this.quit = quit;

}

//---------------1------------------------------------

private string name;//имя

private int enter;//кол-во входов

private int quit;//кол-во выходов

//---------------3------------------------------------

//свойство выдающее имя элемента

public string Name

{

get { return name; }

}

//свойство выдающее и устанавлтвающее кол-во входов

public int Enter

{

get { return enter; }

set { enter = Enter; }

}

//свойство выдающее и устанавлтвающее кол-во выходов

public int Quit

{

get { return quit; }

set { quit = Quit; }

}

//реализация интерфейса IComparable

public virtual int CompareTo(object obj)

{

if (GetType() == obj.GetType())

{

Element temp = (Element)obj;

if (this.quit == temp.quit && this.name == temp.name && this.enter == temp.enter)

return 0;

else return -1;

}

else

{

throw new ArgumentException("Object is not Element");

}

}

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

public override bool Equals(object obj)

{

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

return this == (Element)obj;

else return false;

}

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

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

{

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

return x.name == y.name && x.enter == y.enter && x.quit == y.quit;

else return false;

}

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

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

{

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

return !(x == y);

else return false;

}

//

public override int GetHashCode()

{

return name.GetHashCode() ^ enter.GetHashCode() ^ quit.GetHashCode();

}

}

}

Reg.cs

using System;

using System.Collections.Generic;

using System.Text;

namespace Laba2_3_var_4

{

//Задание 4 Класс Регистр

class Reg : IComparable

{

private int raz;//размерность регистра

private List<Trigger> registr = new List<Trigger>();

private byte[][] RegEnter;//массив для T и Q(t)

private byte[] quit;//массив выходов регистра

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

public Reg(int raz)

{

this.raz = raz;

RegEnter = new byte[raz][];

quit = new byte[raz];

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

{

registr.Add(new Trigger(Convert.ToString(i + 1), 2, 2));

}

}

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

public bool SetReg(byte[][] enter)

{

try

{

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

{

RegEnter[i] = enter[i];

registr[i].SetEnter(RegEnter[i]);

}

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

return false;

}

return true;

}

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

public byte[] GetQuit()

{

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

{

quit[i] = registr[i].GetQuitL();

}

return quit;

}

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

public byte GetIQuit(string name)

{

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

{

if (registr[i].Name == name)

return registr[i].GetQuitL();

}

return 2;

}

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

public void Reset()

{

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

{

registr[i].Reset();

} }

//реализация интерфейса IComparable

public int CompareTo(object obj)

{

if (obj is Reg)

{

Reg temp = (Reg)obj;

if (this.raz == temp.raz && this.quit == temp.quit &&

this.RegEnter == temp.RegEnter && this.registr == temp.registr)

return 0;

else return -1;

}

else

{

throw new ArgumentException("Object is not a ");

}

}

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

public override bool Equals(object obj)

{

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

return this == (Reg)obj;

else return false;

}

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

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

{

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

return x.raz == y.raz && x.quit == y.quit && x.RegEnter == y.RegEnter && x.registr == y.registr;

else return false;

}

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

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

{

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

return !(x == y);

else return false;

}

public override int GetHashCode()

{

return raz.GetHashCode() ^ quit.GetHashCode() ^ RegEnter.GetHashCode() ^ registr.GetHashCode();}}}

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