




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于c的面向对象编程思想(一)2011-07-14 17336974遗失网际网路意见(0)大小:T | T本文介绍了基于c编程语言的面向对象编程思想。希望对你有帮助,一起看吧!AD:理解c中最重要的概念类后,可以启动更好的编程方法应用程序设计程序,而不是将算法替换为代码。要说明如何设计程序,首先必须了解编程想法是什么。建议参考这一系列文章。面向对象的编程解释(一)面向对象的编程解释(二)面向对象的编程解释(3)编程思想编程,即写程序,如果已经说过程序是方法的说明,那么编程就是写方法的说明。知道人民公园怎么走后,我解释了下一个人民公园怎么走,从市中心向东走400米,向右走200米,就是。接着另一个人也知道怎么去,但是他编制的程序是在市中心沿民东路经过两个十字路口,在第三个路口右转,右边就可以看到了。显然两个节目不同,但最后的路是一样的。也就是说,大家的方法相同,但说明不同。称为编程的想法是如何编程,即如何编写程序。这也是为什么不同的人对相同的算法进行不同的编程(不是简单的变量或函数名,而是程序逻辑)的原因。如果进一步编制或进一步看节目,就会发现编程思维很重要。好的编程思想,程序构成明确,维护性高。用不好的编程思想制作的程序模糊,维护性低。在这里,我们根据程序的可读性进行比较,实际上,通过使用不符合人脑思维习惯的编程思想,很难维持代码,但是为了效率,我们经常使用程序瓶颈优化的代码。这个代码通常用汇编语言编写,算法经过数学优化,抛弃了人类世界中的大部分意义。这个系列坚持并推荐这种编程思想,并按意思写一切。而意义是语言的意义,之前说在人类世界里是代码所具有的意义。如果映射到具有表、桌腿数、颜色等成员变量的结构,为什么没有质量、材料、价格、生产日期等成员?对此,有必要解释“人类世界”的含义。世界我们生活在四维客观物理世界,游戏中的怪物生活在游戏定义的游戏世界,白雪公主生活在童话世界。什么是世界?世界是规则的集合。例如,在客观世界中,力可以用于有质量的物体,然后根据运动规律改变物体的速度。电荷异性相吸收同性排斥;能量守恒等,这些是对客观世界这一规律集合中的某些规则的说明。请注意,它们都只是对规则的说明,不是规则,就像程序是对方法的说明,但不是方法。方法和规则都是抽象的逻辑概念,分别用程序和论调表示。程序就是我们要写的,论调是概率论、运动学、流体力学等理论。因为前面所说的游戏世界,游戏也是一系列规则。同样,童话世界也是由一系列规则组成的。白雪公主可以吃,可以睡觉,吃了毒苹果,所以会上瘾。镜子能回答问题。那么,即使你明白世界这个概念?有什么用?此前,该系列表示:按照意思编写程序比较好。算法提供1到100之和的算法基于特定规则,例如(1 100)*100/2。此处指示加、减、乘、加是什么规则。一个算法必须是关于一个世界的,在另一个世界可能没有意义。因为算法就是方法,由上述命令和操作的资源组成,命令和资源在世界范围内定义。根据前面说的算法编写代码,实际上是先开发了世界被看做算法的平台。如果以前的商人过河,就在下一套规则下执行:只有两个人可以乘坐的船可以载人过河;河的一边有三个商人和三个仆人。河的任何一边,如果佣人多于几个,商贩就会死。这是对过河问题所依据的世界的严重不准确的解释,但在这里过于抽象没有什么好处。只是注意:上面的商人和仆人不是现实世界的商人或仆人。他们不能吃不能睡,不能说,不能走路。只是坐船过河,改变自己的位置。据说,如果某个地方(河的某个海岸)的仆人比商人的预报多(而且商人至少有一个例子),商人就被杀了。(。上述描述暂时称为商人的宗论,它是对过河问题的基础世界的一种描述。别人不像上述那样看问题。河有两个海岸,每个河岸共有两个数字商人和仆人的数目。根据某些规则,有一种方法可以改变对应河岸的两个数字(即可以乘坐只能坐两个人的船过河),当某个河岸上有比丧钟更多的仆人(并且常数不为零的时候),商人就会被杀。这个人没有定义商人和仆人这两个概念,而是定义了具有两个属性商人和仆人数目的概念河岸。这是另一种论调,暂时称为河岸论。什么意思?以上内容是商人过河问题的基础世界的两个不同论调。上述论调不同,但都描绘着一个世界。就像力学和量子力学一样,都是对客观世界物体之间作用规则的解释,但却大不相同。算法总是基于一个世界,但更准确的一点是算法总是基于一个世界的说明。也就是说,设计程序是算法编写的世界说明,即论调实际上是问题的说明。现在考虑到前面所说的商人钟论和河岸论,都是对同一个世界的解释,但前者提出了两个名义概念商人和仆人,分别具有“位置”和“船”等功能和“商人被杀的动词概念;后者提出名词型概念河岸,具有“商人数”和“仆人数”两个属性,以及动词概念“商人被杀”和“乘船”。在这里,后者比前者好。后者是名词形式的概念较少的事实(即名词的概念比动词的概念更容易增加体系结构的复杂性)。因为它代表着世界上事物的种类,种类越多,世界越复杂,难以实现),理解起来就越不容易,但是结构更简单。所有的论调只能由“名词概念”和“动词概念”组成,前者在数学中被定义为数字、实数、复数,后者则被定义为加法、减法、乘法、拯救等。在游戏论中,前者称为类,类的实例是在方法中工作的资源,后者称为命令。在方法中,前者是资源的类型,后者是操作的类型。作为一个论调提出的概念越少,结构就越简单,越好。但是要注意,在计算机编程方面,计算机不是抽象的概念,而是效率因素,所以基于上述好论调的算法的代码执行效率不一定高。所以说编程就是设计算法基础的论调,好的编程就是相应的论调设计得很好。但是,如上所述,效率不一定很高。通常仅在代码的瓶颈处单独设计,程序的整个体系结构仍然遵循以前的设计。随着程序规模的扩大,明确简洁的程序结构变得越来越重要,要保持程序结构简洁,就必须设计好的论调;要保持框架清晰,必须根据语义编写代码。介绍这种流行的面向对象编程思想,帮助设计程序。什么是对象要说明面向对象,首先必须了解对象是什么。对象是前面提到的“名词概念”的实现。也就是说,一个实例。商人的家仆论有商人和仆人两个“名词性概念”,有三个商人和三个仆人,分别有三个商人的例子和六个被称为三个仆人的例子的对象。(。请注意,对象和实例之间存在差异,但实际上没有差异。如果不需要说出区别,可以认为对象没有状态,但实例必须有状态。那么什么是状态?或者先看看属性是什么。桌子有一个叫颜色的属性,这张桌子是红色的,那张是绿色的。人脸色红润,有那种苍白的状态。都是颜色,一个是属性,一个是状态,有什么区别呢?如果将表和人都映射到类,则表的颜色和人的脸色都必须映射到该类的成员变量,两者的区别在于表的实例在主要操作过程中不会改变颜色,主要用于读取。人的脸色可以在人的实例的主要操作中改变,主要用于写作。什么是操作流程?类映射资源,资源可以具有一个功能,即运行一个实例的功能时工作的成员函数。表格具有在调用成员函数时读取称为颜色的属性值,以确定放在表格上的东西的颜色是否与表格颜色协调的功能。人有将该实例的脸色从苍白变成红色的功能。但是,也有“更改颜色”功能,可以调用该功能来更改表的颜色。如前所述,颜色是属性,应该读,但在这里,实例运行时对此进行了写。请注意前面说的“主要操作过程”。也就是说,桌子的目的是“放东西”,不是“改变颜色”。如果表格主要用于变更颜色,而不放置物件,则表格只是记录颜色值的容器,表格的颜色不是性质,而是状态。有什么意义?属性和状态都映射到成员变量,因此代码无法知道它们之间的区别,但其意义上存在严重的差异。属性用于配置实例,状态用于表示实例。在面向对象的编程思想中,除了简单地说对象是具有属性和功能的实例(也称为方法)外,在编写的程序所基于的世界复杂的情况下,它非常弱,对“属性”的错误理解和“包”一词席卷而来,导致了很多不合理的代码。属性和状态之间的差异会导致无状态对象(在MTS 3354 Microsoft transaction server上称为stateless组件)。这可以是抽象概念的实现,因为对象和实例的差异对象实现了。实例实际存在,不能成为抽象概念的实现。在c代码中,这表示为不带成员变量的类和带有成员变量的类。以下是:1.structsearch virtualink (int *,int,int);Searcha,b;Intc3=10,20,5 ;A.search(c,3,20);此处生成两个对象a和b,它们是抽象概念搜索功能的对象。结构Search没有成员变量。因为不需要,a和b的长度是多少?因为可能会发生以下情况,所以一般编译器将上述a和b的长度指定为一个字节,所以a不等于b。1.structb search : public search int * int,int);2.search * p;BSearchdp=a;p=b;p=d;P-search(c,3,5);BSearch的实例d(即使实际上不存在,逻辑上大小为零)也可以继续提到在上面创建了Search的两个实例a和b,BSearch的实例d。也就是说,以前与对象没有区别,只有概念上的细微差别。需要注意的是,前面提到的stateless对象不是指没有成员变量的类的实例,而是指没有状态和没有属性。上一个BSearch在进行半剖面搜索时可能具有m_MaxSearchTimes属性。如果多次搜索m_MaxSearchTimes但未找到,则BSearch:search将返回未找到。BSearch有成员变量,但逻辑上这仍然是抽象的概念。由于属性和状态实现是相同的(通过成员变量),因此实现不存储状态信息的对象与此系列无关,需要特殊的手段。前面的a和b有区别吗?为什么要有两个实例?“搜索功能”不是应该按照前面说的意思映射到更函数吗?为什么要映射到没有成员变量的类?上述用法是标准模板库标准模板库(STL)中使用的一种编程技术,它创建了称为函数类的几个变体。但是,这些语义查找功能有三个参数:查找标准、查找位置(要搜索的容器或集合)、在查找之前如何排列容器或集合。传递函数指针不是很好吗(实际上不是很好,但指针的意思是引用,在这里不准确)?这就是所谓的面向对象编程思想。基于c的面向对象编程思想(二)2011-07-14 17336937遗失网际网路意见(0)大小:T | T本文介绍了基于c编程语言的面向对象编程思想。希望对你有帮助,一起看吧!AD:理解c中最重要的概念类后,可以启动更好的编程方法应用程序设计程序,而不是将算法替换为代码。要说明如何设计程序,首先必须了解面向对象的编程想法是什么。建议参考这一系列文章。接一部面向对象的编程思想设计程序已在前面说明了程序要解决的问题的说明,即编写论调。论调可以只用“名词概念”和“动词概念”来表达,对象就是“名词概念”的实现。利用前面说的没有成员变量的类映射“动词概念”,就可以转换成对象。因此,世界完全可以由对象组成,而算法所基于的世界仅用对象表示,并编写后续代码的方法称为面向对象的编程思想。请记住,设计算法所基于的世界,然后全部用对象表示,设计算法,然后用代码映射。但是前面的商人写过河问题的时候,直接提出了算法,不是设计了世界吗?事实上,那个问题太简单了,我有意设计世界,用前面提到的河岸论来描述它。要注意世界的设计完全取决于问题。而且确切地说,我不是设计世界,而是设计河岸论来描述问题。然后,因为对象是实例,所以以对象为例,c是设计类,通过类实例组合表示世界。但是要注意,面向对象以对象为基准描述世界,但同时也描述了算法。因为算法也提出了前面商人过河问题的算法中要映射的一些概念,例如过河方案。但是,在描述算法时,在描述世界时操作定义的类时,必须保持该类的设计。不要将算法的一部分映射到此类的成员函数,因为在算法中对该类实例的操作太复杂。这是因为它严重阻止了算法的实现,破坏了程序的体系结构。一种算法使汽车在原地旋转,需要复杂的操作,是否增加了汽车在原地旋转的功能?这是设计类时经常发生的错误,因此,面向对象的代码不仅由类组成,还可以通过将算法的某些操作映射为函数来具有许多全局函数。设计类时映射标准的概念时,不考虑算法,只将这个世界设计为边界,不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论