1
程序设计基础 (C++)
面向过程与面向对象
2
字符串处理(面向过程)
int main()
{
char s1[20]="hello",s2[]="world";
cout<<strlen(s1)<<endl; //字符串长度
if(strcmp(s1,s2)>0) //字符串比较
...
strcat(s1,s2); //字符串相加
cout<<s1<<endl;
return 0;
}
3
字符串处理(面向对象)
int main()
{
string s1("hello"),s2("world");
cout<<s1.length()<<endl; //字符串长度
if(s1>s2) //字符串比较
....
s1+=s2; //字符串相加
cout<<s1<<endl;
return 0;
}
4
复数及其运算(面向过程)
定义复数类型
struct Complex{
double imag;
double real;
}
5
复数及其运算(面向过程)
//复数加运算
Complex addComplex(Complex &c1,Complex &c2)
{
Complex c;
c.real =c1.real +c2.real;
c.imag=c1.imag+c2.imag;
return c;
}
6
复数及其运算(面向过程)
//复数输出
void outComplex(const Complex &c)//向量表示
{
cout<<"("<<c.real<<","<<c.imag<<")\n";
}
复数及其运算(面向过程)
int main()
{
Complex c1={1.1,1.2},c2={2.1,2.2},c3;
cout<<"c1="; outComplex(c1);
cout<<"c2="; outComplex(c2);
c3=addComplex(c1,c2);
cout<<"c1+c2="; outComplex(c3);
c3=subComplex(c1,c2);
cout<<"c1-c2="; outComplex(c3);
。。。
}
复数及其运算(面向对象)
int main()
{
Complex c1(1.1,1.2),c2(2.1,2.2),c3;
cout<<"c1="<<c1<<endl;
cout<<"c2="<<c2<<endl;
c3=c1+c2;
cout<<"c1+c2="<<c3<<endl;
c3=c1-c2;
cout<<"c1-c2="<<c3<<endl;
。。。
}
9
时钟及其功能(面向过程)
//时钟类型
struct Clock
{
int Hour,Minute,Second;
};
10
时钟及其功能(面向过程)
void showTime(const Clock &c)//显示时间
{
cout<<c.Hour<<":"<<c.Minute<<":"<<c.Seco
nd<<endl;
}
Clock setTime(int h,int m,int s)//设置时间
{
Clock c;
c.Hour=h; c.Minute=m; c.Second=s;
return c;
}
11
时钟及其功能(面向过程)
void showTime(const Clock &c);
Clock setTime(int h,int m,int s);
void main()
{
Clock myClock;
myClock = setTime(11,30,0);
showTime(myClock);
}
12
存在的问题
数据与功能的分离
需要正确的信息传递
13
时钟及其功能(面向对象)
Class Clock;
void main()
{
Clock myClock;
myClock.setTime(11,30,0);
myClock.showTime;
}
14
改进方法:
利用 C++的类的封装性
将数据和相关功能整合在一起
在类的范围内 (类作用域 ),所有相关函数共享数据时钟及其功能(面向对象)
class Clock {
public:
setTime( int h,int m,int s) // 设置时间
{ Hour=h; Minute=m; Second=s;}
void showTime()// 显示时间
{ cout<<Hour<<":"<<Minute<<":"..,;}
private:
int hour;
int minute;
int second;
};
16
面向对象程序设计
有效地组织和管理代码
更高层次的抽象技术
17
面向对象程序设计
有效地组织和管理代码
更高层次的抽象技术