面向對象与类之设计技巧总结.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向對象与类之设计技巧总结

第一? 类设计的技巧 ?我们在设计类的时候,就像在室内设计一样,怎么合理创建每个变量,并安排每个方法,是非常重要的。一方面看起来更有专业的水平,便于自己和他人阅读;另一方面,也可以更清晰的在其他类或包中调用该类,使得java的封装性更好,健壮性更强,等等。 1、一定要将数据设计为私有 ? ? ? ? 当然,这里说一定,并不是说所有的数据都要这么做,在一些必要的数据上是可以放宽一些权限的;不过为了安全起见,设置成为私有,是为了其封装性的良好。其实最重要,需要强调的就是:绝对不要破坏封装性。当数据保持私有时,外部使用者就不用去直接调用这些数据,而是通过一个入口,一个方法访问,这样,使用者不需要知道内部数据怎么组织的,只需要知道如何传入数据,如何使用结果等就可以了。而且,这些数据也就避免了被访问,从而防止被修改了。 2、对数据进行初始化 ? ? ? ? 我们在创建对象之前,一定要对其初始化。对实例变量进行显式的初始化是有一定必要的,因为如果让系统对对象的一些变量进行初始化,那么我们有的时候不知道系统会提供怎样的默认初始化值,这就会对数据的使用造成了一定的影响。比如说,你在设计小轿车这类汽车的时候,如果你不初始化它的轮胎数默认为int = 4;(或者更多)的话,而让系统默认初始化值为0,这显然是不符合实际的。 3、不是所有的变量或者域都需要独立的访问器和设定器(即getXxx和setXxx,Xxx代表变量名) ? ? ? ?当把数据或者说一些变量设置为private的时候,需要对数据进行访问和必要的修改的时候,是需要访问器和更改器的,但是,并不是所有的都是如此。比如说对于一个雇员的工资而言,是需要获得或设置的,这是需要getSalary()和setSalary()方法的,但是对于雇员的姓名和雇佣日期等,一旦构造了这个雇员对象,就就应该禁止更改了。另外,在对象中,常有一些不希望别人获得或设置的实例对象,如一些地区的信息等。 4、类中不要存在过多的方法,适当的分解一个类的功能 ? ? ? ? 这里的”过多“到底是多少呢?这就要根据个人的经验而定了,但是,如果很复杂的一个类可以很明显地分解成两个或更多的简单的类,这就需要将其分解。当然,也不能把一个很简单的方法作为一个类,这就显然有些不合适了,掌握好度就可以了。比如说:一个类可以包含这样几个方法:对数据获取最大值,最小值,排序等操作,另一个类可以包含这样几个方法:对数据进行增加或删除等操作。 5、类名或者方法名要能够体现各自的职责 ? ? ? ? ?这与变量一样,一个类名或者方法名应该有自己一个能够反映出其含义的名字。命名可以这样写:arraySort,即对数组的排序;如类名可以是Employee,即是雇员的类。这样更清晰的给自己也给其他人方便的阅读。 6、使用固定的格式对类进行定义: ? ? ? ? ?在对类进行定义的时候,可以按这样的顺序定义,如: [java]? HYPERLINK /shengfeixiang/article/details/8599546 \o view plain view plain HYPERLINK /shengfeixiang/article/details/8599546 \o copy copy HYPERLINK /shengfeixiang/article/details/8599546 \o print print HYPERLINK /shengfeixiang/article/details/8599546 \o ? ? //创建一个简单的雇员类?? import?java.util.*;?? public?class?Employee??? {?? ????public?Employee(String?name,int?age,double?salary)?? ????{?? ????????//将变量定义为private?? ????????private??=?name;?? ????????private?this.age?=?age;?? ????????private?this.salary?=?salary;?? ????}?? ?? ????//访问器方法?? ????public?String?getName()?? ????{?? ????????return?name;?? ????}?? ?? ????public?int?getAge()?? ????{?? ????????if?(age18)//限制age的值?? ????????{?? ????????????System.out.println(不好意思啦,我们不接收未成年人!嘿嘿);?? ????????????return;?? ????????}?? ?

文档评论(0)

sd47f8cI + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档