OOP基本概念
对象
软件的对象是自然对象的抽象表示,软件就是逼真的表达自然界的实际景象,于是人们心中构思的软件和眼中所见到的世界是一致的。软件是自然界实况的抽象,在编写软件程序时候,世界万物皆是对象。
每个对象之间是有特征的,比如鸟有翅膀、会飞而狗有4条腿,会叫等。
对象特点
----对象的特这或属性
----对象的行为
软件中的对象是由数据(Data)和函数(Function)组成。
对象的类别
俗话说:物以类聚。说明了物和类别的关系,相似的对象常常归于一类。例如:某人是一个对象(is a),而人类就是类别。善于利用类别把对象归类,并且组织起来,是面对对象软件开发的重要技术。
类别是一群共同特性的对象,类别定义就是说明这群对象具有什么重要特性。特性包括对象的特征及行为,软件中的对象以数据来表达特征,以函数来表达行为。
类别的目的是创造新数据型态。在java语言中int、double、char等是基本数据型态。而类别创造出来的数据型态称为“抽象数据型态”,由基本数据型态定义的变量也称为变量,由类别定义的变量称为对象。
Java类别定义为
class Bird{
//...
}
创建对象如下
Bird bird=new Bird();
在上述代码中,brid叫引用,相当与一个人的名字,可以在函数间相互传递。而new是一个运算符号,用来创建对象。用new来产生新对象,用bird来引用这个对象。
在软件设计中,通常先决定类别,并且弄清楚类别之间的关系。类别的关系有:“父子关系”和“整天与部分关系”。
父子关系
在自然界中,动物是一种生物,(a kind of),而植物也是一种生物,即动物和植物都是一种生物,此时就可以说动物和植物是生物的子类(sub-class),而生物则是动植物的父类(super-class)。这种父子类别关系是软件中的组织相关对象的重要手段。
日常生活中,父子类别是很常见的关系,又成为继承关系。如图
举个android中的View类别体系:
在Java中描述继承关系用关键字extends:
class Person{
//...
}
class Student extends Person{
}
class Teacher extends Person {
}
关键字extends后面是父类,前面是子类。子类继承父类的所有特征(属性)和函数;
整体与部分关系
另一个常见的类别关系就是整体与部分关系(whole-part),例如一辆汽车有1个引擎和4个轮胎,如图:
在软件设计中,也常常依照这种结构来组织类别及对象。整体与部分关系也叫聚合关系。
举个android中的View类别体系,典型的聚合关系: