C#面向对象概念

 

C#面向对象概念

 

一、面向对象的概念:

以接近现实的处理手法来处理项目中的设计。一个例子:

请描述一下森林中一只狮子捕食一只兔子的场景。

 

用结构化编程实现

用面向对象方式实现

strut Lion

{

int lId;

string name;

}

strut Rubbit{

int 1Id;

string name;

}

定义函数:

void lionRunning(Lion);

void lionCatch(Lion,Rubbit)

void lionEating(Lion,Rubbit )

void lionHappy(Lion);

void rubbitCrying(Rubbit)

void rubbitRunning(Rubbit)

bool rubbitIsDead(Rubbit);

Class Lion

{

 int lIdl

string name;

public void Running(){};

public void Catch(Rubbit);

public void Eating(Rubbit);

public void Happy();

}

class Rubbit

{

int rId;

string name;

public void Running()

public void Crying()

public bool Isdead()

}

主程序:

Lion fatty;

Rubbit may;

lionRunning(fatty);

rubbitRunning(may);

lionCatch(fatty,may);

rubbitCrying(may);

lionEating(fatty,may);

if (rubbitIsDead(may))

   lionHappy(fatty);

主程序

Lion fatty=new Lion();

Rubbit may = new Rubbit();

Fatty.Running();

May.Running();

Fatty.Catch(may);

May.Crying();

Fatty.Eating(may);

If (may.IsDead())

   Fatty.Happy();

 

1.从左边的设计,我们看出代码是一系列的函数构成,有以下几点:

不直观,程序的组织性不强,函数调用时不容易确定具体调用哪一个

要传的参数太多

       2.右边代码,看起来要好一些,函数的参数少,而且都被组织到类的内部,要调用函数时只要确定是哪一个对象要调用,就很容易找到,从程序调用来进右边的主程序更接近现实世界的处理方式

 

二、面向对象的特点

1.  封装

从上表右边看来,函数代码写在类的内部,只能被类的对象所调用,别人不可随便访问,这样可以保护你的代码,而且函数与对象相关,方便调用

2.  继承

从代码重用方面,我们可以把共性的特征,和行为抽象出来,比如,程序的需求要我们实现所有的食肉动物都能捕食食草类动物,对于上表左边程序,我们要全面修改代码,而对于右边的程序我们可做如下抽象:

Class Carnivore

{

int aId;

string name;

public void running()

public void Catching(Vegetarian)

public void Eating(Vegetarian);

public void Happy();

}

class Vegetarian

{

int aId;

string name;

public void running()

public void crying()

public bool Isdead()

}

然后,我们使用继承 class Lion : Carnivore

Class Rubbit : Vegetarian

这样,我们不用构造两个类,就能使用它们公共的特征和函数了

这样一来,我们可以完成所有食肉动物与食草动物的捕食关系了

如果,我们要实现老虎捕食猎物,那也很容易了,

我们只要定义下面代码:

Class Tigger : Carnivore

就可以了

3.  多态

从上面的继承中我们可以看出,实现一个新的类是那么容易,

但大家想一个问题,老虎与狮子,毕竟不是一种动物,那们的方法不可能完全相同,针对不同的子类,它的方法也不可能相同。比如它们的happy方法可能是这样的

public void happy()

{

Console.WriteLine(“我高兴,所以我发出虎啸”);  //如果是狮子,就可能发出的是狮吼

}

这个问题我们放在下一课中祥细讨论

三、面向对象设计程序的作用

1.  重用代码

2.  可维护性高

3.  可插入性(这个特点与多态相关,下次课重点讲述)

意为:程序不需修改或少做修改,就可实现用户提出的新的问题

如上面

4.  直观,更接近现实

5.  方便调用

四、综合

 对象是什么

从概念层面讲,对象是某种拥有责任的抽象。(职能)

从规格层面讲,对象是一系列可以被其他对象使用的公共接口。(对象交互)

从语言实现层面来看,对象封装了代码和数据。(数据和程序)

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页