• 1. 面向对象(OO)程序设计概念编程模型   所有计算均由两种元素组成:代码和数据.精确的说,有些程序是围绕着"什么正在发生"而编写,有些则是围绕"谁正在受影响"而编写的。   第一种编程方式叫做"面向过程的模型",按这种模型编写的程序以一系列的线性步骤(代码)为特征,可被理解为作用于数据的代码.如 C 等过程化语言。   第二种编程方式叫做"面向对象的模型",按这种模型编写的程序围绕着程序的数据(对象)和针对该对象而严格定义的接口来组织程序,它的特点是数据控制代码的访问.通过把控制权转移到数据上,面向对象的模型在组织方式上有:抽象,封装,继承和多态的好处. 1
  • 2. 计算机世界概念世界现实世界实体抽象数据类型类对象抽象转换抽象实例化面向对象程序设计的思想方法2
  • 3. 面向对象程序设计的思想方法程序空间概念世界现实世界实体抽象数据类型ADT类对象抽象OOP实现实例化OO方法映射3
  • 4. 面向对象程序设计是使用类和对象将现实世界中真实的或抽象的实体在程序中建立模型。面向过程的结构化程序设计: 程序 = 算法+数据结构基于对象和面向对象程序设计: 对象/类 = 算法 + 数据结构 程序 = 对象s + 消息s面向对象程序设计4
  • 5. 面向对象程序设计的基本概念什么是对象( Object) 什么是消息( Message) 什么是类( Class) 什么是继承( Inheritance) 什么是接口( Interface)5
  • 6. 对象(Object)的概念软件对象是现实对象在程序中的模型。 现实世界对象的两个特征:状态(state)与行为(behavior). 软件对象也具有状态与行为: 状态:以一个或多个变量保存 行为:用方法实现行为 6
  • 7. 对象(Object)的概念定义:对象由变量与相关的方法结合起来构成的。7
  • 8. 对象实例一个特定的对象称为实例。8
  • 9. 封装含义:对象的变量置于对象方法的包裹之中,被对外隐藏。 优点: 模块化:不同对象代码之间有一定独立,对象可以 在系统中方便移动。 信息隐藏:保证修改对象信息时,不会对访问它的 对象产生影响。9
  • 10. 什么是消息对象之间通过发送消息进行交互与通信。10
  • 11. 消息的构成消息由三部分构成: 接收消息的对象 方法名称 方法的参数11
  • 12. 消息示例12
  • 13. 消息机制的好处对象的行为是通过它的方法表达的,所以消息传递支持对象之间的所有交互。 相互交换消息的对象可以在不同的进程,甚至在不同的机器上。13
  • 14. 什么是类(class) A class is a blueprint, or prototype, that defines the variables and the methods common to all objects of a certain kind. 一个类是一个蓝图或样板,它定义了某一特定类的所有对象都具有的变量与方法。14
  • 15. 类的结构15
  • 16. 类示例-自行车16
  • 17. 类的实例化17
  • 18. 类中的变量与方法变量 实例变量(instance variable) 包含特定对象的状态 类变量(class variable) 由类的所有实例共享 方法 实例方法(instance method) 通过实例进行访问的方法。 类方法 (class method) 通过类进行调用的方法。 18
  • 19. 什么是继承19
  • 20. 什么是继承子类 A class that is derived from a particular class. 从某个特定类派生出来的类。 父类 A class from which a particular class is derived. 派生出某个特定类的类。20
  • 21. 继承的含义子类继承父类的状态与方法。 子类可以增加新的变量和方法。 子类可以重写(Override)继承来的方法。 注:继承关系可以有多层,子类要继承它所有父类的方法与状态。21
  • 22. Java 中的Object类Java中的Object类是最顶层的类,所有其他的类都是它直接或间接的子类。 类型是Object的变量可以指向任意的对象。 Object提供了运行在JVM中的所有对象都需要的行为(方法)。22
  • 23. 继承的优点通过继承可以重用父类中的代码。 程序员可以定义含有一般行为的抽象类。抽象类中的很多方法是没有实现的。可以在抽象类的基础上定义特定的子类,实现具体的细节。23
  • 24. 什么是接口 Java语言中,接口是彼此不相关对象之间发生联系的手段。 接口类似于一种对某种行为达成的协议。这种协议以包含在接口中的一组常量、一些方法定义的形式提出来。对象必须实现接口,才能具有某种行为。 接口机制中没有强制这些类之间建立超、子类关系。24
  • 25. 面向对象程序设计方法随着程序设计学科的发展,程序设计思想经历了从简单的顺序计算到结构化的程序设计,再到面向对象的程序设计的发展过程,形成了一整套的思想理论和设计方法。目前看来,面向对象程序设计方法比较接近人们表达事物和解决问题的思维方法,其特点如下。 (1)具有静态属性和动态行为的对象与客观世界的实体比较相象,面向对象的程序能够比较自然地模拟客观世界,从而使得解空间与问题空间在结构上尽可能一致。 (2)应用面向对象技术来分析、设计和实现软件系统的过程与人们认识客观世界、解决实际问题的过程比较一致。 (3)对象的封装性,降低了程序的复杂性;对象的继承性,增加了程序设计的可重复使用性;对象的多样性,增强了程序设计的灵活性。由此可以明显提高软件开发与维护的效率,降低软件的总成本。 应用这些特点,人们在程序设计时首先要考虑系统有哪些需要处理的“数据”或者“对象”,进一步分析这些对象包含了哪些信息,以及处理这些信息所需要的方法。也就是说,找出对象、正确地描述对象、分析对象与对象之间的关系以及采用计算机语言来构建系统等工作,这是面向对象程序的分析与设计的方法。25
  • 26. 从面向过程程序设计到面向对象程序设计的转变过程对于面向对象的一些基本概念(如类、对象、封装、继承和多态),通过同现实生活的事物相对比,学生还是很容易理解的。但是,如何将这些概念应用到面向对象程序设计中,刚开始对于学生来说还是有一定的难度。为了克服这个难题,我们在教学中注重了以下几方面内容。 (1)从程序设计的角度理解面向对象的基本概念。例如对象的封装性,我们可以认为是一种把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制。.封装可被理解为是一种用做保护的包装器,以防止代码和数据被包装器外部所定义的其他代码任意访问。对包装器内部代码与数据的访问通过一个明确定义的接口来控制。封装代码的好处是每个人都知道怎样访问代码,而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用。在面向对象的程序设计中,最基本的封装单元是类,一个类定义了由一组对象所共享的行为(数据和代码)。一个类的每个对象均包含它所定义的结构与行为,这些对象就好像是一个模子铸造出来的一样,所以对象也叫做类的实例。对于类的封装程度,也是有选择的。类提供关键字public、protected 和private,用于声明哪些数据和函数是公有的、受保护的或者是私有的,用以控制类的封装程度,公有的数据和函数公开必须要让外界知道的内容,而隐藏的是私有的一切内容。对于对象的继承性,是指一个对象从另一个对象中获得属性的过程,它支持按层次分类的概念。如果不使用层次的概念,每个对象需要明确定义各自的全部特征。通过层次分类方式,一个对象只需要在它的类中定义属于它的个性,然后从父类中继承它的共性。因此,正是由于继承机制,才使得一个对象可以成为一个通用类的一个特定实例。26
  • 27. (2)培养面向对象技术分析的抽象思维。抽象是程序设计的基本要素,程序设计者通过抽象描述来实现软件系统。抽象描述的有效方法是使用层次式的分类特性,这种方法允许用户根据物理含义分解一个复杂的系统,把它划分成更容易实现的块。例如,一个计算机系统是一个独立的对象,而在计算机系统内部由几个子系统组成:显示器、键盘、硬盘驱动器、DVD-ROM、音响等,这些子系统每个又由专门的部件组成。在程序设计中,其中抽象是自顶向下地逐步求精和模块化。自顶向下地逐步求精是指首先要对所设计的系统有一个全面的理解,其次从顶层开始连续地逐层向下分解,直到系统的所有模块都被分解为一条条的详细指令时为止。模块化是指把一个大的程序按照一定的原则划分为若干个相对独立但又相互关联的实体,这些实体就是我们所面向的对象,它们用类来描述定义。 27
  • 28. (3)训练面向对象设计的逻辑思维。程序设计的过程也就是对学生的思维进行训练的过程。在许多常规学科的日常教学中我们不难发现这样一个现象,不少学生的思维常常处于混乱的状态。写起文章来前言不搭后语,令人不知所云;解起数学题来步骤混乱,搞不清因果关系。这些都是缺乏逻辑思维训练的结果。程序设计的训练不仅可以让学生养成良好的程序设计习惯,而且可以有效地培养学生思维的条理性和逻辑性。 28
  • 29. (4)帮助学生树立系统工程观点。在计算机行业中,软件的设计已经用工程的观念来进行管理。软件设计不再被认为是手工作坊里的个体劳动,而是被当作一项系统工程。软件工程的复杂程度不低于甚至高于诸如建筑工程等其他行业的工程。随着社会信息化进程的不断加速,计算机应用走进各行各业是大势所趋,社会需要大量的计算机高等人才,从而对我们的计算机教育提出了更高要求。我们知道,程序设计是计算机专业的基础,应该从一开始使学生养成一个好习惯,树立正确的软件工程观点。这样做不仅可以为学生将来从事计算机应用打下良好的基础,而且有利于提高学生统筹全局、协调关系的基本能力。 29