Chinaunix首页 | 论坛 | 博客
  • 博客访问: 495345
  • 博文数量: 60
  • 博客积分: 2673
  • 博客等级: 少校
  • 技术积分: 700
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-09 00:25
个人简介

目前主要从事C++软件开发

文章分类

全部博文(60)

文章存档

2013年(3)

2012年(3)

2010年(6)

2009年(23)

2008年(25)

我的朋友

分类:

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;

cout<<"a+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函数随意的设置,和取得数据这样给我们带来了很大的灵活性。和以后的代码的可重用性,对的,我们这样就可以达到了一种一劳永逸的效果。下次在用的时候直接就不用在写代码了,拿来就用来了。

     我们想想这个例子只是一个简单的数学中的两个数学相加的例子,如果换的现实中呢?我们一旦完成了一个类之后,我们可以在下次利用的时候直接或者间接的经过修改之后加以利用,这样就可以大大的缩短我们的编程的劳动力。

    下面就不在赘述了,大家在今后的学习中可以慢慢体会到他的优越性。

阅读(1131) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~