实验三 面向对象程序设计
学号:
《面向对象程序设计》实验报告与习题册
2014 / 2015 学年第1学期
系别计算机科学与技术系
专业计算机软件
班级
姓名
指导教师
目录
实验三面向对象程序设计
一实验目的与要求
1、编写java应用程序,完成类、对象的创建及使用;完成成员方法和构造方法的创建及使用。
2、掌握权限访问控制符public和private的用法;实现类的继承;实现变量的隐藏和方法的重写;实现成员方法和构造方法的重载;掌握多态的意义,学会多态在程序设计中的应用。
3、编写java应用程序,完成接口的实现;体会抽象类和接口的区别;体会接口的继承原理;将接口和类分别定义在不同的包中,掌握包的使用。
二实验内容
1、定义一个学生类,为其添加成员变量为学号、年龄、姓名、班级和学校,其中学号为最终变量,学校为类变量;为其添加构造方法以完成对学生对象的初始化;为其添加成员方法getInfo(),作用是获取学生的所有信息;在main 中创建一个学生对象,并验证学生类中所有方法。
public class Student{
final int sid=1210431087;
int age;
String name;
int grade;
public static String school="合肥师范学院";
Student(){
age = 22;
name = "何楚伟";
grade = 1;
}
public void getInfo(){
System.out.println("学生学号:"+ sid);
System.out.println("学生年龄:"+ age);
System.out.println("学生姓名:"+ name);
System.out.println("所在班级:"+ grade);
System.out.println("所在学校:"+ school);
}
public static void main(String[] args){
Student t = new Student();
t.getInfo();
}
}
2、在第一题的基础上,添加三个成员方法以用来改变年龄、姓名、班级的值;添加五个成员方法以用来分别获取学号、年龄、姓名、班级和学校的值;在main中创建一个学生对象,并验证这些方法。
package javasy;
public class Student {
private static final int ID=1210431087;
private int age;
private String name;
private String grade;
private School school;
public Student(int age, String name, String grade, School school) { this.age = age;
https://www.360docs.net/doc/3b14690847.html, = name;
this.grade = grade;
this.school = school;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
https://www.360docs.net/doc/3b14690847.html, = name;
}
public void setGrade(String grade) {
this.grade = grade;
}
public void setSchool(School school){
this.school = school;
}
public static int getId() {
return ID;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public String getGrade() {
return grade;
}
public School getSchool() {
return school;
}
public void getInfo(){
System.out.println("该学生的姓名为:"+name);
System.out.println("该学生的学号为:"+ID);
System.out.println("该学生的年龄为:"+age);
System.out.println("该学生的班级为:"+grade);
System.out.println("该学生的学校为:"+https://www.360docs.net/doc/3b14690847.html,);
}
public static void main(String[] args) {
School xx = new School();
https://www.360docs.net/doc/3b14690847.html, = "合肥师范学院";
Student xs = new Student(22,"何楚伟","12级软件一班",xx) ;
xs.getInfo();
System.out.println("*******************");
xs.setAge(21);
xs.setGrade("计算机软件一班");
xs.setName("何楚伟");
System.out.println("该学生的姓名为:"+xs.getName());
System.out.println("该学生的学号为:"+xs.getId());
System.out.println("该学生的年龄为:"+xs.getAge());
System.out.println("该学生的班级为:"+xs.getGrade());
System.out.println("该学生的学校为:"+xs.getSchool().name);
}
}
class School{
String name;
}
3、修改学生类中成员的访问权限,体会public和private两种访问权限的用法。
答:public 使用对象:类、接口、成员
介绍:无论它所处在的包定义在哪,该类(接口、成员)都是可以访问的。
Private 使用对象:成员
介绍:成员只可以在定义它的类中被访问。
4、定义一个People类,它包含属性有姓名name和性别sex,为People 类派生出一个子类Employee类,为其增加两个属性年龄age和工资等级grade,工资等级分A、B、C三个等级,在子类中增加用于打印出员工的姓名、性别、年龄和工资等级的方法print,编写一个应用程序,测试定义的类。
public class People
{
private String name;
private String sex;
public void setName(String name){
https://www.360docs.net/doc/3b14690847.html, = name;
}
public void setSex(String sex){
this.sex=sex;
}
public String getName(){
return name;
}
public String getSex(){
return sex;
}
public static void main(String[] args) {
Employee ee = new Employee();
ee.setName("何楚伟");
ee.setSex("男");
ee.setAge(22);
ee.setGrade('B');
ee.print();
}
}
class Employee extends People
{
private int age;
private char grade;
public void setAge(int age){
this.age=age;
}
public void setGrade(char grade){
this.grade=grade;
}
public char getGrade() {
return grade;
}
public int getAge(){
return age;
}
public void print(){
System.out.println("该员工的姓名为:"+getName());
System.out.println("该员工的性别为:"+getSex());
System.out.println("该员工的年龄为:"+getAge());
System.out.println("该员工的工资级别为:"+getGrade());
}
}
5、定义一个People类,它包含属性有姓名name和性别sex和年龄age,一个构造方法,用来初始化这三个属性;定义一个People类的子类Student,添加一个属性学好number,添加两个构造方法,一个有参构造方法,一个无参构造方法,他们都要调用父类的构造方法或本类的构造方法来完成对象的初始化,添加两个成员方法,一个是选课choose(),用来输出“我没有选课”,另一个是选课choose(String),用来选择由参数指定的课程。
public class People
{
String name;
char sex;
int age;
public People(){
https://www.360docs.net/doc/3b14690847.html,="何楚伟";
this.age=22;
this.sex='男';
}
public static void main(String[]args){
Student ss = new Student();
ss.choose("JAVA");
}
}
class Student extends People{
int number;
public Student(){
super();
}
public Student(int number) {
super();
this.number = number;
}
public void choose(){
System.out.println("我没有选课");
}
public void choose(String choose){
System.out.println(name+"所选课程为"+choose);
}
}
6、创建一个接口Shape,其中有抽象方法area,类Circle、Rectangle实现area方法计算其面积并返回,又有Star类实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型的方法isStar;在main方法中创建一个数组,根据随机数向其中加入Shape的不同子类对象,然后将数组元素依次取出,判断其是否为Star类,如是返回其个数,否则返回其面积。
import java.util.*;
interface Shape{
public abstract double Area();
}
class Circle implements Shape{
double PI = 3.1415926;
double r;
double area;
public Circle(double r)
{
this.r = r;
}
public double Area()
{
area = PI * r * r;
return area;
}
}
class Rectangle implements Shape{
double x;
double y;
double area;
public Rectangle(double x,double y)
{
this.x = x;
this.y = y;
}
public double Area()
{
area = x * y;
return area;
}
}
class Star implements Shape{
public double Area(){
return 0.0;
}
public static boolean isStar(Shape s){
return (s instanceof Star) ? true : false;
}
}
public class ShapeInterface {
public static void main(String []args){
Scanner s = new Scanner(System.in);
System.out.println("请输入圆的半径:");
Circle c =new Circle(s.nextDouble());
System.out.println("圆的面积:"+c.Area());
System.out.println("请输入矩形的长:");
double x = s.nextDouble();
System.out.println("请输入矩形的宽:");
double y = s.nextDouble();
Rectangle rect = new Rectangle(x,y);
System.out.println("矩形的面积:"+rect.Area());
Star star = new Star();
int num =1;//用来计算Star类的数目
double []a = new double [7];
for(int i = 0;i < a.length;i ++ ){
double j =(double) (Math.random() * 9);
a[i] = j;
System.out.print(a[i] + "\t");
if(a[i] <= 3.0){
Circle c1 = new Circle(a[i]);
System.out.println("不是Star类,圆的面积为:"+c1.Area());
}
else if(a[i] <= 6.0){
Rectangle r1 = new Rectangle(a[i],a[i] + 1.0);
System.out.println("不是Star类,长方形的面积为:"+r1.Area());
}
else {
star = new Star();
System.out.println("是Star类:");
num ++;
}
}
System.out.println("Star类数目为:"+ num);
}
}
运行结果
三实验内容中遇到的问题、解决方法和体会。
答:本次实验,我们一共用了三节实验课。在本次试验的过程中,遇到了很多问题,主要由于对类和类的继承和构造方法不是很熟练,导致实验过程中出现了很多的问题,很多要求不知道如何去实现。后来在同学和老师的帮助下,完成代码的输入与验证。正如老师说
的那样,如果现在我们自己不能写出一段代码,就应该为自己的前途思考。所以我想在今后实验中能够独立完成所有实验,多练习,多上机。
第三方检测实验室如何良性发展
第三方检测实验室如何良性发展? 近几年,国家连续出台激励政策,大力推动第三方检验检测产业发展。当外资实验室在中国不断扩大版图的同时,国内检验检测实验室也出现了一片繁荣景象。但是,我国实验室数量虽然增长迅速,规模却普遍偏小,竞争力较弱,为生存剑走偏锋的机构并不鲜见,既不能保守诚信的从业底线,也扰乱了整体市场秩序。那么,处在时代变革期的第三方检验检测实验室,该如何在机遇与挑战下找准位置?如何在激烈的市场竞争中实现良性发展?针对上述问题,近日,国家认监委实验室与检测管理部监督管理处处长谢澄,接受了《中国纤检》记者的专访。 《中国纤检》:据您了解,我国的检验检测行业目前已经发展到哪个阶段?还存在哪些问题?今后可能会向什么方向发展? 谢澄:我国检验检测机构经过近30年的高速发展,目前数量众多,分布广泛,层级上从中央到地方都有,行业和地域的覆盖状况总体较好,基本适应我国经济发展的需要,正在从数量扩张向质量提升的阶段转变。但产业体量总体规模不大,能力水平总体不高,还存在巨大的发展空间。近些年国家为服务业发展提供了诸多扶持政策,对检验检测业发展有利,我国检验检测行业也因而受益,机构数量增长迅速,就业人口不断增加,行业产值不断增大。近几年,我国经济环境总体不太好,但检验检测业仍在迅速发展,说明我们国家的经济增长已经从量到了质的阶段,国家和社会公众对产品质量要求不断提升非常需要检验检测服务的有效支撑,供给侧结构性改革也需要这方面的支撑支持,这对检验检测行业来说既是机会,也是挑战。 不过,检验检测毕竟是小众行业,与制造业相比体量很小,在一些政策执行上容易边缘化。同时检验检测市场总体增量不够,放开不足,行政干预以及行政色彩仍然十分浓厚,市场竞争十分激烈。这种情况下,可能会诱发一些问题,包括重复建设、条块分割、恶性竞争、低价竞标等。这些问题如果解决不好,可能会影响行业的健康发展。 当然,任何时代都会有问题,目前面临的问题都是发展中的问题,是可以解决的。我们需要有信心熬过这个阶段。我预测,将来中国的检验检测市场将会有一次比较大的洗牌,很多小微型检验检测机构难以适应竞争,会慢慢消亡,或者被并购到一些大的检测集团中,我国检验检测机构的数量这几年增长到一个峰值后,未来几年会逐渐回落并开始出现下降,8~10年后,一半左右目前存在的机构会消失,中国检验检测机构的总数量维持在2万家左右会是一个比较合理的规模。 其实,检验检测只是技术性服务的一个类别,国外只做检验检测的机构很少,很多机构不只做检验检测,还做其他业务,比如设计、策劃、咨询、认证、培训等综合性服务。当然,也有一些小机构只做检验检测。我认为,只有综合多元化的服务才有生命力,单纯做检验检测,服务太单一,可替代性太强,不容易生存,除非做得特别专业。目前国内的检验检测机构大多只做常规检验检测,其他服务做得少,做技术研发也比较少,能够面对市场竞争的能力普遍较差。这也是检验检测机构改革难的原因,很多机构都是国家投资建立的,如果这些机构消亡,涉及国有资产损失的问题,所以现在名存实亡的僵尸实验室为数不少。同时,我国检验检测市场行政干预仍然很多,行政色彩依然很浓,体制机制的约束还不少。例如事业单位制的检验检测机构,要想异地设立分支机构,几乎是一个不可能的任务。而外资、民营的实验室在中国发展的限制反而少一些,只要依法登记,到哪儿都能设立机构,所以我们看到近几年民营、外资检验检测机构是我国检验检测机构行业数量增长的主力军,而体系内的很多检验检测机构发展反而比较缓慢。
键盘与LED显示实验
实验三键盘及LED显示实验 一、实验内容 利用8255可编程并行接口控制键盘及显示器,当有按键按下时向单片机发送外部中断请求(INT0,INT1),单片机扫描键盘,并把按键输入的键码一位LED显示器显示出来。 二、实验目的及要求 (一)实验目的 通过该综合性实验,使学生掌握8255扩展键盘和显示器的接口方法及C51语言的编程方法,进一步掌握键盘扫描和LED显示器的工作原理;培养学生一定的动手能力。 (二)实验要求 1.学生在实验课前必须认真预习教科书与指导书中的相关内容,绘制流程图,编写C51语言源程序,为实验做好充分准备。 2.该实验要求学生综合利用前期课程及本门课程中所学的相关知识点,充分发挥自己的个性及创造力,独立操作完成实验内容,并写出实验报告。 三、实验条件及要求 计算机,C51语言编辑、调试仿真软件及实验箱50台套。 四、实验相关知识点 1.C51编程、调试。 2.扩展8255芯片的原理及应用。 3.键盘扫描原理及应用。 4.LED显示器原理及应用。
5.外部中断的应用。 五、实验说明 本实验仪提供了8位8段LED 显示器,学生可选用任一位LED 显示器,只要按地址输出相应的数据,就可以显示所需数码。 显示字形 1 2 3 4 5 6 7 8 9 A b C d E F 段 码 0xfc 0x60 0xda 0xf2 0x66 0xb6 0xbe 0xe0 0xfe 0xf6 0xee 0x3e 0x9c 0x7a 0x9e 0x8e 六、实验原理图 01e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1GND2DS29 LG4041AH 234 567 89A B C D E F e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1 GND2DS30 LG4041AH 1 2 3 4 5 6 7 8 JP4112345678 JP4712345678JP42 SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH A C B 12345678 JP92D 5.1K R162 5.1K R163VCC VCC D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC7 10 RD 5WR 36A09A18RESET 35CS 6 U36 8255 D0D1D2D3D4D5D6D7WR RD RST A0A1PC5PC6PC7 PC2PC3PC4PC0PC1CS 12345678JP56 12345678JP53 12345678 JP52 PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7 (8255 PB7)(8255 PB6)(8255 PB5)(8255 PB4)(8255 PB3)(8255 PB2)(8255 PB1)(8255 PB0) (8255 PC7)(8255 PC6)(8255 PC5)(8255 PC4)(8255 PC3)(8255 PC2)(8255 PC1)(8255 PC0) (8255 PA0) (8255 PA1) (8255 PA2) (8255 PA3) (8255 PA4) (8255 PA5) (8255 PA6) (PA7) I N T 0(P 3.2) I N T 0(P 3.3) 七、连线说明
什么是面向对象程序设计
1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。
第三方环境监测机构实验室建设指南
第三方环境检测机构实验室建设指南 (老兵) 为贯彻落实党的十八大关于全面深化改革的战略部署,培育壮大环境监测服务市场,推进政府购买环境监测服务,引导社会力量参与环境监测,第三方环境监测机构的建设逐渐成为当前实验室建设的热点。现针对第三方环境监测机构必要的场所、技术人员及监测仪器设备提出以下建议。 1.明确拟开展的检测项目 为避免盲目投资造成采购来的仪器闲置浪费,现以最常规和检测仪器不太贵的检测项目为例,建议通过认证开展的检测项目分别是: 1.1水和废水检测项目 水温、pH、电导率、透明度、色度、流量、悬浮物、全盐量(总残渣或溶解性残渣)、游离氯和总氯、硫化物、氰化物、氟化物、氨氮、溶解氧、高锰酸盐指数、化学需氧量、五日生化需氧量、总磷、总氮、铜、铅、锌、镉、总砷、总汞、总硒、总铬(六价铬)、挥发酚、石油类(或动植物油)、阴离子表面活性剂、氯化物、硝酸盐、硫酸盐、铁、锰、嗅和味、浊度、总硬度、粪大肠菌群、亚硝酸盐。上述项目除包含《地表水环境质量标准》(GB3838-2002)表1和表2规定的必测项目,还包括了其它常见的和测试方法较为简单的指标。 1.2空气和废气 总悬浮颗粒物、可吸入颗粒物、二氧化硫、氮氧化物(含二氧化氮和一氧化氮)、烟(粉)尘、烟气参数、烟气黑度、一氧化碳、氟化物、恶臭、氨、铅、砷、硫化氢、铬酸雾、硫酸雾、和甲醛等。 1.3土壤和水系沉积物 水分、pH、镉、汞、砷、铅、铬(含六价铬)、铜、锌、镍、全磷、全氮、钾、阳离子交换量和有机质含量等。 1.4 固体废物 铜、锌、镉、铅、总铬、铬(六价)、汞、铍、钡、镍、总银、砷、氟化物和氰化物等。 1.5噪声和振动 环境噪声、工业企业厂界噪声、建筑施工场界噪声、社会生活噪声、、铁路边界噪声、噪声源(设备噪声)、机动车噪声振动
键盘扫描显示实验原理及分析报告
键盘扫描显示实验原理及分析报告 一、实验目的-------------------------------------------------------------1 二、实验要求-------------------------------------------------------------1 三、实验器材-------------------------------------------------------------1 四、实验电路-------------------------------------------------------------2 五、实验说明-------------------------------------------------------------2 六、实验框图-------------------------------------------------------------2 七、实验程序-------------------------------------------------------------3 八、键盘及LED显示电路---------------------------------------------14 九、心得体会------------------------------------------------------------- 15 十、参考文献--------------------------------------------------------------15