Простейшие классы - разобрать код - C#

Узнай цену своей работы

Формулировка задачи:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication16
{
    class Program
    {
        static void Main(string[] args)
        {
            BinaryNumber bNum1;
            BinaryNumber bNum2;
            BinaryNumber bNum3;
            BinaryNumber bNum4;
 
            //Обработка исключений
            try
            {
                bNum1 = new BinaryNumber("10011");
                bNum2 = new BinaryNumber("0011");
                bNum3 = new BinaryNumber("10101");
                bNum4 = new BinaryNumber("0011");
            }
            catch (FormatException ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadLine();
                return;
            }
 
            //Сложение
            BinaryNumber bNumRes1 = bNum1 + bNum2;
            Console.WriteLine(bNumRes1);
 
            //Вычитание
            BinaryNumber bNumRes2 = bNum3 - bNum4;
            Console.WriteLine(bNumRes2);
 
            //Умножение
            BinaryNumber bNumRes3 = bNum1 * bNum2;
            Console.WriteLine(bNumRes3);
 
            //Деление
            BinaryNumber bNumRes4 = bNum3 / bNum4;
            Console.WriteLine(bNumRes4);
            
            //Сравнение
            Console.WriteLine(bNum2.Equals(bNum4));
            Console.ReadLine();
        }
    }
    public class BinaryNumber
    {
        //Внутренее значение числа
        private int innerNumber; 
 
        //Конструктор с проверкой формата параметра
        public BinaryNumber(string bNumber)
        {
            bool res = bNumber.ToCharArray().Any(n => (n != '0' && n != '1'));
            if (res)
                throw new FormatException("Неверный формат данных!");
 
            innerNumber = Convert.ToInt32(bNumber, 2);
        }
        //Перегрузка оператора +
        public static BinaryNumber operator+(BinaryNumber bn1,BinaryNumber bn2)
        {
            int b1 = Convert.ToInt32(bn1.ToString(), 2);
            int b2 = Convert.ToInt32(bn2.ToString(), 2);
            return new BinaryNumber(Convert.ToString(b1 + b2, 2));
        }
        //Перегрузка оператора -
        public static BinaryNumber operator -(BinaryNumber bn1, BinaryNumber bn2)
        {
            int b1 = Convert.ToInt32(bn1.ToString(), 2);
            int b2 = Convert.ToInt32(bn2.ToString(), 2);
            return new BinaryNumber(Convert.ToString(b1 - b2, 2));
        }
        //Перегрузка оператора *
        public static BinaryNumber operator *(BinaryNumber bn1, BinaryNumber bn2)
        {
            int b1 = Convert.ToInt32(bn1.ToString(), 2);
            int b2 = Convert.ToInt32(bn2.ToString(), 2);
            return new BinaryNumber(Convert.ToString(b1 * b2, 2));
        }
        //Перегрузка оператора /
        public static BinaryNumber operator /(BinaryNumber bn1, BinaryNumber bn2)
        {
            int b1 = Convert.ToInt32(bn1.ToString(), 2);
            int b2 = Convert.ToInt32(bn2.ToString(), 2);
            return new BinaryNumber(Convert.ToString(b1 / b2, 2));
        }
        //Перегрузка Equals
        public override bool Equals(object obj)
        {
            if (obj is BinaryNumber)
            {
                if (this.ToString() == ((BinaryNumber)obj).ToString())
                    return true;
            }
            return false;
        }
        //Перегрузка GetHashCode
        public override int GetHashCode()
        {
            return this.ToString().GetHashCode();
        }
        //Перегрузка ToString()
        public override string ToString()
        {
            return Convert.ToString(innerNumber, 2);
        }
    }
}
плохо понимаю эту часть кода объясните пожалуйста
  public class BinaryNumber
    {
        //Внутренее значение числа
        private int innerNumber; 
 
        //Конструктор с проверкой формата параметра
        public BinaryNumber(string bNumber)
        {
            bool res = bNumber.ToCharArray().Any(n => (n != '0' && n != '1'));
            if (res)
                throw new FormatException("Неверный формат данных!");
 
            innerNumber = Convert.ToInt32(bNumber, 2);
        }
        //Перегрузка оператора +
        public static BinaryNumber operator+(BinaryNumber bn1,BinaryNumber bn2)
        {
            int b1 = Convert.ToInt32(bn1.ToString(), 2);
            int b2 = Convert.ToInt32(bn2.ToString(), 2);
            return new BinaryNumber(Convert.ToString(b1 + b2, 2));
        }
        //Перегрузка оператора -
        public static BinaryNumber operator -(BinaryNumber bn1, BinaryNumber bn2)
        {
            int b1 = Convert.ToInt32(bn1.ToString(), 2);
            int b2 = Convert.ToInt32(bn2.ToString(), 2);
            return new BinaryNumber(Convert.ToString(b1 - b2, 2));
        }
        //Перегрузка оператора *
        public static BinaryNumber operator *(BinaryNumber bn1, BinaryNumber bn2)
        {
            int b1 = Convert.ToInt32(bn1.ToString(), 2);
            int b2 = Convert.ToInt32(bn2.ToString(), 2);
            return new BinaryNumber(Convert.ToString(b1 * b2, 2));
        }
        //Перегрузка оператора /
        public static BinaryNumber operator /(BinaryNumber bn1, BinaryNumber bn2)
        {
            int b1 = Convert.ToInt32(bn1.ToString(), 2);
            int b2 = Convert.ToInt32(bn2.ToString(), 2);
            return new BinaryNumber(Convert.ToString(b1 / b2, 2));
        }
        //Перегрузка Equals
        public override bool Equals(object obj)
        {
            if (obj is BinaryNumber)
            {
                if (this.ToString() == ((BinaryNumber)obj).ToString())
                    return true;
            }
            return false;
        }
        //Перегрузка GetHashCode
        public override int GetHashCode()
        {
            return this.ToString().GetHashCode();
        }
        //Перегрузка ToString()
        public override string ToString()
        {
            return Convert.ToString(innerNumber, 2);
        }
    }

Решение задачи: «Простейшие классы - разобрать код»

textual
Листинг программы
//Перегрузка Equals
        public override bool Equals(object obj)
        {
            if (obj is BinaryNumber)
            {
                if (this.ToString() == ((BinaryNumber)obj).ToString())
                    return true;
            }
            return false;
        }
        //Перегрузка GetHashCode
        public override int GetHashCode()
        {
            return this.ToString().GetHashCode();
        }
        //Перегрузка ToString()
        public override string ToString()
        {
            return Convert.ToString(innerNumber, 2);
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы