- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 面向对象设计 软件开发活动 建立软件需求 调研--》看看问题是什么? 软件设计 分析、设计--》考虑如何去解决? 实现软件设计 编码--》解决、实现 软件测试 测试与维护 软件需求 软件需求规定了一个程序必须完成的功能,指明了程序应当执行的任务,而不是描述如何执行所规定的任务,通常用一个称为功能说明的文档来描述。 软件设计描述了程序将如何完成需求所指定的任务,并定义了程序中的类和对象、类间关系及类之间如何交互。底层的详细设计将解决各个类的方法如何完成自己的任务。 软件设计的实现是编写解决实际问题的源代码的过程。是将设计转换成某种程序设计语言的行为。 软件测试是保证软件能解决预定问题,并能够再满足性能要求的条件下执行任务。测试工作包括针对不同的输入数据多次运行程序和精确分析程序执行结果。 6.2 识别类的和对象 面向对象软件设计的基本内容就是确定类,类决定软件的结构。 6.2.1 类的识别方法 识别可能的类的方法之一是:识别软件需求中所讨论的实体对象。对象一般是名词。 问题说明中的名词可能标识了程序中需要的一些类和对象 通常用一个名词给代表对象的类命名。一个类代表一个实体,根据类可以建立程序所需要的任意多个实例。 类识别时候还要处理一个问题: 是将某一事物表示为一个对象还是另一个对象的基本属性。 6.2.2 类职责的分派 类职责的分派是软件设计工作的一部分,每个类代表一个具有某些行为的对象,对象的行为由这个类的方法定义。 类的行为所执行的动作体现了程序的功能,因而通常使用动词来给行为和完成行为的方法命名。 静态类成员(Static Class Members) For example: Math类中的静态方法 result = Math.sqrt(25); 下面我们着重学习 静态变量(static variables) 静态方法(static methods) 静态变量(static variables) private static float price; private static int count; 静态变量由类的所有实例共享; 程序第一次引用含有静态变量的类时,将静态变量分配存储空间; 在方法中声明的局部变量不能具有静态属性。 Java程序的main方法必须用static修饰符进行说明,使解释器执行main方法时,不用实例化含main方法的类。 静态方法(static methods) 6.4 类间关系 类之间最基本的关系是:依赖、聚合和继承。 6.4.1 依赖关系 类之间的依赖关系通常体现在一个类的方法调用另一个类的一个方法。 一般而言,如果类A使用类B,则在类A中由一个或者多个方法调用类B中一个或者多个方法。如果被调用的方法是静态方法,则类A只需要通过类名引用B,如果被调用的方法是非静态的,则A必须通过访问类B的实例来调用该方法。 一个对象获得对另一个类的对象访问控制的方式,是软件设计中的重要决策。 6.4.2 同一个类的对象之间的依赖性 即一个类对象与本类的其他对象交互。要实现这一操作,可以将一个类的对象作为一个参数传递给本类的一个方法,使得该方法可以对作为参数得到的对象进行操作。 例如: str3 = str1.concat( str2) ; 例题 6.3 例题 6.4 6.4.3 聚合(has a )关系 一个聚合对象由其他的对象组成,形成一个”has a”关系 一个聚合对象的定义是:将其他对象的引用作为自己的实例数据的对象。 聚合关系是依赖关系的特殊类型,即类A被类B定义为类B的一部分时,类A便依赖类B,类B就是聚合类。 一个聚合类通常要调用其组成部分类的方法。 例题 6.5 例题 6.6 例题 6.7 6.4.4 this 引用 page: 213~214 this是java的保留字,this引用允许对象引用自己。 一个非静态方法需要通过一个具体的对象或类来引用,this引用可用于引用当前正在运行的对象。 this引用也常用于区分同名的构造方法参数和实例方法。 例如: public Account (string owner, long account, double balance) { name =owner; acctNumber = account; balance = balance; } public Account (string name, long acctNumber, double balance) { =name; this.acctNumber = acctNumber; th
您可能关注的文档
- a comarison between mathematics course design of MIT and BUPT.ppt
- A Conrastive Study of English and Chinese-3.ppt
- A Fraework for Marketing Management (by Philip Kotler).ppt
- AdvAl01.ppt
- Amerian Literature-An Overview.ppt
- Analye the body language in non-verbal communication.ppt
- An Upate on EPA Attainment Modeling Guidance for the 8-Hour Ozone NAAQS.ppt
- Annua Leave Policy.ppt
- An Inroduction to Database System.ppt
- ansys件问答合集(二).ppt
文档评论(0)