易经与软件开发

《易经》与软件开发

《易经》与软件看上去好像是风马牛不相及,他们两应该没有任何关系吧?众所周知《易经》乃是群经之首,包罗万象,容其万物,《易经》是伏羲对宇宙的认识,也是中国历代优秀人物智慧的结晶,其大无外,其小无内这是对《易经》功能最好的描述,世千万物都容其内,宇宙的秘密也在其中,这本无字天书所蕴涵的宇宙奥秘需要我们去破解。然而信息技术高速发展的今天,我们貌似已经遗忘先辈们给我们的宝贵智慧遗产,我们将其抛在脑后,而去追捧西方人为信息技术带来的知识和见解。作为中国人我们是否可以运用中国人的思维去理解当今高速发展的信息时代?特别是软件行业的发展。

《易经》的核心思想是一阴一阳之谓道。贯穿于中国历史发展的整个过程,在《易经》的卦象中是以阴,阳二爻两种符号为基础,这两个符号按照阴阳二气消长的规律,经过排列组合就成了八卦,然而八卦的构成与排列,就体现了阴阳互动,对立统一的思想,八卦再经过重叠排列组合就成了六十四卦,所以阴阳是其核心思想。阴阳我们可以看作是男为阳,女为阴君为阳,民为阴君子为阳,小人为阴等等,这也是万事万物都是对立的,然而一阴一阳在一起的时候才有所谓的存在,这是就是反应时万物在对立的同时也是相互联系的。这便是对立统一的关系。然而在软件行业中,系统设计师总是尽量运用自己所掌握的知识和经验,将客户所需求的软件设计好,但是客户的需求不可能一层不变的,所以软件产品永远都不可能满足客户的需求,软件存在的意义是什么?软件存在的意义是天行健,君子自强不息”,“为客户需求,君子为软件,那就可以理解为客户需求是永无止尽得变化,软件能做的就是自强不息,适应客户的需求变化。这才是顾客是上帝的真正解释。

在《易经》中的根本精神为生生之为易就是生生就是连续不断地发展变化,没有一刻停息,也没有上帝来创造生命,自然界的基本规律也是通过生存,繁衍,进化而来的。生生便是《易经》的基本精神。然后在软件开发的过程中,一个基本类想要发展壮大,也是通过其他相关类继承它,成为它的子类,这个基本类所具有的思想,将通过继承的关系,传递给它的子类。太极生两仪,两仪生四象,四象生八卦这正是继承表现,如果能将其图形化,很容易看出来这句话正是描述完全二叉树具体形态。太极可以看作是抽象类,两仪则可以看做是他的实现类,四象则看做是对两仪的实现,以此类推,然而在《易经》中它所追求的是太极可以生成两仪两仪生成四象四象可以生成八卦,那么八卦也能聚合四象四象也可以聚合两仪两仪最终聚合为太极,这也是太极无极的真正意义,软件设计业应该趋向于这种思想去设计,设计师设计抽象类应该尽量将子类所具有的共同属性和方法放在抽象类中,让他尽量包罗,规范子类的行为。

在《系辞》中的生生之为易,宇宙的发展变化都是通过生生来完成的,现在我们将其生生具体到人类中,那么人与人之间最基本的关系就是父子或者母子夫妻关系,而在软件开发中,类与类之间的关系最基本的关系应该是继承聚合关系。比如一个Man类,应该继承它的父类Parents,引用Wife类,Man类有eat(),sleep(),work(),generate(Wife wife),其中generate(Wife wife)返回的Human类即是人类,所有的Man,Parents,Wife都是Human的子类,类图如下

 

代码清单如下:

Human接口

package com.javapattern.human;

 

import java.util.Vector;

 

public interface Human {

     public void setGender(String gender);

     public String getGender();

     public void eat();

     public void sleep();

     public void work();

     public Vector<Human> generate();

}

定义人类这个接口,其中具有的方法有setGender(String gender),getGender()eat(),

sleep(),work(),generate()

HumanAdapter适配器

package com.javapattern.human;

 

import java.util.Vector;

 

public abstract class HumanAdapter implements Human{

     public void eat(){

        //doing some thing

     }

     public void sleep(){

        //doing some thing

     }

     public void work(){

        //doing some thing

     }

     public Vector<Human> generate(){

        return null;

     }

}

由于不是所有的人类都具有以上接口定义的方法,所以在此定义了HumanAdapter适配器类

Parents接口

package com.javapattern.human;

 

public interface Parents extends Human{

}

Man

package com.javapattern.human;

 

import java.util.Vector;

 

public class Man extends HumanAdapter implements Parents{

 

    private Human human;

    public String gender = "man";

   

    public String getGender() {

       return gender;

    }

    public void setGender(String gender) {

       this.gender = gender;

    }

    public Man(){

    }

    public Man(Human human){

       this.human = human;

       this.gender = "man";

    }

     public void eat(){

       System.out.println("eating things");

     }

     public void sleep(){

       System.out.println("sleeping");

     }

     public void work(){

       System.out.println("working");

     }

     public Vector<Human> generate(){

        //只生一个好

        Vector<Human> vector = new Vector<Human>();

        if("woman".equals(human.getGender())){

            Human boy = new Man(this);

            Human girl = new Wife(human);

            System.out.println("generate.....");

            vector.add(boy);

            vector.add(girl);

        }

        return vector;

     }

}

定义Man类并且实现了generate()方法,返回一个Vector类,它是Manwife的聚集

Wife

package com.javapattern.human;

 

import java.util.Vector;

 

public class Wife extends HumanAdapter implements Parents{

 

     private Human human;

     public String gender = "woman";

     public Wife(){

        //this.gender = "woman";

     }

     public Wife(Human human){

        this.human = human;

        this.gender = "woman";

     }

     public void eat(){

        System.out.println("eating things");

     }

     public void sleep(){

        System.out.println("sleeping");

     }

     public void work(){

        System.out.println("working");

     }

     public Vector<Human> generate(){

        //只生一个好

        Vector<Human> vector = new Vector<Human>();

        if("man".equals(human.getGender())){

            Human boy = new Man(this);

            Human girl = new Wife(human);

            System.out.println("generate.....");

         vector.add(boy);

            vector.add(girl);

        }

        return vector;

     }

    public String getGender() {

       return gender;

    }

    public void setGender(String gender) {

       this.gender = gender;

    }

}

定义Wife类并且实现了generate()方法,返回一个Vector类,它是Manwife的聚集

有上述例子可以看出,人类的之间的最基本的关系可以由代码表现出来。人类之间存在的最基本关系和软件开发中类与类之间的关系很相似,如果将软件中出现的各种各样的类比喻成单个的人,那么由他们组成的软件正是这个复杂的社会。而客户的需求正是人类头顶上浩瀚的蓝天,他无时无刻都在提醒软件所组成的社会一定要和谐,需要让这个社会高效得运作起来,这也是软件开发的最终目标

以下介绍软件生命周期中的六个阶段和八卦中的六爻之间的关系(其实这里的关系我也没有搞清楚,但是我相信他们之间肯定有某种联系,或者说六爻与软件的生命周期有某种联系,因为一个卦象是由六爻组成的,所以我个人认为软件的生命周期和一个卦象有关,有待考虑)。

 

                                                                                                                                                               郭华维

                                                                                                                                    2010419 星期一

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值