面向对象思想是什么(c++面向对象思想)

关于我下个你上网上一搜答案绝对是一大堆,但是基本无非都是在摆理论。刚好本人既写过面向过程(POP)的C程序也写过面向对象(OOP)的C#程序,甚至是万物皆对象的python程序。

下面本人就从自身的实际感受来解答,而不是一上来就给初学者摆什么封装、继承、多态这些概念

面向对象更容易让人理解

其实object也可以翻译为物件,我想这个词对于初学者肯定比对象更友好。以前的pop思想其实就是过程导向,就是我想实现一个什么样的计算结果,然后用变量和函数将这个结果实现,但是这样很抽象化,初学者较难理解。但是面向对象的话将抽象的概念都给你具像化了,是以物件为主导。接下来我用一段对比代码展示可能更容易理解。

比如,我要计算两个人绕着操场跑一圈的时间。

面向对象思想是什么(c++面向对象思想)图1

左边是面向过程的,右边是面向对象的。其实面向对象,你可以将他的.运算符理解为我们汉语的‘的’,这样更容易让程序员理解

封装

然后就讲到面向对象的封装,如上右图。面向对象可以将速度、距离等全部封装在一个抽象的类中,然后再通过new操作来具像化对象,而面向过程只能通过函数和变量来存储数据和运算。这样当一个工程够大的时候,面向对象的程序更容易维护,且重用性也更好

继承和多态

继承和多态的话是面向对象最主要的特征。其实也很好理解。还是拿上面那个例子,现在有一个小孩,他除了run这个动作外还需要加一个喝奶(drinkMilk)动作,那么小孩子也属于人这一类,我是不是可以不用再去重复的写关于Run这个动作的相关代码呢?由此,继承的概念就出来了。

namespace test0923

{

class People

{

public double speed { get; set; }

public double distance { get; set; }

public double time { get; set; }

public People()

{ }

public People(double distance ,double speed)

{

this.distance = distance;

this.speed = speed;

}

public double Run()

{

return this.distance / this.speed;

}

}

class Children:People

{

public void drinkMilk()

{

Console.WriteLine(“milk is very delicious”);

}

}

class Progaram

{

static void Main(string[] args)

{

People xiaoMing = new People(100,10);

xiaoMing.time = xiaoMing.Run();

People xiaoHua = new People(120, 12);

xiaoHua.time = xiaoHua.Run();

Children baby = new Children();

baby.distance = 100;

baby.speed = 2;

baby.Run();

baby.drinkMilk();

}

}

}

那么另外一个问题又来了,小孩Run可能速度计算不能跟大人一样,可能需要自己的计算方法,那么怎么办呢?这时候,多态的概念又出来了。我们只需要给父类的即People的Run方法加上virtual,再在子类中加override就可以了

namespace test0923

{

class People

{

public double speed { get; set; }

public double distance { get; set; }

public double time { get; set; }

public People()

{ }

public People(double distance ,double speed)

{

this.distance = distance;

this.speed = speed;

}

public virtual double Run()

{

return this.distance / this.speed;

}

}

class Children:People

{

public override double Run()

{

return this.distance/this.speed + 10;

}

public void drinkMilk()

{

Console.WriteLine(“milk is very delicious”);

}

}

class Progaram

{

static void Main(string[] args)

{

People xiaoMing = new People(100,10);

xiaoMing.time = xiaoMing.Run();

People xiaoHua = new People(120, 12);

xiaoHua.time = xiaoHua.Run();

Children baby = new Children();

baby.distance = 100;

baby.speed = 2;

baby.Run();

Console.WriteLine(baby.Run());

baby.drinkMilk();

Console.Read();

}

}

}

怎么样,现在对面向对象有一个大概的了解了吧。相比面向过程,面向对象的思想在编写大型项目时代码更容易维护、更易懂、代码重用率更高。但相对的牺牲的就是运行的效率了。

原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/7839.html

(0)
上一篇 2023-02-24 上午9:30
下一篇 2023-02-24 上午9:47

相关推荐

  • 怎么把课程推销给企业老板

    。 目前企业对外聘讲师进行内部培训或者购买外部培训课程的接受程度和通常的发起流程。 首先,现在一般企业不到一定规模是不愿意进行内训的,毕竟在国内大部分企业主看来,同样的预算,投入到…

    培训问答 2022-07-12
  • 怎样办理叉车证(怎样办理叉车证件)

    叉车司机证(N2)属特种设备作业人员证,由质量安全技术监督局颁发。 首先,在考叉车证前要学习驾驶叉车,通过正规培训机构进行培训。 再由培训机构上报材料,包括身份证,学历证,登记照,…

    2022-12-29
  • 成都培训网,成都培训机构怎么样

    家长你好,给孩子选择补习班要综合考虑师资力量,教学质量,管理模式,还有校区环境,当然,和家里的距离这个也要考虑一下。 最重要的就是师资力量这一块,学生既然已经有了补课的需求,那么必…

    培训问答 2022-05-22
  • 大学毕业去沈阳工作怎么样

    年青人未来几年去东北,尤其沈阳、大连、哈尔滨以及长春等几个东北区域主要省会、计划单列市就业发展正当时。这里面我重点讲一下沈阳目前的吸引力和未来的可行性。 沈阳是我国东北地区的重要中…

    培训问答 2023-06-04
  • 厦门有哪些好的幼儿园(厦门小金星国际幼儿园)

    一所好的幼儿园,一定是有目共睹的。而每一所省级示范性幼儿园都是经过专家组评估的。所以,能获得“福建省示范性幼儿园”称号的,会是一所好的学校,那么厦门市有哪些幼儿园是“福建省示范性幼…

    培训问答 2023-04-26
  • 初中应该补课吗

    个人也有孩子,培养到初中时也曾茫然是否给她补课。爱她呵护她,天性爱玩的小天使。但不久就发现问题,这长达两个月的暑假时间怎么过? 小升初过后的暑假是准初一孩子们最无忧的一段美好时光,…

    2022-12-12
  • 音标培训,深圳有靠谱的英文培训学校吗

    😊 您好!注意,社会培训教国际音标违反国家法律法规!到今日头条免费学习快易准英语就能提高英语成绩。 ❤️如果我的回答对您有帮助,就请把我的回答评为优质回答!谢谢。 🙏 高考最难的是…

    培训问答 2022-04-22
  • 怎么去水印,怎么去水印pdf

    介绍2款手机去图片水印,还有1款手机去视频水印,最后复杂的水印还少不了PS。 1.照片智能橡皮擦-去除图片水印 没有官网,App Store搜索下载 专门去照片水印的APP,目前只…

    2023-07-11
  • 国企采购员有前途吗

    想要做好采购,我自己感觉采购人员身上有这样几个特点: 1、性格内向温和者多,不善于表露才华。 性格对成功的影响是相当大的,因为性格会影响人际关系,而人际关系是职场最重要的成功要素。…

    2022-09-26
  • 色彩的三要素怎么理解纯度(ps色彩三要素是什么)

    色彩理论 从色彩基础原理中的三原色,我们已经能够在生活中的方方面面可以看到实例,我们可以认识基础的色彩理论——色彩的形成原理以及三原色、二次色、三次色、无彩色、中性色。同时,更会配…

    2023-03-20