- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 面向对象程序设计
1、程序(软件开发过程)
一般而言,软件开发可分为六大步骤,分别为:需求分析、系统设计、编码(系统实现)、测试、实施(部署发布)、维护。
(1)需求分析:任何项目的第一步都是清楚地确定您要解决的需求。对于大型项目,这可能涉及市场研究和与利益相关者会面。一个较小的项目可能只需要列出必备功能。
(2)系统设计:有哪些具体功能、各功能操作的流程是什么、系统采用什么样的技术栈、界面时怎样的?
(3)编码:根据系统设计来进行编码实现;
(4)测试:对编码进行稳定性、功能性、性能进行测试,是否满足应用需求;
(5)实施:部署到用户的工作机上;
(6)维护:遗留bug修复、系统常规性维护
2、类中的静态方法和静态变量
静态方法和静态变量我们都不陌生。如在调用Math函数时就曾使用过pow、PI等静态变量和静态方法,eg:
疑问:为什么面向对象当中要提供静态方法或静态变量,而不仅仅是提供成员方法和成员变量?
我的理解:成员方法和成员变量将特征和能力与对象紧密绑定起来,强调的是个体,但现实生活中并不是所有的特征与方法都和某一个具体对象所绑定,而是整个类(或为所有该类的对象所共享)共有的特征。如电影院有1000张票,有四个买票窗口,那么1000张票应该是这四个窗口所共有的特征,而不是每个窗口独有的特征。另一方面,某些功能或者行为类似于通用性行为,如果把这些功能和具体的对象绑定,使用起来比较麻烦。
3、单例模式
单例模式是一种常见的设计模式,其有以下特点:
单例类只能有一个实例。
单例类必须自己创建自己的唯一实例。
单例类必须给所有其他对象提供这一实例。
单例模式设计的目的:单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。如Windows的Task Manager(任务管理器)就是很典型的单例模式(小实验:是否能够打开两个任务管理器)。又如类似于计数器之类的存在,一般都需要使用一个实例来进行记录,若多例计数则会不准确。总之,选择单例模式就是为了避免不一致状态,避免政出多头。
程序实现特点:
(1)有一个关于自身的静态成员变量;
(2)私有的构造函数
(3)提供静态的getInstance方法,在该方法内创建静态成员变量关于自身实例的引用。
静态变量和成员变量的区别?(pp297 SR7.6)
两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
调用方式不同
成员变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。
别名不同
成员变量也称为实例变量。
静态变量也称为类变量。
数据存储位置不同
成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
4、类间关系
类和类之间要有联系,否则系统就是孤立的,一个系统是要靠多个类协作运行的。在面向对象程序设计重,类和类之间的关系主要分为三类:
依赖关系(dependency)
聚合关系(aggregation)
继承关系(inheritance)
依赖关系
如果A类中使用了B类,那么A和B之间就产生了依赖关系。依赖关系的实现主要有两种方式,一是直接在A中定义B的局部变量或成员变量,如在我们的图形界面编程中,创建菜单getMenuBar、工具条等函数getToolBar都是在函数中创建MenuBar、ToolBar的局部变量,从而实现VideoPlayerApp类与MenuBar、ToolBar之间的依赖关系(略);二是将B的实例作为参数传递给A中的方法。如在A类中需要提供打印输出B信息的Print方法,可以这样设计
public void printBInfo(B bParameter) //类A中的printBInfo方法
依赖关系的UML表示:
依赖关系(A依赖于B,他描述一个对象在运行期间会用到另一个对象的关系)
(2)聚合关系
类A是由其他类共同所构成的——一个类的对象中包含其他类对象的引用(成员变量)。如汽车应该是由引擎、轮胎、方向盘、车架等组合而成,汽车是一个类,引擎、轮胎、方向盘、车架等又分别是另外的其他类。由此可见,聚合关系实际上也是一种依赖关系。
聚合关系的UML
聚合关系(A聚合到B上,或者说B由A组成)
5、this引用
一般地,成员变量和成员方法被视作蓝图或模板以供将来调用,因此定义时不立即具体化,即不在定义时赋值或调用,而是等到了其他方法或 main()中,才给予调用或赋值。那么对于将来要调用成员变量和成员方法的对象用什么变量表示呢,Java
文档评论(0)