第三章面向对象编程的基本概念_第1页
第三章面向对象编程的基本概念_第2页
第三章面向对象编程的基本概念_第3页
第三章面向对象编程的基本概念_第4页
第三章面向对象编程的基本概念_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 面向对象程序设计基本概念 面向对象的程序设计(OOP)已成为现代软件开发的必然选择。通过掌握面向对象的技术,能开发出复杂、高级的系统,这些系统是完整健全的,但又是可扩充的。OOP是建立在把对象作为基本实体看待的面向对象的模型上的,这种模型可以使对象之间能相互交互作用。 面向对象程序设计在一个好的面向对象程序设计语言(OOPL)的支持下能得到最好的实现。Java就是一种优秀的OOPL,它提供了用来支持面向对象程序设计模型所需的一切条件。Java有自己完善的对象模型,并提供了一个庞大的Java类库,并有一套完整的面向对象解决方案和体系结构。 本章介绍面向对象的概念和对象建模的方法,讲解Ja

2、va对象模型中的核心部分:类及类的成员。使读者学会如何用创建和使用Java对象。 23.1 对象对象n定义:一个对象就是变量和相关方法的封装,其中变量表明对象的状态,方法表明对象的行为。软件对象既可以模拟现实世界的对象,也可以表示抽象的概念对象示意图33.1 对象对象n 封装:封装: 能把对别的对象来说并不重要的对象的实现细节隐蔽起来 ,在使用一个对象时,只需知道怎样引用它的方法而无须知道它的具体实现。 n封装的优点封装的优点: 模块化一个对象的源代码的编写和维护独立于其它对象的源代码。而且,对象在系统中很容易使用。 信息隐蔽每个对象都有一个公共接口使得其它对象可以与其通讯。但对象能维护自己的

3、私有信息和方法并能在任何时候改变它们而不会影响使用它的其它对象。n3.1 对象对象 (SmallTalk的特征的特征)l(1) (1) 所有东西都是对象。可将对象想象成一种新型变所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。量;它保存着数据,但可要求它对自身进行操作。 l(2) (2) 程序是一大堆对象的组合;通过消息传递,各对程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。象知道自己该做些什么。 l(3) (3) 每个对象都有自己的存储空间,可容纳其他对象。每个对象都有自己的存储空间,可容纳其他对象。l(4) (4) 每个对象都有一种类

4、型。根据语法,每个对象都每个对象都有一种类型。根据语法,每个对象都是某个是某个“类类”的一个的一个“实例实例”。其中,。其中,“类类”(ClassClass)是是“类型类型”(TypeType)的同义词。一个类最重要的特征的同义词。一个类最重要的特征就是就是“能将什么消息发给它?能将什么消息发给它?”l(5 5)同一类所有对象都能接收相同的消息。)同一类所有对象都能接收相同的消息。 3.1对象理解对象使用对象对象之间的关系 面向对象程序设计中的对象与客观世界中的对象并不是完全相同的概念,他们既有联系又有区别。所以深刻理解编程中的对象本质将有利于实践面向对象编程和开发。 3.1.1理解对象 对象

5、可以视为一组相关的对象可以视为一组相关的操作代码和数据的组合操作代码和数据的组合 对象是类的实例对象是类的实例 对象可以互相协作,共同对象可以互相协作,共同完成任务完成任务 通过继承、组合或封装等通过继承、组合或封装等方式可以产成新的对象方式可以产成新的对象 对象根据特定的意义和用对象根据特定的意义和用途有不同的划分方法途有不同的划分方法 3.1.2使用对象:设计果园系统 一个面向对象的果园系统 假设我们要开发一个最简单的果园系统GardenSys。用面向对象的方法来分析,这个果园系统至少包括园丁和水果这两个对象。园丁的工作包括种植各种水果,水果的行为包括生长和收获,不同的水果还有不同的名称。

6、园丁种植水果,园丁与水果存在关联关系。 3.1.2使用对象:对象的创建和销毁 对象是通过类创建的,对象是类的动态实例。每个对象都有生命期。一个对象按其生命期来分析,一般有三个阶段,出生、活动、死亡。而我们在编程中要做的对应为:创建(初始化)、运行、销毁。 通常,当调用构造函数时,该函数返回一个新分配内存并初始化了的类的实例。 Java构造函数是一种比较特殊的函数,它不能由用户来指定返回类型,只能返回所属类的类型;它也不能由用户来指定其它名称,只能使用与类名相同的名称。即便如此,我们仍然可以通过方法的重载(overload)来为一个类提供多个不同的构造函数。 在Java中没有用于销毁和清理对象的

7、析构函数,因为Java提供了垃圾回收(Garbage Collection,简称gc)机制负责释放对象所占用的内存空间及相关的其它资源。 3.1.2使用对象:对象和对象变量 从语义上讲,对象是类的实例,类是创建对象的模板;从语言上讲,对象也是类这种数据类型的变量,对象在内存中占有空间。但是在具体使用中,对象与传统的变量,也就是Java中基本类型的变量有区别。 对象是一种引用类型。对象由类创建,存储在堆中;而对象变量则是对象的引用,存储在栈中。在程序中我们通过对象变量,也就是对象的引用,来操纵对象。 引用类型的演示: MyClass a,b;/声明MyClass类型的变量a和b,MyClass是

8、一个Java类 a = new MyClass();/变量a引用了MyClass类创建的对象实例 a.myvar = 24;/给对象实例的字段myvar赋值 b = a; /变量b得到的是变量a的一个引用的副本, /结果使他们都引用了同一个对象实例。 a.myvar = a.myvar+1;/改变对象字段的值 System.out.println(a.myvar); /此时显示a.myvar值为25 System.out.println(b.myvar); /此时显示b.myvar值也为253.1.3对象之间的关系对象之间的关系有: 合成关系(“hasa”) 继承关系(“isa”) 依赖关系(

9、“usea”)面向对象程序设计的高效关键在于它让每个对象负责执行一组相关的任务。如果对象依赖于其他对象负责处理的任务,那么它就去访问负责这个任务的对象。这时第一个对象就请求第二个对象执行任务,即这个对象依赖于另一个对象。另外,一个对象不能直接操作另一个对象内部的数据,它也不应让其他对象直接访问自己的数据。所有的通信都应该通过方法调用来完成。通过对对象数据的封装,就可以使可重用性最大化,减少数据依赖,并且使调试时间最小化。当然,就像面向过程语言中的模块一样,不应该让一个对象负责过多的事情。创建完成少量任务、规模较小的对象会使设计和调试过程都变得较为简单,相反,创建数据复杂、函数众多的对象,则会使

10、开发过程变得极为复杂。因此理解对象之间的关系可以帮助我们设计出可重用、易维护的代码,降低耦合性,提高灵活性。 113.2 什么是消息什么是消息n 对象间相互作用和互相通讯是通过发送消息来实现的。当对象A让对象B执行它的某个方法时,对象A就要向对象B发送消息。 123.2 什么是消息什么是消息n 一个消息通常包括三部分: 接受消息的对象 接受消息的对象应执行的方法 方法所需要的参数 n消息模式的优点: 利用对象的方法来表示对象的行为,收发消息能支持对象间所有可能的交互作用。 收发消息的对象无须在同一个进程里,甚至无须在同一个机器里。 133.3 什么是类什么是类n定义:定义:类是一类对象的抽象或

11、原形,它定义了该类对象的共同的状态和方法 n类和对象的区别:类和对象的区别:类:是一类对象的原形,是对该类对象的抽象。 对象:是某个类的一个实例,是客观存在并能够使用的。n类的优点:类的优点: 有效地支持了软件重用。程序员使用一个类可以反复创建多个对象。 第三章第三章面向对象程序设计的基本概念面向对象程序设计的基本概念3.3类例如:对于园丁所种植的香蕉、橘子、葡萄等不同的水果对象,它们有共同的名称属性,以及种植和收获的操作,因此可将它们划归为果园系统中的水果类。 3.3.1什么是Java类 当用户编写自己的Java程序时,主要工作就是编写类。当程序运行时,已声明的类用来创建新对象。由类创建对象

12、的过程称为实例化(instantiation),每个对象都是类的一个新实例(instance)。 类是一种抽象数据类型,在Java中类也被当作一个数据类型来定义。类的语法结构包括关键字class、跟在后面的类名称。如果其继承自某个基类,还需要使用extends关键字加基类名称。 类通常不需要从头生成。相反,他们可以从其他的类派生而来,继承祖先类的可用类成员,包括:字段、方法等。即使是从头创建的新类也必须是继承自Object类,只不过我们可以合法省略extends Object而已。 class 类名类名 extends 基类基类 /类的函数成员类的函数成员 构造函数构造函数1; 构造函数构造函

13、数2; . 方法方法1; 方法方法2; . /类的数据成员类的数据成员 字段字段1; 字段字段2; . 3.3.2类成员 类成员包括数据成员和函数成员。 数据成员是面向对象的术语,用于表示类中的数据变量,即Java中的字段(field)。 函数成员也是面向对象的术语,用于表示类中的操作。Java的函数成员包括方法和构造函数: 方法是一些封装在类中的过程和函数,用于执行类的操作,完成类的任务。 构造函数是一种特殊的方法,用于对象的创建和初始化。3.3.3类成员的可访问性 类成员包括数据成员和函数成员,类的每个成员都有一个称为可访问性的属性,用来保护类成员。Java有四种类成员的保护方式,分别为缺

14、省的、public(公有的)、protected(保护的)、private(私有的)。 为了使程序具有良好易读的风格,建议最好在撰写类代码时用不同的可访问性来组织类成员,并将public成员作为对外公布的接口放在最前面,以便引起关注。限访问修饰符关键字限访问修饰符关键字同一个类中同一个类中同一个包中同一个包中派生类中派生类中其他包中其他包中publicprotected无访问修饰符关键字private3.3.4方法 方法是在类中定义,用来实现对象操作的过程或者函数。方法是类的成员,并有自己的可访问性。Java程序中,方法的声明和方法的实现是分开的。 方法与普通函数和过程不同,方法只应用于特定类

15、及其祖先类的对象。另外,每一个方法都有一个隐含的参数,称为this,它引用作为方法调用主体的对象。调用一个方法的语法格式是:对象名对象名.方法名方法名(实际参数实际参数); 实例字段和实例方法是属于某一具体实例对象的字段和方法,必须先创建这个实例对象,然后才能使用这些字段和方法。对于同一个类创建的不同的实例对象,其字段可以有不同的取值,以反映该对象的不同状态。 除此之外,还有一种通过类就可以直接访问的静态字段和静态方法,这种静态的字段和方法用static关键字标识,不需要创建实例就可以通过类直接访问。 193.4 什么是继承什么是继承n定义:定义:利用现有的类(supperclass)定义新的

16、类(subclass), 子类可以继承父类的属性和方法并可以增加新的属性和方法或重载父类的方法。n对象的继承是一种在保持对象差异性的同时共享对象相似性的复用。它是源自类的泛化机制。这种抽象机制允许类之间共享代码,大大减少了代码长度并且使软件易于维护。对象通过继承,保证了实现部分紧内聚和松耦合的良好特性。 第三章第三章面向对象程序设计的基本概念面向对象程序设计的基本概念3.4 什么是继承什么是继承 第三章第三章面向对象程序设计的基本概念面向对象程序设计的基本概念继承的优点:子类提供了基于父类公共部分的更具体的行为。利用继承子类可以重用父类多次;可以定义一个称为抽象类的父类来定义一般行为。213.

17、4 什么是继承什么是继承交通工具交通工具汽车汽车 卡车卡车旅行车旅行车 小汽车小汽车 轿车轿车 跑车跑车 面包车面包车基类基类/ 祖先类祖先类父类父类/子类子类/派生类派生类子类子类/派生类派生类 第三章第三章面向对象程序设计的基本概念面向对象程序设计的基本概念3.4.1使用继承n基类与派生类基类与派生类Java中派生类通过中派生类通过extends关关键字继承基类,并通过键字继承基类,并通过super关键字访问基类的构造函数和关键字访问基类的构造函数和方法。方法。Java中所有的类都继承了中所有的类都继承了Object类的类的toString方法,我方法,我们可以重写并覆盖们可以重写并覆盖t

18、oString方方法,使之带有对象的具体信息法,使之带有对象的具体信息,以便我们跟踪和调试对象。,以便我们跟踪和调试对象。继承关系形成了树状的类层次继承关系形成了树状的类层次结构。继承产生的派生类不能结构。继承产生的派生类不能直接访问其基类的直接访问其基类的private成成员,但所有其他基类成员通过员,但所有其他基类成员通过继承成为派生类的成员后,保继承成为派生类的成员后,保持它们原来的成员的可访问性持它们原来的成员的可访问性,并可在派生类中使用。,并可在派生类中使用。面积=lengthwidth周长=2(length+width)Square需要重写并覆盖基类的calcPerimeter方

19、法来计算周长。周长=4lengthSquare可以继承基类Rectangle的calcArea方法来计算面积,无须另写代码图4 2在这个UML类图中,Square继承了Rectangle,是Rectangle类的扩展示例程序4 1Retangle类(Retangle.java)publicclassRetanglepublicRetangle(doublel,doublew)length=l;width=w;publicdoublecalcPerimeter()return2*(length+width);publicdoublecalcArea()returnlength*width;pub

20、licStringtoString()return长为+length+宽为+width+的长方形;protecteddoublelength;privatedoublewidth;示例程序4 2Square类(Square.java)publicclassSquareextendsRetanglepublicSquare(doubleside)super(side,side);publicdoublecalcPerimeter()returnlength*4;publicStringtoString()return边长为+length+的正方形;3.4.1使用继承n基类与派基类与派生类生类n继

21、承在果继承在果园系统中园系统中的使用的使用3.4.2继承与合成 面向对象程序设计中,通过合成或通过继承都可以在不同的环境中重用已有的设计和实现。但经验表明,除非所有继承的方法都有意义,否则还是应当优先考虑使用合成而不是继承。因为依赖于对象合成技术的设计有更好的重用性或更简单。简而言之:面向对象=对象+类+继承+消息 第三章第三章面向对象程序设计的基本概念面向对象程序设计的基本概念3.5多态 多态的意思是具有多种形态,它是面向对象程序设计的重要思想方法。多态在面向对象程序设计中意味着通过动态绑定原理,使用单个变量来引用不同类的对象,自动调用引用对象类的对应方法。 动态绑定机制,可以在运行期判定对

22、象的类型,并调用其相应的方法。也就是说,编译器无需知道对象的类型,但方法的绑定和调用机制能够找出正确的方法体并加以调用。 同名方法的覆盖(override)和重载(overload)是两种完全不同的机制。 替代原则(substitution principle):基类应该可以用其派生类代换。替代过程也是派生类向上转型的过程。向上转型是一种常用的安全的类型转换,通过向上转型可实现多态性。3.5.1多态与动态绑定n派生类的对象具有多个类型n动态绑定实现多态 public int gain() int g=input*2;/收益是投入的两倍 return g; public int gain() /

23、收益不变.public int gain() /收益-200.public int gain() / 收益是投入的3倍 int g = input * 3; System.out.println(fruitName + 投入 + input + 净收益 + g); return g;覆盖(override)fruitsi.gain();程序运行时动态确定实现的gain方法数组属性索引01234派生类类型TropicalFruitBerryTropicalFruitBerryCitrusFruit水果名称香蕉葡萄菠萝草莓橘子fruits0=newTropicalFruit(香蕉,1000);fr

24、uits1=newBerry(葡萄,2000);fruits2=newTropicalFruit(菠萝,2000);fruits3=newBerry(草莓,1000);fruits4=newCitrusFruit(橘子,1000);我们可以像对待基类对象那样对待派生类对象,它们的共性表现在继承下来的同名类成员。所有继承于共同基类的派生类对象可以当做是这些基类的对象。FoodmyFood;FruitmyFruit;CitrusFruitorange;orange=newCitrusFruit(橘子,1000);/创建橘子对象myFood=orange();/相当于myFood=(Food)ora

25、nge;myFood.eat();/调用的是CitrusFruit的eat方法:剥皮吃橘子myFruit=orange;/相当于myFruit=(Fruit)orange;myFruit.eat();/调用的还是CitrusFruit的eat方法:剥皮吃橘子3.5.2方法的绑定所谓的方法绑定(Binding)就是建立方法调用(Method Call)和方法本体(Method Body)之间的关联。如果方法是“早绑定”、“先期绑定”的,也就是在编译时编译器就能准确地判断应该调用的那个方法称为静态绑定方法。Java中这类方法包括private、static、final方法以及构造函数。如果方法是“

26、晚绑定”、“后期绑定”的,也就是在运行时由虚拟机调用同该对象变量所指对象的实际类型相匹配的方法版本,动态决定的方法,称为动态绑定方法。Java中除了private、static、final方法以及构造函数外的其他方法都是动态绑定方法。 Java语言中使用关键字final来定义常量。但是关键字final还有另外2个重要用途:一个是阻止类(final类)被继承,另一个是阻止方法(final方法)被覆盖(override)。 抽象方法是一种没有实现的方法。定义有抽象方法的类我们称之为抽象类。抽象方法和抽象类都使用abstract关键字来标识。含有抽象方法的类必须定义为抽象类,但是没有抽象方法的类也可

27、以定义为抽象类。但无论如何,抽象类都不能创建实例。 3.6接口 接口的概念是建立在封装的基础之上。在面向对象程序设计中,封装是指对象的使用者通过预先定义的接口关联到某一对象的服务和数据时,无需知道这些服务是如何实现的。因此接口在面向对象程序设计中有着重要的地位。在Java中,抽象类和接口(Interface)都是一种接口抽象机制,符合接口的特点。习惯上我们只把Java语法中的接口(Interface)作为接口的窄定义。该接口是一种类型,它定义了能被一个类实现的方法。 3.6.1接口的概念接口是指一些方法特征的集合,它关心的是方法的特征定义(例如方法的名称、参数的类型及数量),而不是方法的具体实

28、现。在Java中,抽象类和接口都是一种接口抽象机制,符合接口的特点。 接口提供了一种抽象机制接口提供了一种抽象机制 接口使即插即用变得可能接口使即插即用变得可能 接口针对抽象而不是针对实现接口针对抽象而不是针对实现 3.6.2Java接口n定义接口定义接口n实现接口实现接口n接口与多重继承接口与多重继承 public interface 接口名接口名 extends 祖先接口祖先接口名名 返回类型返回类型 方法名方法名(参数列表参数列表); . 类型类型 常量字段名常量字段名 = 值值; .public class 类名类名 extends 祖先类名祖先类名 implements 接口名接口名

29、 , 其它接口名其它接口名. /类的实现代码类的实现代码 . 下面代码通过实现Writeable接口和Eatable接口的Paper类代码,演示了多重继承的程序设计:publicclassPaperimplementsEatable,Writeablepublicvoideat()System.out.println(撕纸吃,+TASTELESS);publicvoidwrite()System.out.println(在纸上书写:);3.6.3接口应用实例 使用接口的好处是便于系统的扩展、维护和重用。接口使用接口的好处是便于系统的扩展、维护和重用。接口的使用使得代码模块之间的耦合减弱。具体表

30、现在对象的使用使得代码模块之间的耦合减弱。具体表现在对象之间的依赖关系弱化为客户之间的依赖关系弱化为客户服务的关系,即客户对服务的关系,即客户对象请求服务,服务对象提供服务,而接口则成了提供服象请求服务,服务对象提供服务,而接口则成了提供服务的一种契约。务的一种契约。 没有经验的程序员设计接口时通常会犯合并接口和预留没有经验的程序员设计接口时通常会犯合并接口和预留接口这两个错误。根据接口隔离法则,我们在设计接口接口这两个错误。根据接口隔离法则,我们在设计接口时不应该强迫客户端依赖于他们用不上的方法,而是应时不应该强迫客户端依赖于他们用不上的方法,而是应该提供职责明确、功能专一的最小化接口。除非

31、必要,该提供职责明确、功能专一的最小化接口。除非必要,应该严格控制接口宽度,避免接口冗余。应该严格控制接口宽度,避免接口冗余。面向对象的特点主要概括为:抽象性抽象性 继承性继承性 多态性多态性 封装性封装性小结:3.7面向对象和对象建模 面向对象方法学是面向对象程序设计技术的理论基础。面向对象程序设计具有符合人类抽象思维的认知习惯,使得程序开发过程与人类的认知过程同步,便于建立规范化的分析设计方法,使程序具有更好的封装性、可读性、可维护性、可重用性等一系列优点。 面向对象技术以基本对象模型为单位,将对象内部处理细节封装在模型内部,重视对象模块间的接口联系和对象与外部环境间的联系,能层次清晰地表

32、示对象模型。 模型提供了一个物理系统的抽象,模型可以让工程师们忽略无关的细节而把注意力集中到系统的重要部分来进行思考。软件模型除了用于系统设计还可以用在很多的方面,例如预期系统的质量、当系统的某些方面变化时推理特定的属性、测试关键的系统特征等。模型可以先开发出来用于指导物理系统的开发,或者也可以由一个已存在的系统或者开发中的系统产生,作为理解系统行为、优化系统实现的手段。统一建模语言UML是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。3.7.1面向对象基本原理面向对象技术,正是利用对现实世界中对象的抽象和对象之间相互关联和相互作用的描述来对现实世界进

33、行模拟,并且使其映射到目标系统中。所以面向对象的特点主要概括为抽象性、继承性、封装性和多态性。 抽象性指对现实世界中某一类实体或事件进行抽象,从中提取共同信息,找出共同规律,反过来又把它们集中在一个集合中,定义为所设计目标系统中的对象。 继承性新的对象类由继承原有对象类的某些特性或全部特性而产生出来,原有对象类称为基类(或超类、父类),新的对象类称为派生类(或子类),派生类可以直接继承基类的共性,又允许派生类发展自己的个性。继承性简化了对新的对象类的设计。 封装性是指对象的使用者通过预先定义的接口关联到某一对象的服务和数据时,无需知道这些服务是如何实现的。即用户使用对象时无需知道对象内部的运行

34、细节。这样,以前所开发的系统中已使用的对象能够在新系统中重新采用,减少了新系统中分析、设计和编程的工作量。 多态性是指不同类型的对象可以对相同的激励做出适当的不同相应的能力。多态性丰富了对象的内容,扩大了对象的适应性,改变了对象单一继承的关系。3.7.2建立面向对象的思维 对象是建立面向对象程序所依赖的基本单元。用更专业的话来说,所谓对象就是一种代码的实例,这种代码执行特定的功能,具有自包含或者封装的性质。这种封装代码通常叫做类 。 “封装”的对象具有自己的函数,这种函数被称作“方法”,而对象的属性则被称为“字段”。当对象内部定义了字段的时候,它们通常不能扩展到实例以外。 用于创建对象的类有一

35、种功能强大的特性,这就是它们可以继承其他类。 在继承了类后,我们可以通过覆盖(override)方法来获得希望的结果。 面向对象强调从问题域的概念到软件程序和界面的直接映射;心理学的研究也表明,把客观世界看成是许多对象更接近人类的自然思维方式。对象比函数更为稳定;软件需求的变动往往是功能相关的变动,而其功能的执行者对象通常不会有大的变动。另外,面向对象的开发也支持、鼓励软件工程实践中的信息隐藏、数据抽象和封装。在一个对象内部的修改被局部隔离。面向对象开发的软件易于修改、扩充和维护。 3.7.3UML和对象建模 模型与建模模型与建模 模型提供了一个物理系统的抽象,模型可以让工程师们忽略无关的细节

36、而把注意力集中到系统的重要部分来进行思考。从软件建模技术的发展过程中,人们认识到建模语言是一种图形化的文档描述性语言,利用它可以解决在软件建模过程中存在的沟通障碍问题。 3.7.3UML和对象建模 统一建模语言统一建模语言UML是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。它可以把人们对所需要构建系统的想法和理解记录下来,以便用于对系统的分析、设计、研究、配置和维护。 关联关系泛化关系(继承关系)字段方法类名称可见性( - # + )3.7.3UML和对象建模 使用建模工具使用建模工具 建模工具的出现提高了建模的生产力。一个优秀的建模工具应该能够完成模型与代码之间的自动转换,也可以保持设计模型与实现代码在变更时的步调一致。 v3.8.1传统软件开发方法存在的问题软件生产率低软件重用程度低软件维护艰辛软件非用户所需3.8 软件开发的方法软件开发的方法 第三章第三章面向对象程序设计的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论