小弟来自东北的一所大学,临近毕业《面向对象程序设计》没有及格,老师出了“变态”的题目,上次补考没有一个同学及格,这次应该是最后一次补考机会,不及格的话我就不能毕业。老师已明确说再考一遍同样的,只是自己找答案。想来父母供我念书不容易,不能因为这一科而不毕业,自己能力有限,只好找人帮忙.
其实,平时老师都是胡批卷子的,写满就给过,可是这次要迎接全国优秀学校的评审,他不敢胡批了,就严格了,又不给题,哎~。请哥哥姐姐们,帮小弟一把,看看能否作出这两道题,我找遍了手头的c++习题集没有类似的,走投无路,因为我们学的课本是清华的(尽管清华出的书很多),这两道题是在<多态性与虚函数〉这一章的课后习题,因为有人说着工作量很大,不适合考试,估计可能设计出框架就行了,不知我想得对不对.估计星期一就要考试了,请大家帮忙看一下,这是其中的两道题目。
第一题:为CAD软件设计一个图形处理工具时,定义若干个基本图形,需要具有屏幕上显示移动、复制、旋转、隐藏等功能,使用纯虚函数和抽象类等方法来设计该程序模块。
第二题:编制一个Web Gis的本地站点的Windows界面,要求带有菜单条、标题栏、图形显示区等,定义出接口协议。
有人说不难,告诉我“定义一个抽象类sharp,然后用虚函数实现多态” ,可是基础薄弱,短时间不能领会,不知哪位哥哥姐姐看他的思路对不对,帮我做一下,不是偷懒,真的是时间不多了,c++不是两三天就能看会的。叩谢!!!!!!
其实,平时老师都是胡批卷子的,写满就给过,可是这次要迎接全国优秀学校的评审,他不敢胡批了,就严格了,又不给题,哎~。请哥哥姐姐们,帮小弟一把,看看能否作出这两道题,我找遍了手头的c++习题集没有类似的,走投无路,因为我们学的课本是清华的(尽管清华出的书很多),这两道题是在<多态性与虚函数〉这一章的课后习题,因为有人说着工作量很大,不适合考试,估计可能设计出框架就行了,不知我想得对不对.估计星期一就要考试了,请大家帮忙看一下,这是其中的两道题目。
第一题:为CAD软件设计一个图形处理工具时,定义若干个基本图形,需要具有屏幕上显示移动、复制、旋转、隐藏等功能,使用纯虚函数和抽象类等方法来设计该程序模块。
第二题:编制一个Web Gis的本地站点的Windows界面,要求带有菜单条、标题栏、图形显示区等,定义出接口协议。
有人说不难,告诉我“定义一个抽象类sharp,然后用虚函数实现多态” ,可是基础薄弱,短时间不能领会,不知哪位哥哥姐姐看他的思路对不对,帮我做一下,不是偷懒,真的是时间不多了,c++不是两三天就能看会的。叩谢!!!!!!
这两天上下嘴唇都已经起了大泡,后悔当初为啥不写满,偏偏赶上优秀学校评审。考之前所有人都告诉我就是写满,程序题瞎编就行,结果写满了,这次谁也没过。希望大虾们救救我,我愿意把所有分数给大家。
可以画线, 画圆,画好的线和圆可以拉伸,移动,删除,框选,按住SHIFT键多选
画线时按住SHIFT只能画水平\垂直\45度斜线,
画圆时按住SHIFT只能画标准圆
很简单的,但是概念都有了,要添加其它的功能也很简单
但我本来是想用派生类做的,但还是.....
直接每种对象(线,圆,方框)等每种定义一个类
第二题是本地站点的Windows界面,而且只要求定义出接口协议。我想不用考虑是否是Web Gis吧。
思考:基本图形由什么来决定呢?
点: 点的位置(1个Point),点的大小(Size)。
直线: 两个端点(2个point),直线的大小(Size)。
圆: 外切四边形(4个Point),圆线大小(size).
椭圆: 跟圆一样。
三角形:三条相接线(3个Point),边的宽(size)从上面的基本图形抽取出共同属性,抽象为类Sharp。
类名:CSharp
属性:
List<point> points;
int szWidth;
//图形控制用
CRect theRect;//图形的最小矩形。
操作:
Virtual Copy ();
Virtual Revolving (angle);//根据不同的角度,重新计算Points的位置。
Virtual Move( int );//根据偏移量,重新计算points的位置
Virtual Show ( int );//可以定义多种显示状态 AnimalShow, NormalShow, AnimalHide, NormalHide等。
Virtual Draw (CDC* pDC);//根据point来画图形。
//图形控制用。
ptInRect(point);//点是否在theRect里面。从抽象类生成各种的图形(点,直线,圆,椭圆,三角形等)
当然也可以生成圆角矩形,多边形,图象等。文档中保存图形队列:
List<sharp> m_list;图形的View的控制:
类:CMyView
属性:
Bool m_bMove;
CSharp m_currentSharp;//当前操作的图形操作:
New(CSharp);//m_list添加图形,用工厂模式产生。
Delete(CSharp);//m_list删除图形。
Draw()//显示m_list的图形。
MouseDown(); //从m_list后到前,检查point是否在图形里面。
MouseMove();//如果m_bMove为真的,移动图形;
MouseUp(); //从新计算m_currentSharp的位置。
要写成程序代码,定义流程
连老师出的题目文字表达也有点画蛇添足,
如果不用考虑web gis,就是一个界面也行。