面向对象程序设计C - 东华大学

合集下载

东华大学电子信息科学与技术 培养方案

东华大学电子信息科学与技术 培养方案

电子信息工程专业(卓越工程师培养计划班)发布时间:2011-12-22总体培养目标面向国家信息化战略规划,德智体全面发展,掌握电子信息工程学科的相关理论基础,获得工程师良好训练,能胜任电子信息系统工程项目的分析、设计、开发、维护、管理,具有继续学习能力、创新能力、国际视野、跨文化沟通能力和团队意识的卓越电子信息人才。

通过本科阶段的培养使学生掌握电子信息工程领域扎实的理论基础和较宽的专业知识、具有团队精神和创新意识、具有国际交流能力的电子信息工程型人才;经过工程实践能力的重点训练,使其成为能从事通信系统、智能化仪器仪表、信息电子和消费类电子系统与装置的设计、研制、开发、运行的高级工程技术人才。

主要课程除工科类本科公共基础课、技术基础课外,还开设了创新思维与方法、专业导论等课程。

主要专业基础课和专业课有: 电路分析、模拟电子技术、数字电子技术、通信电子电路、信号与线性系统、电磁场与电磁波、通信原理、单片机原理与实践、数字信号处理、嵌入式原理与应用、面向对象程序设计、感测技术、计算机通信网、随机信号分析、数字图像处理、先进电子系统分析与设计、锁相与频率合成、天线与电波传播、电磁兼容原理和技术、电子专业前沿课程、射频与微波电路设计、无线移动通信、可编程ASIC技术、无线传感网络原理与应用、DSP技术、信息采集与处理技术。

主要实践环节工程训练、C语言程序设计上机、认识实习(电工电子)、数据结构课程设计、电路实验、信号与系统课程设计、电子技术实验、电子技术课程设计(分散)、微机系统及应用课程设计、微机系统与应用实验、数字信号处理综合实验、高频电子线路实验、通信原理实验、企业认识实习、电子信息系统设计、专业综合实习、毕业设计(论文)。

通信工程专业培养目标本专业培养掌握通信科学基础理论与技术以及电子科学、计算机科学、控制科学的一般理论与技术,能在通信领域及相关领域中从事通信与信息系统研究、设计、制造、运营及在国民经济各部门从事开发、应用通信技术与设备的高级通信工程技术人才。

《面向对象程序设计》课程设计安排表091117-20

《面向对象程序设计》课程设计安排表091117-20

东华理工大学软件学院2010-2011学年(一)学期课程设计安排表软件工程系系软件工程专业 091117 班级课程设计名称:面向对象程序设计制表人:许志文系负责人签名: 2010年11月16日说明:(1)指导教师资格审核,要求讲师以上或者具有硕士学位的讲师,一般讲师不能单独指导;(2)一个指导教师原则上指导学生人数在20人之内,经过教务处批准后最多指导一个自然班;(3)每个学生必须独立完成课程设计,选择同一课程设计题目的学生人数不超过5名。

(4)辅导超过1周且时间和地点变化的可用2个以上的辅导时间安排表。

(5)本表以教学班为单位,双面打印一式三份,教学科研部、系、辅导老师各一份,并在课程设计前二周交各系。

东华理工大学软件学院2010-2011学年(一)学期课程设计安排表软件工程系系软件工程专业 091118 班级课程设计名称:面向对象程序设计制表人:许志文系负责人签名: 2010年11月16日说明:(1)指导教师资格审核,要求讲师以上或者具有硕士学位的讲师,一般讲师不能单独指导;(2)一个指导教师原则上指导学生人数在20人之内,经过教务处批准后最多指导一个自然班;(3)每个学生必须独立完成课程设计,选择同一课程设计题目的学生人数不超过5名。

(4)辅导超过1周且时间和地点变化的可用2个以上的辅导时间安排表。

(5)本表以教学班为单位,双面打印一式三份,教学科研部、系、辅导老师各一份,并在课程设计前二周交各系。

东华理工大学软件学院2010-2011学年(一)学期课程设计安排表软件工程系系软件工程专业 091119 班级课程设计名称:面向对象程序设计制表人:许志文系负责人签名: 2010年11月16日辅导时间安排表(第14周)说明:(1)指导教师资格审核,要求副教授以上或者具有硕士学位的副教授,一般副教授不能单独指导;(2)一个指导教师原则上指导学生人数在20人之内,经过教务处批准后最多指导一个自然班;(3)每个学生必须独立完成课程设计,选择同一课程设计题目的学生人数不超过5名。

C++面向对象第六章

C++面向对象第六章

} string name; double chinese,math,english; int num=0; cout.setf(ios::fixed); cout.precision(1); while(fin>>name>>chinese>>math>>english) { num++; double sum=chinese+math+english; cout<<name<<"的总成绩为:"<<sum <<“,平均成绩为:”<<sum/3 <<endl; }
检查输入
#include<iostream> using namespace std; void new_line(); void get_int(int& number); int main() { int n; get_int(n); cout<<"Final value read in="<<n<<endl <<"End of demonstration.\n"; }
#include<iostream> #include<fstream> #include<string> using namespace std; int main() { ifstream fin; ofstream fout; fin.open("data.txt"); fout.open("out.txt");
}
类和对象
对象是一种变量,该变量有函数与之关联, 这函数称为成员函数。类是一种类型,它 的地位相当于int,double这些数据类型,它的 变量就是对象,或用类声明的变量称为该 类的对象,对象所属的类决定了该对象有 哪些成员函数。这些成员函数的实现依赖 于类的定义。如open()和close()是 in_stream对象的成员函数,实际上是类 ifstream类的成员函数

面向对象程序设计完整版

面向对象程序设计完整版

Object- Oriented ProgrammingC++主讲成长生东华大学计算机科学与技术学院第一章概述§1.1 面向对象程序设计的基本思想C++是基于C语言发展的, 又冲破C语言局限的面向对象的程序设计语言。

它与Java语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。

要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的( Pascal( 或C) ) 结构化程序设计方法及其设计思想、程序结构及特点。

SP(Structure Programming)是60年代诞生的针对当时爆发的所谓”软件危机”, 为此发展形成了现代软件工程学的基础。

SP的总的设计思想是:.自顶向下、层次化.逐步求精、精细化程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。

因此SP的程序的基本特点是:.按层次组织模块( 战略上划分战役).每一模块只有一个入口, 一个出口.代码和数据分离( 程序=数据结构+算法)归纳得到: SP把数据和过程( 代码、函数) 分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信息; 程序代码则用来处理加工这些数据。

程序员在编程时, 必须时刻考虑所要处理的数据结构和类型。

对不同的数据格式即使要作同样的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序( 如两个整型数和两个浮点数相加) 。

这样的编程方法, 即传统的SP方法设计出来的程序或系统其可重用的成分很少。

其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员的一个沉重的负担。

在开发一个大型软件课题中, 当工程进入到后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击, 使其前功尽弃。

为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object -Oriented Programming――OOP。

东华大学专业选课手册-电子信息工程专业选课指导手册

东华大学专业选课手册-电子信息工程专业选课指导手册

电子信息专业选课指导手册
一、明确各类课程的任务
基础阶段:通识教育(基础课程、公共课)
学科基础:专业平台课、学科基础必修和选修课程,宽厚的专业基础能力培养
专业方向:专业方向能力培养
实践教学与综合实践:实践、创新能力培养
二、选课指导
●为了达到比较良好的学习效果,建议学生安排好大学四年的课程,不要过于集中在某学年或某学期,注意修读学分量的把握、平衡。

●“/”表示前半学期和后半学期的分界
●综合实践中的课外科技活动2个学分可通过参加开放性实验、在各级竞赛中获奖、获发明、专利、发表论文等获得。

●学生在校期间在各级竞赛中取得优秀成绩或获发明、专利、发表论文及其他成果者,经专家评定可给予创新学分,由教务处授予。

创新学分可抵充学科基础类选修课程学分、综合实践中的课外科技活动学分。

具体课程由学生提出申请,学院审核同意,报教务处认定。

本选课指导手册解释权归信息学院
选课咨询地点:信息楼221;电话:67792332,联系人:刘堂友。

东华大学C语言程序设计报告书

东华大学C语言程序设计报告书
}
}
struct Student max(struct Student stu[])//定义max函数
{int i,m=0;//用m存放成绩最高的学生在数组中的序号
for(i=0;i<10;i++)
if(stu[i].average>stu[m].average) m=i;//找出平均成绩最高的学生在数组中的序号
#include<stdio.h>
int main()
{
void sort(int a[],int n,char style);
int a[100],n,i;
char style;
printf("请输入学生数:\n");
scanf("%d",&n);
printf("请输入%d个学生的成绩:\n",n);
printf("\n");
return 0;
}
void sort(int a[],int n)
{
int i,j,t;
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
if(a[i]<a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
}
运行结果:
2-3
}
void sort(int a[],int n,char style)
{
int i,j,t;
if(style=='a')
{
for(j=0;j<n-1;j++)

预处理和语句

预处理和语句

东华大学计算机学院
21
输入
顺 序 控 制 语 句
• 当程序需要执行键盘输入时,可以使用抽 取操作符>>从输入流cin中抽取键盘输入的 字符和数字,并把它赋给指定的变量。 • 语法格式:
cin >> 变量1 >> 变量2 … >> 变量n ;
• 注意:这里的抽取操作符>>与位移运算符 >>是同样的符号,但这种符号在不同的地 方其含义是不一样的。
2013-8-4
东华大学计算机学院
23
使用cout进行输出
顺 序 控 制 语 句
注意: 赋值符和条件运算的优先级都低于插入操作符: cout << a=b ; cout << a>b ? a : b ; //错误 //错误
可以添加括号改变优先级: cout << ( a = b ) ; cout << ( a>b ? a : b ) ;
12
带参数的宏定义
预 处 理
• 格式:
#define <宏名> (<参数表> <宏体>) 其中: • <宏名>是一个标识符, • <参数表>中可以有一个参数,也可以有多个参数,多个 参数用逗号分隔。 • <宏体>是替换用的字符序列。
例如:#define Print(Var) cout<<(Var)<<endl 用宏名中的参数带入语句中的参数,宏后面没有;号。 Print(Var)中的Print和(之间不能有空格,否则(就会被解释为置换字 符串的一部分。 #define Print(Var, digits) cout << setw(digits) << (Var) << endl 调用 Print(ival, 15) 预处理器就会把它换成 cout << setw(15) << (ival) << endl;

东华大学学分制选课手册

东华大学学分制选课手册

目录一、教学计划简介 (1)二、选课流程 (3)三、选课方法及注意事项 (4)四、选课操作实例 (7)(一)第一学期选课操作实例。

(7)(二)按专业大类入学同学进入专业学习学期选课操作实例 (16)(三)成绩查询 (19)五、数学类课程的学习要求及选课说明 (22)六、物理类必修课程的学习要求及选课说明 (24)七、大学外语类课程的学习要求及选课说明 (25)(一) 公共英语课程学习要求及选课说明(试行) (25)(二)大学日语课程的学习要求及选课说明(试行) (29)八、计算机类课程的学习要求及选课说明 (31)九、文化素质类课程的学习要求及选课说明 (33)十、体育类类课程的学习要求及选课说明 (34)一、教学计划简介四年制本科专业教学计划是学校按照四年正常学习年限组织安排专业教学进程和课程教学的重要文件,是同学进行选课的基本依据,学校将根据教学计划和教学情况,确定并公布每学期的实际开设课程。

同学在导师的指导下,参照教学计划中课程的建议学习时间,在开设课程范围内自主选择。

教学计划总体框架和有关要求如下:1、教学计划由理论教学和实践环节两部分组成。

理论教学包含通识教育基础、学科基础、专业与专业前沿(即专业方向)三部分课程,前两部分课程中有必修和选修课程之分,第三部分课程全为选修。

实践环节包含综合实践和实践教学两类课程,全为必修课程。

必修课程指学生必须修读的课程,因课程有前修和后续的关系,要求同学在教学计划规定的学期内修读;选修课程指同学可以自主选读的课程。

同学可以在各类选修课程中有目的地选课修读,但各类选修课要修满本专业教学计划规定的学分数。

2、学生必须修满所在专业教学计划中规定的总学分数及各类别课程的规定学分后才能顺利毕业,不同类别课程的学分不能互相抵冲。

“通识教育”课程包括政治法律、语言文字、自然科学、技术科学、军事体育和人文素质等六方面课程的学习与实践。

除完成必修课程的学分外,还应修满数学类、大学外语类、计算机类、文化素质类、体育类等类别的课程学分。

C++面向对象程序设计清考试卷A

C++面向对象程序设计清考试卷A

说明:1.试题须用碳素墨水钢笔集中填在方格内,答题纸另附并装订于后,字迹须工整清晰;2.试题须经教研室或系(部)领导认真审核并签署本人代号;3.学生只须在第一页试题纸上填写姓名等
说明:1.试题须用碳素墨水钢笔集中填在方格内,答题纸另附并装订于后,字迹须工整清晰;2.试题须经教研室或系(部)领导认真审核并签署本人代号;3.学生只须在第一页试题纸上填写姓名等
说明:1.试题须用碳素墨水钢笔集中填在方格内,答题纸另附并装订于后,字迹须工整清晰;2.试题须经教研室或系(部)领导认真审核并签署本人代号;3.学生只须在第一页试题纸上填写姓名等
说明:1.试题须用碳素墨水钢笔集中填在方格内,答题纸另附并装订于后,字迹须工整清晰;2.试题须经教研室或系(部)领导认真审核并签署本人代号;3.学生只须在第一页试题纸上填写姓名等。

C-面向对象程序设计习题解答(全)Word版

C-面向对象程序设计习题解答(全)Word版

《C++面向对象程序设计》习题解答陈腊梅目录第一章面向对象程序设计概述.............................................................. 错误!未定义书签。

第二章对C语言的基础扩充................................................................... 错误!未定义书签。

第三章类和对象的初步探讨 ................................................................. 错误!未定义书签。

第四章类和对象的进一步解析.............................................................. 错误!未定义书签。

第五章在对象中使用运算符—运算符重载.......................................... 错误!未定义书签。

第六章继承与派生 (2)第七章多态性与虚函数 (2)第一章面向对象程序设计概述一、选择题二、填空题1、多态性2、成员函数3、抽象4、处理这些数据的操作或处理这些数据的函数5、面向对象分析、面向对象分析、面向对象编程、对象对象测试、面向对象维护第二章对C语言的基础扩充二、程序阅读题1答案a=639,b=78,c=122答案a=5,b=8a=8,b=53答案104答案x=20.6 y=5 z=Ax=216.34 y=5 z=Ax=216.34 y=2 z=Ax=216.34 y=2 z=E5答案ic=11fc=7.82ic=5fc=2.15第三章类和对象的初步探讨一、选择题二、填空题1 数据成员、成员函数2 private 、protected 、public3 指向对象的指针、对象的引用4 属性、行为、属性、行为5 对象、属性和操作这些属性的操作、对外隐藏四、程序改错题#include <iostream>using namespace std;class Clock{//public:void set_clock(void);void show_clock(void);//private:int hour;int minute;int second;};Clock clock;int main( ){clock.set_clock( );clock.show_clock ( );//return 0 ;}void Clock::set_clock(void){cin>>hour;cin>>minute;cin>>second;}void Clock::show_clock(void){cout<<hour<<":"<<minute<<":"<<second<<endl;}第四章类和对象的进一步解析二、填空题1 this2所有成员3友元类、友元函数4 friend5 程序编译、程序结束三、程序阅读题1答案Default constructor called.constructor called.0,06,86,8Destructor called.0,0Destructor called.2答案x!=y3答案Initalizing defaultInitalizing default0 0Destructor is activeDestructor is active4答案n=2,sum=2n=3,sum=5n=5,sum=105答案x=36答案x=1,y=2x=30,y=407答案1 2 3 4 4exit main3 2 1 08答案n=1009答案the student is:Li Huthe teacher is:Wang Ping10答案211答案1035,789.50412答案13答案constructing object:x=1第五章在对象中使用运算符—运算符重载二、程序完善题1(1)A A::operator+(A &b)(2){ A temp;temp.i = i+b.i;return temp; }三、程序阅读题1.答案n=4n=3232.答案c1=10 c2=20c1=100 c2=200c1=11 c2=21c1=100 c2=2003.答案1 2 4 7 11 16第六章派生与继承1 继承2 具体化、抽象3 公有继承、保护继承、私有继承4 子对象5 public(共有的)、protected(保护的)、不可访问6 protected(保护的)、protected(保护的)、不可访问的7 private(私有的)、private(私有的)、不可访问的8 二义性1.C++语言中,既允许单继承,又允许多继承。

东华大学c语言课程设计

东华大学c语言课程设计

东华大学c语言课程设计一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构、算法和编程思想,培养学生独立编程和解决问题的能力。

具体目标如下:1.知识目标:学生能够理解并掌握C语言的基本语法、关键字、数据类型、运算符、控制结构、函数等基本概念。

2.技能目标:学生能够熟练使用C语言进行程序设计,掌握常用的调试技巧,能够独立解决编程过程中遇到的问题。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生自主学习、合作交流的能力,培养学生的创新意识和解决问题的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和编程思想。

具体安排如下:1.C语言基本语法:介绍C语言的基本数据类型、运算符、控制结构、函数等。

2.数据结构:讲解数组、链表、栈、队列等基本数据结构及其应用。

3.算法:介绍常用的排序算法、查找算法、递归算法等。

4.编程思想:培养学生面向对象编程的思想,讲解面向对象编程的基本概念和方法。

三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,包括:1.讲授法:教师通过讲解、演示、举例等方式,向学生传授C语言的基本知识和编程技巧。

2.讨论法:学生进行小组讨论,引导学生主动思考、提问,培养学生的合作交流能力。

3.案例分析法:分析典型的编程案例,让学生学会分析问题、解决问题的方法。

4.实验法:安排实验课程,让学生动手实践,巩固所学知识,提高编程能力。

四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选择一本适合学生水平的C语言教材,作为学生学习的主要参考资料。

2.参考书:提供一些有关C语言编程的参考书籍,供学生拓展阅读。

3.多媒体资料:制作课件、教学视频等多媒体资料,丰富教学手段,提高学生的学习兴趣。

4.实验设备:准备计算机、网络等实验设备,为学生提供实践编程的环境。

五、教学评估本课程的评估方式包括平时表现、作业、考试等多个方面,以全面客观地评价学生的学习成果。

东华大学c语言课程设计

东华大学c语言课程设计

东华大学c语言课程设计一、课程目标知识目标:1. 掌握C语言的基本语法和程序结构,包括变量声明、数据类型、运算符、控制语句等。

2. 理解函数的定义与调用,能够编写简单的自定义函数,并进行参数传递。

3. 了解数组、指针和字符串的使用,能够运用它们进行数据操作和存储。

4. 掌握基本的文件操作,如文件的打开、读写和关闭。

技能目标:1. 能够使用C语言编写简单的程序,解决问题并进行调试。

2. 能够运用逻辑思维和算法设计,解决基本的算法问题。

3. 能够分析并优化代码,提高程序的执行效率。

4. 能够通过编写代码,实现数据的存储和提取,进行文件操作。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习编程的热情。

2. 培养学生的逻辑思维和问题解决能力,增强自信心。

3. 培养学生的团队协作意识,学会与他人共同解决问题。

4. 培养学生注重程序规范和代码质量,养成良好的编程习惯。

课程性质:本课程为东华大学计算机科学与技术专业的学科基础课,旨在让学生掌握C语言的基本知识和编程技能。

学生特点:学生具备一定的计算机基础,对编程有一定了解,但可能缺乏深入理解和实践经验。

教学要求:结合学生特点,通过理论讲解、案例分析和实践操作,使学生在掌握C语言知识的同时,提高编程能力和问题解决能力。

教学过程中注重培养学生的实际操作能力和创新思维,将课程目标分解为具体的学习成果,以便进行教学设计和评估。

二、教学内容1. C语言概述:介绍C语言的发展历程、特点和应用领域,使学生了解C语言的重要性和学习价值。

相关教材章节:第一章 C语言概述2. 数据类型、运算符与表达式:讲解基本数据类型、变量声明与赋值,各类运算符的使用及表达式求值。

相关教材章节:第二章 数据类型与表达式3. 控制语句:介绍顺序结构、选择结构(if-else)、循环结构(for、while、do-while),以及跳转语句(break、continue、goto)。

相关教材章节:第三章 控制语句4. 函数:讲解函数的定义、调用、参数传递、返回值,以及递归函数。

面向对象程序设计C课后题答案

面向对象程序设计C课后题答案

第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对象程序设计是一种新型的程序设计范型。

这种范型的主要特征是:程序=对象+消息。

面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。

第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。

面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。

这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。

[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。

对象可以认为是:数据+操作在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。

类和对象之间的关系是抽象和具体的关系。

类是多个对象进行综合抽象的结果,一个对象是类的一个实例。

在面向对象程序设计中,总是先声明类,再由类生成对象。

类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。

[1_3]现实世界中的对象有哪些特征?请举例说明。

对象是现实世界中的一个实体,其具有以下一些特征:(1)每一个对象必须有一个名字以区别于其他对象。

(2)需要用属性来描述它的某些特性。

(3)有一组操作,每一个操作决定了对象的一种行为。

(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。

例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36 生日:1966.10.1 工资:2000 部门:人事部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。

面向对象实验设计

面向对象实验设计

面向对象实验设计报告班级: 081105学号: 08110506姓名: 杜鹏专业: 软件工程指导老师: 邹国华2009/12/12目录第1章设计要求 (2)1.1本报告的实验课题 (2)第2章程序设计过程 (4)2.3程序设计目的 (4)2.3程序设计目标 (4)2.3程序实现思路 (5)2.1.1类的结构及其简单叙述 (5)2.1.2系统功能模块图 (6)2.4系统流程截图 (7)2.5类的层次框图 (9)2.6完整程序代码 (10)实验心得体会 (21)参考文献 (22)面向对象实验设计报告书设计要求实验课题班级081105 学生姓名杜鹏学号08110506专业软件工程发题日期: 2009年12月07日完成日期:2009年12月11日题目公司人员管理系统题目类型:课程设计技术专题研究理论研究软件系统开发一、设计任务及要求1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

2、基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;(4)在系统的设计中,至少要用到面向对象的一种机制。

3、创新要求:在基本要求达到后,可迚行创新设计,如根据查找结果迚行修改的功能及设计出比友好的界面等。

4、写出设计说明书二、设计方法和基本原理1、问题描述(功能要求):某小型公司,主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。

现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。

要求:1)其中,人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。

2)程序对所有人员有提升级别的功能3)月薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成 ,销售经理既拿固定月薪也领取销售提成。

sxw - 东华大学精品课程.

sxw - 东华大学精品课程.
软件工程
第22章 面向对象设计
第22章 面向对象设计
22.1 面向对象系统的设计 22.2 系统设计过程 22.3 对象设计过程 22.4 设计模式 22.5 面向对象程序设计 22.6 小结
OOD基于四个软件设计概念:抽象、信息隐 蔽、功能独立性和模块性建造系统的能力, 提供了使设计者能以较小的复杂性和折衷达 到所有这四个特征的机制。
客户端 子系统
请求
服务器端 子系统
合约
端 子系统
请求 请求
端 子系统
合约
合约
子系统间协作的模型
刻画存在子系统间的合约的步骤:
列出可以被子系统的协作者产生的每个请求; 对每个合约,标注实现该合约隐含的责任所需的操作; 一次考虑一个合约,创建图1所示表格。 如果在子系统间的交互模式是复杂的,则可创建简略
设计算法和数据结构
数据结构和算法并发地设计。算法被创建以实现每 个操作的规约。 操作类型有三种: 以某种方式操纵数据的操作; 完成计算的操作; 监控某对象以等待某控制事件出现的操作。
程序构件和接口
软件设计质量的一个重要方面是模块性,即被组合 以形成完整程序的程序构件的规约。面向对象的方 法定义对象为程序构件,它本身又和其他构件连接, 因此,我们还必须标识存在于对象间的接口和对象 的整体结构。程序构件应该在实现该设计的程序设 计语言的语境内表示。
一旦参与者及其使用场景被定义,则一个命令层 次被标识。该命令层次定义了主要的系统菜单类 别及主要系统菜单类别内可用的所有子功能。命 令层次被迭代地精化,直至每个use-case可以 通过导航功能层次而被实现。
22.2.5 数据管理构件
数据管理包括两个关注区域:对应用本身关键的数 据的管理;对象存储和检索的基础设施的创建。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
抽象类的主要作用是将有关的类组织在一个继承层次的结构中, 由它来为它们提供一个公共的根,相关的子类是从这个根派生出来 的。一般而言,抽象类只描述子类共同的操作接口,而将完整的实 现留给子类。
龚涛
13
东华大学信息科学与技术学院
第8章 多态性和虚函数 8.6 虚析构函数
在析构函数前面加上关键字virtual进行说明, 称该析构函数为虚析构函数。
静态联编和动态联编都属于多态性,它们是在不同阶段对不同 实现进行不同的选择。
龚涛
10
东华大学信息科学与技术学院
第8章 多态性和虚函数 8.4 虚函数
虚函数是动态联编的基础。虚函数是成员函数,而 且是非static的成员函数。说明虚函数的方法如下:
virtual <类型说明符> <函数名>(<参数表>) 其中,被关键字virtual说明的函数称为虚函数。
重载函数的意义在于它可以用相同的名字访问一组 相互关联的函数,由编译程序来进行选择,因而有助于 解决程序复杂性的问题。
(1) 不要使用重载函数来描述毫不相干的函数。
(2) 在类中,构造函数可以重载,普通成员函数也可 以重载。
(3) 在重载函数中使用参数的默认值要避免二义性。
龚涛
4
东华大学信息科学与技术学院
由于C语言的数组中没有保存其大小,因此,不能 对数组元素进行存取范围的检查,无法保证给数组动态 赋值不会越界。利用C++语言的类可以定义一种更安全、 功能更强的数组类型。为此,为该类定义重载运算符[]。
2. 重载增1减1运算符
增1减1运算符是单目运算符,分为前缀运算和后缀 运算两种。为了区分这两种运算,将后缀运算视为双目 运算符。表达式obj++或obj—被看作obj++0或obj—0。
龚涛
6
东华大学信息科学与技术学院
8.2 运算符重载 8.2.1 运算符重载的几个问题
5. 运算符重载时必须遵循的原则 运算符重载可以使程序更加简洁,使表达
式更加直观,增强可读性。但是,运算符重载 使用不宜过多,否则会带来一定的麻烦。
(1) 重载运算符含义必须清楚 (2) 重载运算符不能有二义性
在定义重载运算符必须含意准确,用法确定,不 能模棱两可,又可这样理解,又可那样理解。
如果一个基类的析构函数被说明为虚析构函 数,则它的派生类中的析构函数也是虚析构函数, 不管它是否使用关键字virtual进行说明。
说明虚析构函数的目的是:使用delete运算 符删除一个对象时,确保析构函数能正确执行; 因为设置虚析构函数后,可以采用动态联编方式 选择析构函数。
龚涛
14
东华大学信息科学与技术学院
龚涛
11
东华大学信息科学与技术学院
第8章 多态性和虚函数 8.4 虚函数
派生类中说明的虚函数与基类中的被说明的虚函数 之间满足如下条件:
(1) 派生类中的虚函数与基类的虚函数有相同的参数 个数。
(2) 派生类中的虚函数参数的类型与基类的虚函数的 对应参数类型相同。
(3) 派生类中的虚函数的返回值或者与基类虚函数的 相同,或者都返回指针或引用;并且派生类虚函数所返 回的指针或引用的类型是基类中虚函数所返回的指针或 者引用的类型的子类型。
其中,operator是定义运算符重载函数的关键字。
当重载为成员函数时,双目运算符仅有一个参数。对单目运算
符重载为成员函数时,不能再显式说明参数。重载为成员函数时,
总是隐含了一个参数,该参数是this指针。this指针是指向调用该成 员函数对象的指针。
重载为友元函数
运算符重载函数还可以为友元函数。当重载友元函数时,将没
下列运算符不允许重载。
. .* :: ?:龚涛5来自东华大学信息科学与技术学院
8.2 运算符重载 8.2.1 运算符重载的几个问题
2. 运算符重载后,对优先级和结合性如何处理 用户重新定义运算符,不改变原运算符的优先级和结合性。
3. 编译程序如何选用运算符函数 运算符重载实际是一个函数,所以运算符的重载实际上是函数的重 载。编译程序对运算符重载的选择,遵循函数重载的选择原则,主 要根据该运算符的操作数的类型、个数和顺序进行选择。
3. 重载函数调用运算符
可以将函数调用运算符()看成是下标运算符[]的扩展。 函数调用运算符可以不带参数,也可带多个参数。
龚涛
9
东华大学信息科学与技术学院
第8章 多态性和虚函数 8.3 静态联编和动态联编
联编是指计算机自身彼此关联的过程。通常指把一个被调用函 数的代码联接到要运行的程序中的过程,实际上是将一个标识符的 与一个存储地址联系在一起的过程。按照联编所进行的阶段不同, 可分为两种不同的联编方法:静态联编和动态联编。
第8章 多态性和虚函数 8.2 运算符重载
运算符重载就是赋予已有的运算符多重含义,即多种功能。C++语 言中通过重新定义运算符,使它能够用于特定类的对象执行特定的 功能。
8.2.1 运算符重载的几个问题 1. 哪些运算符允许重载 下列运算符允许重载。
算术运算符:+ - * / % ++ - 位操作运算符:& | ~ ^ << >> 逻辑运算符:! && || 比较运算符:> < >= <= == != 赋值运算符:= += -= *= /= %= &= |= ^= <<= >>= 其他运算符:[] () -> ’ new delete new[] delete[] ->*
8.3.1 静态联编
静态联编是指联编工作出现在编译连接阶段,因此又称为早期联 编。因为这种联编过程是在程序开始运行之前完成的,所以也称为 静态束定。静态联编是在编译时将函数所要调用的代码确定后联接 到程序中。这种联编的特点是速度快,但灵活性较差。
8.3.2 动态联编
要确切知道所要调用的函数,要求联编工作在程序运行时进行。 这种在程序运行时进行联编的工作称为动态联编,或称为动态束定, 又叫晚期联编。动态联编的特点是虽然速度较慢,但是效率高,灵 活性较强。
有隐含的参数this指针。但是,有些运算符不能重载为友元函数, 它们是:= () [] ->。
重载为友元函数的运算符重载函数的定义格式如下:
Friend <类型说明符> operator <运算符>(<参数表>)
8
东华大学信息科学与技术学院
8.2 运算符重载 8.2.3 其他运算符的重载举例
1. 下标运算符重载

}; 在许多情况下,在基类中不对虚函数给出有意义的实现,而把
它说明为纯虚函数,它的实现留给该基类的派生类去做。 8.5.2 抽象类
带有纯虚函数的类称为抽象类。抽象类是一种特殊的类,它是 为了抽象和设计的目的而建立的,处于继承层次结构的上层。抽象 类是不能定义对象的,抽象类可以定义对象指针和对象引用。
满足上述条件的派生类的成员函数,自然是虚函数, 可以不必加virtual说明。
龚涛
12
东华大学信息科学与技术学院
第8章 多态性和虚函数 8.5 纯虚函数和抽象类
8.5.1 纯虚函数 纯虚函数是一种特殊的虚函数,它的一般格式如下:
class <类名>
{ virtual <类型> <函数名>(<参数表>)=0;
4. 重载运算符有哪些限制 (1) 不可臆造新的运算符。必须把重载运算符限制在C++语言中已有的
运算符范围内允许重载的运算符之中。
(2) 重载运算符坚持4个“不能改变”。 不能改变运算符操作数的个数; 不能改变运算符原有的优先级; 不能改变运算符原有的结合性; 不能改变运算符原有的语法结构。
面向对象程序设计C++
授课老师:龚涛 信息科学与技术学院 2010年11月 教材:《C++语言基础教程》
参考开发类书籍:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第8章 多态性和虚函数
函数重载
运算符重载
静态联编和动态联编 虚函数
纯虚函数和抽象类
虚析构函数
程序举例
如果某类中的一个成员函数被说明为虚函数,这就
意味着该成员函数在派生类中可能有不同的实现。当使 用这个成员函数操作作为指针或引用所标识对象时,对 该成员函数调用采用动态联编方式,即在运行时进行关 联或束定。
动态联编要通过对象指针或对象引用来操作虚函数。 如果采用对象来操作虚函数,则采用静态联编方式调用 虚函数。
龚涛
7
东华大学信息科学与技术学院
8.2 运算符重载 8.2.2 运算符重载函数的两种形式
1. 2.
龚涛
运算符重载函数一般采用如下两种形式:成员函数形式和友元 函数形式。这两种形式都可访问类中的私有成员。
重载为类的成员函数
将运算符重载函数说明为类的成员函数的格式如下:
<类型> operator <运算符>(<参数表>)
龚涛
2
东华大学信息科学与技术学院
第8章 多态性和虚函数
多态性是面向对象程序设计的重要特征之一,多态性
和封装性、继承性构成了面向对象程序设计的三大特征。 这三大特征是相互关联的。封装性是基础,继承性是关 键,多态性是补充,而多态性又存在于继承的环境中。
多态性的含义就是多种状态,C++语言中主要支持 函数重载和运算符重载两种多态性。在函数重载中,同 一个函数名可对应若干种不同的实现,依据函数参数的 类型、个数和顺序来确定某个实现。在运算符重载中, 同一个运算符对应着多种功能,这些功能是通过函数来 定义的,依据操作数的类型来确定应选运算符的功能。 另一种是指同样的消息被不同类的对象接收时产生完全 不同的实现,这种情况产生在多类继承中不同类中的相 同说明的成员函数的多态行为。
相关文档
最新文档