« 1M还是1.5M?598路小感 »

Objects and Classes--对象和类

在前一章节,我们了解到了抽象是用来创建一个真实世界的模型。而在这个庞大的模型体型中(也许不庞大),里面的组成元素就是对象。在现实世界里面,有很多对象,分为物理的和概念的。物理的是什么,学生,教室,课桌,图书馆;而概念的呢,课程,院系,学生会。这些统称为对象。那么正式点的软件对象是什么呢?

软件对象,是一种将状态(数据)和行为(操作)合成到一起的软件构造,用来描述真实世界的一个(物理或概念性的)对象。

状态(State)/Attribute/数据(Data)
For example:记录一个学生的信息,需要以下数据:学生姓名,学号,生日,住址,主要研究方向,累积积点,导师是谁,本学期要修的课程,已经修过的课程,获得的学分,课程分数。
那么记录一个课程的信息:课程编号,课程名称,先修课程,有效学时,最多人数,带队教授。

那么其中的每一项就称为Attribute属性。因为容易与所以.NET里面的一直特殊的编程构造attribute搞混。所以在.NET里面经常用field来代表属性Attribute.

行为(Behavior)/操作(Operation)/方法(Method)
For example:
学生 和 课程 都有各自的行为
比如学生 : 选修一门课程;推选一门课程,选修主修方向,选修导师,显示自己的GPA,显示自己已经选了哪些课,哪位老师上的课,以及得到的分数。

而课程也有自己的行为
比如允许学生选修,判断指定学生是否已经选修,告诉你已经有多少人选修,告诉你先选修什么,告诉你哪位教授带这节课……


我们把对象的行为或称操作,定义为用以访问对象的attribute和修改/维护attribute值的方法。

我们可以看到:每种操作都与学生一个或多个attribute有关。

类(Class)
类描述了一组相似对象的共同特性。
类定义了以下要素:
1. 定义了对象所需要的数据结构(attribute 的名称和类型)
2. 这些对象要执行的操作,尤其死哪些操作,描述“方法(Method)”是如何在后台执行这些操作的。 HOW?

实际上一个类定义中能找到的东西,要么是类的attribute,要么是该类的方法。

Pascal 命名法 :每个单词第一个字母用大写,所有单词直接连接。用与: 类名 方法名
eg: CourseCatalog RegisterForCourse
Camel 命名法: 第一个单词以小写字母开头,后面跟随的每个单词以大写字母开头。用于: 变量名 attribute
eg: studentId courseLoad

类就相当于对象的模版,对象就是类的一个实例。类里面定义了有哪些attribute和方法,而对象里面的每个attribute值都已经给出,方法可以调用。

如何将对象实例化:
比如有个Student类
那么下面创建一个Student的对象。
程序代码 程序代码
Student y = new Student();
那么其中的y称为 引用变量。相当于指针 ,用于指向内存中实际存在的对象,并且可以展开操作。
引用变量也可以像指针那样互相传递操作,不再赘述。

最后一点是,作为一个对象的attribute的值也可以是对象。变量类型为所要引用的对象的所属类名。
这样有个好处,只要保证很多对象中的attribute的引用变量一样,那么“一改全改”,不用“处处改”。

今天只学习了用户的自定义类型。
下面还会学习 继承 和多态

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。