В данном примере разрабатывается 4-разрядный целочисленный тип данных и для него определяется ряд операций. Вам, вероятно, известно, что на ранней стадии развития вычислительной техники широко применялся тип данных для обозначения 4-разрядных двоичных величин, называвшихсяполубайтами, поскольку они составляли половину байта, содержали одну шестнадцатеричную цифру и были удобны для ввода кода полубайтами с пульта ЭВМ, что в те времена считалось привычным занятием для программистов! В наше время этот тип данных применяется редко, но он по-прежнему является любопытным дополнением целочисленных типов данных в С#. По традиции полубайт обозначает целое значение без знака.

В приведенном ниже примере программы тип полубайтовых данных реализуется с помощью классаNybble.В качестве базового для него используется типint,но с ограничением на хранение данных от 0 до 15. В классеNybbleопределяются следующие операторы.

•    Сложение двух объектов типаNybble.

•    Сложение значения типа int с объектом типа Nybble.

•    Сложение объекта типаNybbleсо значением типаint.

•    Операции сравнения: больше (>) и меньше (<).

•    Операция инкремента.

•    Преобразование значения типаintв объект типаNybble.

•    Преобразование объекта типаNybbleв значение типаint.

Перечисленных выше операций достаточно, чтобы показать, каким образом тип классаNybbleинтегрируется в систему типов С#. Но для полноценной реализации этого типа данных придется определить все остальные доступные для него операции. Попробуйте сделать это сами в качестве упражнения.

Ниже полностью приводится классNybble,а также классNybbleDemo,демонстрирующий его применение.

// Создать полубайтовый тип 4-разрядных данных под названием Nybble.

using System;

// тип4-разрядных данных.

class Nybble {

int val; // базовый тип для хранения данных

public Nybble()    { val =0; }

public Nybble(int i) { val = i;

val = val & OxF; // сохранить 4 младших разряда} •

// Перегрузить бинарный оператор + для сложения двух объектов типа Nybble, public static Nybble operator +(Nybble opl, Nybble op2)

{

Nybble result = new Nybble (); result.val = opl.val + op2.val;

result.val = result.val & OxF; // сохранить 4 младших разряда return result;

}

// Перегрузить бинарный оператор + для сложения

// объекта типа Nybble и значения типа int.

public static Nybble operator + (Nybble opl, int op2)

{

Nybble result = new Nybble (); result.val = opl.val + op2;

result.val = result.val & OxF; // сохранить 4 младших разряда return result;

}

Перейти на страницу:

Похожие книги