Программирование - это просто
Advertisement
Главная arrow Уроки C# arrow Средства и особенности C#, о которых знают не все arrow Средства C#. Урок 3. Переопределение арифметических операций
06.10.2022 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Средства C#. Урок 3. Переопределение арифметических операций Печать E-mail
Автор megabax   
02.05.2013 г.
New Page 1

Средства C#. Урок 3. Переопределение арифметических операций

Исходники к уроку можно скачать здесь.

В C# есть очень интересное средство - это перегрузка операций. Тоесть, можно определить свой, для которого назначить свои действия на стандартные арифметические операции. Проиллюстрируем все это на примере реализации класса Vector. И так, давайте реализуем этот класс в отдельном файле Vector.cs:

using System;

using System.Collections.Generic;

using System.Text;

 

namespace WindowsFormsApplication1

{

    class Vector

    {

        private double fx;

        private double fy;

 

        public Vector(double ax, double ay)

        {

            fx = ax;

            fy = ay;

        }

 

        public double x

        {

            get

            {

                return fx;

            }

            set

            {

                fx = value;

            }

        }

 

        public double y

        {

            get

            {

                return fy;

            }

            set

            {

                fy = value;

            }

 

        }

 

        public static Vector operator +(Vector v1, Vector v2)

        {

            return new Vector(v1.x + v2.x, v1.y + v2.y);

        }

 

        public static Vector operator -(Vector v1, Vector v2)

        {

            return new Vector(v1.x - v2.x, v1.y - v2.y);

        }

 

        public static Vector operator *(Vector v, double r)

        {

            return new Vector(v.x*r, v.y*r);

        }

 

        public static double operator *(Vector v1, Vector v2)

        {

            return v1.x * v2.x + v1.y * v2.y;

        }

    }

}

И так, что же может наш класс? Во первых, он может сложить два вектора (путем сложения их координат). Точно так же векторы можно вычитать. Умножить на число. Умножить вектор на вектор (скалярное произведение векторов). Теперь все это проиллюстрируем на примере. Давайте сначала создадим форму*:

Средства C#. Урок 3. Переопределение арифметических операций

А вот и исходный код:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

 

namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void btnPlusV_Click(object sender, EventArgs e)

        {

            Vector v1 = getV1();

            Vector v2 = getV2();

            Vector v = v1 + v2;

            vToStr(v);

        }

 

        private Vector getV1()

        {

            return new Vector(Convert.ToDouble(tbX1.Text), Convert.ToDouble(tbY1.Text));

        }

 

        private Vector getV2()

        {

            return new Vector(Convert.ToDouble(tbX2.Text), Convert.ToDouble(tbY2.Text));

        }

 

        private void vToStr(Vector v)

        {

            lbX.Text = Convert.ToString(v.x);

            lbY.Text = Convert.ToString(v.y);

        }

 

        private void btnMinus_Click(object sender, EventArgs e)

        {

            Vector v1 = getV1();

            Vector v2 = getV2();

            Vector v = v1 - v2;

            vToStr(v);

        }

 

        private void btnMult_Click(object sender, EventArgs e)

        {

            Vector v1 = getV1();

            Vector v2 = getV2();

            double d = v1 * v2;

            lbRes.Text = Convert.ToString(d);

        }

 

        private void btnMuldR_Click(object sender, EventArgs e)

        {

            Vector v1 = getV1();

            double r = Convert.ToDouble(tbR.Text);

            Vector v = v1 * r;

            vToStr(v);

        }

    }

}

А теперь запускаем программу на тестирование:

Средства C#. Урок 3. Переопределение арифметических операций

Исходники к уроку можно скачать здесь.

 


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями  программного продукта "Microsoft Visual Studio 2010 Professional", авторское право на который принадлежит корпорации Microsoft.. 


 

 

 

Усрокренный курс стр 46

 

Последнее обновление ( 02.05.2013 г. )
 
« След.   Пред. »
 
© 2022 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги