写在前面:博主在刚接触《软件构造》这门课程时,并没有java相关课程的学习前提,导致学习起来非常吃力,连最基本的对象与类的概念也不理解,这里博主展示一下对象与类的相关知识和自己的理解。
一.类
(1)类的概念:
类是构造对象的模板或蓝图。
(2)识别类:
传统的过程式程序中,必须从顶部的main函数开始编写程序。在面向对象程序设计时没有所谓的“顶部”。学习OOP的初学者比如博主因而常常会感觉无从下手。答案是:首先从识别类开始,然后再为各个类添加方法。
识别类的一个简单经验是分析问题的过程中寻找名词,而方法对应着动词。
例如,在订单处理系统中,有这样一些名词:
①商品;
②订单;
③送货地址;
④付款;
⑤账户;
从这些名词就可以得到类 商品、订单 等。
(3)类之间的关系:
在类之间,最常用的关系有:
①依赖;
②聚合;
③继承;
依赖(dependence),即“uses-a”关系,是一种最明显的、最常见的关系。
聚合(aggregation),即“has-a”关系,很容易理解,因为这种关系很具体。
继承(inheritance),即“is-a”关系,表示一个更特殊的类与一个更一般的类之间的关系。
二.对象
(1)对象的概念:
对象即数据。
(2)对象的主要特性:
①对象的行为(behavior)——可以对对象完成哪些操作,或者可以对对象应用哪些方法?
②对象的状态(state)——当调用那些方法时,对象会如何响应?
③对象的表示(identity)——如何区分具有相同行为与状态的不同对象?
同一个类的所有对象实例,由于支持相同的行为而具有家族式的相似性。对象的行为是用可调用的方法来定义的。
此外,每个对象都保存着描述当前状况的信息。这就是对象的状态。对象的状态可能会随着时间而发生改变,但这种改变不会是自发的。对象状态的改变必须通过调用方法实现(如果不经过方法调用就可以改变对象状态,只能说明破坏了封装性)。
但是,对象的状态并不能完全描述当前状况的信息。每个对象都有一个唯一的标识。例如在一个订单系统中,任何两个订单都存在着不同之处,即使所订购的货物完全相同,他们也是不同的订单。需要注意,作为同一个类的实例,每个对象的标识总是不同的,状态也往往存在着差异。
对象的这些关键特性会彼此相互影响。例如,对象的状态影响它的行为。
在博主刚刚接触java时,很难适应面向对象的编程,在慢慢理解了对象与类的概念以及相关知识,并加以实际操作之后,还是能够完成从面向过程编程到面向对象编程(OOP)的转变的。