实验二实验报告
实验二杨氏弹性模量的测定实验报告
实验二杨氏弹性模量的测定实验报告一、实验目的1、学会用伸长法测量金属丝的杨氏弹性模量。
2、掌握光杠杆测量微小长度变化的原理和方法。
3、学会用逐差法处理实验数据。
二、实验原理杨氏弹性模量是描述固体材料抵抗形变能力的物理量。
假设一根粗细均匀的金属丝,长度为 L,横截面积为 S,受到外力 F 作用时伸长了ΔL。
根据胡克定律,在弹性限度内,应力(F/S)与应变(ΔL/L)成正比,比例系数即为杨氏弹性模量 E,其表达式为:\E =\frac{F \cdot L}{S \cdot \Delta L}\在本实验中,F 由砝码的重力提供,S 可通过测量金属丝的直径 d计算得出(\(S =\frac{\pi d^2}{4}\)),ΔL 是微小长度变化量,难以直接测量,采用光杠杆法进行测量。
光杠杆是一个带有可旋转支脚的平面镜,其前足尖放在固定平台上,后足尖置于待测金属丝的测量端,平面镜与金属丝平行。
当金属丝伸长ΔL 时,光杠杆后足尖随之下降ΔL,带动平面镜转过一个小角度θ。
设从望远镜中看到的标尺刻度的变化为Δn,光杠杆常数(即光杠杆前后足尖的垂直距离)为 b,望远镜到平面镜的距离为 D,则有:\(\tan\theta \approx \theta =\frac{\Delta L}{b}\)\(\tan 2\theta \approx 2\theta =\frac{\Delta n}{D}\)由上述两式可得:\(\Delta L =\frac{b \cdot \Delta n}{2D}\)将其代入杨氏弹性模量的表达式,可得:\E =\frac{8FLD}{\pi d^2 b \Delta n}\三、实验仪器杨氏弹性模量测定仪、光杠杆、望远镜、标尺、砝码、千分尺、游标卡尺等。
四、实验步骤1、调整仪器调节杨氏弹性模量测定仪底座的水平调节螺丝,使立柱铅直。
将光杠杆放在平台上,使平面镜与平台面垂直,前、后足尖位于同一水平面内。
实验二 实验报告
《电力电子技术基础》实验报告
班姓名学号
同组人
实验二直流斩波电路的性能研究
一、实验目的
二、实验电路
1.降压斩波电路
2.升压斩波电路
三、实验内容
1.PWM性能测试
观察PWM脉宽调制电压(u GE)波形,观察其最大占空比和最小占空比波形,并记录在下表中。
2.降压斩波电路的波形观察及电压测试
改变PWM脉冲占空比,观察并记录PWM信号占空比最大以及最小时,输出电压u o波形、输出电流i o波形,以及u o的平均值U o,并记录在下表中。
3.升压斩波电路的波形观察及电压测试
改变PWM脉冲占空比,观察并记录PWM信号占空比最大以及最小时,输出电压u o波形、输出电流i o波形,以及u o的平均值U o,并记录在下表中。
四、思考题
(1)根据记录的波形,分析并绘制降压斩波电路的U o/U i- (占空比)关系曲线,与理论分析结果进行比较,并讨论产生差异的原因。
(2)如果斩波电路的负载电阻发生变化,对其输出电压、电流波形有何影响,为什么?。
操作系统实验二实验报告
操作系统实验二实验报告一、实验目的本次操作系统实验二的主要目的是深入理解和掌握进程管理的相关概念和技术,包括进程的创建、执行、同步和通信。
通过实际编程和实验操作,提高对操作系统原理的认识,培养解决实际问题的能力。
二、实验环境本次实验使用的操作系统为 Windows 10,编程环境为 Visual Studio 2019。
三、实验内容及步骤(一)进程创建实验1、首先,创建一个新的 C++项目。
2、在项目中,使用 Windows API 函数`CreateProcess`来创建一个新的进程。
3、为新进程指定可执行文件的路径、命令行参数、进程属性等。
4、编写代码来等待新进程的结束,并获取其退出代码。
(二)进程同步实验1、设计一个生产者消费者问题的模型。
2、使用信号量来实现生产者和消费者进程之间的同步。
3、生产者进程不断生成数据并放入共享缓冲区,当缓冲区已满时等待。
4、消费者进程从共享缓冲区中取出数据进行处理,当缓冲区为空时等待。
(三)进程通信实验1、选择使用管道来实现进程之间的通信。
2、创建一个匿名管道,父进程和子进程分别读写管道的两端。
3、父进程向管道写入数据,子进程从管道读取数据并进行处理。
四、实验结果及分析(一)进程创建实验结果成功创建了新的进程,并能够获取到其退出代码。
通过观察进程的创建和执行过程,加深了对进程概念的理解。
(二)进程同步实验结果通过使用信号量,生产者和消费者进程能够正确地进行同步,避免了缓冲区的溢出和数据的丢失。
分析结果表明,信号量机制有效地解决了进程之间的资源竞争和协调问题。
(三)进程通信实验结果通过管道实现了父进程和子进程之间的数据通信。
数据能够准确地在进程之间传递,验证了管道通信的有效性。
五、遇到的问题及解决方法(一)在进程创建实验中,遇到了参数设置不正确导致进程创建失败的问题。
通过仔细查阅文档和调试,最终正确设置了参数,成功创建了进程。
(二)在进程同步实验中,出现了信号量使用不当导致死锁的情况。
实验二实验报告
C语言程序设计报告二数据类型,运算符和简单的输入输出计算机学院软件工程2班王莹0411402011,实验目的(1)掌握C语言数据类型,了解字符型数据和整型数据的内在关系。
(2)掌握对各种数值型数据的正确输入方法。
(3)学会使用C语言的有关算数运算符,移机包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。
(4)学会编写和运行简单的应用程序。
(5)进一步熟悉C程序的编辑、编译、连接和运行的过程。
2,实验内容和步骤(1)输入并运行教材第3章第4题给出的程序。
○1运行以上程序,分析为什么会输出这些信息。
因为第6行是将c1,c2按%c的格式输出,97是字符a的AS CⅡ代码,98是字符b的AS CⅡ代码。
第7行是将c1,c2按5d的格式输出,所以输出两个十进制整数。
○2如果将程序第4,5行改为c1=197;c2=198;运行时会输出由于Visual C++6.0字符型数据是作为signed char类型处理,它存字符的有效范围为0~127,超出此范围的处理方法,不痛的系统得到的结果不痛,因而用“%d”格式输出,结果是不可预期的。
用“%d”格式输出时,输出c1=-59,c2=-58.这是按补码形式输出的,内存字节中第1位为1时,作为负数。
59和197之和等于256,58与198之和也等于256.○3如果将程序第3行改为int c1,c2;运行时会输出因为97和98在int类型的有效范围。
(2)输入第3章第5题得程序。
即:用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。
运行时分别按一下方式输入数据,观察输出结果,分析原因。
1,a=3,b=7,x=8.5,y=71.82,A,a↙2,a=3 b=7 x=8.5 y=71.82 A a↙3,a=3 b=7 8.5 71.82 A a↙4,a=3 b=7 8.5 71.82Aa↙5,3 7 8.5 71.82Aa↙6,a=3 b=7↙8.571.82↙A↙a↙7,a=3 b=7↙8.571.82↙Aa↙8,a=3 b=7↙8.671.82Aa↙12345678(3)输入以下程序○1编译和运行程序,注意i,j,m,n各变量的值。
实验二:探究弹力和弹簧伸长的关系实验报告
实验二探究弹力和弹簧伸长的关系【实验原理】弹簧受到拉力会伸长,平衡时弹簧产生的弹力和外力大小相等,弹簧的伸长越大;弹力也就越大。
【实验目的】1、探索弹力与弹簧伸长的定量关系2、学习通过对实验数据的数学分析(列表法和图像法),把握弹簧产生的弹力与弹簧伸长之间的变化规律【实验器材】:弹簧一根,相同质量的砝码若干,铁架台一个(用来悬挂弹簧)。
实验中除了上述器材外,需要的器材还有:。
【实验步骤】(1)将铁架台放在实验桌上,将弹簧悬挂在铁架台上。
弹簧竖直静止时,测出弹簧的原长l0,并填入实验记录中。
(2)依次在弹簧下挂上一个砝码、两个砝码、三个砝码……。
每次,在砝码处于静止状态时,测出弹簧的总长或伸长,并填入实验记录中。
(3)根据测得的数据,以力为纵坐标,以弹簧的伸长量为横坐标,根据表中所测数据在坐标纸上描点。
(4)作弹簧的F-Δl图像。
按照坐标图中各点的分布与走向,尝试作出一条平滑的曲线(包括直线)。
所画的点不一定正好在这条曲线上,但要注意使曲线两侧的点数大致相同。
(5)以弹簧的伸长为自变量,写出曲线所代表的函数,首先尝试一次函数,如果不行则考虑二次函数……(6)解释函数表达式中常数的物理意义。
【实验纪录】弹簧原长l0=弹簧F -Δl 实验图像【实验结论】弹簧弹力大小跟弹簧伸长长度的函数表达式【问题与讨论】1、上述函数表达式中常数的物理意义2、如果以弹簧的总长为自变量,所写出的函数式应为3、某同学在做实验时得到下列一组数据,他由数据计算出弹簧的劲度系数为m N l F k /781020.35.22=⨯=∆=-试分析他对数据处理的方法是否正确?为什么?。
软件测试实验二实验报告
软件测试实验二实验报告一、实验目的本次软件测试实验的主要目的是熟悉并掌握软件测试的基本方法和技术,通过对一个具体软件系统的测试,发现软件中存在的缺陷和问题,提高软件的质量和可靠性。
二、实验环境1、操作系统:Windows 102、测试工具:Jmeter、Selenium、Bugzilla3、开发语言:Java4、数据库:MySQL三、实验内容1、功能测试对软件的登录功能进行测试,包括输入正确和错误的用户名、密码,验证登录是否成功以及相应的提示信息是否准确。
测试软件的注册功能,检查输入的各项信息是否符合要求,如用户名长度、密码强度等。
对软件的搜索功能进行测试,输入不同的关键词,检查搜索结果的准确性和完整性。
2、性能测试使用 Jmeter 工具对软件的并发性能进行测试,模拟多个用户同时登录、搜索等操作,观察系统的响应时间、吞吐量等性能指标。
对软件的数据库操作性能进行测试,包括插入、查询、更新和删除数据,检查数据库的响应时间和资源占用情况。
3、兼容性测试在不同的浏览器(如 Chrome、Firefox、IE 等)上运行软件,检查界面显示和功能是否正常。
在不同的操作系统(如 Windows、Mac OS、Linux 等)上安装和运行软件,验证其兼容性。
4、安全测试对软件的用户认证和授权机制进行测试,检查是否存在未授权访问和越权操作的情况。
测试软件对 SQL 注入、XSS 攻击等常见安全漏洞的防范能力。
四、实验步骤1、功能测试步骤打开软件登录页面,输入正确的用户名和密码,点击登录按钮,观察是否成功登录并跳转到相应页面。
输入错误的用户名或密码,检查提示信息是否清晰准确。
进入注册页面,输入合法和不合法的注册信息,如用户名过短、密码强度不够等,查看系统的校验结果。
在搜索框中输入关键词,点击搜索按钮,对比搜索结果与预期是否一致。
2、性能测试步骤打开 Jmeter 工具,创建测试计划,添加线程组、HTTP 请求等元素。
实验二-决策树实验-实验报告
决策树实验一、实验原理决策树是一个类似于流程图的树结构,其中每个内部结点表示在一个属性上的测试,每个分支代表一个测试输入,而每个树叶结点代表类或类分布。
数的最顶层结点是根结点。
一棵典型的决策树如图1所示。
它表示概念buys_computer,它预测顾客是否可能购买计算机。
内部结点用矩形表示,而树叶结点用椭圆表示。
为了对未知的样本分类,样本的属性值在决策树上测试。
决策树从根到叶结点的一条路径就对应着一条合取规则,因此决策树容易转化成分类规则。
图1ID3算法:■决策树中每一个非叶结点对应着一个非类别属性,树枝代表这个属性的值。
一个叶结点代表从树根到叶结点之间的路径对应的记录所属的类别属性值。
■每一个非叶结点都将与属性中具有最大信息量的非类别属性相关联。
■采用信息增益来选择能够最好地将样本分类的属性。
信息增益基于信息论中熵的概念。
ID3总是选择具有最高信息增益(或最大熵压缩)的属性作为当前结点的测试属性。
该属性使得对结果划分中的样本分类所需的信息量最小,并反映划分的最小随机性或“不纯性”。
二、算法伪代码算法Decision_Tree(data,AttributeName)输入由离散值属性描述的训练样本集data;候选属性集合AttributeName。
输出一棵决策树。
(1)创建节点N;(2)If samples 都在同一类C中then(3)返回N作为叶节点,以类C标记;(4)If attribute_list为空then(5)返回N作为叶节点,以samples 中最普遍的类标记;//多数表决(6)选择attribute_list 中具有最高信息增益的属性test_attribute;(7)以test_attribute 标记节点N;(8)For each test_attribute 的已知值v //划分samples(9)由节点N分出一个对应test_attribute=v的分支;(10令S v为samples中test_attribute=v 的样本集合;//一个划分块(11)If S v为空then(12)加上一个叶节点,以samples中最普遍的类标记;(13)Else 加入一个由Decision_Tree(Sv,attribute_list-test_attribute)返回节点值。
最新实验二碰撞实验报告
最新实验二碰撞实验报告实验目的:本实验旨在通过二碰撞实验来验证动量守恒定律,并测量两个碰撞物体的质量和速度。
通过实验数据的分析,加深对碰撞过程物理规律的理解。
实验设备:1. 二碰撞实验装置一套,包括滑轨、测量尺、碰撞球等。
2. 秒表。
3. 秤。
4. 计算器。
实验原理:当两个物体发生碰撞时,如果系统不受外力或者所受外力远小于碰撞力,那么系统的总动量保持不变。
即碰撞前后两个物体的动量之和相等。
本实验通过测量碰撞前后两球的速度,验证这一定律。
实验步骤:1. 使用秤测量两个碰撞球的质量,并记录数据。
2. 将滑轨调至水平位置,确保碰撞球在碰撞后不会因摩擦而损失过多的动量。
3. 将球A放置于滑轨的一端,通过测量尺标记球A的起始位置。
4. 用手推动球A,使其以一定速度向静止的球B运动。
5. 使用秒表记录球A和球B碰撞后到达各自最远位置的时间。
6. 根据时间数据和滑轨上的刻度,计算出碰撞前后两球的速度。
7. 重复实验多次,取平均值以减少误差。
8. 利用动量守恒定律计算理论值,并与实验值进行比较分析。
实验数据与结果:(此处填写实验数据表格,包括质量、速度、计算的动量等)数据分析:通过对实验数据的分析,我们可以看到碰撞前后两球的动量之和基本保持不变,这验证了动量守恒定律。
同时,通过比较实验值和理论值,我们可以评估实验的准确性和可能存在的误差来源。
结论:本次实验成功地验证了动量守恒定律在二碰撞过程中的应用。
通过精确测量和严谨的数据处理,我们得到了与理论预测相符合的结果。
实验中可能存在的误差包括测量时间的不精确、摩擦力的影响以及人为操作的偏差等。
未来的工作可以集中在改进实验装置和方法,以进一步提高实验的准确性和可靠性。
直线度误差的测量实验报告
竭诚为您提供优质文档/双击可除直线度误差的测量实验报告篇一:实验二直线度误差测量实验报告实验二直线度误差测量实验报告1.简述直线度误差测量步骤2.记录测量数据3.作图:以测点数为横坐标轴,累计误差为纵坐标。
用最小区域法判断直线度误差篇二:直线度误差的测量实验三测量直线度误差一、实验目的:1、掌握用水平仪测量垂直平面内的直线度误差的方法。
2、掌握用作图法求直线度误差,用最小区域法评定直线度误差的方法。
3、了解其他测量直线度误差的方法。
二、实验内容:测量导轨直线度误差或测量平板一对角线的直线度误差。
三、框式水平仪的结构、工作原理、读数方法:1、框式水平仪的结构框式水平仪一般是制成200mm×200mm的矩形框架,它们互相垂直平行,下方框边的上面装有一个水准器(密封的玻璃容器),本实验用i=0.02mm/l000mm框式水平仪。
水准器是一个具有一定曲率半径的圆弧形玻璃管,管内装有粘度很小的液体如乙醚或乙醇,不装满,留有一定长度的气泡,称水准气泡。
我们就利用液体往低处流,气泡往高处跑的道理进行测量的。
水准器玻璃管表面上的刻度相等,以圆弧中心相对称,其刻线间距为2mm。
2、测量工作原理:以自然水平面为测量基准(摸拟理想要素)。
用节距法(又称跨距法)对被测直线进行逐段测量,得到各段的读数然后经过数据处理,就可以用作图法或计算法求出误差值。
3、水平仪的读数方法:实验采用双向读数法。
双向读数法读数较准确。
具体方法是:把水准器的刻度分成两大区间:二基线内为负区闭,二基线外为正区间。
如下图所示。
正区间正区间读数时.看气泡左基线相距几格,气泡右端相距右基线几格,分别以n左、n右表示,并带上“十”、“一”符号。
气泡相对水平位置移动的格数由公式算出:(n左?n右)2(格)式中:n左一一气泡左端相距左基线几格n右一一气泡左端相距右基线几格n一一水平仪的实际移动格数(水平仪读数)。
绝对值前面的“+”、“-”符号的确定:我们约定,当整个气泡移向对称线的右边,绝对值前冠“+”号,反之为“-”号。
大学计算机实验二实验报告
3) 添加应用程序桌面图标。点击开始,在菜单中点击“所有应用”,找到需要添加的应用, 直接按住该应用并拖到桌面空白处即可
4) 删除桌面图标。在需要删除的桌面图标上单击鼠标右键,在弹出的菜单中选择删除即可
二. 文件管理 1.隐藏文件或文件夹及显示隐藏的文件或文件夹。 1)对着需要隐藏的文件单击右键,在弹出的快捷窗口中单击“属性”。 2)在“常规”选项下找到“属性”单击“隐藏”点击“确定”,选择“将更改应用于此文件夹 、子文件夹和文件”后,点击“确定”即可。
1) 打开“开始”菜单,输入“控制面板”命令打开控制面板,在控制面板内选择“日期和时
间”弹出的对话框内选择“日期和时间选项卡”,更改日期、时间、时区后点击确定即可达 到更改日期、时间、时区的目的。
2) 也可在控制面板内选择“Internet 时间选项卡”,在弹出的对话框内勾选与“Internet 时间服 务器”同步,并且在服务器的下拉列表框中选择第一个选项,点击确定即可
实验过程及内容: 一. 基础操作 1. 设置桌面背景 1) 在桌面的没有桌面图标的区域单击鼠标右键,并在出现的快捷菜单中单点击“个性化”。
2) 单击“背景”。打开“背景”后,可以看见个性化设置背景。
3) 在下方的“最近使用的图像”中任意单击一张图片即可将桌面背景设置为此图片。
注:也可在第三步中点击“浏览照片”并选择自己喜欢的图片做为桌面背景。 2. 调整计算机系统的日期和时间
3. 设置桌面图标 1) 添加文件或文件夹图标。鼠标右键点击需要添加快捷方式的文件,选择“显示更多选项”, 在弹出的菜单中选择“发送到”,在弹出的新菜单中点击“桌面快捷方式”即可。 2) 添加系统图标。在设置中找到“个性化”选修卡,点击“主题”选项,点击“桌面图标设 置”在弹出的对话框内勾选需要的桌面图标点击确定即可完成设置。
实验二-基尔霍夫定律和叠加原理的验证(实验报告答案)
实验二基尔霍夫定律和叠加原理的验证一、实验目的1.验证基尔霍夫定律的正确性,加深对基尔霍夫定律的理解。
2.验证线性电路中叠加原理的正确性及其适用范围,加深对线性电路的叠加性和齐次性的认识和理解。
3.进一步掌握仪器仪表的使用方法。
二、实验原理1.基尔霍夫定律基尔霍夫定律是电路的基本定律。
它包括基尔霍夫电流定律(KCL)和基尔霍夫电压定律(KVL)。
(1)基尔霍夫电流定律(KCL)在电路中,对任一结点,各支路电流的代数和恒等于零,即ΣI=0。
(2)基尔霍夫电压定律(KVL)在电路中,对任一回路,所有支路电压的代数和恒等于零,即ΣU=0。
基尔霍夫定律表达式中的电流和电压都是代数量,运用时,必须预先任意假定电流和电压的参考方向。
当电流和电压的实际方向与参考方向相同时,取值为正;相反时,取值为负。
基尔霍夫定律与各支路元件的性质无关,无论是线性的或非线性的电路,还是含源的或无源的电路,它都是普遍适用的。
2.叠加原理在线性电路中,有多个电源同时作用时,任一支路的电流或电压都是电路中每个独立电源单独作用时在该支路中所产生的电流或电压的代数和。
某独立源单独作用时,其它独立源均需置零。
(电压源用短路代替,电流源用开路代替。
)线性电路的齐次性(又称比例性),是指当激励信号(某独立源的值)增加或减小K倍时,电路的响应(即在电路其它各电阻元件上所产生的电流和电压值)也将增加或减小K倍。
三、实验设备与器件1.直流稳压电源 1 台2.直流数字电压表 1 块3.直流数字毫安表 1 块4.万用表 1 块5.实验电路板 1 块四、实验内容1.基尔霍夫定律实验按图2-1接线。
图2-1 基尔霍夫定律实验接线图(1)实验前,可任意假定三条支路电流的参考方向及三个闭合回路的绕行方向。
图2-1中的电流I1、I2、I3的方向已设定,三个闭合回路的绕行方向可设为ADEFA、BADCB和FBCEF。
(2)分别将两路直流稳压电源接入电路,令U1=6V,U2=12V。
实验二碰撞实验报告
实验二碰撞实验报告14 级软件工程班候梅洁 14047021【实验目的】1.掌握气垫导轨的水平调整、光电门及电脑通用计数器的使用。
2.学会使用物理天平。
3.用对心碰撞特例检验动量守恒定律。
4.了解动量守恒定律和动能守恒的条件。
碰撞前后的动量关系为:m 1 u1 =(m1 +m 2)v 2动能变化为:E k =1/2 (m1 +m 2)v 22 -1/2m 1 u 12【实验步骤】用物理天平校验两滑块的(连同挡光物)的质量m 1及 m 2,经测量1.m 1 =136.60g、m 2 =344.02g2.用游标卡尺测出两挡光物的有效遮光宽度,本实验中s 1 = s 2 =5.00cm3.将气垫导轨调水平。
(1)粗调:调节导轨下的三只底脚螺丝,使导轨大致水平(观察导轨上的气泡,若气泡位于最中央,说明已调平)。
(2)静态调平:接通气源,将滑块放在导轨上,这时滑块在导轨上自由运动,调节导轨的单脚底螺丝,使滑块基本静止(不会一直向单一方向运动)(3)动态调平:将两个安装在到导轨上的光电门相距 60cm左右。
在滑块上安放 u 型挡光片,接电脑通用计数器的电源,打开电源开关,将电脑计数器功能置于“ s2”挡。
轻轻推动滑块,分别读出遮光片通过两个光电门的时间t 1和t 2,它们不等,则反复强调单脚螺丝,使它们相差不超过千分之几秒,此时可认为气垫导轨基本水平。
4.完全弹性碰撞适当放置光电门的位置,使它能顺利测出两个滑块碰撞前后的速度,并在可能的情况下,使两个光电门的距离小些。
每次碰撞时,大滑块的速度不要太大,让两个滑块完全碰撞两次,分别记录每次的滑块的速度并结算出:(注意速度方向)动量的变化大小C=(m 1 v1 +m 2 v 2 )/(m 1 u1 +m 2 u 2 )恢复系数 e=(v 2 -v 1 )/(u 1 -u 2 )(v 2 -v 1为两物体碰撞后相互分离的相对速度,u1 -u 2则为碰撞前彼此接近的相对速度)【注意事项】1.严格按照在操作规范使用物理天平;2.严格按照气垫导轨操作规则;3.给滑块速度时速度要平稳,不应使滑块产生摆动;挡光框应与滑块运动方向一致,且其遮光边缘应与滑块运动方向垂直;4.挡光框应与滑块之间应固定牢固,防止碰撞时相对位置改变,影响测量精度。
实验二实验报告
PAM和PCM编译码器系统一、实验目的1.观察了解PAM信号形成的过程;验证抽样定理;了解混叠效应形成的原因;2.验证PCM编译码原理;熟悉PCM抽样时钟、编码数据和输入/输出时钟之间的关系;了解PCM专用大规模集成电路的工作原理和应用。
二、实验内容和步骤1.PAM编译码器系统1.1自然抽样脉冲序列测量(1)准备工作;(2)PAM脉冲抽样序列观察;(3)PAM脉冲抽样序列重建信号观测。
1.2平顶抽样脉冲序列测量(1)准备工作;(2)PAM平顶抽样序列观察;(3)平顶抽样重建信号观测.1.3信号混叠观测(1)准备工作(2)用示波器观测重建信号输出的波形。
2.PCM编译码器系统2.1PCM串行接口时序观察(1)输出时钟和帧同步时隙信号的观察;(2)抽样时钟信号与PCM编码数据测量;2.2用示波器同时观察抽样时钟信号和编码输出数据信号端口(TP502),观测时以TP504同步,分析掌握PCM编码输数据和抽样时钟信号(同步沿、脉冲宽度)及输出时钟的对应关系;2.3PCM译码器输出模拟信号观测,定性观测解码信号与输入信号的关系:质量,电平,延时.2.4PCM频率响应测量:调整测试信号频率,定性观察解码恢复出的模拟信号电平,观测输出信号电平相对变化随输入信号频率变化的相对关系;2.5PCM动态范围测量:将测试信号频率固定在1000Hz,改变测试信号电平,定性观测解码恢复出的模拟信号的质量。
三、实验数据处理与分析1.PAM编译码器系统(1)观察得到的抽样脉冲序列和正弦波输入信号如下所示:上图中上方波形为输入的正弦波信号,下方为得到的抽样脉冲序列,可见抽样序列和正弦波信号基本同步。
(2)观测得到的重建信号和正弦波输入信号如下所示:如上图所示,得到的重建信号也为正弦波,波形并没有失真。
(3)平顶抽样的脉冲序列如下所示:上图中上方的波形为输入的正弦波信号,下方为PAM平顶抽样序列.(4)平顶抽样的重建信号波形:可见正弦波经过平顶抽样,最终重建的信号仍为正弦波。
实验报告实验2 数据类型与表达式
实验报告_实验 2 数据类型与表达式(学生学号__姓名)一、实验目的:1、熟悉基本数据类型(int、char、float、double)占用的字节数和存储形式,能够定义基本数据类型的变量,使用这些类型的数据;2、掌握字符数据的存储形式及其与整数的运算,能正确理解“字符数据”与“字符串”的区别与联系,熟悉常用转义字符的使用;3、熟悉字符常量与一般常量的定义、使用;4、掌握算术运算符(重点是/和%)、自增(++)和自减(--)运算符的使用,能够构建正确的表达式,并输出其结果;5、理解不同类型数据之间运算时的类型转换规则,掌握强制类型转换的方法。
二、实验内容1、(基础题)用sizeof运算符可以得到各种类型数据占用存储单元长度,利用数据间的关系和不同控制符,可以得到查看数据的存储形式。
回答下列问题:(1)sizeof运算符如何使用?它的操作数可以是类型关键字吗?答:可用sizeof(类型名或数据) 来获取该类型数据所占字节数。
可以。
(2)整数的占用长度与其数值大小有关吗?答:有。
(3)字符串中’\’’、’\n’、’\t’的功能各是什么?答:单引号,换行,水平制表。
(4)字符串的一个英文字母占几个字节?一个汉字占几个字节?尾部还有什么字符?答:1个字节;4个字节;结束符‘\0’。
(5)整数的存储形式是什么?答:二进制补码。
2、(基础题)字符数据以整数方式(ASCII)存储的,可以与整数进行+、-运算,既可以用“字符”方式输出,也可以用“整数”方式输出。
回答下列问题:(1)字符数据在内存中是以什么方式存储的?答: ASCII码。
(2)字符数据与整型数据能相互赋值、运算吗?如何以“整数”方式和“字符”方式输出字符?答:能,整数:”%d”,字符:”%c”。
(3)大小写字母的ASCII有什么关系?(如:’G’与’g’)答:ASCII码相差32。
(4)如何由’A’、’a’分别得到后续的大写字母、小写字母?答:’A+1’,’a+1.’(5)字符间的距离如何计算?由一字符能分别得到ASCII比它小5、大10的两个字符吗?若能,如何得到?答:两个ASCII码绝对值相减,’a’-5,’a’+10.(6)说明“C”与’c’的联系与区别,能否写成”dog”、’boy’?答:”C”字符串,’c’字符,能.3、(基础题)符号常量与常变量(即用const关键字定义)的使用:回答问题:(1)写出用符号常量定义PI的格式;#define PI 3.14(2)写出用“常变量”方式定义PI值的语句。
实验二 面向对象编程实验报告
实验二面向对象编程实验报告一、实验目的本次实验旨在深入理解和掌握面向对象编程的基本概念和方法,通过实际编程操作,提高运用面向对象思想解决问题的能力,熟悉面向对象编程的开发流程和技巧,培养良好的编程习惯和代码规范。
二、实验环境本次实验使用的编程环境为具体编程环境名称及版本,操作系统为操作系统名称及版本。
三、实验内容(一)问题描述设计一个简单的学生管理系统,能够实现对学生信息(包括姓名、学号、年龄、成绩等)的录入、查询、修改和删除操作。
(二)类的设计1、设计一个`Student` 类,用于表示学生对象。
该类包含以下属性:`name`(姓名)、`student_id`(学号)、`age`(年龄)、`score`(成绩)。
2、为`Student` 类添加构造函数,用于初始化学生对象的属性。
3、为`Student` 类添加`get` 和`set` 方法,用于获取和设置学生对象的属性值。
(三)功能实现1、录入功能:实现用户输入学生信息,并创建`Student` 对象进行存储。
2、查询功能:根据学号或姓名查询学生信息,并输出查询结果。
3、修改功能:根据学号或姓名找到对应的学生对象,修改其属性值。
4、删除功能:根据学号或姓名删除对应的学生对象。
四、实验步骤(一)类的实现```javapublic class Student {private String name;private String studentId;private int age;private double score;public Student(String name, String studentId, int age, double score) {thisname = name;thisstudentId = studentId;thisage = age;thisscore = score;}public String getName(){return name;}public void setName(String name) {thisname = name;}public String getStudentId(){return studentId;}public void setStudentId(String studentId) {thisstudentId = studentId;}public int getAge(){return age;}public void setAge(int age) {thisage = age;}public double getScore(){return score;}public void setScore(double score) {thisscore = score;}}```(二)主函数实现```javaimport javautilArrayList;import javautilScanner;public class StudentManagementSystem {private ArrayList<Student> students;public StudentManagementSystem(){students = new ArrayList<>();}public static void main(String args) {StudentManagementSystem system = new StudentManagementSystem();Scanner scanner = new Scanner(Systemin);while (true) {Systemoutprintln("1、录入学生信息");Systemoutprintln("2、查询学生信息");Systemoutprintln("3、修改学生信息");Systemoutprintln("4、删除学生信息");Systemoutprintln("5、退出系统");int choice = scannernextInt();switch (choice) {case 1:systemaddStudent(scanner);break;case 2:systemqueryStudent(scanner);break;case 3:systemmodifyStudent(scanner);break;case 4:systemdeleteStudent(scanner);break;case 5:Systemoutprintln("感谢使用,再见!");Systemexit(0);default:Systemoutprintln("输入有误,请重新输入!");}}}//录入学生信息public void addStudent(Scanner scanner) {Systemoutprintln("请输入学生姓名:");String name = scannernext();Systemoutprintln("请输入学生学号:");String studentId = scannernext();Systemoutprintln("请输入学生年龄:");int age = scannernextInt();Systemoutprintln("请输入学生成绩:");double score = scannernextDouble();Student student = new Student(name, studentId, age, score);studentsadd(student);Systemoutprintln("学生信息录入成功!");}//查询学生信息public void queryStudent(Scanner scanner) {Systemoutprintln("请输入查询方式(1、按学号查询 2、按姓名查询):");int queryType = scannernextInt();if (queryType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){Systemoutprintln("姓名:"+ studentgetName());Systemoutprintln("学号:"+ studentgetStudentId());Systemoutprintln("年龄:"+ studentgetAge());Systemoutprintln("成绩:"+ studentgetScore());return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (queryType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){Systemoutprintln("姓名:"+ studentgetName());Systemoutprintln("学号:"+ studentgetStudentId());Systemoutprintln("年龄:"+ studentgetAge());Systemoutprintln("成绩:"+ studentgetScore());return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}//修改学生信息public void modifyStudent(Scanner scanner) {Systemoutprintln("请输入修改方式(1、按学号修改 2、按姓名修改):");int modifyType = scannernextInt();if (modifyType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){Systemoutprintln("请输入新姓名:");String newName = scannernext();Systemoutprintln("请输入新年龄:");int newAge = scannernextInt();Systemoutprintln("请输入新成绩:");double newScore = scannernextDouble();studentsetName(newName);studentsetAge(newAge);studentsetScore(newScore);Systemoutprintln("学生信息修改成功!");return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (modifyType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){Systemoutprintln("请输入新学号:");String newStudentId = scannernext();Systemoutprintln("请输入新年龄:");int newAge = scannernextInt();Systemoutprintln("请输入新成绩:");double newScore = scannernextDouble();studentsetStudentId(newStudentId);studentsetAge(newAge);studentsetScore(newScore);Systemoutprintln("学生信息修改成功!");return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}//删除学生信息public void deleteStudent(Scanner scanner) {Systemoutprintln("请输入删除方式(1、按学号删除 2、按姓名删除):");int deleteType = scannernextInt();if (deleteType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){studentsremove(student);Systemoutprintln("学生信息删除成功!");return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (deleteType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){studentsremove(student);Systemoutprintln("学生信息删除成功!");return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}}```五、实验结果通过对程序的运行和测试,能够成功实现学生信息的录入、查询、修改和删除功能。
实验二运算器实验报告
实验二运算器实验报告
实验二是运算器实验,旨在让我们了解计算机运算器的结构和工作原理。
在本次实验中,我们通过搭建运算器电路并进行验证,深入理解了运算器的运作过程,为我们今后学习和应用计算机原理打下了基础。
一、实验原理
运算器是计算机中重要的组成部分,用于实现各种算术和逻辑运算。
在本次实验中,我们首先学习了运算器的基本原理和功能,并了解了运算器中常用的逻辑门电路,如与门、或门、非门等。
接着,我们根据原理和逻辑门电路的特点,搭建了一个16位的运算器电路,并测试了电路的逻辑功能和运算准确性。
二、实验步骤
1. 搭建16位运算器电路,包括与门、或门、非门等逻辑电路。
2. 对搭建的运算器电路进行测试,如测试与门、或门、非门电路的逻辑输出是否正确。
3. 实现加法和减法运算功能,测试运算器的运算准确性。
4. 对搭建的运算器电路进行进一步优化,提高电路工作效率和运算速度。
三、实验结果
经过实验测试,我们成功搭建了一个16位的运算器电路,并对电路进行了多项测试和验证。
在逻辑输出方面,与门、或门、非门电路均能够正确输出逻辑值,验证了运算器电路的逻辑功能。
在加法和减法运算方面,运算器电路能够正确实现运算功能,并输出正确的运算结果,这表明运算器电路的运算准确性良好。
四、实验总结
通过本次实验,我们深入理解了计算机中运算器的工作原理和结构,掌握了运算器电路的搭建和运作方法,并初步掌握了在运算器上实现加法和减法运算的原理和方法。
此外,我们还了解了运算器电路的优化方法和技巧,提高了电路工作效率和运算速度。
这些知识和技能对我们今后学习和应用计算机原理具有重要的指导意义。
实验二-实验报告(进程管理)
实验二模拟实现进程管理组长:李和林软件1402一、实验目的1.理解进程的概念,明确进程和程序的区别。
2.理解并发执行的实质。
3.掌握进程的创建,睡眠,撤销等进程控制方法。
二、实验内容用C语言,JAVA语言,C++语言编写程序,模拟实现创建新的进程;查看运行进程,换出某个进程;杀死运行进程。
三、实验准备1.进程的定义进程是程序在一个数据集合上的运行过程,是系统资源分配和调度的一个独立单位。
一个程序在不同的数据集合上运行,乃至一个程序在同样数据集合上的多次运行都是不同的进程。
2.进程的状态通常情况下,一个进程必须具有就绪,执行和阻塞三种基本情况。
1)就绪状态当进程已分配到除处理器外的所有必要资源后,只要再获得处理器就可以立即执行,这时进程的状态就为就绪状态。
在一个系统里,可以有多个进程同时处于就绪状态,通常把这些就绪进程排成一个或多个队列,称为就绪队列。
2)执行状态处于就绪状态的进程一旦获得处理器,就可以运行,进程状态也就处于执行状态,在单处理器系统中,只能有一个进程处于执行状态,在多处理器系统中,则可能有多个进程处于执行状态3)阻塞状态正在执行的进程因为发生某些事件而暂停运行,这种受阻暂停的状态称为阻塞状态,也可称为等待状态。
通常将处于阻塞状态的进程拍成一个队列,称为阻塞队列,在有些系统中,也会按阻塞原因的不同将阻塞状态的进程排成多个队列。
3.进程状态之间的转换4.进程控制块1)进程控制块的作用进程控制块是进程实体的重要组成部分,主要包含下述四个方面的信息:a)进程标示信息b)说明信息c)现场信息d)管理信息5.进程控制块的组织方式1)链接方式2)索引方式6.进程控制原语1)创建原语2)撤销原语3)阻塞原语4)唤醒原语7.程序代码#include<stdio.h>#include<iostream>using namespace std;void clrscr();void create();void run( );void exchange( );//唤出void kill( );void wakeUp( );//唤醒struct process_type{int pid;int priority;//优先次序int size;int state;//状态char info[10];};struct process_type internalMemory[20];int amount=0,hangUp=0,pid,flag=0;//数目,挂起void main( ){int n;int a;n=1;clrscr( );while(n==1){cout<<"\n********************************************";cout<<"\n* 进程演示系统 *";cout<<"\n********************************************";cout<<"\n 1.创建新的进程 2.查看运行进程 ";cout<<"\n 3.换出某个进程 4.杀死运行进程 ";cout<<"\n 5.唤醒某个进程¨ 6.退出系统 ";cout<<"\n*********************************************"<<endl;cout<<"请选择 ";cin>>a;switch(a){case 1:create( );break;case 2:run( );break;case 3:exchange();//换出break;case 4:kill();break;case 5:wakeUp();break;case 6:exit(0);default:n=0;}}}void create(){ //创建进程int i=0;if (amount>=20){cout<<" 内存已满,请先结束或换出进程";}else{for (i=0;i<20;i++){if (internalMemory[i].state==0){break;}}cout<<"请输入新进程的pid: "<<endl;cin>>internalMemory[ i ].pid;cout<<"请输入新进程的优先级: "<<endl;cin>>internalMemory[amount].priority;cout<<"请输入新进程的大小: "<<endl;cin>>internalMemory[amount].size;cout<<"请输入新进程的内容: "<<endl;cin>>internalMemory[amount].info;internalMemory[i].state=1;amount++;}}void clrscr()//清除内存空间{for (int i=0;i<19;i++){internalMemory[i].pid=0;internalMemory[i].priority=0;internalMemory[i].size=0;internalMemory[i].state=0;}amount=0;}void run(){for (int i=0;i<20;i++){if (internalMemory[i].state==1){cout<<"当前内存中的进程:\n"<<endl;cout<<"当前运行的进程: ";cout<<internalMemory[i].pid<<endl;cout<<"当前运行进程的优先级: ";cout<<internalMemory[i].priority<<endl;cout<<"当前运行进程占用的空间大小: ";cout<<internalMemory[i].size;}}}void exchange( ){//唤出优先级最小的进程if (!amount){cout<<"当前没有运行进程\n";return;}cout<<"\n输入换出进程的ID值: ";cin>>pid;for (int i=0;i<20;i++){if (pid==internalMemory[i].pid){if (internalMemory[i].state==1){internalMemory[i].state=2;hangUp++;cout<<"\n已经成功换出进程\n";}else if (internalMemory[i].state==0){cout<<"\n要换出的进程不存在";}else{cout<<"\n要换出的进程已被挂起\n";}flag=1;break;}}if (flag==0){cout<<"\n要换出的进程不存在";}}void kill( ){if (!amount){cout<<"当前没有运行进程\n";return;}cout<<"请输入要杀死的进程: ";cin>>pid;for (int i=0;i<20;i++){if (pid==internalMemory[i].pid){if (internalMemory[i].state==1){internalMemory[i].state=0;amount--;cout<<"此进程被杀死"<<pid;}else if (internalMemory[i].state==0){cout<<"\n要杀死的进程不存在\n";}else{cout<<"\n要杀死的进程已被挂起\n";}flag=1;break;}}if (!flag){cout<<"\n要杀死的进程不存在\n";}}void wakeUp(){if (!amount){cout<<"当前没有运行进程"<<endl;return;}if (!hangUp){cout<<"当前没有挂起进程";return;}cout<<"请输入pid: ";cin>>pid;for (int i=0;i<20;i++){if (pid==internalMemory[i].pid){flag=0;if (internalMemory[i].state==2){internalMemory[i].state=1;hangUp--;cout<<"已经成功唤醒进程\n";}else if (internalMemory[i].state==0){cout<<"\n要换醒的进程不存在\n";}else{cout<<"\n要唤醒的进程已被挂起\n";}break;}}if (flag){cout<<"\n要唤醒的进程已被挂起\n"<<endl;}}8.实现的结果。
实验二 单管放大电路实验报告
实验名称
实验二单管放大电路
班级
姓名-学号
报告内容
实验内容及步骤:
装接电路如图2.1所示
晶体管名称: 2N2222
描述: Vceo=30 Vcbo=60 Ic(max)=0.8 hFE(min)=35 hFE(max)=300 Ft=250 Pd=3
图2.1单管放大电路
(1)、用万用表判断实验箱上三极管V1的极性及好坏,放大倍数以及电解电容C的极性和好坏。
实测
实测计算
Vbe(V)
Vce(V)
Rp(KΩ)
Ib(uA)
Ic(m239 uA
0.985 mA
表2.1
3、动态研究
(1)、将信号发生器调到f=1KHz,幅值为100mV,接到放大器输入端,此时Vi=1mV,观察Vi和Vo段波形,并比较相位。
(2)、信号源频率不变,逐渐加大幅度,观察Vo不失真时的最大值并填表2.2。RL=∞时
测输出电阻
实测
测算
估算
实测
测算
估算
Vs(mV)
Vi(mV)
Ri
Ri
Vo
Rl空载
Vo
Rl=5.1K
Ro(k)
Ro(k)
103 mV
1.018 mV
50.9
50.36
392 nV
196 nV
5.1k
5.1k
表2.5
交流通路:
Rp值
Vb(mV)
Vc(mV)
Ve
输出波形情况
最大
1.00mV
17.212 uV
68.576 uV
不失真
合适
1.345 mV
74.236 mV
实验报告二-模拟交通灯实验
实验报告二-模拟交通灯实验实验目的:本次实验旨在通过模拟交通灯实验,了解交通灯的工作原理、设计及调节方法。
实验原理:交通灯是城市交通管理中不可缺少的部分,广泛应用于道路、路口等地方,用以调整交通流量和保障行人和车辆的交通安全。
基本上,每个交通灯系统都由信号控制器、信号球、绿地检测器组成。
信号控制器是交通灯系统的核心部分,通过控制信号球的点灯和熄灭,向车辆、行人发出指令。
实验器材:1. Arduino控制板;2. LED灯若干;3. 面包板;4. 杜邦线;5. 电阻。
实验步骤:1. 通过面包板将Arduino控制板与电阻、LED灯连接;2. 在Arduino控制板上编写程序,实现交通灯模拟;3. 连接电源,通过Arduino IDE输入程序运行。
实验结果:经过程序处理,LED灯按照交通灯的颜色进行变换,使得其能够模拟实际交通灯的工作状态,达到预期效果。
实验教训:在实验过程中,我们发现LED灯的管脚与面包板接触不良时,会出现程序不能正常运行的情况。
因此,我们在连接器件时要确保接触良好,并注意防静电。
实验思考:本次实验通过模拟交通灯,我们深刻认识到交通灯的工作原理以及对道路交通的重要意义。
合理设置交通灯,不仅能够保障行人和车辆安全,而且还能提高道路的通行效率。
因此,在今后的实践活动中,我们应该更加注重交通灯的科学研究和实际应用。
结语:通过本次实验,我们进一步认识到交通灯对于城市交通管理的重要性,同时也掌握了基本的交通灯原理和设计方法。
相信在今后的学习和研究中,我们将能够更好地提高交通管理的水平和效率。
实验二独立按键试验实验报告
实验二独立按键试验实验报告
一、实验目的
独立按键试验是为了验证按键与单片机的连接是否正常,并测试按键
功能是否正常,通过实验掌握按键接口的使用和按键的原理。
二、实验原理
在实际应用中,常常需要使用按键来实现硬件的控制。
按键的原理是:当按键关闭时,两个按键引脚之间短接,按键关闭。
当按键打开时,两个
按键引脚之间断开,按键打开。
三、实验仪器
1.单片机开发板
2.按键
3.面包板和杜邦线
4.电源线
四、实验步骤
1.将按键连接到单片机开发板上的按键接口,并接通电源。
2.编写程序,监测按键是否被按下,并通过串口输出按键的状态。
3.烧录程序到单片机,运行程序。
4.进行按键试验。
五、实验结果与分析
按下按键后,通过监测按键引脚的电平变化,可以判断按键是否被按下。
根据不同的按键连接方式,可能需要使用上拉电阻或下拉电阻来连接按键。
六、实验结论
通过独立按键试验,我们验证了按键与单片机的连接是否正确,并测试了按键的功能。
在实际应用中,可以根据需要使用按键来实现硬件的控制。
七、实验心得
通过本次实验,我掌握了按键接口的使用方法和按键的原理。
在实际应用中,按键是一个常用的控制元件,有了这次实验的经验,以后在使用按键时会更加得心应手。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java实验二:模拟小电器
班级:软件1502班姓名:李家伟学号:20151611542
一、实验目的
借助javax.swing包提供的组件并使用命令模式模拟一个带控制开关的小电器,强化对命令模式的理解。
二、实验内容
1.请创建底面为正方形的柱形类,计算柱体体积。
2.请画出程序对应的UML类图。
三、实验环境
1、PC微机;
2、Windows 操作系统;
3、JDK程序集成环境、Eclipse。
四、UML图、源代码及测试结果
1. UML图
2. 源代码
1.Pillar类(柱体)
public class Pillar {
Geometry bottom;
double height;
Pillar(Geometry bottom,double height){ this.bottom=bottom;
this.height=height;
}
public double getVolume(){
return bottom.getArea()*height;
}
}
2.Square类(正方形面积)
public class Square extends Geometry{ double a;
Square(double a){
this.a=a;
}
public double getArea(){
return a*a;
}
}
3.Geometry类(接口)
public abstract class Geometry {
public abstract double getArea();
}
4.Application(主函数)
public class Application {
public static void main(String args[]){
Pillar pillar;
Geometry bottom;
bottom=new Square(3);
pillar=new Pillar(bottom,12);
System.out.println("底为正方形的柱体的体积"+pillar.getVolume());
}
}
3. 测试结果
五、心得体会
1.在创建新的三角形或圆形类时,现在创建时只需将其作为Geometry类的子类,无需修改Piller的任何代码,就可以使用Piller创建出具有Geometry的新子类指定的底的柱体。
2.Piller类的设计不用再依赖具体类,而是面向Geometry类编程,类耦合度低。
3.每个Geometry类的子类必须重写Geometry类中的getArea()方法。