面向对象的程序设计
面向对象的程序设计
问题:求一个长方形的周长和面积。
以面向过程的程序设计方式思考:
1. 确定长方形周长和面积的算法。C = (a + b) * 2, S = a * b
2. 编写两个方法(函数)分别计算长方形的周长和面积。void double getC(double a, double b) {}, void double getS(double a, double b){}
3. 求周长的方法(函数)和求面积的函数需要两个参数,分别是长方形的长和宽。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class Rectangle {
static double getC(double l,double w) {
return 2*(l + w);
}
static double getS(double l,double w) {
return l * w;
}
public static void main(String[] args) {
double a = 3;
double b = 4;
System.out.println("getC" + getC(a, b));
System.out.println("getS" + getS(a, b));
}
}
以面向对象的程序设计方式思考:
1. 一个长方形可以看成一个长方形对象。
2. 一个长方形对象有两个状态(长和宽)和两个行为(求周长和求面积)。
3. 将所有长方形的共性抽取出来,设计一个长方形类。
4. 通过长方形对象的行为,就可以求出某个具体的长方形对象的周长和面积。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class Rectangle {
private double length;
private double wide;
public Rectangle(double length,double wide) {
this.length = length;
this.wide = wide;
}
public double perimeter() {
return 2*(length + wide);
}
public double area() {
return length * wide;
}
public static void main(String[] args) {
Rectangle obj = new Rectangle(5,4);// 实例化
System.out.println("perimeter = " + obj.perimeter());
System.out.println("area = " + obj.area());
}
}