Java程序设计实验2Word文档格式.docx
《Java程序设计实验2Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java程序设计实验2Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
批改时间:
实验1面向对象编程实验
一、实验目的和要求
(1)理解Java概念、掌握JDK环境配置
(2)熟悉Java开发过程
(3)掌握Java面向对象编程基础:
封装、继承、多态
(4)掌握Java接口编程,理解开发模式
二、实验仪器和设备
奔腾以上个人计算机,windows操作系统。
配置好JDK环境,安装集成开发环境(Eclipse)
三、实验内容与过程
1、JDK环境配置
2、面向对象的封装性
范例:
设计一个表示学生的类,里面有学生的三项成绩:
计算机成绩、数学成绩、英语成绩。
要求可以求总分、平均分、最高分、最低分,并且可以输出一个学生的完整信息。
代码如下:
classStudent{
privateStringname;
privateintage;
privatefloatenglish;
privatefloatcomputer;
privatefloatmath;
publicStudent(){}
publicStudent(Stringn,inta,floate,floatc,floatm){
this.setName(n);
this.setAge(a);
this.setEnglish(e);
this.setComputer(c);
this.setMath(m);
}
publicfloatsum(){
returnenglish+computer+math;
publicfloatavg(){
returnthis.sum()/3;
publicfloatmax(){
floatmax=computer>
math?
computer:
math;
max=max>
english?
max:
english;
returnmax;
publicfloatmin(){
floatmin=computer<
min=min<
min:
returnmin;
publicStringgetInfo(){
return"
学生信息:
\n"
+
"
\t|-姓名:
"
+this.getName()+"
\n"
\t|-年龄:
+this.getAge()+"
\t|-数学成绩:
+this.getMath()+"
\t|-英语成绩:
+this.getEnglish()+"
\t|-计算机成绩:
+this.getComputer();
publicvoidsetName(Stringn){
name=n;
publicvoidsetAge(inta){
age=a;
publicvoidsetEnglish(floate){
english=e;
publicvoidsetComputer(floatc){
computer=c;
publicvoidsetMath(floatm){
math=m;
publicStringgetName(){
returnname;
publicintgetAge(){
returnage;
publicfloatgetEnglish(){
returnenglish;
publicfloatgetComputer(){
returncomputer;
publicfloatgetMath(){
returnmath;
}
publicclassExecDemo{
publicstaticvoidmain(Stringargs[]){
Studentstu=newStudent("
张三"
30,89.0f,91.0f,87.0f);
System.out.println("
总分:
+stu.sum());
平均分:
+stu.avg());
最高分:
+stu.max());
最低分:
+stu.min());
System.out.println(stu.getInfo());
对照范例写出如下题目:
(1)编写并测试一个代表地址的Address类,包括以下的属性:
国家、省份、城市、街道、邮编。
可以从此地址类中得到一个完整的地址信息。
(2)定义并测试一个代表员工的Employee类。
它的属性包括“员工姓名”、“员工号码”、“员工基本薪水”,它的方法包括“构造方法”、“获取员工姓名”、“获取员工号码”、“获取员工基本薪水”、“设置员工姓名”、“设置员工号码”、“设置员工基本薪水”、所有员工信息的输出getInfo。
(3)、定义一个圆形类,可以返回圆的面积与周长。
classCircle{
成员变量半径r
构造方法
成员函数设置和获取半径
计算周长
计算面积
所有信息输出
定义一个矩形类,返回矩形的面积与周长
(4)、思考设计:
一个人有一本书,一本书属于一个人。
//一个人有一本书,一本书属于一个人
//类新的类别、类型定义新的数据类型
//两个类的关系独立的两个类使用
classPerson{
privateStringname;
privateintage;
privateBookbook;
//一个人有一本书
publicPerson(){
publicPerson(Stringname,intage){
this.name=name;
this.age=age;
publicvoidsetBook(Bookbook){
this.book=book;
publicBookgetBook(){
returnthis.book;
classBook{
privatefloatprice;
privatePersonperson;
//一本书属于一个人
publicBook(){
publicBook(Stringname,floatprice){
this.name=name;
this.price=price;
publicvoidsetPerson(Personperson){
this.person=person;
publicPersongetPerson(){
returnthis.person;
publicclassTestBP{
Personper=newPerson("
zhangsan"
20);
Bookbok=newBook("
Javaprogram"
20.0f);
per.setBook(bok);
bok.setPerson(per);
//一本书属于一个人
per.getBook().getPrice();
bok.getPerson().getName();
3、面向对象的继承性
范例:
要求定义一个数组类Array,里面定义了一个整型数组,但是此整型数组属于动态分配大小,即:
所有的大小由程序指定,并在此基础上实现以下的两个子类:
反转类:
可以将数组的内容反转排列
排序类:
可以对数组进行排序的操作
classArray{
privateinttemp[]=null;
//只是声明数组,但是大小未知
privateintfoot=0;
//用于保存下一个的记录点
publicArray(intlen){
if(len>
0){
this.temp=newint[len];
//此时大小由外部决定
}else{
this.temp=newint[1];
//至少开辟一个空间
}
publicbooleanadd(inti){//加入数据操作
if(this.foot<
this.temp.length){//还有空位
this.temp[this.foot]=i;
//加入内容
this.foot++;
//改变长度
returntrue;
//加入成功返回true
returnfalse;
//加入失败
publicint[]getArray(){//返回全部的数组
returnthis.temp;
classSortArrayextendsArray{
publicSortArray(intlen){
super(len);
publicint[]getArray(){
java.util.Arrays.sort(super.getArray());
//排序操作
returnsuper.getArray();
//返回的是排序后的内容
classReverseArrayextendsArray{
publicReverseArray(intlen){
intrt[]=newint[super.getArray().length];
//根据大小开辟新数组
intcount=rt.length-1;
for(intx=0;
x<
super.getArray().length;
x++){
rt[count]=super.getArray()[x];
count--;
returnrt;
publicclassArrayDemo{
ReverseArrayarr=newReverseArray(6);
System.out.println(arr.add(3));
System.out.println(arr.add(23));
System.out.println(arr.add
(1));
System.out.println(arr.add(5));
System.out.println(arr.add(6));
System.out.println(arr.add(8));
System.out.println(arr.add(11));
System.out.println(arr.add(16));
print(arr.getArray());
publicstaticvoidprint(inti[]){
i.length;
System.out.print(i[x]+"
、"
);
对照范例写出如下题目:
(1).创建GrandFather类,其中包括
a)属性:
姓名(name),年龄(age)
b)方法getGrandFather():
显示爷爷的信息
c)构造方法:
给爷爷的姓名,年龄赋值
(2).创建Father类,继承Grandfather类
a)属性:
除了继承爷爷的属性以外,还要增加自己的属性:
“职业”(occupation)
b)构造方法:
显式调用父类的构造方法,为Father类的姓名和年龄赋初始值。
再为职业输入初始值。
c)方法getFather():
显示父亲的相关信息
(3).创建ClassMain()类,定义main()方法,构造GrandFather类的对象和Father类的对象,并分别显示详细信息。
3、面向对象多态性
范例:
计算柱体的体积。
柱体体积计算公式是:
底部面积乘以高度
柱体底部分为圆形和矩形
要求:
通过抽象类和多态实现
packagecn.jit.demo;
abstractclassBottom{//父类抽象类底部
publicabstractdoublecalculatorArea();
classCircleBottomextendsBottom{//圆形底
/**
*半径
*/
privatedoubleradius;
@Override
publicdoublecalculatorArea(){
returnMath.PI*radius*radius;
publicdoublegetRadius(){
returnradius;
publicvoidsetRadius(doubleradius){
this.radius=radius;
publicCircleBottom(doubleradius){
super();
classSquareBottomextendsBottom{//矩形底
privatedoublesideA;
privatedoublesideB;
publicdoublegetSideA(){
returnsideA;
publicvoidsetSideA(doublesideA){
this.sideA=sideA;
publicdoublegetSideB(){
returnsideB;
publicvoidsetSideB(doublesideB){
this.sideB=sideB;
returnsideA*sideB;
publicSquareBottom(doublesideA,doublesideB){
classZhuTi{//柱体类,完成形状的拼装
*底
privateBottombottom;
*高
privatedoubleheight;
*计算体积
*@return
publicdoublecalculatorVolumn(){
returnbottom.calculatorArea()*height;
publicZhuTi(Bottombottom,doubleheight){
this.bottom=bottom;
this.height=height;
publicBottomgetBottom(){
returnbottom;
publicvoidsetBottom(Bottombottom){
publicdoublegetHeight(){
returnheight;
publicvoidsetHeight(doubleheight){
publicvoidchangeBottom(Bottombottom){
publicclassVolumnTest{//测试类
publicstaticvoidmain(String[]args){
Bottombottom=newCircleBottom(1.0);
doubleheight=1.0;
ZhuTizhuTi=newZhuTi(bottom,height);
doubleresult=zhuTi.calculatorVolumn();
圆柱体的体积是:
+result);
bottom=newSquareBottom(1.0,1.0);
zhuTi.changeBottom(bottom);
result=zhuTi.calculatorVolumn();
立方体的体积是:
接口和多态的应用,例如:
电脑上实现了USB接口,U盘,打印机等等也都实现了此标准。
interfaceUSB{
publicvoidstart();
//开始工作
publicvoidstop();
//结束工作
classComputer{
publicstaticvoidplugin(USBusb){
usb.start();
usb.stop();
};
classFlashimplementsUSB{
publicvoidstart(){
U盘开始工作。
publicvoidstop(){
U盘停止工作。
classPrintimplementsUSB{
打印机开始工作。
打印机停止工作。
publicclassInterPolDemo02{
Computer.plugin(newFlash());
Computer.plugin(newPrint());
对照范例,写出以下程序:
(1)乐器(Instrument)的标准为弹奏(play),而乐器类型分为:
钢琴(Piano)和小提琴(Violin),各种乐器的弹奏方法各不同。
编写代码实现不同乐器的弹奏。
(2)计算机模拟
四、实验结果与分析(程序运行结果及其分析)
五、实验体会
类集实验学时:
4
实验地点:
实验成绩:
批改时间:
实验2类集
(1)理解类集概念
(2)熟悉Collection接口、List接口、Set接口和Map接口
(3)掌握ArrayList类、HashSet类和TreeSet类
(4)理解TreeMap、HashMap
1、类集应用
实现一个超市管理系统,要求可以添加货物,删除货物和查询货物:
。
publicinterfaceGoods{
publicStringgetName();
//得到商品名称
publicintgetCount();
//得到商品数量
publicfloatgetPrice();
//得到商品价格
}
publicclassBookimplementsGoods{
privateintcount;
publicBook(){
publicBook(Stringname,intcount,floatprice){
this.name=name;
this.count=count;
this.price=price;
pub