沧州三亚菏泽经济预测自然
投稿投诉
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产
菏泽德阳
山西湖州
宝鸡上海
茂名内江
三亚信阳
长春北海
西安安徽
黄石烟台
沧州湛江
肇庆鹤壁
六安韶关
成都钦州

设计模式简介

1月1日 九阙忬投稿
  学习设计模式的目的:理解松耦合掌握面向对象设计模式掌握重构技法掌握GOF
  可复用
  手法:面向对象
  本人下一步要学习架构搭建
  抽象思维非常重要。
  面向对象》组件封装》设计模式》架构模式
  面向对象
  封装:隐藏内部代码
  继承:复用现有代码
  多态:改写对象行为
  主要是变化导致
  解决变化的复杂性:分解:分而治之。》C语言,大问题分解成小问题。抽象:忽视非本质特征,去泛化和理想化对象模型。
  下面是伪代码方式说明分解方式和抽象方式,对于后期需求变化修改产生的影响:分解方法Shape。hpragmaonce例子为伪码设计画图工具点classPoint{public:};线classLine{public:PPLine(constPointstart,constPointend){}};矩形classRect{public:PointleftUp;Rect(constPointleftUp,intwidth,intheight){thisleftUpleftUp;}};有需求圆形圆形classCircle{};分解的方法MainForm。cpp分解的设计方法。includeiostreamincludevectorincludeShape。classMainForm:publicForm{private:Pointp1;Pointp2;这个地方用的是类对象,非指针vectorLinelineVvectorRectrectV改变vectorCirclecircleVpublic:MainForm(){。。。}protected:virtualvoidOnMouseDown(constMouseEventArgse);virtualvoidOnMouseUp(constMouseEventArgse);virtualvoidOnPaint(constPaintEventArgse);};voidMainForm::OnMouseDown(constMouseEventArgse){p1。xe。X;p1。ye。Y;。。。Form::OnMouseDown(e);}voidMainForm::OnMouseUp(constMouseEventArgse){p2。xe。X;p2。ye。Y;if(rdoLine。Checked){Lineline(p1,p2);lineVector。pushback(line);}elseif(rdoRect。Checked){intwidthabs(p2。xp1。x);intheightabs(p2。yp1。y);Rectrect(p1,width,height);rectVector。pushback(rect);}改变elseif(rdoCircle。Checked){Circlecircle();circleVector。pushback(circle);}。。。thisRefresh();Form::OnMouseUp(e);}界面被刷新时被调用voidMainForm::OnPaint(constPaintEventArgse){针对直线for(inti0;ilineVector。size();i){e。Graphics。DrawLine(Pens。Red,lineVector〔i〕。start。x,lineVector〔i〕。start。y,lineVector〔i〕。end。x,lineVector〔i〕。end。y);}针对矩形for(inti0;irectVector。size();i){e。Graphics。DrawRectangle(Pens。Red,rectVector〔i〕。leftUp,rectVector〔i〕。width,rectVector〔i〕。height);}改变针对圆形for(inti0;icircleVector。size();i){e。Graphics。DrawCircle(Pens。Red,circleVector〔i〕);}。。。Form::OnPaint(e);}
  抽象方法可复用Shapeabstract。hpragmaonceclassShape{public:virtualvoidDraw(constGraphicsg)0;虚析构函数作用:子类通过多态释放时,子类的析构函数才能被正确的调用到virtualShape(){}};classPoint{public:};所有继承都推荐用publicclassLine:publicShape{public:PP构造函数Line(constPointstart,constPointend){}实现自己的Draw,负责画自己重写父类虚函数virtualvoidDraw(constGraphicsg){g。DrawLine(Pend。Red,start。x,start。y,end。x,end。y);}};classRect:publicShape{public:PointleftUp;Rect(constPointleftUp,intwidth,intheight){thisleftUpleftUp;}实现自己的Draw,负责画自己virtualvoidDraw(constGraphicsg){g。DrawRectangle(Pens。Red,leftUp,width,height);}};改变classCircle::publicShape{public:实现自己的Draw,负责画自己virtualvoidDraw(constGraphicsg){g。DrawCircle(Pens。Red,。。。);}};抽象方法可复用MainFormabstract。cppincludeiostreamincludevectorincludeshapeabstract。classMainForm:publicForm{private:Pointp1;Pointp2;针对所有形状注意,这个地方用的是Shape指针这里面我们需要使用多态性。可能是LineRect类型。如果不用指针会造成对象切割,切割成小对象会有问题必须要房Shape指针vectorShapeshapeVpublic:MainFor(){。。。}protected:virtualvoidOnMouseDown(constMouseEventArgse);virtualvoidOnMouseUp(constMouseEventArgse);virtualvoidOnPaint(constPaintEventArgse);};voidMainForm::OnMouseDown(constMouseEventArgse){p1。xe。X;p1。ye。Y;。。。Form::OnMouseDown(e);}voidMainForm::OnMouseUp(constMouseEventArgse){p2。xe。X;p2。ye。Y;if(rdoLine。Checked){此处不能放栈对象,在MainForm的析构函数中要复制释放shapeVector中存放的堆对象指针shapeVector。pushback(newLine(p1,p2));这个地方貌似有内存泄漏吧???}elseif(rdoRect。Checked){intwidthabs(p2。xp1。x);intheightabs(p2。yp1。y);shapeVector。pushback(newRect(p1,width,height));}改变后面使用工厂模式可以消掉elseif(。。。){。。。shapeVector。pushback(。。。);}。。。thisRefresh();Form::OnMouseUp(e);}voidMainForm::OnPaint(constPaintEventArgse){针对所有形状for(inti0;ishapeVector。size();i){shapeVector〔i〕Draw(e。Graphics);多态调用,各负其责}。。。Form::OnPaint(e);}
  用户有修改需求
  软件设计的目标》复用。
  软件设计的金科玉律复用。
投诉 评论

导致孩子性早熟的因素有哪些呢儿童性早熟在近些年有趋于低龄化的一种趋势,5、6岁的女孩来月经也并不是什么震惊的新闻了。经研究发现,如果儿童饮食的不合理也会导致儿童性早熟。那么,导致孩子性早熟的因素有哪些呢?……布克44分保罗189太阳大胜雷霆获4连胜!NBA常规赛3月9日继续进行,本场比赛亚历山大缺阵,而太阳这边杜兰特赛前热身时滑倒脚踝扭伤也不打。最终,太阳以132101战胜雷霆,太阳获得4连胜的同时终结了雷霆的3连胜。……佛山海宝湾海鲜品种多够便宜听说佛山海宝湾水产交易市场这里的海鲜又便宜又新鲜,今天和男朋友家人过来看看。市场很大,挑选有些困难,对比了很多家,然后价格其实没差很多,我们就挑选了看起来最新鲜的几家。……你认为knight实力有多强,称得上国服第一中路吗?我认为knight是当之无愧的国服第一中路,大家都知道knight是国内顶尖的中单,他获得击杀王和单杀王,同时也获得了本赛季最佳mvp奖,值得一提的是,他使用鼠标键盘的方式跟我……张鼓峰的地震1938年7月,地处中国、苏联、朝鲜三国交界处的哈桑湖、张鼓峰一带,局势越来越紧张。占据中国东北的日本侵略军,不断向驻守张鼓峰的苏联边防军进行挑畔,要求苏联军队退出哈桑湖和张鼓……依旧不变的是那份执着身边的人总是在不停的抱怨生活,对于生活,我有时总会感到十分迷茫,我是谁?我是一个怎样的人?我未来会去哪?会做什么?就像大雾把我前行的道路淹没,我不知道向哪个方向前进。题记……学校党支部不忘初心牢记使命主题教育实施方案学校党支部不忘初心、牢记使命主题教育实施方案按照县委和局党委《关于在全县教育系统开展不忘初心、牢记使命主题教育实施方案》的通知,结合实际,为高质量开展好主题教育,特制定本……追寻一抹深沉的绿祖母绿!祖母绿宝石知识大盘点(选购必备)有一种绿,是时间最珍贵的绿,浓郁而热烈,从古埃及时代的女王到如今的普罗大众,都因为这份绿意而陶醉不已。它就是祖母绿的绿。如果你经常看民国题材类电视剧的话,你可能会留……设计模式简介学习设计模式的目的:理解松耦合掌握面向对象设计模式掌握重构技法掌握GOF可复用手法:面向对象本人下一步要学习架构搭建抽象思维非常重要。面向对象》组……探究我国民法实务中的以物抵债【摘要】以物抵债发生在金钱债中。以物抵债是指债务人与债权人双方约定或生效法律文书的确定。以物抵债也是一种制度,通过特定财产抵偿债务,继而消灭债权关系的一种制度。以物抵债这种制度……看你敢撒谎我刚考入本市重点高中,第一天上课,班里的同学之间都很陌生,但班里靓女很多。我的同桌是个胖墩墩的男生(简称:小胖)上午第三节课语文课,大概还有20多分钟下课。这时小胖……凯特王妃真的美疯了!身穿长裙公开亮眼,衣品和身段堪比明星最近很多人都在讨论王室穿搭,有的人说西班牙王后莱蒂齐亚衣品好,也有的人说约旦王妃拉尼娅会穿。但我觉得英国王妃凯特美疯了,身材好、衣品绝,穿搭接地气的同时还保留了一百分的端……
国民神药六味地黄丸功效多,但请注意这3类人不能跟风用多幸运我有个我们吾心予汝,但求不归13日晨,一起去看最亮启明星,约吗?今年不流行露脚踝了,裙子靴子才是真时髦!优雅洋气还藏肉iPhone4复刻版曝光,刘海取消,耳机孔正式回归TES和JDG成功会师夏季赛决赛,残酷的冒泡赛即将开始肺部有结节,晚上或会有4个症状,不妨自查一下,别不当回事林更新拉明星网红为理发店宣传,张馨予要求换人,痞幼尴尬笑不出基围虾的多种吃法之蒜蓉基围虾陆家嘴的新年味2022暑期旅游市场展望多重积极因素支撑下的需求修复

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找