面向对象的程序设计
问题:求一个长方形的周长和面积。
以面向过程的程序设计方式思考:
1. 确定长方形周长和面积的算法。C = (a + b) * 2, S = a * b
2. 编写两个方法(函数)分别计算长方形的周长和面积。void double getC(double a, double b) {}, void double getS(double a, double b){}
3. 求周长的方法(函数)和求面积的函数需要两个参数,分别是长方形的长和宽。
代码
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));
}
}
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. 通过长方形对象的行为,就可以求出某个具体的长方形对象的周长和面积。
代码
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());
}
}
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());
}
}