两种程序设计思想
面向过程的程序设计(Structured Programming)
- 以功能为中心,通过分解功能,采用函数来描述操作
- 数据与函数分离,数据(类型或结构)一旦发生改变,函数也要相应改变
- 例如排序函数:void sort(int a[],int n);只能排序整数数组
面向对象程序设计(Object Oriented Programming)
- 以数据为中心,采用对象来描述内部属性和操作方法
- 将数据和函数当作一个统一体,采用软件对象模拟客观世界中实际对象
- 例如:钟表类、日期类
面向对象程序设计的优点
- 开发时间短,效率高,可靠性高
- 重用,共享,可维护性,精简
- 适合于大型程序长时间的团队开发工作
引入类的好处
为什么要引入数组
为什么要引入函数
为什么要引入指针
为什么要引入结构体
为什么引入类 采用人们认识客观世界的自然方式去模拟客观世界中对象
提高开发程序的效率和可靠性
- 数据与代码的聚合(以便更高级的代码复用, 高类聚低耦合)
代码重复与复用
假设已定义完成的日期类和时间类如下:
class Date //日期类定义
{
int year,month,day;
public:
void init_date(int,int,int );
void print_ymd();
void print_mdy();
int get_year() { return year; }
int get_month() { return month; }
int get_day() { return day; }
};
class Time //时间类定义
{
int hour,minute,second;
public:
void init_time(int,int,int );
void print_hms();
int get_hour() { return hour; }
int get_minute() { return minute; }
int get_second() { return second; }
};
下面需要定义日期时间类,基于上述两类,可以定义的两种可能方式:
-
重新完整定义日期时间类,代码重复 -
利用已存在的类来定义日期时间类,代码复用 -
重新定义
class DateTime //重新完整定义
{
int year, month, day, hour, minute, second;
public:
void init_datetime( int, int, int, int, int, int);
void show();
int get_year() { return year; }
int get_month() { return month; }
int get_day() { return day; }
int get_hour() { return hour; }
int get_minute() { return minute; }
int get_second() { return second; }
};
class DateTime:public Date, Time
{
public:
void init_datetime(int y,int m,int d,int h,int mi,int s){
init_date(y,m,d);
init_time(h,mi,s);
};
void show(){
print_ymd();
print_hms();
};
}
|