初学JavaDay15——面向对象

初学JavaDay15——面向对象

 

15.1 类的抽象和封装

类的抽象是指将类的实现和类的使用分离开,实现的细节被封装并且对用户隐藏,这被称为类的封装。

类抽象和类封装是一个问题的两个方面。比如:当我们建立一个计算机系统时,一个计算机有很多组件——CPU、内存、硬盘、主板等,这其中的每一个组件都可以被看做一个有属性和方法的对象。而如果要想计算机工作,只需要知道每个组件是怎么用就行了。这里面主板就相当于主类,而其他各个部分就像是其他等待被调用的类。最终,用户所见到的就是一个完整的计算机系统,不用管每个部分是怎样工作的,只要知道其作用是什么。

15.2 面向对象的思想

面向过程的范式重点在于设计方法。面向对象的范式将数据和方法耦合在一起构成对象。使用面向对象范式的软件设计重点在对象以及对对象的操作上。

在面向过程程序设计中,数据和数据上的操作是分离的,而且这种做法要求传递数据给方法。面向对象程序设计将数据和对它们的操作都放在一个对象中。这个方法解决了很多面向过程程序设计固有的问题。面向对象程序设计方法以一种反映真实世界的方式组织程序, 在真实世界中,所有的对象和属性及动作都相关联。使用对象提高了软件的可重用性,并且使程序更易于开发和维护。Java 程序设计涉及对对象的思考,一个 Java 程序可以看作是一 个相互操作的对象集合。

15.3 类的关系

15.3.1 关联

1. 关联是一种常见的二元关系,描述两个类之间的活例。

2.关联由两个类之间的实线表示,可以有一个可选的标签描述关系。例如下图中,老师、同学、课程之间的关系。

3. 关系中涉及的每个类可以有一个角色名称,描述在该关系中担当的角色

4.关联中涉及的每个类可以给定一个多重性(multiplicity), 放置在类的边上用于给定 UML 图中关系所涉及的类的对象数。

5.在 Java 代码中,可以通过使用数据域以及方法来实现关联,如图:

15.3.2 聚集和组合

聚集:聚集是关联的一种特殊形式,代表了两个对象之间的归属关系。

组合:— 个对象可以被多个其他的聚集对象所拥有。如果一个对象只归属于一个聚集对象,那 么它和聚集对象之间的关系就称为组合(composition)。

如图,是学生和名字以及地址之间的关系,在图中,每个学生只能有一个地址,而每个地址最多可以被 3 个学生共享。每个 学生都有一个名字,而每个学生的名字都是唯一的。

 

 

注意:由于聚集和组合关系都以同样的方式用类来表示,我们不区分它们,将两者都称为组合。

 

15.4  Biglnteger 和 BigDecimal 类

Biglnteger 类和 BigDecimal 类可以用于表示任意大小和精度的整教或者十进制数。而比如long、int、double等都有范围限制。

1.可以使 用 new Biglnteger(String)和 new BigDecimal(String)来创建Biglnteger和BigDecimal的实例,

2.使用add、subtract、multiple、divide 和 remainder 方法完成算术运算,

3.使用 compareTo 方法比较两个大数字。

4.对 BigDecimal 对象的精度没有限制。如果结果不能终止,那么divide 方法会抛出 ArithmeticException 异常。但是,可以使用重载的 divide(BigDecimal d.int scale, int roundingMode)方法来指定尺度和舍入方式来避免这个异常,这里的 scale 是指小数点后最小的整数位数。

15.5  StringBuilder 和 StringBuffer 类

对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象

StringBuilder 和 StringBuffer 类似于 String 类,区别在于 String 类是不可改变的。

— 般来说,只要使用字符串的地方,都可以使用StringBuilder/StringBuffer'类。 StringBuilder/StringBuffer类比 String类更灵活。可以给一个StringBuilder 或 StringBuffer 中添加、插入或追加新的内容,但是 String 对象一旦创建,它的值就确定了。

除了 StringBuffer 中修改缓冲区的方法是同步的,这意味着只有一个任务被允许执 行方法之外,StringBuilder 类与 StringBuffer 类是很相似的。

如果是多任务并发访问, 就使用StringBuffer, 因为这种情况下需要同步以防止 StringBuffer 崩溃。

如果是单任务访问,使用StringBuilder 会更有效。StringBuffer 和 StringBuilder 中的构造方法和其他方法几乎是完全一样的。程序可以不经任何修改进行编译和运行。

下图是StringBuilder类修改字符串的方法

提示:如果一个字符串不需要任何改变,则使用 String 类而不使用 StringBuffer 类。 Java 可以完成对 String 类的优化,例如,共享限定字符串等。

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值