<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 117  文章 - 72  trackbacks - 0

    聲明:原創作品(標有[原]字樣)轉載時請注明出處,謝謝。

    常用鏈接

    常用設置
    常用軟件
    常用命令
     

    訂閱

    訂閱

    留言簿(7)

    隨筆分類(130)

    隨筆檔案(123)

    搜索

    •  

    積分與排名

    • 積分 - 156615
    • 排名 - 390

    最新評論

    [關鍵字]:java,design pattern,設計模式,《Java與模式》學習,Immutable Pattern,不變模式
    [環境]:StarUML5.0 + JDK6
    [作者]:Winty (wintys@gmail.com) http://www.tkk7.com/wintys/
    [正文]:

    package pattern.immutable;
    import java.text.NumberFormat;

    /**
     * 不變模式:Immutable Pattern
     *
     * 復數的四則運算
     * @version 2009-6-15
     * @author Winty(wintys@gmail.com)
     */
    public class ImmutableTest{
        public static void main(String[] args){
            Complex a , b , c , d , e , f , g;
            a = new Complex(0 , 2);
            b = new Complex(3 , -5);

            c = a.add(b);
            d = a.sub(b);
            e = a.mul(b);
            f = a.div(b);
            g = a.add(Complex.i);

            System.out.println("a="+a);
            System.out.println("b="+b);
            System.out.println("i="+Complex.i);
            System.out.println("a+b="+c);
            System.out.println("a-b="+d);
            System.out.println("a*b="+e);
            System.out.println("a/b="+f);
            System.out.println("a+i="+g);        
        }
    }

    final class Complex extends Number{
        private double real;//實部
        private double imaginary;//虛部
        public static final Complex i;//虛數單位

        static{
            i = new Complex(0 , 1);
        }

        public Complex(){
            real = 0.0;
            imaginary = 0.0;
        }

        public Complex(double real , double imaginary){
            this.real = real;
            this.imaginary = imaginary;
        }

        public double getReal(){
            return real;
        }

        public double getImaginary(){
            return imaginary;
        }

        /**
         * 復數相加
         */
        public Complex add(Complex c){
            return new Complex(real + c.getReal() ,
                                        imaginary + c.getImaginary());
        }

        /**
         * 復數相減
         */
        public Complex sub(Complex c){
            return new Complex(real - c.getReal() ,
                                        imaginary - c.getImaginary());
        }

        /**
         * 復數相乘:(a+bi)(c+di)=(ac-bd)+(ad+bc)i
         */
        public Complex mul(Complex c){
            double r = c.getReal();
            double i = c.getImaginary();
            r = real*r - imaginary*i;
            i = real*i + imaginary*r;

            return new Complex(r , i);
        }

        /**
         * 復數除法:
         * (a+bi)(c+di) = (a*c + b*d)/(c*c+d*d) + (b*c - a*d)/(c*c+d*d)
         */
        public Complex div(Complex complex){
            double a,b,c,d;
            double denominator;
            a = real;
            b = imaginary;
            c = complex.getReal();
            d = complex.getImaginary();
            denominator = c*c + d*d;

            double r = (a*c + b*d)/denominator;
            double i = (b*c - a*d)/denominator;

            return new Complex(r , i);
        }

        public double abs(){
            return Math.sqrt(real*real + imaginary*imaginary);
        }

        @Override
        public double doubleValue(){
            return real;
        }

        @Override
        public float floatValue(){
            return (float)real;
        }

        @Override
        public int intValue(){
            return (int)real;
        }

        @Override
        public long longValue(){
            return (long)real;
        }

        public String toString(){
            NumberFormat f = NumberFormat.getNumberInstance();
            f.setMaximumFractionDigits(2);
            String strReal = f.format(real);
            String strImaginary = f.format(imaginary);
            String str = "";

            String sign = "";
            
            if(real != 0){//實部不為0時才顯示實部
                str = strReal;

                if(imaginary > 0)
                    sign = "+";
            }
            str += sign + strImaginary + "*i";

            return str;
        }
    }

    運行結果:
    a=2*i
    b=3-5*i
    i=1*i
    a+b=3-3*i
    a-b=-3+7*i
    a*b=10+20*i
    a/b=-0.29+0.18*i
    a+i=3*i
    原創作品,轉載請注明出處。
    作者:Winty (wintys@gmail.com)
    博客:http://www.tkk7.com/wintys
    posted on 2009-06-16 22:52 天堂露珠 閱讀(994) 評論(0)  編輯  收藏 所屬分類: Pattern
    主站蜘蛛池模板: 亚洲综合色7777情网站777| 亚洲AV电影天堂男人的天堂| 又粗又大又黑又长的免费视频| 激情亚洲一区国产精品| 婷婷亚洲天堂影院| 一级毛片免费观看不卡视频| 亚洲国产午夜电影在线入口| 又爽又高潮的BB视频免费看| 国产一级一毛免费黄片| 亚洲乱码一二三四区国产| 亚洲国产a级视频| free哆啪啪免费永久| 免费人成大片在线观看播放电影 | 国产免费AV片在线播放唯爱网 | A片在线免费观看| 亚洲综合小说另类图片动图| 国产亚洲精品线观看动态图| 国产成人午夜精品免费视频| 日本高清不卡中文字幕免费| 亚洲国产精品综合久久网各| 亚洲国产精品成人午夜在线观看| 亚洲av成人一区二区三区在线观看 | 免费国产叼嘿视频大全网站 | 久久久久久AV无码免费网站下载| 伊人久久五月丁香综合中文亚洲 | 国产精品亚洲二区在线| 久久亚洲日韩看片无码| 亚洲国产中文v高清在线观看| 免费黄色福利视频| 大地资源中文在线观看免费版| 亚洲午夜福利在线视频| 久久久久久亚洲Av无码精品专口| 亚洲国产精品一区二区三区久久 | 亚洲国产黄在线观看| 成人无遮挡裸免费视频在线观看 | 一级特黄录像免费播放肥| 亚洲色无码专区一区| 久久精品国产亚洲AV麻豆网站 | 亚洲国产婷婷六月丁香| 免费人成视频在线观看不卡| 免费A级毛片无码免费视|