¾ðÊó²Ê³Ø¤ò³Ø¤ÖÂç³ØÀ¸¤¬¥×¥í¥°¥é¥ß¥ó¥°(C¸À¸ì,Java¤Ê¤É)¡¢¥Í¥Ã¥È¥ï¡¼¥¯¡¢»ñ³Ê»î¸³(¾ðÊó½èÍýµ»½Ñ¼Ô»î¸³,CCNA)¤Ê¤É¤Ë´Ø¤¹¤ëµ»ö¤ò½ñ¤¤¤Æ¤¤¤Þ¤¹¡£
Java¤Ç½ñ¤¤¤¿Ê£ÁÇ¿ô¥¯¥é¥¹Complex¤Ï»Í§±é»»¤ò¥á¥½¥Ã¥É¤Ë¤è¤Ã¤Æ¹Ô¤¦¤¿¤á¡¢¤³¤ì¤òÍøÍѤ·¤¿¥×¥í¥°¥é¥à¤Î¥½¡¼¥¹¥³¡¼¥É¤¬ÆÉ¤ß¤Å¤é¤¯¤Ê¤ëÌäÂ꤬¤¢¤ê¤Þ¤¹¡£
¡ÊÎã¡Ë
Complex c1 = new Complex(1, 2); Complex c2 = new Complex(3, 4); Complex c3 = new Complex(5, 6); Complex c4 = c3.mul(c1.add(c2));
¤³¤ì¤ò¤â¤Ã¤Èľ´¶Åª¤Ë¼¡¤Î¤è¤¦¤Ë½ñ¤¯¤³¤È¤Ï¤Ç¤¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©
¡Ê¾Êά¡Ë Complex c4 = (c1+c2)*c3;
»Äǰ¤Ê¤¬¤é¡¢Java¤Ç¤ÏÉÔ²Äǽ¤Ç¤¹¡£¤·¤«¤·¡¢C#¤äC++¤Ç¤Ï±é»»»Ò¤ò¥ª¡¼¥Ð¡¼¥í¡¼¥É¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢¤³¤ì¤¬¼Â¸½²Äǽ¤Ç¤¹¡ª¤³¤³¤Ç¤Ï¡¢Java¤Ë¤è¤ê¶á¤¤¸À¸ì»ÅÍͤò»ý¤ÄC#¤Ç¼ÂÁõ¤·¤Æ¤ß¤Þ¤·¤¿¡£
¥³¥ó¥¹¥È¥é¥¯¥¿
±é»»»Ò¤Î¥ª¡¼¥Ð¡¼¥í¡¼¥É
C#¤Ç¤Ï¤¤¤¯¤Ä¤«¤Î±é»»»Ò(operator)¤ò¥ª¡¼¥Ð¡¼¥í¡¼¥É(overload)¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥ª¥Ö¥¸¥§¥¯¥ÈƱ»Î¤Î±é»»¤ò¥á¥½¥Ã¥É¤òÄ̤¸¤Æ¤Ç¤Ï¤Ê¤¯¡¢Æó¹à±é»»»Ò¤Ç¤â¤Ã¤Æ¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£Complex¥¯¥é¥¹¤òÍøÍѤ¹¤ë¥×¥í¥°¥é¥à¤Î¥½¡¼¥¹¥³¡¼¥É¤¬ÆÉ¤ß¤ä¤¹¤¯¤Ê¤ëÍøÅÀ¤¬¤¢¤ê¤Þ¤¹¡£
c1.add(c2); /* ¥á¥½¥Ã¥É¤Ë¤è¤ë±é»» */ c1 + c2; /* ¥ª¡¼¥Ð¡¼¥í¡¼¥É¤·¤¿±é»»»Ò¤Ë¤è¤ë±é»» */
¥×¥í¥Ñ¥Æ¥£
C#¤Ç¤Ï¥¢¥¯¥»¥µ(accesor)¤ò¡Ö¥×¥í¥Ñ¥Æ¥£(property)¡×¤È¸Æ¤Ð¤ì¤ëµ¡¹½¤Ë¤è¤Ã¤ÆÀë¸À¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥×¥í¥Ñ¥Æ¥£¤Ï¥¯¥é¥¹¤Î¥á¥ó¥Ð¤Ç¤¹¤¬¡¢¤¢¤¿¤«¤â¥Õ¥£¡¼¥ë¥É¤Ç¤¢¤ë¤«¤Î¤è¤¦¤Ë¿¶¤ëÉñ¤¤¤Þ¤¹¡£
Complex¥¯¥é¥¹¤ÏÉÔÊÑ¥¯¥é¥¹¤È¤·¤ÆÀ߷פµ¤ì¤Æ¤¤¤ë¤¿¤á¡¢¤¹¤Ù¤Æ¤Î¥×¥í¥Ñ¥Æ¥£¤Ïget¥¢¥¯¥»¥µ¤Î¤ß¤ò»ý¤Á¡¢set¥¢¥¯¥»¥µ¤Ï»ý¤Á¤Þ¤»¤ó¡£
¥á¥½¥Ã¥É
using System;
public struct Complex
{
private readonly double re;
private readonly double im;
public Complex(double re, double im)
{
this.re = re;
this.im = im;
}
public double Re
{
get { return re; }
}
public double Im
{
get { return im; }
}
public static Complex operator
+(Complex c1, Complex c2)
{
return
new Complex(c1.re + c2.re, c1.im + c2.im);
}
public static Complex operator
-(Complex c1, Complex c2)
{
return
new Complex(c1.re - c2.re, c1.im - c2.im);
}
public static Complex operator
*(Complex c1, Complex c2)
{
return new Complex(
c1.re * c2.re - c1.im * c2.im,
c1.re * c2.im + c1.im * c2.re);
}
public static Complex operator
/(Complex c1, Complex c2)
{
var denominator = c2.re * c2.re + c2.im * c2.im;
return new Complex(
(c1.re * c2.re + c1.im * c2.im) / denominator,
(c1.im * c2.re - c1.re * c2.im) / denominator);
}
public double Abs
{
get { return Math.Sqrt(re * re + im * im); }
}
public double Arg
{
get { return Math.Atan(im / re); }
}
public Complex Con
{
get { return new Complex(re, -im); }
}
public override string ToString()
{
if (im >= 0)
return String.Format("({0} + {1}i)", re, im);
else
return String.Format("({0} - {1}i)", re, -im);
}
}
class TestComplex
{
static void Main()
{
var c1 = new Complex(1, 2);
var c2 = new Complex(3, 4);
Console.WriteLine("{0} + {1} = {2}",
c1, c2, (c1 + c2));
Console.WriteLine("{0} - {1} = {2}",
c1, c2, (c1 - c2));
Console.WriteLine("{0} * {1} = {2}",
c1, c2, (c1 * c2));
Console.WriteLine("{0} / {1} = {2}",
c1, c2, (c1 / c2));
Console.WriteLine("|{0}| = {1}", c1, c1.Abs);
Console.WriteLine("arg{0} = {1}", c1, c1.Arg);
Console.WriteLine("con{0} = {1}", c1, c1.Con);
}
}
(1 + 2i) + (3 + 4i) = (4 + 6i) (1 + 2i) - (3 + 4i) = (-2 - 2i) (1 + 2i) * (3 + 4i) = (-5 + 10i) (1 + 2i) / (3 + 4i) = (0.44 + 0.08i) |(1 + 2i)| = 2.23606797749979 arg(1 + 2i) = 1.10714871779409 con(1 + 2i) = (1 - 2i)
´ØÏ¢µ»ö
¥Æ¡¼¥Þ:¥×¥í¥°¥é¥ß¥ó¥° - ¥¸¥ã¥ó¥ë:¥³¥ó¥Ô¥å¡¼¥¿ - ¥½¡¼¥·¥ã¥ë¥Ö¥Ã¥¯¥Þ¡¼¥¯:
![]()
Author:TBVector
»ä¤Î¥µ¥¤¥È
¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ÈRSS
ͧã¤Î¥µ¥¤¥È
¤¢¤ï¤»¤ÆÆÉ¤ß¤¿¤¤
¤Ï¤Æ¤Ê¥ê¥ó¥°