实验四 多态性
Java实验报告继承、多态、接口和异常处理
Java实验报告继承、多态、接⼝和异常处理实验5 继承、多态、接⼝和异常处理⼀、实验⽬的1、掌握Java的类和对象的声明和使⽤⽅法;2、掌握Java的类的继承和实现⽅法;3、掌握多态性在类的继承中的运⽤;4、掌握接⼝的定义与使⽤;5、掌握基本异常的处理机制;6、熟悉try语句与catch语句的搭配使⽤;7、了解有异常处理与没有异常处理的差别;8、多重catch语句的使⽤;9、使⽤Throws声明异常和Throw抛出异常。
⼆、实验环境1、PC微机;2、DOS操作系统或 Windows 操作系统;3、Java sdk程序开发环境、eclipse集成环境。
三、实验内容1. 设计三个类,分别是学⽣类Student,本科⽣类UnderGraduate,研究⽣类Postjgraduate,其中Student类是⼀个抽象类,它包含学⽣的基本信息如姓名、所学课程、课程成绩等,⽽Undergraduate类和Postgraduate类都是Student类的⼦类,这两个类计算课程成绩等级的⽅法有所不同,如下表所⽰。
假设某班级⾥既有研究⽣⼜有本科⽣,编写程序统计出全班学⽣2. 和Mobilephone具体实现,并设计⼀个应⽤程序类来使⽤这些类。
3.要求设计⼀个GUI图形窗⼝程序,该程序让⽤户输⼊⼀个星期中的任意⼀天的数字1-7,然后输出该数字所对应的是星期⼏。
四、实验步骤实验内容⼀1.建⽴package experiment5_1,其最终⽬录结构如下:2.建⽴Student类:package experiment5_1;public abstract class Student {final static int CourseNo = 3;String name;String type;int[] courses;String courseGrade;public Student(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name; courses = new int[CourseNo];courseGrade = "" ;}public abstract void calculateGrade();public String getName( ) {return name;}public String getType( ) {return type ;}public String getCourseGrade( ) {return courseGrade;}public int getCourseScore(int courseNumber) {return courses[courseNumber];}public void setName(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name;}public void setType(String type) {this.type = type;}public void setCourseScore(int courseNumber, int courseScore) { //按课程索引号设置课程成绩this.courses[courseNumber] = courseScore ;}}3.建⽴外部类(1)研究⽣类Postjgraduatepackage experiment5_1;public class postgraduate extends Student {public postgraduate(String name) {super(name);type = "研究⽣";}public void calculateGrade() {// TODO Auto-generated method stubint total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += courses[i];};average = total / CourseNo;if (average>=90&&average<100) courseGrade = "优秀"; else if (average>=80&&average<90) courseGrade = "良好"; else if (average>=70&&average<80) courseGrade = "⼀般"; else if (average>=60&&average<70) courseGrade = "及格"; else courseGrade = "不及格";}}(2)本科⽣类UnderGraduatepackage experiment5_1;public class undergraduate extends Student {public undergraduate(String name ) {super(name);type = "本科⽣";}public void calculateGrade() {int total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += getCourseScore(i) ;};average = total / CourseNo;if (average>=80&&average<100) courseGrade = "优秀"; else if (average>=70&&average<80) courseGrade = "良好"; else if (average>=60&&average<70) courseGrade = "⼀般"; else if (average>=50&&average<60) courseGrade = "及格"; else courseGrade = "不及格";}}4.编写代码测试函数package experiment5_1;public class polymorphism {public static void main(String[] args) {Student[] students = new Student[5];students[0] = new undergraduate("陈建平");students[1] = new undergraduate("鲁向东");students[2] = new postgraduate("匡晓华");students[3] = new undergraduate("周丽娜");students[4] = new postgraduate("梁欣欣");for (int i=0; i<5 ;i++) {students[i].setCourseScore(0,87);students[i].setCourseScore(1,90);students[i].setCourseScore(2,78);}for (int i=0; i<5 ;i++) {students[i].calculateGrade();}System.out.println("姓名" + " 类型" +" 成绩");System.out.println("-----------------------");for (int i=0; i<5 ;i++) {System.out.println(students[i].getName( )+" "+students[i].getType( )+" "+students[i].getCourseGrade( ));}}}实验内容⼆1.建⽴package experiment5_2,其最终⽬录结构如下:2.写接⼝Soundable代码:package experiment5_2;public interface Soundable {public void increaseV olume( );public void decreaseV olume( );public void stopSound( );public void playSound( );}3.创建三个类Radio、Walkman和Mobilephone具体实现,分别添加代码:// Mobilephone类package experiment5_2;class Mobilephone implements Soundable{public void increaseV olume( ) {System.out.println("增⼤⼿机⾳量");}public void decreaseV olume( ) {System.out.println("减⼩⼿机⾳量");}public void stopSound( ) {System.out.println("关闭⼿机");}public void playSound( ) {System.out.println("⼿机发出来电铃声");}}// Walkman类package experiment5_2;class Walkman implements Soundable { public void increaseV olume( ) { System.out.println("增⼤随声听⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩随声听⾳量"); }public void stopSound( ) {System.out.println("关闭随声听");}public void playSound( ) {System.out.println("随声听发出⾳乐"); }}// Radio类package experiment5_2;class Radio implements Soundable{ public void increaseV olume( ) { System.out.println("增⼤收⾳机⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩收⾳机⾳量"); }public void stopSound( ) {System.out.println("关闭收⾳机");}public void playSound( ) {System.out.println("收⾳机播放⼴播"); }}4.创建people类及编写测试代码://People类package experiment5_2;class People {public void listen(Soundable s) {s.playSound( );}}//测试代码package experiment5_2;import java.util.Scanner;public class InterfaceTest {public static void main(String[] args) {int i;People sportsman = new People( );Scanner scanner = new Scanner(System.in);Soundable[] soundDevice = new Soundable[3];//往声⾳设备数组中放⼊能发声的设备soundDevice[0] = new Radio( );soundDevice[1] = new Walkman( );soundDevice[2] = new Mobilephone();System.out.println("你想听什么? 请输⼊选择:0-收⾳机1-随声听2-⼿机");i = scanner.nextInt( );//开始听声⾳sportsman.listen(soundDevice[i]);soundDevice[i].increaseV olume( );soundDevice[i].stopSound();scanner.close();}}实验内容三1.建⽴package experiment5_3,其最终⽬录结构如下package experiment5_3;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DateTransf extends JFrame implements KeyListener{/****/private static final long serialVersionUID = 1L;private static DateTransf frm;private static JTextField txt;private static JTextField data;DateTransf() {setTitle("数字与星期转换");setLocation(700, 300);setSize(400,130);}public static void main(String[] args) {frm = new DateTransf();frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setLayout(new GridLayout(2,2));txt = new JTextField(12);data = new JTextField(12);JLabel lable1 = new JLabel("输⼊数字:");JLabel lable2 = new JLabel("星期⼏:");frm.add(lable1);txt.addKeyListener(frm);frm.add(txt);frm.add(lable2);frm.add(data);frm.setVisible(true);}public void keyPressed(KeyEvent e) {if (e.getSource() == txt) {if (e.getKeyCode() == KeyEvent.VK_ENTER) // 判断按下的键是否是回车键{try {int number = Integer.parseInt(txt.getText());switch (number) {case 1:data.setText("Mon");break;case 2:data.setText("Tue");break;case 3:data.setText("Wen");break;case 4:data.setText("Thu");break;case 5:data.setText("Fri");break;case 6:data.setText("Sat");break;case 7:data.setText("Sun");break;default:JOptionPane.showMessageDialog(null, "您输⼊的数字不是1~7","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMATION_MESSAGE); break;}}catch (Exception e1) {// TODO: handle exceptionJOptionPane.showMessageDialog(null, "您输⼊的不是整数","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMA TION_MESSAGE); }}}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}}2.编译运⾏五、实验结果●实验内容⼀结果:●实验内容⼆结果:●实验内容三结果:六、实验⼩结1.这次实验的内容⽐较多,需要掌握Java的类和对象的声明和使⽤⽅法、Java的类的继承和实现⽅法、多态性在类的继承中的运⽤、接⼝的定义与使⽤、基本异常的处理机制、try语句与catch语句的搭配使⽤等等;2. 在实验过程中,重点是要区分好实例和类,灵活掌握类的调⽤。
大学C 上机实验题目(版)
20XX年复习资料大学复习资料专业:班级:科目老师:日期:实验前言(建议认真阅读)一、上机实验的目的上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解C++语言的基本结构和程序设计方法。
通过亲手编程掌握C++语言编程的方法。
二、实验基本内容为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了五个实验。
学生在课内机时先完成指导书中标有“*”号的程序,理解所学的知识,在此基础上再编写其他应用程序。
指导书中的五个个实验如下:1. 函数与编译处理2. 指针与引用3. 类和对象4. 继承和派生类5. 多态性三、实验提交(特别提醒)1. 实验题目以附件形式提交,每个附件限一个源程序,附件以实验编号-题号-自己学号.cpp命名;如学号为20XXXX20XXXX20XXXX34的同学提交实验1的第5题,则附件命名方式为:1-5-20XXXX20XXXX20XXXX34.cpp,错误提交的将视为未提交。
2. 提交时间定为该次实验课的一周内,过期不再接收。
四、评分和作弊处理1. 要求提交实验题总数为6题(带“*”号),占期末总评成绩的20XX%;2. 存在抄袭和被抄袭的作业,无论抄袭与被抄袭者,本门课程平时成绩以零分记。
存在两次及两次以上抄袭和被抄袭者,本门课程以不及格记。
五、实验课要求(重点强调)1. 严禁QQ、MSN等即时软件工具聊天;2. 严紧接听手机、发送短信;3. 严紧玩游戏。
实验1 函数与编译处理一、实验目的1. 掌握函数声明、定义和使用的方法;2. 掌握形参与实参之间的对应关系;3. 掌握函数调用时,形参、实参之间的“值传递”和“引用传递”的区别;4. 掌握函数递归调用的方法;5. 掌握全局变量、局部变量、静态变量的使用方法;6. 掌握文件包含的使用方法。
二、实验内容1. 定义两个函数swap1和swap2,目的是实现两个整数的次序交换,其中swap1的参数是传递值参数,swap2的参数是引用参数,在程序中分别调用这两个函数,其输出结果如下所示:初始值:x=1,y=2调用swap1后的结果:x=1 y=2调用swap2后的结果:x=2 y=12. 编写一个函数,用来计算从键盘上输入的整数的阶乘。
多态编程实验报告
一、实验目的1. 理解多态的概念和原理。
2. 掌握多态编程的基本方法。
3. 通过实验加深对多态编程的理解和应用。
二、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse三、实验内容1. 多态的基本概念2. 多态的实现方法3. 多态的应用实例四、实验步骤1. 多态的基本概念多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
在Java中,多态主要通过继承和重写方法来实现。
2. 多态的实现方法(1)继承在Java中,通过继承可以实现多态。
子类继承父类的方法和属性,可以重写父类的方法,使得子类的方法具有多态性。
(2)重写方法重写方法是指在子类中重写父类的方法,使得子类的方法具有多态性。
重写方法必须满足以下条件:- 方法名、返回类型、参数列表与父类方法相同;- 子类和父类之间必须存在继承关系。
(3)方法重载方法重载是指在同一个类中,存在多个同名方法,但参数列表不同。
方法重载可以实现多态,因为根据传入的参数列表,可以调用不同的方法。
3. 多态的应用实例下面通过一个简单的例子来展示多态的应用。
(1)创建一个动物类```javapublic class Animal {public void makeSound() {System.out.println("Animal makes a sound");}}```(2)创建两个子类,分别代表狗和猫```javapublic class Dog extends Animal {@Overridepublic void makeSound() {System.out.println("Dog barks");}}public class Cat extends Animal {@Overridepublic void makeSound() {System.out.println("Cat meows");}}```(3)创建一个方法,接受一个Animal类型的参数,并调用其makeSound方法```javapublic class Test {public static void main(String[] args) {Animal dog = new Dog();Animal cat = new Cat();makeSound(dog);makeSound(cat);}public static void makeSound(Animal animal) {animal.makeSound();}}```输出结果:```Dog barksCat meows```通过上面的例子,我们可以看到,尽管我们传递的是Animal类型的参数,但在调用makeSound方法时,会根据实际对象的类型调用相应的方法,实现了多态。
实验报告多态性
一、实验目的1. 理解多态性的概念及其在面向对象编程中的重要性。
2. 掌握多态性的实现方式,包括方法重载和方法覆盖。
3. 学习如何利用多态性提高代码的可读性和可维护性。
4. 通过实例分析,加深对多态性在实际编程中的应用理解。
二、实验背景多态性是面向对象编程中的一个核心概念,它允许同一个接口(或方法)根据不同的数据类型执行不同的操作。
在Java、C++等面向对象编程语言中,多态性主要通过方法重载和方法覆盖来实现。
三、实验内容1. 方法重载方法重载是指在同一个类中,允许存在多个同名方法,但参数列表不同。
编译器通过参数列表的匹配来确定调用哪个方法。
(1)实验步骤1)创建一个名为“Animal”的类,包含一个方法名为“makeSound”。
2)在“Animal”类中,添加三个重载的“makeSound”方法,分别接受不同类型的参数(如int、String、double)。
3)创建一个名为“Dog”的类,继承自“Animal”类,并重写“makeSound”方法,使其输出“Woof! Woof!”。
4)创建一个名为“Cat”的类,继承自“Animal”类,并重写“makeSound”方法,使其输出“Meow! Meow!”。
(2)实验结果当创建“Dog”和“Cat”对象时,调用“makeSound”方法会根据对象类型输出相应的声音。
2. 方法覆盖方法覆盖是指在子类中重写父类的方法,使子类的方法具有与父类方法相同的签名,但具有不同的实现。
(1)实验步骤1)创建一个名为“Vehicle”的类,包含一个方法名为“move”,该方法无参数。
2)创建一个名为“Car”的类,继承自“Vehicle”类,并重写“move”方法,使其输出“Car is moving”。
3)创建一个名为“Bike”的类,继承自“Vehicle”类,并重写“move”方法,使其输出“Bike is moving”。
(2)实验结果当创建“Car”和“Bike”对象时,调用“move”方法会根据对象类型输出相应的移动信息。
浅谈单核苷酸多态性、单倍型及连锁不平衡
浅谈单核苷酸多态性、单倍型及连锁不平衡单核苷酸多态性、单倍型及连锁不平衡是现代遗传学研究中的一个重要的概念。
单核苷酸多态性可以被定义为指同一基因座上有多个可变的单核苷酸序列,其中一种单核苷酸序列可以常见于某一人群中的一部分或者大部分人,而另一种则少见或者稀有。
单倍型又称作基因型形成,是指每个个体拥有一种特定的单核苷酸序列。
连锁不平衡指的是两个单倍体间出现的多态性,也可以被称为“配偶序列不一致”,是由于父母遗传给子代的两个基因型不一致造成的。
第二段:研究发现,单核苷酸多态性可以在细胞和分子水平上影响生物学实验结果,并且可以影响生物学实验之中的生物学过程。
单核苷酸多态性可以影响细胞信号转导,调节蛋白质翻译,以及影响某些基因的表达。
研究发现一些重要疾病可以与单核苷酸多态性有关,即某些单核苷酸的变异可能会导致或促进疾病的发生,例如糖尿病和肿瘤。
第三段:研究表明,单倍型及连锁不平衡是由单核苷酸多态性产生的。
当两个单倍体的单核苷酸序列在某一位点上不一致时,就会导致连锁不平衡。
例如,父母某一基因座上的单核苷酸序列分别为A1和A2,则他们的子代可能会拥有三种不同的基因型,即A1A1,A1A2和A2A2。
而A1A2基因型就是连锁不平衡的表现形式。
第四段:连锁不平衡及其产生的单倍型有着重要的实际意义。
它们可以用来诊断遗传疾病,对相关疾病的发病机理有重要的指导作用。
单核苷酸多态性也被广泛用于基因定位,从而可以帮助科学家研究包括遗传病在内的一些疾病的发病机制。
此外,单核苷酸多态性还可以被用于分析遗传多样性,研究物种演化,以及优化育种。
第五段:综上所述,单核苷酸多态性、单倍型及连锁不平衡是一个重要的概念。
它们可以帮助人们了解遗传多样性,指导基因的定位,诊断遗传性疾病,甚至有助于物种的演化。
在未来,这些概念将能够帮助我们更好地掌握遗传学的基础知识,在相关的研究和应用中发挥重要作用。
上海交通大学
上海交通大学细胞与分子生物学实验报告系级班学号姓名编写说明适应实验教学的改革,提高实验教学的质量,实验教学是强化理论课的重要方式,是培养医学生实验科学概念和实验技能的重要途径。
更重要的是,实验教学是培养学生综合分析和解决问题的能力以及科学创新能力的重要方式。
实验课是实现理论联系实践,培养学生创新能力应用能力的重要方式。
通过实验教学,一方面使学生巩固所学理论,另一方面培养学生实践操作技能和方法,同时也训练了学生运用综合技能的能力。
对学生培训这方面的能力。
细胞与分子生物学教学实验涵盖了生物化学与分子生物学、医学遗传学、医学免疫学和细胞生物学等4个与分子生物学和细胞学相关的学科,已开设了与这些学科密切相关的基础实验课和多学科综合的综合实验课,以及融合了相关实验室技术的融合综合实验。
我们教学实验室编写这本实验报告的初衷是在减少学生的课业负担的同时,将实验中相对重要的实验原理、关键步骤、实验数据、实验结果和实验结果分析编排统一格式,一方面学生可以将实验中观察到的现象“记录在案”,另一方面培养学生科学研究档案记录的严谨性和记录实验过程的规律性,力求能给学生在实验训练上有一个比较系统的、实用的基本训练。
实验报告初次编写,有疏漏之处请使用者多多指教,以期进一步完善。
卢健细胞与分子生物学教学实验室2008.5目录一、基础实验(一)电泳技术实验一血清蛋白醋酸纤维簿膜电泳实验二聚丙烯酰胺凝胶等电聚焦电泳分离蛋白质实验三血清脂蛋白琼脂糖电泳(二)层析技术实验四凝胶柱层析分离鉴定蛋白质实验五DNS-氨基酸的双向聚酰胺簿膜层析实验六离子交换层析分离氨基酸(三)离心技术实验七差速离心法从鼠肝中提取核糖核蛋白体和核蛋白体RNA 实验八蔗糖梯度离心法分部离心核糖核酸(四)PCR体外扩增技术实验九逆转录PCR实验十定量PCR实验十一PCR单链构象多态性分析(五)其他基本实验技术实验十二微量淋巴细胞毒试验实验十三 ELISA技术及Western blot技术实验十四流式细胞术实验十五细胞培养实验十六显微镜使用实验十七染色体分析实验十八图象分析/电镜观察实验十九凝集试验二、综合实验实验二十检测鼠肝肌动蛋白(ß-actin)基因1.鼠肝DNA的制备2.PCR技术检测ß-actin基因3.琼脂糖凝胶电泳分离DNA片段4.southern杂交鉴定DNA片段实验二十一兔肝碱性磷酸酶(AKP)的纯化及Km的测定1.有机溶剂法部分纯化兔肝AKP2.AKP比活性测定3.DEAE纤维素(DE-52)离子交换层析进一步纯化AKP 4.AKP Km 测定实验一血清蛋白醋酸纤维簿膜电泳一、实验原理二、实验步骤三、实验数据四、实验结果五、思考题1.血清蛋白在醋酸纤维薄膜上可分成5~7条带,每条区带是否分别只代表一种蛋白质?2.用什么方法可证明醋酸纤维薄膜有无电渗作用?3.电渗强度愈高血清蛋白在醋酸纤维薄膜上的泳动率愈高,是否电场愈高愈好?教师日期实验二聚丙烯酰胺凝胶等电聚焦电泳分离蛋白质一、实验原理二、实验步骤三、实验数据四、实验结果五、思考题1. 试比较聚丙烯酰胺凝胶等电聚焦电泳与聚丙烯酰胺凝胶电泳有何不同?2.血红蛋白为何能在等电聚焦电泳中分成三条区带?3. 等电聚焦电泳具有极高的分辨率,所以它是蛋白质纯度可信的方法。
java类与对象实验报告
java类与对象实验报告Java类与对象实验报告一、引言Java是一种面向对象的编程语言,类和对象是Java编程的基本概念。
在本次实验中,我们将学习和掌握Java类和对象的概念、定义和使用方法,并通过实际的编程实验来加深对这些概念的理解。
二、实验目的1. 理解Java类和对象的概念;2. 学会定义和使用Java类;3. 掌握创建和操作Java对象的方法;4. 熟悉Java类和对象的相关语法和规范。
三、实验过程1. 类的定义在Java中,类是对象的模板,用于描述对象的属性和行为。
我们首先需要定义一个类,以便创建对象。
类的定义包括类名、属性和方法。
属性即对象的特征,方法即对象的行为。
2. 对象的创建通过使用关键字"new",我们可以创建一个类的对象。
对象是类的实例化,每个对象都有自己的属性和方法。
3. 对象的属性和方法对象的属性和方法可以通过对象名加点操作符来访问。
属性可以是基本类型或其他类的对象,方法可以是对象的行为或功能。
4. 构造方法构造方法是一种特殊的方法,用于创建对象时进行初始化操作。
构造方法的名称必须与类名相同,没有返回类型,可以有参数。
5. 封装性封装性是面向对象编程的重要特性之一,它将数据和方法封装在类中,对外部隐藏内部实现细节。
通过使用访问修饰符(private, public, protected)来控制属性和方法的访问权限。
6. 继承继承是面向对象编程的另一个重要特性,它允许我们创建一个新类,并从现有类中继承属性和方法。
通过使用关键字"extends"来实现继承。
7. 多态性多态性是面向对象编程的核心概念之一,它允许我们使用一个父类类型的引用来引用子类的对象。
通过方法的重写和重载来实现多态性。
四、实验结果通过本次实验,我们成功定义了一个Java类,并创建了多个对象。
我们可以通过对象名来访问对象的属性和方法,并对其进行操作。
我们还学习了构造方法的使用,以及封装性、继承和多态性的相关概念。
基因多态性分析
人基因多态性分析一、实验目的1. 了解基因多态性在阐明人体对疾病、毒物的易感性与耐受性、疾病临床表现的多样性以及对药物治疗的反应性中的重要作用。
2. 了解分析基因多态性的基本原理和研究方法。
二、实验原理基因多态性(gene polymorphism)是指在一个生物群体中,同时存在两种及以上的变异型或基因型或等位基因,也称为遗传多态性(genetic polymorphism)。
人类基因多态性对于阐明人体对疾病的易感性、毒物的耐受性、药物代谢差异及遗传性疾病的分子机制有重大意义;与致病基因连锁的多态性位点可作为遗传病的诊断标记,并为分离克隆致病基因提供依据;病因未知的疾病与候选基因多态性的相关性分析,可用于辅助筛选致病易感基因。
聚合酶链反应-限制性片段长度多态性(polymerase chain reaction—Restriction Fragment Length Polymorphism,PCR-RFLP)分析是一种常用的DNA分子标记。
原理是通过PCR扩增获得目的基因。
若目的基因存在等位变异(多态性),且变异正好发生在某种限制性内切酶识别位点上,使酶切位点增加或者消失,则酶切结果就会产生大小不同的片段,即片段长度多态性,再利用琼脂糖凝胶电泳分离,可呈现出多态性电泳图谱。
若将患者与正常的多态性图谱比较,可确定是否变异。
应用PCR-RFLP,可检测某一致病基因已知的点突变,进行直接基因诊断,也可以此为遗传标记进行连锁分析进行间接基因诊断。
三、器材与试剂1. 器材⑴离心机。
⑵DNA扩增仪。
⑶电泳仪。
⑷水平电泳槽。
⑸紫外检测仪。
⑹移液器。
2. 试剂⑴口腔拭子DNA抽提试剂盒。
⑵琼脂糖。
⑶1×TAE电泳缓冲液:980ml蒸馏水中加入50×TAE母液20ml。
⑷50×TAE母液:Tris 121g,0.5M EDTA(pH8.0)50ml,冰醋酸28.55ml,定容至500ml。
人乙醛脱氢酶2 (ALDH2)多态性分析
对已知基因 DNA 片段再进行PCR特异扩增;
特异的引物配对可以扩增出某一特异基因型的片 段,根据扩增出来的DNA条带大小的差异,可以 分析基因型(纯合型、杂合型)
ALDH2引物
AL1 5’-TAG GAC ACT CAC AGT TTT CACAT C-3’ (78bp) AL2 5’-CTC TCA CAG TTT TCA CTT T-3’ (73bp) AL3 5’-AAG ATG TCG GGG AGT GG-3’
• 凝胶结构均匀,孔径较大, 可用来分离酶的复合物、核 酸、病毒等大分子物质。
• 透明度较好,可直接或干燥 成薄膜后进行染色。
• 不吸收紫外光,可直接利用 紫外光吸收法作定量测定
• 有热可逆性
缺点
• 机械强度差,易破碎,浓度 不能太低。
• 易被细菌污染,不易保存, 临用前配制。
• 琼脂糖支持层上的区带易于 扩散,电泳后必须立即固定 染色。
➢ 引物浓度0.1-0.5 mol/L,浓度过高易导致模 板与引物错配,反应特异性下降
➢ Taq DNA聚合酶0.5-2.5 U/50 l,酶量增加使 反应特异性下降;酶量过少影响反应产量
➢ 四种dNTP浓度应相等 ➢ Mg2+ 是DNA聚合酶的激活剂,0.5 ~2.5mmol/L
基于PCR的扩增产物长度多态性 (PCR-APLP)
综合实验二
人乙醛脱氢酶2 (ALDH2)多态性分析
---PCR-APLP以及PCR 产物电泳鉴定及结果分析
综合实验
(一) 基因组抽提
(二) PCR-APLP
(三)
PCR产物电泳鉴 定及结果分析
Java程序设计实验报告
Java程序设计实验报告一.实验要求1.实验一:Java程序的编辑、编译和运行(1)了解java语言特点,掌握JDK环境中编译、运行程序的操作。
(2)熟悉EditPlus编辑器的使用。
(3)掌握Java Application的程序结构和开发过程。
(4)了解Java程序文件名和类名的说明方法。
2.实验二:Java程序设计基础(1)了解Java 的数据类型;(2)掌握各种变量的声明方式;(3)理解运算符的优先级;(4)掌握Java 基本数据类型、运算符与表达式、数组的使用方法;(5)理解Java 程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法;(6)熟练掌握数组的使用(7)通过以上内容,掌握Java 语言的编程规则。
3.实验三:类的封装性设计(1)掌握从实体中抽象类与对象的方法(2)掌握定义类、创建对象、使用类与对象(3)掌握类及其成员的修饰符的使用(4)掌握构造函数的使用。
4.实验四:类的继承性与多态设计(1)掌握类的继承机制(2)熟悉类中成员的访问控制(3)掌握方法的多态性5.实验五:Applet小程序图形用户界面设计(1)掌握Java 的GUI 设计技术,(2)掌握AWT 和Swing 的应用技巧。
(3)掌握布局管理器(4)掌握事件处理的方法。
(5)掌握Java小程序的特点和编写方法。
二.实验内容1.实验一:java程序的编辑、编译和运行。
(1)使用EditPlus编写源程序(2)编写两个Java Application程序(A)输出一行文字“Hello,JAVA!”用消息对话框显示文本信息。
(B)找出教材复习题1.16中程序的错误,上机调试验证、修改得出正确输出结果。
A.错误程序public class Wlecome{public void Main(string[] args){System,out.println("Welcome to Java!);}}B.修改后程序public class Wlecome{public static void main(String[] args){System.out.println("Welcome to Java!");}}C.运行结果2实验二:分别使用while、do-while和for语句编程,找出所有的水仙花数并输出。
07 单核苷酸多态性(SNP)实验
单核苷酸多态性(SNP)实验SNP (Single Nucleotide Polymorphism)即单核苷酸多态性,是由于单个核苷酸改变而导致的核酸序列多态性(Polymorphism)。
据估计,在人类基因组中,大约每千个碱基中有一个SNP,无论是比较于度多态性(RFLP)分析还是微卫星标记(STR),都要广泛得多。
实验方法原理:SNP (Single Nucleotide Polymorphism)即单核苷酸多态性,是由于单个核苷酸改变而导致的核酸序列多态性(Polymorphism)。
据估计,在人类基因组中,大约每千个碱基中有一个SNP,无论是比较于限制性片段长度多态性(RFLP)分析还是微卫星标记(STR),都要广泛得多。
SNP是我们考察遗传变异的最小单位,据估计,人类的所有群体中大约存在一千万个SNP位点。
一般认为,相邻的SNPs倾向于一起遗传给后代。
于是,我们把位于染色体上某一区域的一组相关联的SNP等位位点称作单体型(haplotype)。
大多数染色体区域只有少数几个常见的单体型(每个具有至少5%的频率),它们代表了一个群体中人与人之间的大部分多态性。
一个染色体区域可以有很多SNP位点,但是我们一旦掌握了这个区域的单体型,就可以只使用少数几个标签SNPs(tagSNP)来进行基因分型,获取大部分的遗传多态模式。
实验材料:组织样品试剂、试剂盒:液氮、PBS、GA缓冲液、GB缓冲液、蛋白酶K、无水乙醇、蛋白液、漂洗液等仪器、耗材:离心管、离心机、废液收集管、吸附柱、水浴锅、分光光度计、低温冰箱等实验步骤:一、DNA抽提1. 取新鲜肌肉组织约100 mg,PBS漂洗干净,置于1.5 ml离心管中,加入液氮,迅速磨碎。
2. 加200 μl 缓冲液GA,震荡至彻底悬浮。
加入20 μl 蛋白酶K(20 mg/ml)溶液,混匀。
3. 加220 μl 缓冲液GB,充分混匀,37℃消化过夜,溶液变清亮。
Java实验报告中的实验题
Java实验报告中的所有实验题实验一略实验二Java 基本语法练习【完成实验项目】1.输入一个整数,输出该数的二进制表示形式的字符串2.编写Java应用程序,把100~1000的自然数中能够被3整除的数输出到屏幕上。
3.打印小于1000的斐波纳契数4. 输入一个梯形的上底、下底和高,求其面积实验三面向对象基础编程【完成实验项目】1.写一个名为Rectangle的类表示矩形。
其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。
要求该类提供计算面积的方法getArea()方法,以及修改width和height的值及获得width和height当前值的方法。
要求:(1)使用构造函数完成各属性的初始赋值(2)使用getter和setter的形式完成属性的访问及修改2. . 请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face 和suit:face描述一张牌的牌面值(如:"Ace", "Deuce", "Three","Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King");suit描述一张牌的花色(如:"Hearts", "Diamonds", "Clubs", "Spades")。
定义Card类中的public访问权限的构造方法,为类中的变量赋值;定义protected访问权限的方法getFace(),得到扑克牌的牌面值; 定义protected访问权限的方法getSuit(),得到扑克牌的花色; 定义方法toString(),返回表示扑克牌的花色和牌面值字符串(如“Ace of Hearts”、“Ten of Clubs”等)。
C++实验报告模板 -太原理工大学-软件学院
area=a*b;
cout<<"面积为"<<area<<endl;
}
else if(x==3)
{
double a;
cout<<"边长:";
cin>>a;
area=a*a;
cout<<"面积为"<<area<<endl;
}
else{
cout<<"输入有误,请重新输入!"<<endl;
七、讨论、心得
通过本次实验,我明确了构造函数和析构函数的应用,也对函数重载有了更深刻的理解,掌握了类的私有成员、公有成员和保护成员的区别,对编写程序的整体思维方法是也有了更清晰的理解。
实验三继承与派生
一、实验目的和要求
(1)掌握类的继承和派生过程;
(2)掌握派生类的定义与使用;
(3)掌握派生类的构造函数与析构函数的应用及调用顺序;
int GetBottom() const { return itsBottom; }
int GetRight() const { return itsRight; }
void SetTop(int top) { itsTop = top; }
void SetLeft (int left) { itsLeft = left; }
};
Circle::Circle(double x0,double y0,double r):Shape(x0,y0)
int itsRight;
};
Rectangle::Rectangle(int top, int left, int bottom, int right)
DNA多态性及其分析(共51张PPT)
反转重复序列,即旋转对称结构
一般为4~8个碱基对
例如 EcoRI 的识别序列:
5'-GA A T T C-3'
3'-C T T A A G-5’
BamHI 识别序列:
5’-GGATCC-3’
3’-CCTAGG-5’
2.核酸探针
由于人基因组DNA链很长,用某一限制性内切酶消化后,酶解
出来的各种不同长度的片段往往数量巨大,电泳后几乎是连续排 列的,无法进行分析比较。
扩增DNA的限制性酶切片段长度多态性(Amplification
一.RFLP分析技术
(一)基本原理
限制性酶切片段长度多态性技术,简称 RFLP技术(restriction fragment length
polymorphism,RFLP)
1. 限制性核酸内切酶(restriction endonuclease) 能够识别DNA双链上特异的碱基序列并能将之切断。 不同的限制性内切酶有各自特异的识别序列,一般 为4~8个碱基对 。
Y染色体——在哺乳动物的染色体中Y染色体似乎是
最少保守性的。
用不同的限制性内切酶和DNA探针,可以揭示出Y
染色体特异性片段的多态性。
四.线粒体的DNA多态性
线粒体DNA属于核外基因,表现为非孟德尔规律 遗传。
人mtDNA D环一端347bp的序列分析资料证明,两 个无关个体间,这一段mtDNA序列完全相同的可能 性只有0.27%(即1/370)。
采用合适的限制性内切酶 切出一系列长度的DNA片段
根据片段是否长度一致来推测其DNA序列是否相同 用标记好的相应的DNA探针与这些片段进行杂交 图谱反映出基因组DNA碱基序列组成是否存在差
异。
RFLP——通过核酸的限制性酶切片段长度多态性 来揭示DNA碱基序列组成的不同,因而称为限制性
多态性实验报告
多态性实验报告多态性实验报告引言:多态性是面向对象编程中的一个重要概念,它允许对象在不同的上下文中表现出不同的行为。
本实验旨在通过一系列的实验来探究多态性的概念和应用,以及它对程序设计的影响。
实验一:多态性的概念在本实验的第一部分,我们首先对多态性的概念进行了深入的研究。
多态性是指同一个方法在不同的对象上表现出不同的行为。
例如,在一个动物类中,不同的子类(如狗、猫、鸟)都可以实现一个叫声的方法,但是每个子类的叫声是不同的。
这种灵活性使得我们可以编写更加通用和可扩展的代码。
实验二:多态性的应用在第二个实验中,我们通过一个图形绘制的例子来展示多态性的应用。
我们创建了一个抽象的图形类,并派生出不同的子类,如圆形、矩形和三角形。
每个子类都实现了一个绘制方法,但是绘制的方式和结果是不同的。
通过将这些不同的子类对象存储在一个通用的图形数组中,我们可以轻松地遍历并绘制每个图形,而无需关心具体的子类类型。
实验三:多态性的优势和局限性在第三个实验中,我们深入研究了多态性的优势和局限性。
多态性使得代码更加灵活和可扩展,可以减少代码的重复性。
然而,过度使用多态性可能会导致代码的复杂性增加,降低程序的性能。
因此,在设计和实现中需要权衡多态性的使用。
实验四:多态性在实际项目中的应用在最后一个实验中,我们通过一个实际的项目来展示多态性的应用。
我们选择了一个图书管理系统作为例子,其中包括了不同类型的图书,如小说、教材和杂志。
通过使用多态性,我们可以统一管理这些不同类型的图书,并实现一套通用的借阅和归还功能。
这样,无论新增了多少种类型的图书,我们都可以轻松地扩展和修改代码。
结论:通过本次实验,我们深入了解了多态性的概念和应用,并通过一系列的实验来验证和探究多态性在程序设计中的作用。
多态性的使用可以使代码更加灵活和可扩展,但也需要在设计和实现中进行合理的权衡。
在实际项目中,多态性可以帮助我们更好地管理和处理不同类型的对象,提高代码的可维护性和可扩展性。
继承与多态性
[标准实验报告]南昌航空大学实验报告2011 年11 月12 日课程名称:面向对象程序设计B 实验名称:继承与多态性班级:10202327 姓名:吕潇同组人:指导教师评定:签名:一、实验目的根据现有类建立新类;学习构造基类和虚函数的用法。
二、实验内容(本次实验要完成的内容)应用VC++6.0的编辑环境构造一个类Jhtx及其派生类,该类主要实现关于几何图形的基本操作。
对于基类“几何图形”,有求面积、求体积的函数(纯虚函数),其派生类圆和矩形主要有初始化(构造函数),求面积,求周长操作,类圆的派生类圆球和圆柱有求表面积、体积操作。
试在主函数中分别定义圆、圆球、圆柱以及矩形的对象,并调用其成员函数实现其相应操作。
三、概要设计(实现的功能,函数原型及说明等)对于基类“几何图形”,有求面积、求体积的函数(纯虚函数),其派生类圆和矩形主要有初始化(构造函数),求面积,求周长操作,类圆的派生类圆球和圆柱有求表面积、体积操作。
试在主函数中分别定义圆、圆球、圆柱以及矩形的对象,并调用其成员函数实现其相应操作。
Geometry(double c) 基类构造函数初始化{r=c;}virtual void GetArea()=0; 求面积的纯虚函数原型virtual void GetPeriMeter()=0; 求周长的纯虚函数原型virtual void GetColume()=0; 求体积的纯虚函数原型四、详细设计(程序中核心代码,并要有相应注释——函数功能、参数说明、重要语句的注解)class Geometry{ 抽象基类public:Geometry(double c){r=c;}//~Geometry();virtual void GetArea()=0; 分别用于求面积周长virtual void GetPeriMeter()=0; 体积的纯虚函数原型virtual void GetColume()=0;protected:double r;};--------------------------------------------------------------class Rectangle:public Geometry{public: 矩形派生类virtual void GetColume(){} 纯虚函数的重定义Rectangle(double a,double b,double c):Geometry(c){x=a;y=b; } 构造函数初始化//~Rectangle();void GetArea() 求面积的纯虚函数{ 在派生类中的重定义cout<<"The Rectangle's Area is";cout<<x*y<<endl;}void GetPeriMeter(){ 纯虚函数重定义cout<<"The Rectangle's PeriMeter is";cout<<2*(x+y)<<endl;}protected:double x;double y;};-------------------------------------------------------------------class Circle:public Geometry{ 派生类圆的类public:virtual void GetColume(){}Circle(double c):Geometry(c) 构造函数{}//~Circle();virtual void GetArea() 求面积的纯虚函数的重定义{cout<<"The Circle's Area is";cout<<3.14*r*r<<endl;}virtual void GetPeriMeter() 求周长的纯虚函数的重定义{cout<<"The Circle's PeriMeter is";cout<<2*3.14*r<<endl;}};------------------------------------------------------------class Ball:public Circle{ 圆的派生类球的类public:Ball(double c):Circle(c){ }virtual void GetArea() 求面积的纯虚函数的重定义{cout<<"The Ball's Surface Area is";cout<<6*3.14*r*r<<endl;}virtual void GetColume() 求体积的纯虚函数的重定义{cout<<"The Ball's V olume is";cout<<(4/3)*3.14*r*r*r<<endl;}//~Ball();};-------------------------------------------------------------------class Column:public Circle{ 园的派生类圆柱的类public:Column(double h,double c):Circle(c){H=h;}virtual void GetArea() 求面积的纯虚函数的重定义{cout<<"The Column's Surface Area is";cout<<(2*3.14*r*r)+(2*3.14*r*H)<<endl;}virtual void GetColume() 求体积的纯虚函数的重定义{cout<<"The Column's V olume is";cout<<3.14*r*r*H<<endl;}//~Column();protected:double H;};五、程序调试(包括调试过程中遇到的问题及解决方法、程序测试数据及结果)class Ball:public Circle{Public:Ball(double c):Circle(c){ }virtual void GetArea(){cout<<"The Ball's Surface Area is";cout<<6*3.14*r*r<<endl;}virtual void GetColume(){cout<<"The Ball's Volume is";cout<<(4/3)*3.14*r*r*r<<endl;}//~Ball();};在派生类球的类中将 public 写成Public导致错误不能编译成功六、实验总结(对实验过程中出现的问题进行总结、指出程序中还需进一步完善的地方、在本次实验中学到的内容及自身不足等)对本次试验进行总结:1.应对实验整体架构进行了解。
面向对象分析与设计UML实验报告
(此文档为word格式,下载后您可任意编辑修改!)《面向对象分析与设计UML》实验报告实验及作业一一、实验目的了解软件工程等基础知识,为后续的统一建模语言UML知识的学习做好准备工作。
二、实验设备与环境装有Visio、RationalRose的计算机。
三、实验内容1、复习阐述“软件工程开发模型”的相关概念,并分析各种模型的优缺点,写成实验报告。
2、熟悉UML软件设计工具Visio、Rational Rose的安装及环境四、实验过程及结果经过上网搜索相关信息进行了解软件工程开发模型的相关概念与优缺点一,什么是软件工程概念模型模型就是抽象,就是有意识地忽略事物的某些特征。
抽象带来的好处是能够反映模型中元素之间的关系,清晰把握大局。
概念模型是模型的一种,简单说就是抽象程度极高的一种模型。
软件工程概念模型是对软件工程领域进行抽象描述的模型,它能够使我们对软件工程有一个完整把握。
二,软件工程开发模型的种类以及优缺点瀑布模型由W.Royce于1970年首先提出。
根据软件工程生存周期各个阶段的任务,瀑布模型从可行性研究开始,逐步进行阶段性变换,直至通过确认测试并得到用户确认的软件产品为止。
瀑布模型上一阶段的变换结果是下一阶段变换的输入,相邻两个阶段具有因果关系,紧密联系。
一个阶段的失误将蔓延到以后的各个阶段。
为了保障软件开发的正确性,每一阶段任务完成后,都必须对它的阶段性产品进行评审,确认之后再转入下一阶段的工作。
评审过程发现错误和疏漏后,应该及时反馈到前面的有关阶段修正错误或弥补疏漏,然后再重复前面的工作,直至某一阶段通过评审后再进入下一阶段。
瀑布模型如图1.1所示。
瀑布模型有许多优点,如可强迫开发人员采用规范的方法;严格规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证等。
但瀑布模型也存在缺点,其主要表现在:①在软件开发的初始阶段指明软件系统的全部需求是困难的,有时甚至是不现实的。
糙皮侧耳的AFLP分析及多态性片段的鉴定
专业
硕士生 孟宇
遗传学
指导教师
张义正 教授
摘 要
侧耳 ( l rt ) uo s 属于白腐真菌类.除了具有食用价值外,因其可以通过 Pe u 分泌木质素降解酶, 漆酶等从而有效地氧化木质素和芳香族污染物, 最终将其
朋友们表示深深的感谢! 这篇论文是在导师张义正教授的悉心指导下完成的, 在此首先向张老师表示衷心的感谢.张老师对科学事业
执着追求的精神,对学习和科研 「 : 的严谨态度,使我在 学业上获益良多;张老师对我的严格要求和谆谆教诲,
也将是我今后人生道路上永远的财富. 在三年来的学习研究过程中,我得到了工海燕副教 授,程昌凤副教授,刘德明副教授,赵云副教授,向永 录老师的多方指导和启迪,在此表示真挚的谢意.
ot au w i dl a te i ca c rt o gns uou it moe s et hc e gt h m n r t ii f u Pert s d r s h e e a h a e sc e l s h e
o t gnsR s r i or ro hv s end sm Perl sa s f eu. e c n l o t y e ee ot e u u ti h e e a h u a a r a c b r u o l o s n r
护,对你们的帮助我会点滴铭记于心,永远不会忘记. 最后,感谢一直无私关爱,理解并支持我的家人.谨 将此论文献给一直给予我巨大支持的父母和姐姐 !
孟 宇 2 0 年 5月 03
第一章 糙皮侧耳的生长速率比 较和鉴定
摘 要
本研究选取 4 1 株不同产地, 不同生长速度的 糙皮侧耳菌株, 经由P A固 D 体培养和C A液体培养对比, M 以期获得能快速, 大量产生糙皮侧耳菌丝体并 无培养基杂质的方法. 此外, 还对不同菌株的生长速度及影响糙皮侧耳生长的 因素进行了 分析比较, 初步鉴定了其中的快生型, 慢生型菌株. 经研究发现闽 3 生长速度最快; 1 义平, X , A 3 农大 1 等为生长 1 较快的菌株; 佛罗里达, 1 P7 生长速度最慢.为下一步 A L F P分析种间多态性提供了良 好的供提取总 D A N
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四多态性一、实验目的1、掌握运算符重载的基本方法。
2、掌握友元运算符函数和成员运算符函数的使用方法及两者之间的不同。
3、学习虚函数的定义与使用方法。
4、了解静态多态性和动态多态性。
5、学习使用虚函数和继承实现动态多态性。
二、试验内容1、编写一个程序,要求:(1)生明一个类Complex(复数类),定义类Complex的两个对象c1和c2,对象c1通过构造函数直接指定复数的实部和虚部(类私有数据成员为double类型:real和imag)为2.5及3.7,对象c2通过构造函数直接指定复数的实部和虚部为4.2及6.5;(2)定义友元运算符重载函数,它以c1、c2对象为参数,调用该函数时能返回两个复数对象相加操作;(3)定义成员函数print,调用该函数时,以格式“real+imag i”输出当前对象的实部和虚部,例如:对象的实部和虚部分别是4.2和6.5,则调用print函数输出格式为:4.2+6.5 i;(4)编写主程序,计算出复数对象c1和c2相加结果,并将其结果输出。
#include<iostream.h>class complex{private:double real;double imag;public:complex(double r=0.0,double i=0.0);void print();friend complex operator+(complex &a,complex &b);};complex::complex(double r,double i){real=r;imag=i;}complex operator+(complex &a,complex &b) {complex temp;temp.imag=a.imag+b.imag;temp.real=a.real+b.real;return temp;}void complex::print(){cout<<real<<"+"<<imag<<"i"<<endl;}int main(){complex c1(2.5,3.7),c2(4.2,6.5),c3;c3=c1+c2;c3.print();return 0;}2、编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。
要求将小时范围限制在大于等于0,分钟范围限制在0~59分,秒钟范围限制在0~59秒。
提示:时间类Time的参考框架如下:class Time{public:Time(int h=0,int m=0,int s=0);//构造函数Time operator+(Time &);//运算符重载函数,实现两个时间的相加Time operator+();//运算符重载函数,实现两个时间的相加void disptime();//显示时间函数private:int hours,minutes,seconds;};#include<iostream.h>#include<string>class Time{public:Time(int h=0,int m=0,int s=0);//构造函数Time operator+(Time &);//运算符重载函数,实现两个时间的相加Time operator+();//运算符重载函数,实现两个时间的相加void disptime();//显示时间函数private:int hours,minutes,seconds;};Time::Time(int h,int m,int s){hours=h;minutes=m;seconds=s;}Time Time::operator +(Time &t1){ Time p;p.seconds=seconds+t1.seconds;int t=p.seconds;p.seconds=t%60;p.minutes=minutes+t1.minutes+t/60;int m=p.minutes;p.minutes=m%60;p.hours=hours+t1.hours+m/60;return p;}void Time::disptime(){ cout<<hours<<"时"<<minutes<<"分"<<seconds<<"秒"<<endl;}int main(){Time t1(12,20,33),t2(5,17,58),t3;t3=t1+t2;cout<<"时间t1"<<endl;t1.disptime();cout<<"时间t2"<<endl;t2.disptime();cout<<"相加后的时间:"<<endl;t3.disptime();return 0;}3、写一个程序,定义抽象类Container:class Container{protected:double radius;public:Container(double r);//抽象类Container的构造函数virtual double surface_area()=0;//纯虚函数surface_areavirtual double volume()=0;//纯虚函数volume};【要求】建立3个继承Container的派生类:Sphere(球体)、Cylinder(圆柱体)、Cube (正方体),让每一个派生类都包含虚函数surface_area()和volume(),分别用来球体、圆柱体和正方体的表面积和体积。
要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。
#include<iostream>using namespace std;class Container{protected:double radius;public:Container(double r);//抽象类Container 的构造函数virtual double surface_area()=0;//纯虚函数surface_area virtual double volume()=0;//纯虚函数volume};Container::Container(double r=0){ radius=r; }class Sphere:public Container {public:Sphere(double x):Container(x) { }double surface_area(){ return 4*radius*radius*3.14;}double volume(){ return 0.75*3.14*radius*radius*radius; }};class Cylinder:public Container{public:Cylinder(double h,double r):Container(r){ hight=h; }double surface_area(){ return 2*3.14*radius*radius+2*3.14*radius*hight; }double volume(){ return 3.14*radius*radius*hight; }protected:double hight;};class Cube:public Container {public:Cube(double r):Container(r){ }double surface_area(){ return 6*radius*radius; }double volume(){ return radius*radius*radius;}};int main(){Container *p;Cube a(6.0);p=&a;cout<<"正方体表面积:"<<p->surface_area()<<endl;cout<<"正方体体积:"<<p->volume()<<endl;Sphere b(5.0);p=&b;cout<<"球表面积:"<<p->surface_area()<<endl;cout<<"球体积:"<<p->volume()<<endl;Cylinder c(6.0,5.0);p=&c;cout<<"圆柱表面积:"<<p->surface_area()<<endl;cout<<"圆柱体体积:"<<p->volume()<<endl;return 0;}4、设计一个点类Point,其结构如下:(1)Point类表示二维平面点的集合,数据成员由点的坐标值表示,类型为int;(2)三个重载构造函数:a)一个是无参数的构造函数;b)一个是带坐标值参数的构造函数,实现对数据成员的初始化;c)一个是copy构造函数,实现用一个对象初始化本对象;(3)两个重载成员函数:a)v oid offert(int , int );实现点的偏移,参数是偏移量;b)v oid offert(Point &);实现点的偏移,参数Point类对象是偏移量;(4)6个运算符重载函数:a)b ool operator = = (Point &);判断两个点对象是否相等;b)v oid operator + =(Point &);将两个点对象相加;c)v oid operator ++();将当前对象自增1(前缀);d)v oid operator ++(int );将当前对象自增1(后缀);e)f riend Point& operator + (Point &, Point &);将两个点对象相加;f)friend Point &operator − (Point &, Point &);将两个点对象相减;(5)两个成员函数提供实例对象对私有数据的访问:a)i nt GetX();b)i nt GetY();(6)公有成员函数void Display();输出对象的数据成员;#include<iostream.h>class Point{private:int x;int y;public:Point(){ x=0;y=0;}Point(int a,int b){ x=a;y=b;}Point(const Point &p){x=p.x;y=p.y;}void offert(int,int);void offert(Point &);bool operator==(Point &);void operator+=(Point &);void operator++();void operator++(int);friend Point& operator+(Point &, Point &);friend Point& operator-(Point &, Point &);void display();int GetX(){return x;}int Gety(){return y;}};void Point::offert(int a,int b){x+=a;y+=b;}void Point::offert(Point &p){ x+=p.x;y+=p.y;}bool Point::operator==(Point &p){if(x==p.x&&y==p.y)cout<<"=="<<endl;elsecout<<"!="<<endl;return 0;}void Point::operator+=(Point &p){x+=p.x;y+=y+p.y;}void Point::operator++(){x++;}void Point::operator++(int){ y++;}Point&operator+(Point &a,Point &b){a.x=a.x+b.x;a.y=a.y+b.y;return a;}Point&operator-(Point &a,Point &b){a.x=a.x-b.x;a.y=a.y-b.y;return a;}void Point::display(){cout<<'('<<x<<','<<y<<')'<<endl;}int main(){Point a(2,2),b(4,5),c(3,1),d,e,f,g(5,3),h;cout<<"a坐标";a.display();cout<<"b坐标";b.display();cout<<"c坐标";c.display();cout<<"g坐标";g.display();cout<<"判断a b两点坐标是否相等\n";if(a==b)cout<<"a=b"<<endl;elsecout<<"a!=b"<<endl;cout<<"a b两个点对象相加:"<<endl;d=a+b;d.display();cout<<"b c两个点对象相减:"<<endl;e=b-c;e.display();c++;cout<<"c坐标后缀加1"<<endl;c.display();++g;cout<<"g坐标前缀加1"<<endl;g.display();return 0;}。