Написать реализацию класса "булева функция"
Добрый день дали задание. Немного не понимаю. Можно объяснений? Как это можно реализовать. (примеры какие нибудь)
Написать реализацию класса "булева функция". Реализация должна содержать:
- метод GetNumber (должно возвращать номер функции) и GetDual (должно возвращать двойственную функцию);
- индексатор, свойства IdenticallyTrue (общезначимая), IdenticallyFalse (Тождественно ложная)
- операции !, &&, ||, ^ и ==;
- поддержку интерфейсов IEquatable, ICloneable, IEnumerable.
Также есть еще требования к работе которые загоняют в еще большой тупик:
В разработанных классах необходимо реализовать такие концепции ООП, как "наследование" и "полиморфизм". Нужно описать базовый класс (класс-предок) и наследоваться от него.
Часть функциональности классов надо реализовать с использованием свойств. Также необходимо реализовать поддержку сериализации объектов классов. Кроме того нужно описать собственный интерфейс, описать в нем по крайней мере 2 метода или свойства и реализовать их в классе.
Каждый класс обязательно должен содержать не менее двух конструкторов.
При написании классов нельзя использовать классы с просторов имен System.Linq, System.Collection.Generic и System.Collection (списки, ассоциативные массивы, очереди, стеки, множества и т. п.) в случаях, название классов в которых обозначена символом "". Использование массивов допускается (в вариантах, в названии классов в которых «» ограничения на использование коллекций отсутствует).
Обязательно протестировать все реализованные возможности.
using System;
namespace lab4
{
class Boolean_function {
static void Main(string[] args) {
//Console.WriteLine("Hello World!");
}
public int GetNumber(Func<int> f) {
return f();
}
//public GetDual(Func<int> f) { return f(); }
}
//2 задание
class WritersCollection {
bool[] writers = {true, false, true};
// Этот метод возвращает только true.
private bool[] IdenticallyTrue(bool[] writers) {
bool[] result = new bool[0];
for (int j = 0, i = 0; j < writers.Length; j++) {
if (writers[j] == true) {
result[i] = true;
i++;
}
}
return result;
throw new System.ArgumentOutOfRangeException("true", "Такого значения здесь нет");
}
// Этот метод возвращает только false.
private bool[] IdenticallyFalse(bool[] writers) {
bool[] result = new bool[0];
for (int j = 0, i = 0; j < writers.Length; j++) {
if (writers[j] == false) {
result[i] = false;
i++;
}
}
return result;
throw new System.ArgumentOutOfRangeException("false", "Такого значения здесь нет");
}
// Метод доступа get вернет массив из всех true.
public bool[] this[bool[] writers]
{
get
{
return (IdenticallyTrue(writers));
}
}
// Метод доступа get вернет массив из всех false.
/*public bool[] this[bool[] writers]
{
get
{
return (IdenticallyFalse(writers));
}
}*/
}
}