前言
Java是一门纯面向对象语言,它不像c++那样,即支持面向对象,又支持面向过程.想要学好java就应该先对什么是面向对象和面向过程有所理解.这里较为笼统的说一下面向对象与面向过程的区别
传统的面向过程程序设计语言把程序概括为:程序=数据结构+算法;
而面向对象的程序设计语言把程序概括为: 程序=对象+消息
面向对象与面向过程
面向过程语言着重于解决问题的过程,在程序设计采用的是过程抽象,
它将一个复杂的问题,分解成若干子问题,如果子问题还是比较复杂
则继续分割,得到一个个可以解决的小问题后,分析出解决每个小
问题所需要的步骤,然后把步骤一步一步实现。
面向对象语言着重于将数据和操作结合为一个不可分的系统单位(类或对象),
它将代码和数据结合在一起,封装成对象后,我们只需要只到对象
有什么属性,对象能做什么,而不需要知道它的内部实现.以分类的
方式进行思考和解决问题,面向对象的思维方式适合于处理复杂
的问题。它的思想也更符合人类的逻辑思维与认知习惯。
面向对象与面向过程的不同
下面通过编写求学生总成绩的程序实例来说明,面向对象和面向过程程序设计的不同
在面向对象的程序设计中将学生看出一个学生对象
public class Student { //将学生抽象成一个学生类
int chinesegrade;
int mathgrade;
int englishgrade; //类的属性
public int getgradenum(int c,int m,int e){ //类的方法(动态特征)
this.chinesegrade=c;
this.englishgrade=e;
this.mathgrade=m;
return c+e+m;
}
public static void main(String[] args) {
Student s=new Student(); //创建学生对象
System.out.println("总成绩"+s.getgradenum(90,88,76));
//将语数英的成绩传给学生对象,然后调用方法求总成绩
}
}
在面向过程的程序设计中计算学生总成绩看成一个过程
int getgradenum(int c,int m,int e){
int chinesegrade=c;
int englishgrade=e;
int mathgrade=m;
return c+e+m;
}
....
num=getgradenum(90,88,76);
//将语数英的成绩作为学生总成绩的参数,调用总成绩的过程得到学生的总成绩
....
面向对象基本特征
- 封装 : 保护内部不受破坏,安全.
- 继承 : 在原有的基础上进行功能扩充
- 多态 : 在一定的范围内进行概念转换
补充:面向对象开发分为三个过程:
OOA (面向对象分析) , OOD(面向对象设计) , OOP(面向对象编程)