划词......
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

java初学者实践教程12-面向对象

Posted on 2008-09-16 08:26  王君  阅读(344)  评论(0编辑  收藏  举报

    4节课中我们初步的了解到了一些面向对象的概念,和一些特性。例如封装。这节课我们来进一步认识一下,这种思想。对了,在这里我说这是一种思想,是想问题的方法。即使没有javaC++smalltalk这样的面向对象语言也有这种思想。其实这种思想在上世纪60年代就已经存在了。还有一个常见的误区,不光是初学者,就是有些干了几年的程序员也是这样,以为用java写东西就是面向对象,这都是错误的。

那么面向对象到底是什么东西呢?能够明确的给出概念非常少,但是我们可以分析一下。它与面向过程的思想做一个比较,面向过程是指,我们考虑问题时,以一个具体的流程(事务过程)为单位,考虑它的实现过程;面向对象是指,我们考虑问题时,把任何东西看做是对象,以对象为单位,考虑它的属性及方法。

 

好比一个木匠在做一把凳子,如果他是面向过程的木匠,他会想到制作凳子的过程。“先做什么呢?凳子腿?凳子板?用什么工具呢?”。如果他是一个面向对象的木匠,他会把所有的东西看做成对象,“凳子腿,凳子板两个对象。凳子腿有属性,长方体的,长度,宽度是多少厘米,有方法钉钉子。凳子板的属性,正方形,边长是多少厘米等等问题。”这样的话,面向对象的木匠会依据这些条件。将一个凳子组装在一起。最终目的是做成一个凳子,用什么思想方法去做,是值得研究的。

 

通过刚才的例子,我们会有一种感觉,面向对象的木匠会对事务量化的分析,用“数学”的方法处理问题似的。好像他更具有进步意义。面向对象的思想也确实有着他的先进之处,它把世界上的所有事务看做成为对象,这样的话更贴近于现实世界,这样的话使得逻辑清晰,谁看报告的时候也喜欢看条理清晰的报告啊。这样使得面向对象的软件开发,成为上世纪90年代直到现在的主流开发技术。传统开发方法存在问题

1.软件重用性差
     重用性是指同一事物不经修改或稍加修改就可多次重复使用的性质。软件重用性是软件工程追求的目标之一。谁愿意来来回回的写一件事情呢。

2.软件可维护性差
      软件工程强调软件的可维护性,强调文档资料的重要性,规定最终的软件产品应该由完整、一致的配置成分组成。在软件开发过程中,始终强调软件的可读性、可修 改性和可测试性是软件的重要的质量指标。实践证明,用传统方法开发出来的软件,维护时其费用和成本仍然很高,其原因是可修改性差,维护困难,导致可维护性差。

3.开发出的软件不能满足用户需要
      用传统的结构化方法开发大型软件系统涉及各种不同领域的知识,在开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要。

现在的面向对象的思想已经扩展到很多方面,如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。而且他指的是面向对象分析(OOA),面向对象设计(OOD),面向对象编程(OOP),这一套过程了。

 

下面我们来看一下,经常用到的重要概念,也就是java语言的的OOP特性,这是对于OOP而言的,不含前面的OOAOOD的。因为是初学嘛,还没有学到怎么分析和设计呢。JavaOOP有三大特性:封装、继承、多态

封装的概念已经在4节课说过了,我们讲的是,它用权限修饰符private使得属性不能被外界访问,像是人的五脏六腑怎么能让人随意的碰呢?人的这个属性也是要封装的。如有再不明白,请访问我们的技术论坛

说一下容易理解的继承:

当一个类是另一个类的特例时,这两个类之间具有父子类的关系。子类继承了父类的方法和属性,就是说子类可以重用父类中的这部分代码。比如:轿车是车的一个特例。轿车是车的子类。就是说,轿车继承了车的一切特性。继承用关键字extends表示。

实践:

//这是基类

public class Che {

               private int wheel = 4;

               public int getWheel() {

                  return wheel;

               }   }

                     public class Jiaoche extends Che {

               private String pinpai = "桑塔纳";

               public String getPinpai() {

                  return pinpai;

           }   }

                     public class Testche {

               public static void main(String[] args) {

                  Jiaoche car = new Jiaoche();      

                  int wheels = car.getWheel(); //调用基类的方法

                  String Pinpal = car.getPinpai();//调用本身的方法

                  System.out.println("车有 "+wheels+" 个轮子");

                  System.out.println("轿车的品牌是 "+Pinpal);

           }   } 

 

上述例子源码和附加练习源码打包下载

注意:java语言与C++不同只可以从一个父类继承哦(单继承)。

还有就是最难理解的多态了,我们下次课讲面向对象的多态性。