软件工程思想——c面向对象程序设计(编辑修改稿)内容摘要:
t 函数可以引用 A、 B、 C 的对象。 示例程序如下: class A { public: void Func1(void)。 }。 void Test(A *a) { aFunc1()。 } class B : public A { … }。 class C : public A { … }。 // Example main() { A a。 B b。 C c。 Test(amp。 a)。 Test(amp。 b)。 Test(amp。 c)。 }。 以上程序看不出“多态”有什么价值,加上虚函数和抽象基类后,“多态”的威力就显示出来了。 C++用关键字 virtual 来声明一个函数为虚函数,派生类的虚函数将覆盖( override)基类对应的虚函数的功能。 示例程序如下: class A { public: virtual void Func1(void){ cout “This is A::Func1 \n”} }。 void Test(A *a) { aFunc1()。 } class B : public A { public: virtual void Func1(void){ cout “This is B::Func1 \n”} }。 class C : public A { public: virtual void Func1(void){ cout “This is C::Func1 \n”} }。 // Example main() { A a。 B b。 C c。 Test(amp。 a)。 // 输出 This is A::Func1 Test(amp。 b)。 // 输出 This is B::Func1 Test(amp。 c)。 // 输出 This is C::Func1 }。 如果基类 A 定义如下: class A { public: virtual void Func1(void)=0。 }。 那么函数 Func1 叫作纯虚函数,含有纯虚函数的类叫作抽象基类。 抽象基类只管定义纯虚函数的形式,具体的功能由派生类实现。 结合“抽象基类”和“多态”有如下突出优点: ( 1)应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。 这一招叫“以不变应万变”,可以大大提高程序的可复用性(这是接口设计的复用,而不是代码实现的复用)。 ( 2)派生类的功能可以被基类指针引用,这叫向后兼容,可以提高程序的可扩充性和可维护性。 以前写的程序可以被将来写的程序调用不足为奇,但是将来写的程序可以被以前写的程序调用那可了不起。 良好的编程风格 内功深厚的武林高手出招往往平淡无奇。 同理,编程高手也不会用奇门怪招写程序。 良好的编程风格是产生高质量程序的前提。 命名约定 有不少人编程时用拼音给函数或变量命名,这样做并不能说明你很爱国,却会让用此程序的人迷糊(很多南方人不懂拼音,我就不懂)。 程序中的英文一般不会太复杂,用词要力求准确。 匈牙利命名法是 Microsoft 公司倡导的 [Maguire 1993],虽然很烦琐,但用习惯了也就成了自然。 没有人强迫你采用何种命名法,但有一点应该做到:自己的程序命名必须一致。 以下是我编程时采用的命名约定: ( 1)宏定义用大写字母加下划线表示,如 MAX_LENGTH; ( 2)函数用大写字母开头的单词组合而成,如 SetName, GetName ; ( 3)指针变量加前缀 p,如 *pNode ; ( 4) BOOL 变量加前缀 b,如 bFlag ; ( 5) int 变量加前缀 i,如 iWidth ; ( 6) float 变量加前缀 f,如 fWidth ; ( 7) double 变量加前缀 d,如 dWidth ; ( 8)字符串变量加前缀 str,如 strName ; ( 9)枚举变量加前缀 e,如 eDrawMode ; ( 10)类的成员变量加前缀 m_,如 m_strName, m_iWidth ; 对于 int, float, double 型的变 量,如果变量名的含义十分明显,则不加前缀,避免烦琐。 如用于循环的 int 型变量 i,j,k ; float 型的三维坐标( x,y,z)等。 使用断言 程序一般分为 Debug 版本和 Release 版本, Debug 版本用于内部调试, Release 版本发行给用户使用。 断言 assert 是仅在 Debug 版本起作用的。软件工程思想——c面向对象程序设计(编辑修改稿)
相关推荐
解释各输入输出数据类型,并逐项说明其媒体、格式、数值范围、精度等。 对系统的数据输出及必须标明的控制输出量进行解释并举例。 (针对软件系统) 说明需要管理的文卷和记录的个数、表和文卷的大小规模,要按可预见的增长对数据及其分量的存储要求作出估算。 列出可能的软件、硬件故障以及对各项 性能而言所产生的后果和对故障处理的要求。 如用户单位对安全保密的要求,对使用方便的要求,对可维护性、可补充性、易读性
方文档的翻译,要求工作严谨,保证质量。 在同日方交流中,负责接待和沟通。 同时,在个人的发展意向中可以兼顾其它公司内的常务工作。 开发部概要流程图 软脑软件开发部整体概要流程图日方委托研发实施中方项目日方委托开发 基本设计书( 含DB),Fp 表项目总控人员 〉 部长 〉 常务项目经理,项目实施 提交 alfa 版本项目总控助理进行项目信息管理测试部进行软,件测试 提交beta
从本章开始,逐个地给出各个层次中的每个程序的设计考虑。 以下给出的提纲是针对一般情况的。 对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容往往与它所隶属的上一层 模块的对应条目的内容相同,在这种情况下,只要简单地说明这一点即可。 3. 1 程序描述 给出对该程序的简要描述,主要说明安排设计本程序的目的意义,并且,还要说明本程序的特点(如 是常驻内存还是非常驻。 是否子程序。
第五章 防水施 工 防水层施工技术措施的要点在于:材料选择、焊接工艺、铺设工艺。 根据设计要求、选用 ECB塑料防水板,采用无钉铺设。 先在初期支护基面上铺贴土工布保护层衬垫,用射钉固定,然后铺设防水板,用热焊法将 ECB防水板焊接于土工布塑料圆垫片上。 防水板之间采用热焊机双焊缝焊接。 焊接质量用充气法检验。 铺设顺序根据二次衬砌的工艺流程进行安排。 1)铺设防水层之前
配套、网络配套等都有待加强。 目前,胜浦镇在售 的房屋以二手房转让为主,有少量动迁房和政府单位修建的新房。 要准确把握胜浦镇的房地产市场状况,得追本朔源,从动迁房入手,以现有的二手房交易为依托,进行市场分析。 建筑形态分析 建筑形态: 早期以 4 层的多层建筑为主,底层为车库; 少量三层建筑(如嘉兴苑); 在建的项目逐步以 6 层的多层建筑为主。 现有房型分析
更新应存在职责分工。 了解各负责部门在供应商选型和采购过程中的职责分工,以确保职权分立。 17 3 关联方交易 控制点 检查方法 风险 审计范围 ** 完成日期 工作底稿索引 物资采购部门应就存在关联方关系的供应商定期(如每季度、每年)向法律事务部门上报发生采购活动的关联方清单,上报的关联方信息应经具相应权限的机构或其授权人员审阅并批准。 取得物资采购部门上报的关联方清单