Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Return false; else return true;




}

// Вывести координаты X, Y, Z. public void Show()

{

Console.WriteLine(x + ", " + у + ", " + z);

}

}

class TrueFalseDemo { static void Main() {

ThreeD a = new ThreeD(5, 6, 7);

ThreeD b = new ThreeD(10, 10, 10); ThreeD с = new ThreeD (0, 0, 0);

Console.Write("Координаты точки a: ");

A.Show ();

Console.Write("Координаты точки b: ");

B.Show();

Console.Write("Координаты точки с: ");

C.Show();

Console.WriteLine();

if(!a) Console.WriteLine("Точка а ложна.") if(!b) Console.WriteLine("Точка b ложна.") if(!c) Console.WriteLine("Точка с ложна.")

if(а & b) Console.WriteLine("a & b истинно."); else Console.WriteLine("a & b ложно.");

if(a & c) Console.WriteLine("a & с истинно."); else Console.WriteLine("a & с ложно.");

if(a | b) Console.WriteLine("a | b истинно."); else Console.WriteLine("a | b ложно.");

if (a | c) Console.WriteLine("a | с истинно."); else Console.WriteLine("a | с ложно.");

}

}

При выполнении этой программы получается следующий результат.

Координаты точки а: 5, 6, 1

Координаты точки Ь: 10, 10, 10

Координаты точки с: 0, 0, 0

Точка с ложна.

а & b истинно, а & с ложно. а | b истинно, а | с истинно.

При таком способе перегрузки логических операторов &, | и! методы каждого из них возвращают результат типа bool. Это необходимо для того, чтобы использовать рассматриваемые операторы обычным образом, т.е. в тех выражениях, где предполагается результат типа bool. Напомним, что для всех встроенных в C# типов данных результатом логической операции должно быть значение типа bool. Поэтому вполне разумно предусмотреть возврат значения типа bool и в перегружаемых вариантах этих логических операторов. Но, к сожалению, такой способ перегрузки пригоден лишь в том случае, если не требуются укороченные логические операторы.

Как сделать укороченные логические операторы доступными для применения

Для того чтобы применение укороченных логических операторов & & и | | стало возможным, необходимо соблюсти следующие четыре правила. Во-первых, в классе должна быть произведена перегрузка логических операторов & и |. Во-вторых, перегружаемые методы операторов & и | должны возвращать значение того же типа, что и у класса, для которого эти операторы перегружаются. В-третьих, каждый параметр должен содержать ссылку на объект того класса, для которого перегружается логический оператор. И в-четвертых, для класса должны быть перегружены операторы true и false. Если все эти условия выполняются, то укороченные логические операторы автоматически становятся пригодными для применения.

В приведенном ниже примере программы показано, как правильно реализовать логические операторы & и | в классе ThreeD, чтобы сделать доступными для применения укороченные логические операторы & & и | |.

/* Более•совершенный способ перегрузки логических операторов!, | и & для объектов класса ThreeD.

В этом варианте укороченные логические операторы && и || становятся доступными для применения автоматически. */

Using System;

// Класс для хранения трехмерных координат, class ThreeD {

int х, у, z; // трехмерные координаты

public ThreeD() { х = у = z = 0; }

public ThreeD(int i, int j, int k) { x = i; у = j; z = k; }

// Перегрузить логический оператор | для укороченного вычисления, public static ThreeD operator |(ThreeD opl, ThreeD op2)

{

Else

Return new ThreeD(0, 0, 0);

}

// Перегрузить логический оператор & для укороченного вычисления, public static ThreeD operator & (ThreeD opl, ThreeD op2)

{

if(((opl.x!= 0) && (opl.у!= 0) && (opl.z!= 0)) &

((op2.x!= 0) && (op2.y!= 0) && (op2.z!= 0)))

Return new ThreeD(1, 1, 1); else

Return new ThreeD(0, 0, 0);

}

// Перегрузить логический оператор!. public static bool operator!(ThreeD op)

{

If(op) return false; else return true;

}

// Перегрузить оператор true.

public static bool operator true(ThreeD op) { if((op.x!= 0) И (op.у!= 0) || (op.z!= 0))

return true; // хотя бы одна координата не равна нулю

Else

Return false;

}

// Перегрузить оператор false.

public static bool operator false(ThreeD op) { if((op.x == 0) && (op.y == 0) && (op.z == 0))

return true; // все координаты равны нулю

Else

Return false;

}

// Ввести координаты X, Y, Z. public void Show()

{

Console.WriteLine (x + ", " + у + ", " + z);

}

}'

class TrueFalseDemo { static void Main() {

ThreeD a = new ThreeD(5, 6, 7);

ThreeD b = new ThreeD(10, 10, 10);

ThreeD с = new ThreeD(0, 0, 0);

Console.Write("Координаты точки a: ");

a.Show();

Console.Write("Координаты точки b: ");

b.Show();

Console.Write("Координаты точки с: ");

c.Show();

Console.WriteLine();

if (a) Console.WriteLine("Точка а истинна."); if(b) Console.WriteLine("Точка b истинна."); if(с) Console.WriteLine("Точка с истинна.");

if(!a) Console.WriteLine("Точка а ложна."); if(!b) Console.WriteLine("Точка b ложна."); if(!c) Console.WriteLine("Точка с ложна.");

Console.WriteLine ();

Console.WriteLine("Применение логических операторов & и |"); if(а & b) Console.WriteLine("а & b истинно."); else Console.WriteLine("а & b ложно.");

if(а & с) Console.WriteLine("а & с истинно."); else Console.WriteLine("а & с ложно.");

if(а | b) Console.WriteLine("а | b истинно."); else Console.WriteLine("а | b ложно.");

if(а | с) Console.WriteLine("а | с истинно."); else Console.WriteLine("а | с ложно.");

Console.WriteLine();

// А теперь применить укороченные логические операторы. Console.WriteLine("Применение укороченных" +

"логических операторов && и И"); if(а && b) Console.WriteLine("а && b истинно."); else Console.WriteLine("а && b ложно.");

if(а && с) Console.WriteLine("а && с истинно."); else Console.WriteLine("а && с ложно.");

if(а И b) Console.WriteLine ("а || b истинно."); else- Console.WriteLine("а || b ложно.");

if (а | | с) Console.WriteLine("а | | с истинно."); else Console.WriteLine("а || с ложно.");

}

}





Поделиться с друзьями:


Дата добавления: 2016-12-03; Мы поможем в написании ваших работ!; просмотров: 435 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинайте делать все, что вы можете сделать – и даже то, о чем можете хотя бы мечтать. В смелости гений, сила и магия. © Иоганн Вольфганг Гете
==> читать все изречения...

2335 - | 2134 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.