1. 面向对象的基础知识
1.1 什么是面向对象
面向对象是一种软件开发方法,主要的开发方法
- 结构化
- 可视化
- 软件重组
- 面向对象
其中“结构化”和“面向对象”这两种是比较常见的开发方法
“结构化”:对应的嵌入式项目,一般与硬件相结合。根据硬件的实际操作,程序给出响应,注重程序的运行逻辑。
“面向对象”:对应的复杂业务逻辑的大型软件系统,以人类自然归纳总结能力,抽象出具体的角色,注重的是角色之间的交互和关系。
面向对象着重于将现实世界或想象世界中的事物,通过编程手段映射到计算机世界中,这个被称为“抽象”
抽象的过程就是面向对象设计和构建的一个过程,以人类归纳总结能力,将同类事物进行共性归类。归类的过程相当于将现实世界中某个事物,制作成代码中的“类”,类可以理解为就是自定义的类型。
1.2 抽象
1.2.1 排除非共性
比如:描述鸟类的共性
(1)翅膀 ?? NG
(2)飞 NG
(3)羽毛 OK
(4)喙 OK
(5)叫声 OK
(6)两只脚 OK
(7)会下蛋 OK
(8)筑巢 ?? NG
...
抽取某个类的共性,需要注意的第一点,排除“非共性”后
(1) 羽毛
(2) 喙
(3) 叫
(4) 脚
(5) 下蛋
共性分为两类:"名词"和“动词”
“名词”: 羽毛,喙,脚
"动词":叫,下蛋
当我们准备抽象“鸟类”,类中分为"属性"和“行为”
- 名词对应属性,在程序中属性对应的“属性”(变量)
- 动词对应行为,在程序中行为对应的“方法”
1.2.2 排除不相关
对于一些共性,在某些系统中是不必要的。比如描述学生类,类似视力,体重等属性,吃饭,睡觉等行为是与学生身份相关性较低的,所以会排除掉。而类似学号,姓名等属性,学习和考试等行为是与学生身份相关性很强的,所以予以保留。
学生类
姓名
学号
视力
体重
吃饭
睡觉
学习
考试
如果考虑的是患者类,类似视力,体重等属性,吃饭,睡觉等行为可能与患者身份相关性较强,会予以保留,而类似学号等属性,考试等行为相关性不大,需要排除。
患者类
姓名
学号
视力
体重
吃饭
睡觉
学习
考试
在1.2.1中抽象的鸟类的共性,排除一些系统中认为不相关的属性和行为,可能剩下的就是
(1) 羽毛(颜色)
(2) 叫
(3) 下蛋
1.2.3 抽象和实现的过程
抽象和实现的过程- 声明Person类,描述人类
public class Person {
String name; //人的名字
char sex; //人的性别
int age; //人的年龄
public void eat() {
System.out.println(name+"正在吃饭");
}
public void sleep() {
System.out.println(name+"正在睡觉");
}
}
- 声明p1和p2两个对象来描述具体的人类个体
public class Test {
public static void main(String[] args) {
//p1和p2被称为“对象”
Person p1 = new Person();
p1.name = "高扬";
p1.sex = '男';
p1.age = 22;
p1.eat();
Person p2 = new Person();
p2.name = "刘钢";
p2.sex = '男';
p2.age = 22;
p2.sleep();
}
}
类和对象的关系:类是对象的模板,对象是类的具象化(实例化)。
网友评论