目前主要从事C++软件开发
分类:
2008-05-16 17:34:19
从事的人按照分工来说,可以分为“类库的创建者”和“类库的使用者”。使用类库的人并不都是具备了面向对象思想的人,通常知道如何继承和派生新对象就可以使用类库了,然而我们的思维并没有真正的转过来,使用类库只是在形式上是面向对象,而实质上只是库函数的一种扩展。
面向对象是一种思想,是我们考虑事情的方法,通常表现为我们是将问题的解决按照过程方式来解决呢,还是将问题抽象为一个对象来解决它。很多情况下,我们会不知不觉的按照过程方式来解决它,而不是考虑将要解决问题抽象为对象去解决它。有些人打着面向对象的幌子,干着过程编程的勾当。】
我想对以上这段话做一下的理解
在我们利用面向对象编程是我们想的不应该是将一个问题该分几个步骤给完成,而是想他是个什么对象,它可以做什么,他有那些属性,他的父,子(形象说法)是什么。下面我举一个不恰当的例子,以往我们举例子都是举的例子都是有关现实中的实物的例子。在此我举一个我们经常用结构化来实现的问题,如何用面向对象的思想来完成。
问题描述:如何实现a+b 假设为int类型的,其实是什么类型的并不重要,在后面我们可以知道,我们可以利用泛型的方式实现,在此,只是用来说明问题的;
其实这个问题很简单:
下面我用两种方法来实现:
(一)
main()
{int a,b;
cout<<"please input a:\n";
cin>>a;
cout<<"please input b:\n";
cin>>b;
}
(二)
class A_add_B
{
public:
A_add_B()
{a=0;b=0;}
A_add_B(int a)
{A_set(a);b=0;}
A_add_b(int a,int b)
{A_set(a);B_set(b);}
void A_set(int a)
{this.a=a;}
void B_set(int b)
{ this.b=b}
int A_get()
{return a;}
int B_get()
{return b;}
int add(){
return a+b;}
string toString(){
cout<<"The Result is:"<
}
main()
{int a,b;
cout<<"please input a:\n";
cin>>a;
cout<<"please input b:\n";
cin>>b;
A_add_B AB(a,b);
AB.toString();
}
我们可以看到第二个代码比第一个长的很多,这样做不是很麻烦吗?
我们还不如按照第一中做呢?
大家想想,我们对比一下第一个我们是不能做任何操作的,在灵活性上可以说,基本没有灵活性,除了改动main中的数据,但是在第二个我们可以利用A_add_B中的set和get函数随意的设置,和取得数据这样给我们带来了很大的灵活性。和以后的代码的可重用性,对的,我们这样就可以达到了一种一劳永逸的效果。下次在用的时候直接就不用在写代码了,拿来就用来了。
我们想想这个例子只是一个简单的数学中的两个数学相加的例子,如果换的现实中呢?我们一旦完成了一个类之后,我们可以在下次利用的时候直接或者间接的经过修改之后加以利用,这样就可以大大的缩短我们的编程的劳动力。
下面就不在赘述了,大家在今后的学习中可以慢慢体会到他的优越性。