《程序设计基础综合实验》讲义

《程序设计基础综合实验》讲义
《程序设计基础综合实验》讲义

《程序设计基础综合实验》讲义

综合实验又称为课程设计,需要学生综合运用所学知识解决与实际应用紧密结合的、规模较大的问题,通过分析、设计、编码和调试等各环节的训练,使学生深刻理解、牢固掌握、综合运用数据结构和算法设计技术,增强分析问题、解决问题的能力,培养项目管理与团队合作精神。

本课程要求实验采用基本的软件工程开发方法,将软件开发过程分为需求分析、系统设计、编码实现、系统测试4个阶段。每个阶段设置相应的里程碑进行检查,对学生的设计过程进行评价。

(1)需求分析阶段

首先要充分分析和理解问题,明确要求做什么?限制条件是什么?即要确定需要实验那些功能(任务),并对所需完成的任务做出明确的回答,如,输入数据的类型、值的范围及输入的形式;输出数据的类型、值的范围及输出的形式;若是会话式输入,结束标志是什么?是否接受非法输入?对非法输入的回答方式是什么等。另外,还应该为调试程序准备好测试数据,包括合法的输入数据与非法的输入数据。同时,实验小组应该对设计工作进行分工,并形成小组成员通过的书面记录。

(2)概要设计和详细设计阶段

设计通常分为概要设计与详细设计两步。

在进行概要设计时,确定数据的逻辑结构,并要求按照自顶向下逐步求精的原则划分模块,画出模块间的调用关系图。

在进行详细设计时,要求定义数据的存储,并画出各模块(函数)的程序流程图或写出伪代码。

(3)编码实现阶段

在详细设计的基础上,用特定的程序设计语言编写程序。良好的程序设计风格可以保证较快地完成程序测试。程序的每行不要太长,每个函数不要太大,当一个函数太大时,可以考虑将其分解为较小的函数。对函数功能、核心语句、重要的类型和变量等应给出注释。一定要按凹入格式书写程序,分清每条语句的凹入层次,上下对齐层次的括号,以便发现语法错误。

(4)测试阶段

采用测试数据进行测试,列出实际的输入、输出结果、预期结果。

(5)总结与整理报告阶段

调试正确后认真整理源程序及注释,提交带有完整注释且格式良好的源程序,并撰写课程设计报告。

课程设计报告中除了上面提到的分析、设计过程外,还用给出下面几方面的内容。

①调试分析:调试过程中主要遇到哪些问题?如何解决的?

②算法分析:核心算法的时间复杂性与空间复杂性分析。

③改进设想、经验和体会。

一、图书管理信息系统的设计与实现 (难度系数:1)

1.问题描述

图书管理信息系统实现图书馆馆藏图书的信息管理与图书借阅。图书管理信息系统包括用户管理、读者管理、图书管理、图书流通功能。

2.整体要求

该系统应具有合理的界面设计,并易于操作;

编码风格良好;

该系统用控制台程序即可实现;

编程语言为C语言,编程环境为VC++ 6.0

3.设计要求

(1)登录系统时,要求用户输入用户名与密码,用户名与密码无误方可使用系统,最多可以尝试三次。用户分为:普通读者、图书管理员、系统管理员三种。普通读者只能使用“用户管理子系统”中“用户密码修改”功能和“图书管理子系统”中“图书信息查询”功能;图书管理员只能使用“图书管理子系统”和“图书流通管理子系统”;系统管理员只能使用“用户管理子系统”和“读者管理子系统”。

(2)图书管理信息系统包括:用户管理、读者管理、图书管理、图书流通管理这四个子系统。“图书管理信息系统”主菜单要求包含如下选项:

**********************************

1.用户管理

2.读者管理

3.图书管理

4.图书流通管理

5.退出系统

***********************************

要求在选择退出功能之前,可以反复选择系统的各项功能使用系统。

1)用户管理子系统:

应包括用户信息输入、用户信息修改、用户信息删除、用户信息显示、用户密码

修改等功能。其中“普通读者”只能使用“用户密码修改”功能。

“用户管理”菜单要求包括如下选项:

*******************

1. 用户信息输入

2. 用户信息修改

3. 用户信息删除

4. 用户信息显示

5. 用户密码修改

6. 返回主菜单

*******************

“用户管理子系统”要求用文件与链表实现。

2)读者管理子系统:

应包括读者信息输入、读者信息修改、读者信息删除、读者信息按名查询等功能。

“读者管理”菜单要求包括如下选项:

*******************

1. 读者信息输入

2. 读者信息修改

3. 读者信息删除

4. 读者信息查询

5. 读者信息显示(按读者姓氏排序)

6. 返回主菜单

*******************

“读者管理子系统”要求用文件与链表实现。

3)图书管理子系统:

至少应包括图书信息输入、图书信息修改、图书信息查询、汇总统计等功能。其它功能(如图书订阅、图书编目、新书通报等功能)可根据自身情况酌情实现。

“图书管理”菜单至少要求包括如下选项:

*******************

1. 图书信息输入

2. 图书信息修改

3. 图书信息查询

4. 汇总统计

5. 返回主菜单

*******************

普通用户只能使用其中的图书信息查询和图书数目统计功能(功能3和功能4),当普通用选择其它功能时应告知不能使用。

如果在“图书管理”的菜单中选择了“3. 图书信息查询”,系统应提示如下子菜单:*******************

1. 按书号查询

2. 按书名查询

3. 按作者查询

4. 按出版社查询

5. 返回主菜单

*******************

“图书管理子系统”要求用文件和顺序表实现。

4)图书流通管理子系统:

至少应包括借书处理和还书处理功能。其它功能(如预约处理、逾期处理等功能)可根据自身情况酌情实现。普通用户只能使用预约处理功能。

“图书管流通理”菜单至少要求包括如下选项:

*******************

1. 借书处理

2. 还书处理

3. 返回主菜单

*******************

“图书流通管理子系统”要求用文件和顺序表实现。

(3)要求建立如下文件:

1)建立用户文件,包括用户的如下信息:

用户名(可用读者号)、用户密码、用户类型

用户类型可分为:管理员和普通用户。管理员可以使用系统的所有功能,普通用户只可以查询图书及借阅情况。

2)建立读者文件,包括读者的如下信息:

读者号、读者名、单位、联系方式、可借书数、已借书数

3)建立与图书有关的如下文件。

●图书主文件,包括图书的如下信息:

记录号、书号、书名、作者、出版社、藏书量、借出数、指针1、指针2、

指针3

图书主文件可以按主关键字(书号)有序或无序。

●书号(主关键字)索引表,必须按书号有序。该索引表包括如下信息:

书号、该书号对应记录在主文件中记录号

●书名(次关键字)索引表,包括如下信息:

书名、链头指针、长度

●作者(次关键字)索引表,包括如下信息:

作者、链头指针、长度

●出版社(次关键字)索引表,包括如下信息:

出版社、链头指针、长度

图书主文件和三个次关键字索引表的样例分别如表1至表4所示。

表1 图书主文件

记录号书号书名作者出版社藏书量借出数指针1指针2指针3

1 1021 数据库杨艳人民邮电10 8 0 0 0

2 1014 数据结构赵鹏高等教育9 7 0 0 0

3 1106 操作系统金虎人民邮电8 6 0 0 1

4 1108 数据结构高扬清华大学7

5 2 0 0

5 1203 程序设计杨艳高等教育9 4 0 1 2

6 2105 数据库金虎清华大学

7 3 1 3 4

7 1012 数据结构杨艳人民邮电8 2 4 5 3

8 0109 程序设计赵鹏清华大学9 1 5 2 6

表2 书名次关键字索引表

书名链头指针长度

数据库 6 2

数据结构7 3

操作系统 3 1

程序设计8 2

表3 作者次关键字索引表

作者链头指针长度

杨艳7 3

赵鹏8 2

金虎 6 2

高扬 4 1

表4 出版社次关键字索引表

出版社链头指针长度

人民邮电7 3

高等教育 5 2

清华大学8 3

4)建立借还书文件,包括如下信息:

读者号、书号、借书日期、还书日期

4.设计思想

下面将给出一些核心算法的设计思想。

(1)“登录系统”算法的设计思想

打开“用户文件”,读入文件内容,建立相应的链表。请用户输入用户名及密码。若用户名或密码输入不正确,最多允许尝试三次。用户名与密码输入正确时,记住当前用户类型。

当该用户为图书管理员时,打开“图书主文件”及所有的“索引表文件”,分别将文件内容读入相应的一维数组中,打开“借还书文件”,建立相应的链表,打开“读者文件”,建立相应的链表;当该用户为系统管理员时,打开“读者文件”,读入文件内容,建立相应的链表;当该用户为普通读者时,打开图书主文件及所有的索引表文件,分别将文件内容读入相应的一维数组中,并关闭所有打开的文件。

普通读者只能选“用户管理”功能项中“用户密码修改”子功能和“图书管理”功能项中“图书信息查询”子功能;图书管理员只能选“图书管理”和“图书流通管理”功能项;系统管理员只能选“用户管理”和“读者管理”功能项。需要根据用户类型显示相应的菜单,请用户选择功能项。

当退出系统时,需将各个链表和数组中的内容写回相应的文件。

(2)“图书信息输入”算法的设计思想

在输入图书信息时建立图书主文件,在图书主文件中记录号从1开始。根据设计要求,在建立图书文件的同时,需要建立一个主关键字(书号)索引表。索引表按书号升序排列(用插入排序法),索引表可以先在内存中用一维数组实现,最后再将相应内容一并写入(外存)文件。

根据设计要求,图书文件除了主关键字(书号)索引表外,还需要建立书名、作者、出版社三个次关键字索引表。次关键字索引表可采用头插法建立,具体做法是:根据一个主文件的记录,将要建立索引的次关键字与对应的次关键字索引表中的次关键字(如书名、作者、出版社)进行比较,若有相等的,就将主文件中的相应指针修改为索引表中的当前链头指针,并修改相应索引表中的链头指针为当前主文件的记录指针(即记录号),同时将长度加1;若没有相等的,就将主文件中的相应指针置为0,并在相应次关键字索引表中增加与该次关键字相关的一条记录,该记录的链头指针置为当前主文件的记录号,而将长度置为1。

(3)“图书信息查询”算法的设计思想

按书号查询时,由于图书文件已按书号建立了索引表,该索引表是按书号有序的,因此,在该索引表中可采用二分查找算法。

按书名查询时,先顺序查找书名次关键字索引表,找到相应的书名,取到该书名链头指针后,再回到图书主文件中顺链依次找出所有具有该书名的书。

按作者和出版社查询时,与按书名查询方法类似。

(4)“借书处理”算法设计思想

图书管理员输入读者号、书号、借书日期。系统检查读者是否为合法读者,若不是,显示提示信息,并返回;若是,则进一步检查读者借书数量是否超出限额。若超出,给出提示信息,并返回;若未超出,检查书号是否合法,若书号非法,给出提示信息,并返回;否则,继续检查该号图书是否已全部借出,若是,给出提示信息,并返回,否则,将借书文件记录数加1,借书文件追加1条相关记录,读者借书数加1,图书借出数加1,并提示借书成功。

(5)“还书处理”算法设计思想

图书管理员输入读者号、书号、还书日期。系统根据读者文件检查读者是否为合法读者,若不是合法读者,显示提示信息,并返回。否则,在借还书文件中检查书号是否合法,若书号非法,给出提示信息,并返回。否则,在图书文件中再检查书号是否合法,若非法,给出提示信息,并返回。否则,在“读者文件”中将该读者的借书数减1,在“图书文件”中修改借出数,在“借还书文件”中填入还书日期。

5.评价标准

本设计是一个比较综合的练习,用到顺序表、链表、静态链表、文件、排序、查找、字符串操作等方面的知识。本课程的主要目的是培养学生的综合设计能力、编程与调试能力。评分标准如表5所示。

表5 评分表

项目所占分值得分依据得分

登录系统10 使用“用户名”与“密码”登录系统,根据用户类型打开相关文件,建立相应的链表或数组。

显示主菜单,并根据用户类型正确实现主菜单各个选项的跳转功能。

用户管理15 子系统菜单(2分)

用户信息输入(2分)用户信息修改(2分)用户信息删除(2分)用户信息显示(2分)用户密码修改(2分)完成质量与速度(3分)

读者管理15 子系统菜单(2分)

读者信息输入(2分)读者信息修改(2分)读者信息删除(2分)读者信息查询(2分)读者信息显示(2分)完成质量与速度(3分)

图书管理20 子系统菜单(2分)

图书信息输入(2分)

图书信息修改(2分)

图书信息查询功能共9分,其中:汇总统计(2分)

完成质量与速度(3分)

图书流通管理10 子系统菜单(2分)

借书处理(3分)

还书处理(3分)

完成质量与速度(2分)

总体表现10 根据完成附加功能情况、系统总体运行情况、完成的质量(包括算法的正确性、算法的复杂性、容错性、界面友好等因素)可酌情加分。

旷课1次扣3分,缺勤1次扣1分。

报告20

总分100

二、学生信息管理系统模拟(难度系数0.8)

1.整体要求

该系统应具有合理的界面设计,并易于操作;

编码风格良好;

该系统用控制台程序即可实现;

编程语言为C语言,编程环境为VC++ 6.0。

2. 存储结构设计

设计学生结构体。

3. 编程要求

(1)结构体设计

学生结构体包含:学号、姓名、性别、英语成绩、C语言成绩。

(2)存储结构要求

在实现各个模块的功能时,根据该模块的具体要求确定存储结构。

4. 菜单(界面)设计

编程实现系统的菜单

(1)“登陆”菜单

1----------用户登陆

0----------退出系统

(2)主菜单样式如下:

1----------学生信息录入

2----------学生信息浏览

3----------学生信息查询

4----------学生信息删除

5----------学生成绩统计

0----------退出系统

5. 功能和函数设计要求

任务

通过函数完成各个菜单模块的功能,要求合理设计主函数和各个子函数,合理设计各个函数之间的调用关系。

编程要求

1.主函数:显示主菜单。

2.如果设计并编写登陆菜单,要求合理设计登陆界面,要求用户输入用户名和密码,如果

全都正确则进入主菜单,如果有一项不对,系统再提供两次机会输入,三次都错退出系统。编写函数完成“学生录入”功能,要求能将用户由键盘输入的若干学生信息追加到student.txt或student.dat中,存储结构可以使用数组,也可以使用链表。

3.编写函数完成“学生浏览”功能,要求能将student.txt或student.dat文件中的全部

学生信息显示出来,存储结构可以使用数组,也可以使用链表。

4.编写函数完成“学生查询”功能,要求能按照学号或姓名对学生进行查询。

5.编写函数完成“学生删除”功能,要求按照学号或姓名将某个学生删除,并将删除后的

结果写回到文件中,此功能要求存储结构必须使用链表。

6.设计并编写编写函数完成“成绩统计”功能,可以对“英语成绩”、“C语言成绩”进行

单科浏览(降序排列),按某个学生统计总分和平均分,按英语和C语言两科成绩对学生进行排序。

6.评价标准

表6 评分表

项目所占分值得分依据得分

登录系统10 使用“用户名”与“密码”匹配检查,如果有一项不对,系统再提供两次机会输入,三次都错退出系统。

学生信息录入10

要求提示清晰,界面友好!

学生信息浏览 5

要求输出所有学生信息!

学生信息查询10

要求可以根据学号和姓名分别查询!

学生信息删除15 要求按学号输出,存储结构必须使用链表!没有使用链表扣除5分。

学生成绩统计20 按C语言成绩统计5分,按英语成绩统计5分,按总分分段统计5分,按总分输出成绩单5分。

总体表现10 根据完成功能情况、系统总体运行情况、完成的质量(包括算法的正确性、算法的复杂性、容错性、用户友好等因素)及代码书写的规范程度酌情给分。所有输出必须以表格的形式输出!

旷课1次扣3分,缺勤1次扣1分。

报告20

总分100

说明:每个学生可以任选一个系统来完成此次实验。如选系统一,根据表5中的各项得分加上报告的分数即为最终分数。如选系统二,根据表6中的各项得分加上报告分数再乘以0.8为最终得分。报告的格式要求后续提供!

面向对象程序设计教程 (马石安版)

第1章习题答案 名词解释 抽象:抽象(Abstract)就是忽略事物中与当前目标无关的非本质特征,而强调与当前目标有关的本质特征,从而找出事物的共性,并把具有共性的事物划为一类。面向对象方法中的抽象,是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 封装:面向对象方法中的封装就是把将抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息:消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 填空题 (1) 面向过程的结构化程序设计方法面向对象程序设计方法 (2) 顺序选择循环 (3) 程序=数据结构+算法程序=对象+消息 (4) 过程类 (5) 抽象性封装性继承性多态性 选择题 (1) B (2) C (3) D (4) C (5) D (6) A (7) A (8) B C (9) A D 判断题 (1) t (2) f (3) f (4)f (5) t (6) f (7) f (8) t 简答题 (1) 结构化程序设计方法着眼于系统要实现的功能,从系统的输入和输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统的功能进行分解,来建立系统的功能结构和相应的程序模块结构,有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。 随着程序规模与复杂性的增长,这种面向过程的结构化程序设计方法存在明显的不足之处。首先是数据安全性问题,由于数据被每个模块所共用,因此是不安全的,一旦出错,很难查明原因。其次是可维护性及可重用性差,它把数据结构和算法分离为相互独立的实体,一旦数据结构需要改变时,常常要涉及整个程序,修改工作量极大并容易产生新的错误。每一种相对于老问题的新方法都要带来额外的开销。另外,图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。 (2) 面向对象的程序设计方法中,将程序设计为一组相互协作的对象(Object)而不是一组相互协作的函数。在程序中,属性用数据表示,用来描述对象静态特征;行为用程序代码实现,用来描述对象动态特征。可见,在面向对象的程序设计方法中,对象是数据结构和算法的封装体。对象之间存在各种联系,它们之间通过消息进行通信。程序可表示为: 程序=对象+消息 在面向对象程序设计中,它着重于类的设计。类正是面向对象语言的基本程序模块,通过类的设计,来完成实体的建模任务。类通过一个简单的外部接口,与外界发生关系。一个类中的操作不会处理到另一个类中的数据,这样程序模块的独立性、数据的安全性就有了良好的保障。程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。不必预先确定消息产生的顺序,更符合客观世界的实际。并且面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。

偏振光实验报告

实 验 报 告 学生姓名: 学 号: 指导教师: 实验地点: 实验时间: 一、实验室名称:偏振光实验室 二、实验项目名称:偏振光实验 三、实验学时: 四、实验原理: 光波的振动方向与光波的传播方向垂直。自然光的振动在垂直与其传播方向的平面内,取所有可能的方向;某一方向振动占优势的光叫部分偏振光;只在某一个固定方向振动的光线叫线偏振光或平面偏振光。将非偏振光(如自然光)变成线偏振光的方法称为起偏,用以起偏的装置或元件叫起偏器。 (一)线偏振光的产生 1.非金属表面的反射和折射 光线斜射向非金属的光滑平面(如水、木头、玻璃等)时,反射光和折射光都会产生偏振现象,偏振的程度取决于光的入射角及反射物质的性质。当入射角是某一数值而反射光为线偏振光时,该入射角叫起偏角。起偏角的数值α与反射物质的折射率n 的关系是: n =αtan (1) 称为布如斯特定律,如图1所示。根据此式,可以简单地利用玻璃起偏,也可以用于测定物质的折射率。从空气入射到介质,一般起偏角在53度到58度之间。 非金属表面发射的线偏振光的振动方向总是垂直于入射面的;透射光是部分偏振光;使用多层玻璃组合成的玻璃堆,能得到很好的透射线偏振光,振动方向平行于入射面的。 图 1 图 2 2.偏振片 分子型号的偏振片是利用聚乙烯醇塑胶膜制成,它具有梳状长链形结构的分子,这些分子平行地排列在同一方向上。这种胶膜只允许垂直于分子排列方向的光振动通过,因而产生

线偏振光,如图2所示。分子型偏振片的有效起偏范围几乎可达到180度,用它可得到较宽的偏振光束,是常用的起偏元件。 图 3 鉴别光的偏振状态叫检偏,用作检偏的仪器叫或元件叫检偏器。偏振片也可作检偏器使用。自然光、部分偏振光和线偏振光通过偏振片时,在垂直光线传播方向的平面内旋转偏振片时,可观察到不同的现象,如图3所示,图中(α)表示旋转P ,光强不变,为自然光;(b )表示旋转P ,无全暗位置,但光强变化,为部分偏振光;(c )表示旋转P ,可找到全暗位置,为线偏振光。 (二)圆偏振光和椭圆偏振光的产生 线偏振光垂直入射晶片,如果光轴平行于晶片的表面,会产生比较特殊的双折射现象。这时,非常光e 和寻常光o 的传播方向是一致的,但速度不同,因而从晶片出射时会产生相位差 d n n e )(200 -= λπ δ (2) 式中0λ表示单色光在真空中的波长,o n 和e n 分别为晶体中o 光和e 光的折射率,d 为晶片厚度。 1.如果晶片的厚度使产生的相位差1 (21)2 k δπ=+,k =0,1,2,…,这样的晶片称为1/4波片,其最小厚度为0 min 4() o e d n n λ= -。线偏振光通过1/4波片后,透射光一般是椭 圆偏振光;当α=π/4时,则为圆偏振光;当0=α或π/2时,椭圆偏振光退化为线偏振光。由此可知,1/4波片可将线偏振光变成椭圆偏振光或圆偏振光;反之,它也可将椭圆偏振光或圆偏振光变成线偏振光。 2.如果晶片的厚度使产生的相差πδ)12(+=k ,k =0,1,2,…,这样的晶片称为半波片,其最小厚度为0 min 2() o e d n n λ= -。如果入射线偏振光的振动面与半波片光轴的交角为 α,则通过半波片后的光仍为线偏振光,但其振动面相对于入射光的振动面转过α2角。 3. 如果晶片的厚度使产生的相差2k δπ=,k =1,2,3,…,这样的晶片称为全波片, 其最小厚度为0 min o e d n n λ= -。从该波片透射的光为线偏振光。

JAVA语言与面向对象程序设计课后习题答案

第1章面向对象软件开发概述 1.简述面向过程问题求解和面向对象问题求解的异同。试列举出面向对象和面向过程的编程语言各两种。 答:面向过程问题求解,以具体的解题过程为研究和实现的主体,其思维特点更接近于计算机;面向对象的问题求解,则是以“对象”为主体,“对象”是现实世界的实体或概念在计算机逻辑中的抽象表示,更接近于人的思维特点。 面向过程的编程语言:C,Pascal,Foratn。 面向对象的编程语言:C++,Java,C#。 2.简述对象、类和实体及它们之间的相互关系。尝试从日常接触到的人或物中抽象出对象的概念。 答:面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。类是同种对象的集合与抽象。类是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,而属于类的某一个对象则被称为是类的一个实例,是类的一次实例化的结果。如果类是抽象的概念,如“电视机”,那么对象就是某一个具体的电视机,如“我家那台电视机”。 3.对象有哪些属性?什么是状态?什么是行为?二者之间有何关系?设有对象“学生”,试为这个对象设计状态与行为。 答:对象都具有状态和行为。 对象的状态又称为对象的静态属性,主要指对象内部所包含的各种信息,也就是变量。每个对象个体都具有自己专有的内部变量,这些变量的值标明了对象所处的状态。 行为又称为对象的操作,它主要表述对象的动态属性,操作的作用是设置或改变对象的状态。 学生的状态:姓名、性别、年龄、所在学校、所在系别、通讯地址、电话号码、入学成绩等; 学生的行为:自我介绍、入学注册、选课、参加比赛等。 4.对象间有哪三种关系?对象“班级”与对象“学生”是什么关系?对象“学生”与对象“大学生”是什么关系? 答:对象间可能存在的关系有三种:包含、继承和关联。 对象“班级”与对象“学生”是包含关系。 对象“学生”与对象“大学生”是继承关系。 5.有人说“父母”和“子女”之间是继承的关系。这种说法是否正确?为什么? 答:“父母”和“子女”之间不是面向对象意义上的“继承”关系。因为这里的继承关系是“is a”的关系,“男人”与“人”之间可以说是继承关系。 6.面向对象的软件开发包括哪些过程?OOA模型包括哪三个层次?OOD模型在OOA模型的基础上引入了哪些工作? 答:面向对象的软件开发过程可以大体划分为面向对象的分析(Object Oriented analysis,OOA)、面向对象的设计(Object oriented design,OOD)、面向对象的实现(Object oriented programming,OOP)三个阶段。 面向对象的分析的主要作用是明确用户的需求,并用标准化的面向对象的模型规范地表述这一需求,最后将形成面向对象的分析模型。 面向对象的设计将在OOA模型的基础上引入界面管理、任务管理和数据管理三部分的内容。 7.面向对象的程序设计方法有哪些优点? 答:由于对象的概念能够以更接近实际问题的原貌和实质的方式来表述和处理这些问题,所以面向对象的软件开发方法比以往面向过程的方法有更好的灵活性、可重用性和可扩展性,使得上述“分析—设计—实现”的开发过程也更加高效、快捷。

面向对象程序设计复习资料

1.对象 (1)从概念层面讲,对象是某种拥有责任的抽象。 (2)从规格层面讲,对象是一系列可以被其他对象使用的公共接口。 (3)从语言实现层面讲,对象封装了代码和数据。 2.软件开发中的经典阶段:需求、分析、设计、规范、实现、测试、部署、维护。 3.设计7原则:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、 迪米特原则、接口隔离原则、单一职责原则。 4.面向对象的方法学:UML(统一建模语言)、RUP(统一软件开发过程)、XP(极限编程)。 开发方法:Booch、Coad、OMT、UML、OOSE、Wirfs—Brock 5.OOA——运用面向对象方法进行需求分析。 OOD——运用面向对象方法进行系统设计。 OOP——运用面向对象方法进行程序设计。 6.OOA的基本任务:是运用面向对象的方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及系统责任所需的类及对象,定义这些类和对象的属性和操作,以及它们之间所形成的结构、静态联系和动态联系。最终目的:是产生一个符合用户需求,并能够直接反映问题域和系统责任的OOA模型及其详细说明。 优点:(1)加强了对问题域和系统责任的理解。(2)改进与分析有关的各类人员之间的交流。 (3)对需求的变化具有较强的适应性。(4)支持软件复用。 OOA的三大策略是:属性策略、方法策略、对象策略。 7.(1)封装:是指对象在其操作中隐藏属性。它是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者和生产者分开,使对象的定义和实现分开。 例如:要从同事那里借钱,在商店购买食物,就不会抢夺同事的钱包,大翻一通,看看里面是否有足够的钱。而应该询问他们是否可以借你一些钱,他们就会自己翻钱包。 以表示圆的一个对象作为封装的例子。圆的操作应能计算出半径、直径、周长和面积。假定选择存储直径,要访问直径的程序员都会选择存储直径属性,而不是通过“获取直径”的操作来访问。如果在软件的后续版本中要存储的是半径,就必须找出系统中直接访问直径的所有代码,并更正它们,有了封装,就不会有问题。 (2)继承:可以指定类从父类中获取一些特性,再添加它自己的独特特性。继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承父类的属性和操作,也可以对父类中的操作重新定义其实现方法。 例如:在面向对象中,我们可以把洗衣机、电冰箱、微波炉、收音机看成是家用电气类的子类,也可以说家用电器类是这些类的超类。家用电器类具有的属性OnOffSwitch和electricWire,具有turnOn()和turnOff()操作。因此,如果你知道某物是家用电器,那么就会立即知道它具有家用电器类的属性和操作,这种关系就是继承。每个家用电器类的子类都继承了家用电器类的特征。同时,每个子类都增加了自己的属性和操作。 (3)多态:是指同一操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如:“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形;作用在“圆”对象上,则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同对象时,每个对象将根据自己所属类中定义的这个操作方法去执行,从而产生不同的结果。 6.RUP(统一软件开发过程):是一个面向对象且基于网络的程序开发方法论。RUP好像一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持。

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

SGP-I型偏振光实验系统说明书

1规格与主要技术指标 1.1 规格 计算机与操作软件1套 格兰棱镜2块 1/2波片(632.8nm) 1片 1/4波片(632.8nm) 1片 三维调节架2套 二维调节架2套 底座9套 由步进电机控制的调节架3套 光电接收系统2套 分束器1片 氦氖激光器(包括电源)1套 1.2 主要技术指标 所有调节架光学中心高度200mm 步进电机控制的调节架任意旋转角度,精度0.05° 氦氖激光器和电源波长632.8nm 、功率≥1.5 mW 2工作原理 2.1 实验用光源 光源采用氦氖激光光源,这种光源具有很好的单色性,波长为632.8nm。 2.2 偏振器 偏振器从工作原理上可分为三大类:(1)利用反射和折射产生线偏振光的原理制成的各种偏振分光镜;(2)由双折射晶体制成的各种偏振棱镜;(3)由二向色性透光材料制成的偏振片。当偏振器用来将自然光转换成线偏振光时通常被称之为起偏器,而偏振器被用来检验偏振光时又被称之为检偏器。本实验采用格兰棱镜做偏振器。 波片波片是相位延迟器的一种,是由双折射材料制成的一种光学元件,本实验采用石英晶体材料制作的偏振片,其性能稳定。 2.3 原理 光的偏振现象比光的干涉和衍射更为抽象,若不借助于专门的器件和方法,人的眼睛和光学接收器无法鉴别光的偏振特性,为适应大学基础实验要求,我公司特设计了一套用于偏振光实验的实验系统,该系统的测量内容包括两部分:一是对用做起偏和相位延迟器件本身的工作参数进行标定测量,二是利用偏光器件对光的偏振性质进行测量和鉴别。 偏振光实验,将光电接收的电信号经A/D变换进入计算机进行处理,实验中通过测量光强分布来确定偏振光的偏振态。 用光电器件探测偏振光时,应注意的一个问题是:几乎所有的光电器件都具有偏

偏振光实验报告

实验1. 验证马吕斯定律 实验原理:某些双折射晶体对于光振动垂直于光轴的线偏振 光有强烈吸收,而对于光振动平行于光轴的线偏振光吸收很少(吸 收o 光,通过e 光),这种对线偏振光的强烈的选择吸收性质,叫 做二向色性。具有二向色性的晶体叫做偏振片。 偏振片可作为起偏器。自然光通过偏振片后,变为振动面平行 于偏振片光轴(透振方向),强度为自然光一半的线偏振光。如图1、图2所示: 图1中靠近光源的偏振片1P 为起偏器,设经过1P 后线偏振光 振幅为0A (图2所示),光强为I 0。2P 与1P 夹角为θ,因此经2P 后 的线偏振光振幅为θcos 0A A =,光强为θθ20220cos cos I A I ==, 此式为马吕斯定律。 实验数据及图形: P 1 P 2 线偏光 单色自然光 线偏光 图1 P 1 P 2 A 0 A 0cos θ θ 图2

从图形中可以看出符合余弦定理,数据正确。 实验2.半波片,1/4波片作用 实验原理:偏振光垂直通过波片以后,按其振动方向(或振 动面)分解为寻常光(o 光)和非常光(e 光)。它们具有相同的 振动频率和固定的相位差(同波晶片的厚度成正比),若将它们投 影到同一方向,就能满足相干条件,实现偏振光的干涉。 分振动面的干涉装置如图3所示,M 和N 是两个偏振片,C 是 波片,单色自然光通过M 变成线偏振光,线偏振光在波片C 中分 解为o 光和e 光,最后投影在N 上,形成干涉。 考虑特殊情况,当M ⊥N 时,即两个偏振片的透振方向垂直时,出射光强为:)cos 1)(2(sin 420δθ-= ⊥I I ;当M ∥N 时,即两个偏振片的透振方向平行时,出射光强为:M N 图3 分振动面干涉装置 I 0 波片 偏振片 偏振片 单色自然光

偏振光实验数据处理分析

偏振光实验数据处理分析 ——关于验证马吕斯定律的数据处理方法 一、 马吕斯定律: 1.一束光强度为的线偏振光,透过检偏器以后,透射光的光强度为α20cos I I = (1) 其中是线偏振光的光振动方向与检偏器透振方向间的夹角,该式称为马吕斯定律。 2.在光路中放入偏振片 作为起偏器,获得振动方向与 透振方向一致的线偏振光,线偏 振光的强度为入射自然光强度的 。 马吕斯定律光路图 3.在光路中放入偏振片,作为检偏器,其透振方向 与的夹角为,透过的光振 幅为 αcos A A 2 20 2 = (2) 式中为透过的线偏振光的振幅。因为 ,所以,光强度为α20cos I I = 这就是马吕斯定律,马吕斯定律说明了入射到偏振片上的线偏振光,其透射光强度的变化规律。 二、 简单实验过程 以He-Ne 激光作光源,用偏振片起偏和检偏,光电池接收,用电检流计量度光强的大小。实验从两偏振片方向(或称光轴)平行或垂直开始,记录光电流。测量时每转15记录一个数据,转180,取12个位置读数。 2 P 1 P

三、 数据处理 以角度为横坐标,光电流为纵坐标画图,并与余弦函数的平方值随着角度的变化关系比较 表1 将表1中角度θ和电流i 的数据输入,并通过工作表计算出2cosθ的值。打开Origin 数据处理软件,将含有原始数据的excel 工作表在Origin 数据处理软件中打开。 当图形窗口为当前窗口时,可以采用从菜单进行电流i 和cos 2θ的直线拟合,其拟合的函数为 Y=A+BX i 采用最小二乘法估计方程参数: B X -Y A = ∑ ∑ = N i 2 i N i i i X -X Y -Y X -X B )() )(( 对马吕斯定律的验证一般采用的方法是由实验得到的角度θ和电流i 的数据,进而用作图法得出cos 2θ和I 成正比的线性关系,如果cos 2θ与电流i 的线性关系良好,则说明马吕斯定律得以验证。然而学生用作图法验证马吕斯实验时,是用目测测试点分布而画出cos 2θ和电流i 之间的直线图,目测时测试点呈直线与否的界限难以确定,手工作图过程中也必然引入误差,以至于使实验中真正导致误差较大的原因容易被掩盖。同时,这种处理方法也使实验中产生的有规律性的误差被忽略,其结果往往达不到定量验证的目的。用Origin 数据分析软件依据最小二乘法原理进行实验数据处理,可由相关系数R 定量表示测试点的线性程度,达到定量验证物理规律的目的。由回归标准差SD 可得到实验误差。

南京信息工程大学滨江学院C++面向对象程序设计期末复习资料-填空考点

一、考点 1.面向对象的四大特性是:抽象、封装、继承、多态 2.构造函数的作用是:创建对象时为对象赋初值 析构函数的作用是:释放对象占用的资源 3.根据继承的基类的多少,C++将继承分为:单继承和多继承 4.C++进行动态内存分配的一对运算符是:new和delete 5.纯虚函数:是一个在基类中说明的虚函数,它在该类基类中没有定义, 但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数。 抽象类:如果一个类至少有一个纯虚函数,那么就称该类为抽象类。 带有纯虚函数的类是抽象类,抽象类不能实例化。 6.对象拷贝有两种方式:浅拷贝和深拷贝 7.变量的生存期分为:动态生存期、静态生存期 8.C++里的逻辑值:非0表示真,0表示假 9.C++里函数参数传递方式有:值传递、地址传递、引用传递 10.静态成员变量属于类,所有的对象共享。 11.根据访问控制,C++将继承分为:公有继承、私有继承、保护继承 12.类的访问属性包括:公有、私有、继承 13.用const修饰的对象,其意思是:对象的状态不能被修改 14.拷贝构造函数被调用的场合有3种,分别是:用对象作参数构造对象时、 为函数实参对象赋值时、函数返回对象时 15.C++里的模版包括:函数模版、类模版 16.命名空间:一个由程序设计者命名的内存区域

作用:类似于操作系统中的目录和文件的关系。名字空间建立了一些 相互分隔的作用域,把全局标识符分隔开,避免产生名字冲突。 17.虚基类的作用P124 如果一个派生类有多个直接基类,而这些基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类成员的多份同名成员。但由 于保留共同基类的多份成员,不仅占用较多的存储空间,还增加了访问 这些成天元时的困难,容易出错。C++提供了虚基类的方法,使得在继 承间接共同基类时只保留其一份成员。 18.多态及其分类P145 多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作,从而可以使用相同的调用方式来调用这些具有不同功能的同名 函数。 面向对象的多态性分为:参数多态,包含多态,重载多态,强制多态 前两种称为通用多态,后两种称为专用多态 19.虚函数与重载函数的比较 ....P153 (1)函数重载处理的是同一层次上的同名函数问题,而虚函数处理的是同一类族中不同派生层次上的同名函数问题,前者是横向重载,后者可以理解为纵向重载。但与重载不同的是:同一类族的虚函数的首部是相同的,而函数重载时函数的首部是不同的。 (2)重载函数可以是成员函数或普通函数,而虚函数只能是成员函数。 (3)重载函数调用是以所传递参数序列的差别作为调用不同函数的依据;虚函数是根据对象的不同去调用不同类的虚函数。

偏振光的研究实验报告doc

偏振光的研究实验报告 篇一:偏振光的观测与研究~~实验报告 偏振光的观测与研究 光的干涉和衍射实验证明了光的波动性质。本实验将进一步说明光是横波而不是纵波,即其E和H 的振动方向是垂直于光的传播方向的。光的偏振性证明了光是横波,人们通过对光的偏振性质的研究,更深刻地认识了光的传播规律和光与物质的相互作用规律。目前偏振光的应用已遍及于工农业、医学、国防等部门。利用偏振光装置的各种精密仪器,已为科研、工程设计、生产技术的检验等,提供了极有价值的方法。 【实验目的】 1.观察光的偏振现象,加深偏振的基本概念。 2.了解偏振光的产生和检验方法。 3.观测布儒斯特角及测定玻璃折射率。 4.观测椭圆偏振光和圆偏振光。 【实验仪器】 光具座、激光器、偏振片、1/4波片、1/2波片、光电转换装置、光点检流计、观测布儒斯特角装置 图1 实验仪器实物图 【实验原理】 1.偏振光的基本概念 按照光的电磁理论,光波就是电磁波,它的电矢量E和

磁矢量H相互垂直。两者均垂直于光的传播方向。从视觉和感光材料的特性上看,引起视觉和化学反应的是光的电矢量,通常用电矢量E代表光的振动方向,并将电矢量E和光的传播方向所构成的平面称为光振动面。在传播过程中,光的振动方向始终在某一确定方位的光称为平面偏振光或线偏振光,如图2(a)。光源发射的光是由大量原子或分子辐射构成的。由于热运动和辐射的随机性,大量原 - 子或分子发射的光的振动面出现在各个方向的几率是相同的。一般说,在106s内各个方向电矢量的时间平均值相等,故出现如图2(b)所示的所谓自然光。有些光的振动面在某个特定方向出现的几率大于其他方向,即在较长时间内电矢量在某一方向较强,这就是如图2(c)所示的所谓部分偏振光。还有一些光,其振动面的取向和电矢量的大小随时间作有规则的变化,其电矢量末端在垂直于传播方向的平面上的移动轨迹呈椭圆(或圆形),这样的光称为椭圆偏振光(或圆偏振光),如图2(c)所示。 图2 光波按偏振的分类 2.获得偏振光的常用方法 (1)非金属镜面的反射。 通常自然光在两种媒质的界面上反射和折射时,反射光和折射光都将成为部分偏振光。并且当入射角增大到某一特定值时,镜面反射光成为完全偏振光,其振动面垂直于入

《面向对象程序设计》教学大纲资料

面向对象程序设计教学大纲西北民族大学数学与计算机科学学院 制定的时间:二〇一二年五月

面向对象程序设计教学大纲 一、课程基本资料 主讲教师:曹永春、蔡正琦、顿毅杰 主教材:《C++面向对象程序设计》中国铁道出版社,陈维兴、林小茶编著,第2版,2009 辅助教材: 1.《C++编程思想》机械工业出版社,美Bruce Eckel,Chuck Alliso著,刘宗田,袁兆山,潘秋菱等译; 第1版,2011年 2. 《C++程序设计教程》机械工业出版社,美H.M.Deitel P.J.deitel 薛万鹏等译,2000年 3.《C++程序设计语言》,机械工业出版社,美Bjarne Stroustrup 著,裘宗燕译,2005年 4.《C++面向对象程序设计习题解析与上机指导》清华大学出版社,陈维兴主编,第2版,2009年 实验教材及参考书: 同上 课程性质:学科选修课 学分:4分 课时:72学时,其中理论课54学时,上机实验18学时 先修课程:计算机导论、C语言程序设计 课程结构:多媒体教学,课堂讨论、课内实验、课后作业 评价方案:(考核依据、评分的办法、权重的分布) ?平时成绩:10% 课堂表现(课堂提问、考勤、作业等) ?实验成绩:20%(实验报告、实验考试)

?期中成绩:20%(闭卷考试) .期末成绩:50%(闭卷考试) 参考书目: 名称编著者出版社出版年月《C++编程思想》刘宗田,袁兆山,潘 机械工业出版社2011年 秋菱等译 机械工业出版社2000年 《C++程序设计教程》H.M.Deitel, P.J.deitel 著,薛万鹏等译 《C++程序设计语言》Bjarne Stroustrup 机械工业出版社2005年 著,裘宗燕译 陈维兴主编清华大学出版社2009年 《C++面向对象程序设计 习题解析与上机指导》 推荐刊物: 1、《计算机学报》 2.《软件学报》 3.《程序员杂志》 4.《码农周刊》 5.《快乐码农》 相关网站: 1. 中国计算机学会https://www.360docs.net/doc/932485770.html,/sites/ccf/ 2. 计算机爱好者协会https://www.360docs.net/doc/932485770.html,/forum.php 3.C语言中文网https://www.360docs.net/doc/932485770.html,/cpp 5.中国悠悠期刊网https://www.360docs.net/doc/932485770.html,/ 6. 中国知网https://www.360docs.net/doc/932485770.html,/ 文献 1.谭浩强.C程序设计.第4版.北京:清华大学出版社,2010

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

清华大学偏振光学实验完整实验报告

偏振光学实验完整实验报告 工物53 李哲 2015011783 16号 1.实验目的: (1)理解偏振光的基本概念,在概念以及原理上了解线偏振光,圆偏振光以及椭圆偏振光,并了解偏振光的起偏与检偏方法。以及线偏振光具有的一些性质。 (2)学习偏振片与玻片的工作原理。 2.实验原理: (1)光波偏振态的描述: · 单色偏振光可以分解成两个偏振方向垂直的线偏振光的叠加: t a E X ωcos 1=与()δω+=t a E Y cos 1(其中δ是两个偏振方向分量的相位延迟,21,a a 为两个光的振幅),由其中的δ,,21a a 就可以确定这个线偏振光的性质。 πδ=或0=δ就为线偏振光,2 ,21π δ==a a 为圆偏振光(就是光矢量的顶点绕 其中点做圆周运动,依然是偏振光),而一般情况下是椭圆偏振光。 · 上述式子通常描述的是椭圆偏振光,而本实验通过测量椭圆的长轴方位角ψ以及椭圆的短半轴与长半轴的比值对于椭圆偏振光进行描述。其计算式是: ()δβcos 2tan arctan 2 1 ?=ψ () 12sin sin 112222-?-+=βδa b 而对于实验中的椭圆偏振光而言,其光强在短轴对应的方向最小,在长轴的对应方向最大,所以可以通过使这个椭圆偏振光通过一个偏振片,并调整偏振片的透射轴方位,测量其最大最小值,就可以知道其长轴短轴的比值。又由于光强与振幅的平方成正比,所以测得的光强的比值是长轴短轴之比的平方。 (2)偏振片: · 理想偏振片:只有电矢量振动方向与透射轴平行方向的光波分量才能通过偏振片。 · 实验中的偏振片不是理想化的,并不能达到上述的效果,当入射光波的振动方向与透射轴平行时,其透射率不能达到1,当垂直于透射轴时,其透射率不是0。所以对于偏振片有主透射率以及消光比两个量进行描述。 · 主透射率21T T ,指沿透射轴或消光轴方向振动光的光强透射率。两者的比值

面向对象程序设计课程作业及复习资料

《面向对象程序设计》课程作业及答案 作业1: 是非题 1. 头文件中一般存放着变量和常量的定义、函数的原型以及类的定义。1. 错 2. 程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。4. 对 填空题 下面是一个求数组元素之和的程序。主程序中定义并初始化了一个数组,然后计算该数组各元素的和,并输出结果。函数sum计算数组元素之和。填充程序中不完整的部分。 ________A__________ int sum(int [],int); void main() { int ia[5] = {2,3,6,8,10}; B ; sumOfArray = sum(ia,5); cout << "Sum of array:" << sumOfArray << endl; } int sum(int array[],int len) { int iSum = 0; for(int i = 0; C ; D ) E ; return iSum; } 答案: A #include B int sumOfArray; C i < len D i++ E iSum += array[i]; 阅读理解题

写出下列程序的运行结果: // static int i = 20; int x; static int g(int p) { return i + p; } void f(int v) { x=g(v); } // #include extern int x; void f(int); void main() { int i=5; f(i); cout << x; } 回答以下问题:

面向对象程序设计基本概念

面向对象程序设计基本概念 面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 对象:对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。 类:类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。 消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。 面向对象主要特征: 封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。 继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。 多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。

实验报告偏振光学实验

实验报告 女姓名. *****班级:*****■学号. *****实验成绩: 同组姓名:*****实验日期:*****指导教师:批阅日期: 偏振光学实验 【实验目的】 1 ?观察光的偏振现象,验证马吕斯定律; 2.了解1 / 2波片、1 / 4波片的作用; 3 ?掌握椭圆偏振光、圆偏振光的产生与检测。 【实验原理】 1 .光的偏振性 光是一种电磁波,由于电磁波对物质的作用主要是电场,故在光学中把电场强度E称为光矢量。在垂直于光波传播方向的平面内,光矢量可能有不同的振动方向,通常把光矢量保持一定振动方向上的状态称为偏振态。如果光在传播过程中,若光矢量保持在固定平面上振动,这种振动状态称为平面振动态,此平面就称为振动面(见图1)。此时光矢量在垂直与传播方向平面上的投影为一条直线,故又称为线偏振态。若光矢量绕着传播方向旋转,其端点描绘的轨道为一个圆,这种偏振态称为圆偏振态。如光矢量端点旋转的轨迹为一椭圆,就成为椭圆偏振态(见图2)。 2.偏振片 虽然普通光源发出自然光,但在自然界中存在着各种偏振光,目前广泛使用的偏振光的器件是人造偏振片,它利用二向色性获得偏振光(有些各向同性介质,在某种作用下会呈现各向异性,能强烈吸收入射光矢量在某方向上的分量,而通过其垂直分量,从而使入射的自然光变为偏振光,介质的这种性质称为二向色性。)。 偏振器件即可以用来使自然光变为平面偏振光一一起偏,也可以用来鉴别线偏振光、自然光和部分偏振光一一检偏。用作起偏的偏振片叫做起偏器,用作检偏的偏振器件叫做检偏器。实际上,起偏器和检偏器是通用的。 3?马吕斯定律 设两偏振片的透振方向之间的夹角为a,透过起偏器的线偏振光振幅为A0,则 透过检偏器 的线偏振光的强度为I

面向对象程序设计总复习资料(2008-秋)

面向对象程序设计复习课(2008_秋) 一、对照书本(或上课课件),搞懂有关概念 1. 面向对象程序设计的基本概念 面向对象(O-O)程序设计是一种新的程序设计范型。这种范型的主要特征是: 程序=对象+消息 面向对象程序的主要结构特点是: 第一,程序一般由类的定义和类的使用两部分组成,在主程序中定义对象并规定它们之间传递消息的规律; 第二,程序中的一切操作都是通过向对象发送消息来实现的,对象接收到后,启动有关方法完成相应操作。 第三,类由继承关系产生相互间的联系。 2. 对象是现实世界的一个实体,其特性是: (1) 每一个必须有一个名字以区别于其他对象; (2) 用属性(或叫状态)来描述它的某些特征; (3) 有一组操作,每一个操作决定对象的一种行为。 (4) 对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。类是:一组具有共同的属性特征和行为特征的对象的抽象。 类与对象的关系是抽象和具体的关系。3. 面向对象系统的特征是:封装性、继承性和多态性(1). 将数据结构和作用于数据结构上的操作组成一个实体,数据的表示方式和对数的操作细节被隐藏起来,用户通过操作接口对数据进行操作。这就是数据的封装。 (2). 继承机制允许派生类继承基类的数据和操作(即数据成员和成员函数),也就是说,允许派生类使用基类的数据和操作。同时派生类还可以增加新的操作和数据。 从继承源上分,继承分为单继承和多继承。 (3). 面向对象系统的多态性是指不同的对象收到相同的消息时产生多种不同的行为方式。 重载的概念 4. 新的I/O流 cin是标准输入流,在程序中用于代表标准输入设备,即键盘。运算符“>>”表示向右 cout是标准输出流,在程序中用于代表标准输出设备,即屏幕。运算符“<<”表示向左 使用cin或cout进行I/O操作时,在程序中必须嵌入头文件iostream.h5. new和delete 6. 引用 引用可为变量起别名,它主要用作函数参数以及函数的返回类型。有变量的引用、参数引用和返回值引用。 7. 类的定义 clsaa 类名{ private: (可缺省) 私有数据成员和函数成员 protected: 1 / 15

面向对象程序设计教程 答案

面向对象程序设计教程(C++语言描述)题解与课程设计指导 第1章 面向对象程序设计概论 一、名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 二、填空题 (1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。 (2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。 (4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。 (5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、选择题(至少选一个,可以多选) (1)面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 (2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做( C )。 A. 抽象 B. 继承 C. 封装 D. 多态 (3)在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 (4)面向对象程序设计中,对象与对象之间的通信机制是( C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与C语言的关系的描述中,( D )是错误的。 A. C语言是C++的一个子集 B. C语言与C++是兼容的 C. C++对C语言进行了一些改进 D. C++和C语言都是面向对象的 【结果分析】 C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。 (6)面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依存、不可分割的整体来处理。

相关文档
最新文档