2009年6月16日星期二

编程是一门艺术


        世界上的万物本来就是相互作用、相互影响、相互联系的,代数是用数字来表达世界,几何用图形来表示世界,语文是用文字来说明世界,计算机是用0和1来记录世界,虽然表现形式不一样,但本质却是一样的。人类用语言来相互交流沟通,人类与计算机是用编程语言来相互交流的。

        说到底,我认为编程纯粹就是一种思维的活动,编程语言就仅仅作为一门人与计算机交流的工具而已。编程语言就像人类的语言一样,在人类的语言中有汉语、英语、德语、法语、日语;在编程语言中有C++、Java、C#、PHP,同样有优劣、是否流行之分。语言本身自古以来就扮演着非常重要的角色,没有语言,就没有人类今天伟大的文明。自然而然地,语言就成为了一门学问,一门艺术。

        俗话说:“看菜吃放,量体裁衣”。说的就是说话要看对象。这编程语言也一样,要根据不同的需求来决定用哪门语言。具体问题具体分析,如果要做操作系统,那么你必须要用大量汇编语言混合C语言来做。这样作出的操作系统相对来说性能才会更高,运行的速度才会更快。但是如果要做一些桌面软件或者银行系统的话,那么用Java或者C#会更加合适。 而开发一些网站,用PHP则会更加合适。

        文明既然是由于人类长期劳动而派生的产物,那么,它就与人类的活动是息息相关的。 水永远是鱼儿赖以生存息息之地,天空是雄鹰得以翱翔的地方。软件道理也是一样,Windows的应用程序不能在Linux平台上运行,Linux上的程序不能在Windows平台上运行。之所以不兼容,是因为平台不同。

  


 













       既然编程语言是人类的杰作,那么人一定赋予编程语言人性化的思想。就像这Java或者C#就是典型的纯粹的面向对象语言。这是一种新兴的编程思想,与过去传统的面向过程的思想编程完全不同。

        举一个运动员射击的程序

        按照传统的面向过程的思想编程:首先你要通过编程依次实现运动员拿枪,装子弹,举抢,瞄准,扣动扳机.总之,就是一步一步地顺序地实现编程.

        但是,按照面向对象思想:首先你要考虑要想实现运动员射击的程序,有哪些类和哪些对象,应该需要运动员类,枪类,子弹类吧。

        在考虑一个类里有哪些属性和方法,属性和方法要放在合适的类里。至于实现的细节暂时不必理会,主要封装在方法里了.在考虑类之间的联系,再处理好类调用之间的关系。      

        就具体那Java语言来说吧。

        Java语言最重要的三个特征就是——类的封装性、类的继承性和类的多态性。

        类的封装性

        1、隐藏类的实现细节。  

        2、让使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作。

        3、便于修改,增强代码的可维护性。

        4、可进行数据检查

        1和2尚且好理解,可是3和4应该如何来理解呢?

        对于3,我觉得就是面向对象的一个重要特点,开发程序的时候,对于一些常用的方法或函数或者一些反复出现的常量变量等,都可以把他放到一个类里封装起来,这样,如果需要修改这些中的一个的话,就可以很方便了,不用去检查所有出现这些变量或函数及方法的地方了,便于维护。

       对于4 以便对于需要用户输入数据的程序JAVA中一般会提供set和get方法来设置和读取数据,这样就可以在set方法中先检查数据是否合法,而不是让用户直接来操作变量。


        类的继承性

        1、在java中通过关键字 extends 继承一个已有的类,被继承的类成为父类(基类),新的类称为子类(派生类图片)。

  2、在java中,不允许多继承

  3、在子类中定义一个与父类同名、返回类型、参数类型均相同的一个方法,称为方法的 覆盖。

  4、覆盖 发生在子类与父类之间。

  5、特殊变量super 提供了对父类的访问。

  6、可以使用super 访问父类被子类隐藏的变量和覆盖的方法。

  7、每个子类构造方法的第一条语句,都是隐含的调用super(),如果父类没有构造方法,那么在编译的时候就会报错。

        类的多态性

  1、通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法。

  2、简单概括多态性:当我们将子类对象的引用传给声明为父类的一个对象变量,如果子类有这个方法就调用子类的方法,如果子类没有这个方法就调用父类的这个方法。

  3、多态性的好处:它可以根据在运行的时候,根据我们传递不同对象的引用,来调用不同对象的方法。

       

        我认为Java的三个特性在很大的程度上是跟生物学和管理学相关的。

        再说说成员变量和成员函数吧。其实,这成员变量就像对象存在的一个属性仰或说状态。就那人来说吧,人的生死就是一种状态,性别就是一种属性。

        而这成员函数就根据这不同状态或者属性来处理一些逻辑。就像人饿了要吃放,渴了要喝水一样。

        在这里还涉及到一个重要概念——事件,程序一般都是按照事件来驱动的。就像运动员射中目标了或者没射中目标,这就是一个事件。

        至于裁判要给多少分,可以把裁判作为一个监听器来处理,要给多少分就是监听器要处理的逻辑。

        一个应用程序都是有其规律性可言的。它就像世界的万物一样,有生老病死。一个应用程序相对应的生命周期那就是——初始化状态,运行状态,暂停状态,销毁状态,其中不同的状态一般对应一个相应的方法。

        其实,我认为一个应用程序抽象出来也不过只有5种最基本简单的操作——创建,插入,删除,修改,查询。

        因为世界本来就很简单。