面向对象编程可以有效地帮助开发大规模的软件以及图形用户界面。面向过程的范式重点在于设计方法。面向对象的范式将数据和方法耦合在一起 构成对象。使用面向对象范式的软件设计重点在对象以及对对象的操作上。
面向对象和面向过程
面向对象和面向过程都是一种思考方式
面向过程相当于是执行者,特征是费时间和费精力,比如以面向过程思考方式模拟下班回家吃饭:
流程:买菜>>洗菜>>切菜>>做饭>>吃饭
每一步都需要自己来做,费时费力比较麻烦。
而面向对象相当是于指挥者,特征是省时间和省精力,如果以面向对象方式模拟下班回家吃饭则:
流程:去饭馆>>交钱>>厨师做好>>带回家吃饭
这样的好处是主要任务交给了厨师,所以省时间和精力,方便。
面向过程和面向对象都是人类的常用思考方式,两种思考方式不互斥也不相互依赖,面向对象思想其实是基于面向过程。
注意:编程中没有绝对的面向对象,所有事情最终都是要被解决的。没有纯粹的面向对象,但有纯粹的面向过程。
对象和类
对象:面向对象程序设计就是使用对象进行程序设计。对象代表现实世界中可以明确标识的一个实体。即万事万物皆对象。
每个对象都有自己独特的标识、状态和行为。一个对象的状态是由当前数值的数据域表示。对象的行为是根据方法定义的。
例如:圆可以被作为一个对象,那么他的半径r就是他的属性即状态,可以为圆定义一个名为getArea()方法来求园的面积。圆对象可以调用这个方法来修改他的半径。
类:类是指具有相同属性、行为和特征的对象的统称。例如我们所说的人类,就是有每个具体的人组成的,拥有共同的特征。
类里面包含着具体的属性和行为;
例如 简单创建一个人的类{ 属性有 年龄、性别、姓名、身高、体重等等 行为有吃饭()、唱歌()、学习()等等}
运用面向对象的思想我们来分析 将大象装进冰箱的步骤 。
对象共有两个,分别是大象和冰箱。冰箱类中 共有三种方法,分别是 打开冰箱、装大象、关冰箱。
类 大象{
}
类 冰箱{
打开();
装大象();
关闭();
}
主类 Class{
main()
冰箱 bx=new 冰箱(); //创建冰箱和大象的对象
大象 dx=new大象();
bx.打开(); //调用对应类中的方法
bx.装大象(dx);
bx.关闭();
}
eg:用面向对象思想求圆的面积,周长个圆心距。代码如下
class Demo02{
public static void main(String[] args){
Circle c1=new Circle(); //创建圆对象
c1.radius=10; //对半径赋值
Point o1=new Point(); //创建点对象
o1.x=0; //对两点赋值
o1.y=0;
c1.o=o1;
Circle c2=new Circle();
c2.radius=10;
Point o2=new Point();
o2.x=10;
o2.y=10;
c2.o=o2;
System.out.println();
System.out.println(c1.getDistance(c2));
}
}
class Circle{ //定义一个圆的类
public double radius; //对变量进行初始化
public double pi=Math.PI;
public Point o;
public double getArea(){ //计算圆的面积
double area=pi*radius*radius;
return area;
}
public double getPerimeter(){ //计算圆的边长
double perimeter=2*pi*radius;
return perimeter;
}
public double getDistance(Circle c){ //计算当前圆到其他圆的距离
double distance=this.o.getDistance(c.o); //c为另一个圆对象
return distance;
}
}
class Point{ //计算两点间距离
public double x;
public double y;
public double getDistance(Point p){
return Math.sqrt(Math.pow(this.x-p.x,2)+Math.pow(this.y-p.y,2)); //this.x指当前c1圆的坐标 p.x指后面c2圆的坐标
}
}
注意:当程序中创建多个类时,编译时候有几个类就会生成几个class文件。
没有主函数的类不能够独立运行。
有主函数的类称为主类,主要用来运行程序。
该的程序运行流程:经过编译会生成Demo02.class文件、Circle.class文件和Point.class文件,主程序Demo02.calss文件会被加载进虚拟机开始运行,其余两个文件也会随着加载进虚拟机运行。
创建对象过程:
1、在堆内存中开辟一个空间并分配地址(空间大小由系统分配)
2、对成员变量进行 (默认初始化)
3、然后对成员变量进行(显示初始化)
4、目前而言 对象创建完毕 将对象的地址赋予函数中的变量