问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

我怎么觉得三层结构很多是面向过程不是面向对象的阿

发布网友 发布时间:2024-09-17 05:39

我来回答

1个回答

热心网友 时间:2024-10-02 09:44

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。

而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为 1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

功能上的统一保证了面向对象设计的可扩展性。比如我要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。

再比如我要把这个五子棋游戏改为围棋游戏,如果你是面向过程设计,那么五子棋的规则就分布在了你的程序的每一个角落,要改动还不如重写。但是如果你当初就是面向对象的设计,那么你只用改动规则对象就可以了,五子棋和围棋的区别不就是规则吗?(当然棋盘大小好像也不一样,但是你会觉得这是一个难题吗?直接在棋盘对象中进行一番小改动就可以了。)而下棋的大致步骤从面向对象的角度来看没有任何变化。

当然,要达到改动只是局部的需要设计的人有足够的经验,使用对象不能保证你的程序就是面向对象,初学者或者很蹩脚的程序员很可能以面向对象之虚而行面向过程之实,这样设计出来的所谓面向对象的程序很难有良好的可移植性和可扩展性。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
正宗柳州螺丝粉汤料制作及秘制香料配方 “天性”是什么?什么是“天性” 天性和生性的区别是什么 天性什么意思 下面的立体图形从前面、上面、左面看到的形状分别是什么?画一画。 ...小正方体的位置,使移动后的立体图形从前面看到的形状与原来的相_百... ...小正方体木块搭成的立体图形,从前面看到的图形是,从上面看到的图形也... 一个用小正方体搭成的立体图形,从前面看到的是图形①(如图),从上面看到... ...鬼妈妈》《僵尸新娘》《怪兽屋》《圣诞夜惊魂》的电影或者动画。介... 有没有像《僵尸新娘》《圣诞夜惊魂》《鬼妈妈》《魔怪屋》之类的动画... 离子泵运输离子泵运输 苹果手机换了新的怎么注销id 苹果手机如何注销id帐号? 古代的罗马帝国为什么坚信地球是圆的? 请问太原地铁三号和五号线的规划情况? 在Excel文档中怎样设置超链接? 旗开得胜.歌词 我的世界特殊值ld是什么 减肥床上运动有哪些 滚筒全自动洗衣机门打不开怎么办呢 如何让全自动洗衣机洗得更干净? 新余三中初中部前400名有可能考到哪所学校? 全自动洗衣机怎样才算漂洗干净了呢? 全自动洗衣机怎样才能洗干净? 新余学院申通快递要转让每天派件400以上。多少钱合适。 江西省新余市做肺结核CT要多少钱? ...但请问要多少分才可以进该校呢?400左右可以吗? Ubuntu 22.04 中根目录 / 空间小于实际磁盘空间问题解决 【Ubuntu】压缩根目录/空间给home目录扩容 Ubuntu交叉编译aarch64的opencv+ffmpeg 日本十大顶级名贵枫树 车险理赔与保险保险赔付中有什么区别? 保险公司理赔能分别打款 户外的近义词 linux下tar怎么用? 台州宇创户外拓展有限公司拼音什么拼 请问江阴市南闸镇哪里有充煤气的? 一部手机可以绑定两个华为儿童手表吗? 华为儿童手表如何下载APP? 汽车玻璃不沾水小妙招是什么 怎么回应别人夸你? Linux安装JDK1.8教程(2021最新最详细) 合肥燃气如何交费 plc编程培训班培训 华为T2211音乐播放器为什么总是等待中 编程培训费用大概多少? 学编程培训一般要多少钱? 少儿编程学费多少钱一年? 重庆少儿编程培训机构排名前十(重庆少儿编程培训机构排名前十名)_百度... 为什么嗓子一到晚上就哑