Java实验第二次

目录

  • 1. 定义一个类MyProgram,包含两个属性:一个是private的整型属性data、一个是private的String类型属性str,封装这两个属性的四个方法setData( )和getData( )、setStr( )和getStr( );将这两个属性转变为字符串的方法是toString( )。编写程序,使用MyProgram类,实现数据的访问和修改,并调用toString( )方法显示该类的属性。
  • 2. 在Vehicle类的基础上创建一个Tractor(拖拉机)类,它不仅拥有journey、wheelNum、LoadNum、driveSpeed四种属性和DriveAt()方法,而且还拥有自己的plough()方法,在该方法中要求能够显示journey、wheelNum、LoadNum三个属性的值。请编写测试类,运行DriveAt()、plough()方法。Vehicle类的程序代码:
  • 3. 组合实现汽车类【以下为选做题】
  • 4. 有图形接口Shape,参照圆Circle类补充完整正方性Square和三角形Triangle类,并分析运行结果。
  • 5. 有两个类:MobileManagement和Mobile,分别描述如表2.1所示两部手机名称及价格,类MobileManagement在包cn.edu.cqust.test4中,而Mobile在包cn.edu.cqust.test4.data中。它们代码如下。运行MobileManagement.java,使程序能够显示两部手机的价格和数量。
  • 6.USB接口程序设计
  • 7. 定义一个类实现银行帐户的概念,包括的变量有“帐号”"和“存款余额”,包括的方法有“存款”、“取款”、“查询余额”和“显示帐号”。定义主类,创建帐户类的对象,并完成相应操作。
  • 8. 利用面向对象的编程思想编写程序,模拟一个军队作战,军队里有各种兵种,如步兵,坦克兵和炮兵等,每种兵种攻击敌人的方式不一样。要求建立各种各样的兵种,每种10个,至少3种,然后建立一个军官,军官也会上战场攻击敌人,但是军官还有一种行为就是发命令,军官发令后,所有的兵种的每个士兵,都必须去攻击敌人。最后程序运行的效果就是一个军官一发命令,所有的士兵包括军官都去打仗,显示每个兵种攻击敌人的方式。

1. 定义一个类MyProgram,包含两个属性:一个是private的整型属性data、一个是private的String类型属性str,封装这两个属性的四个方法setData( )和getData( )、setStr( )和getStr( );将这两个属性转变为字符串的方法是toString( )。编写程序,使用MyProgram类,实现数据的访问和修改,并调用toString( )方法显示该类的属性。

public class MyProgram {public static void main(String[] args) {// TODO Auto-generated method stubMyProgram2 my = new MyProgram2(111, "222");System.out.println(my.toString());}}class MyProgram2 {private int date;private String str;public MyProgram2() {}public MyProgram2(int date, String str) {this.date = date;this.str = str;}public int getDate() {return date;}public void setDate(int date) {this.date = date;}public String getStr() {return str;}public void setStr(String str) {this.str = str;}@Overridepublic String toString() {return "MyProgram{" +"date=" + date +", str='" + str + '\'' +'}';}}

2. 在Vehicle类的基础上创建一个Tractor(拖拉机)类,它不仅拥有journey、wheelNum、LoadNum、driveSpeed四种属性和DriveAt()方法,而且还拥有自己的plough()方法,在该方法中要求能够显示journey、wheelNum、LoadNum三个属性的值。请编写测试类,运行DriveAt()、plough()方法。Vehicle类的程序代码:

public class Vehicle {public float journey;public int wheelNum;public int loadNum;public int driveSpeed;public Vehicle(){journey = 100.3f;wheelNum = 4;loadNum = 1;}public void driveAt(int speed){if(speed >= 60){System.out.println("你的速度行驶过快,重新以40速度行驶");driveSpeed = 40;}if(speed <= 60){driveSpeed = speed;}}public void plough(){System.out.println("journey:"+journey);System.out.println("wheelNum:"+wheelNum);System.out.println("loadNum:"+loadNum);System.out.println("现在的driveSpeed:"+driveSpeed);}}
package text2.vehicle;public class Vehicle_text extends Vehicle{public static void main(String[] args) {// TODO Auto-generated method stubVehicle v = new Vehicle();v.driveAt(80);v.plough();System.out.println("==============");Vehicle v2 = new Vehicle();v.driveAt(30);v.plough();}}

3. 组合实现汽车类【以下为选做题】

3 问题描述:一辆Car有(has)四个轮子(Wheels)和一个发动机(Engine)。现在要求用组合方法设计类Car、类Wheel和类Engine。
(1) 类Engine 有字符串属性type记录发动机的型号;
有构造方法,可设置发动机的型号;
有方法start()启动引擎(输出下面样例中包含发动机型号和“starts”的字符串)。
(2)类Wheel有字符串属性type记录轮胎的型号,有整数类型属性index记录当前轮胎编号(1:front-left,2:front-right,3:back-left,4:back-right);
有构造方法,可设置轮胎的型号和编号;
有方法roll()表示轮胎正在转动(输出下面样例中包含轮胎型号、轮胎位置和“rolling”的字符串)。
(3)类Car有字符串属性model记录轿车的型号,有属性wheels[]和engine,分别是Wheel类对象数组和Engine类对象;
有构造方法,参数是三个字符串,分别表示轿车的型号、轮胎型号和发动机的型号;
有方法changeWheel()可以改变指定轮胎的型号;
有方法start(),先输出下面样例中包含轿车型号和“firing”的字符串,然后调用engine的start(),再调用所有轮胎的roll(),最后显示轿车型号和“running”。

public class Car {private String model;   //model记录轿车的型号private String wheel;     //轮子private String engine;      //发动机private String []wheels=new String[5];  //Wheel类对象数组public Car(String model, String wheel, String engine) {   //构造方法super();this.model = model;this.wheel = wheel;this.engine = engine;for(int i=0;i<wheels.length;i++){     //把wheel的数据循环传入wheel对象数组中wheels[i]=wheel;}}public void  changeWheel(int index,String type){   //整数类型属性index记录当前轮胎编号wheels[index]=type;     //通过index编号,修改轮胎类型}public void start(){System.out.println("Car"+model+"firing!");Engine e=new Engine(this.engine);e.start();for(int i=0;i<wheels.length;i++){Wheel w=new Wheel(i,wheels[i]);w.roll(i,wheels[i]);}System.out.println("Car"+model+"running");}
}
package text2.car;public class Engine {private String type;public Engine(String type) {super();this.type = type;}public void start(){System.out.println("Engine"+this.type+"  starts!");}
}
package text2.car;public class Wheel {private String type;private int index;public Wheel(int index,String type) {super();this.type = type;this.index = index;}public void roll(int index,String type){this.type = type;this.index = index;if(this.index==1){System.out.println("Wheel front-lef-"+type+">-rolling");}if(this.index==2){System.out.println("Wheel front-right-"+type+"-rolling");}if(this.index==3){System.out.println("Wheel back-left-"+type+"-rolling");}if(this.index==4){System.out.println("Wheel back-right-"+type+"-rolling");}}}
package text2.car;public class Test
{public static void main(String[] args){String wheel="轮胎";String model="宝马";String engine="发动机";Car car1=new Car(model,wheel,engine);car1.start();System.out.println("=======================");model="芜湖";engine="发动机2";Car car2=new Car(model,wheel,engine);car2.changeWheel(2,"奥迪");car2.start();}
}

4. 有图形接口Shape,参照圆Circle类补充完整正方性Square和三角形Triangle类,并分析运行结果。

interface Shape {void draw();void erase();
}
package text2.shape;class Circle implements Shape {@Overridepublic void draw() {System.out.println("Circle.draw()");}@Overridepublic void erase() {System.out.println("Circle.erase()");}
}
package text2.shape;public class Shapes {public static Shape randShape() {switch ((int) (Math.random() * 3)) {default: // To quiet the compilercase 0:return new Circle();case 1:return new Square();case 2:return new Triangle();}}public static void main(String[] args) {Shape[] s = new Shape[9];// Fill up the array with shapes:for(int i = 0; i < s.length; i++)s[i] = randShape();// Make polymorphic method calls:for(int i = 0; i < s.length; i++)s[i].draw();}}
package text2.shape;class Square implements Shape {@Overridepublic void draw() {System.out.println("Square.draw()");}@Overridepublic void erase() {System.out.println("Square.erase()");}
}
package text2.shape;class Triangle implements Shape {@Overridepublic void draw() {System.out.println("Triangle.draw()");}@Overridepublic void erase() {System.out.println("Triangle.erase()");}
}

5. 有两个类:MobileManagement和Mobile,分别描述如表2.1所示两部手机名称及价格,类MobileManagement在包cn.edu.cqust.test4中,而Mobile在包cn.edu.cqust.test4.data中。它们代码如下。运行MobileManagement.java,使程序能够显示两部手机的价格和数量。

[基本要求] 在空白处填写相关代码并修改上面程序,使程序能够显示两部手机的价格和数量,运行结果如图2-11 所示。

表2.1 手机价格表
序号 名称 价格(元)
1 荣耀8 1099
2 小米Max2 1699

public class Mobile {/** Holds the name of the mobile. */private String name;/** Holds the price of the mobile. */private float price;/** Creates a new mobile object. */public Mobile(String name, float price) {this.name = name;this.price = price;}/** Gets the name of the mobile. */public String getName() {return name;}/** Gets the price of the mobile. */public float getPrice() {return price;}
}
package text2.mobile;class MobileManagement {/** Defines the entry point of the application. */public static void main(String[] args) {// Creates two mobile phone objects.Mobile mobile1 = new Mobile("荣耀8", 1099);Mobile mobile2 = new Mobile("小米Max2", 1699);System.out.println("Mobile"+ "[品牌:"+mobile1.getName()+","+"价格:"+mobile1.getPrice()+"元]");System.out.println("Mobile"+ "[品牌:"+mobile2.getName()+","+"价格:"+mobile2.getPrice()+"元]");}
}

6.USB接口程序设计

通常人们使用的计算机上都有USB接口,鼠标、键盘、麦克风等都可以连接到USB接口中使用。在计算机启动时,这些设备也随之启动;当计算机关闭时,这些设备也会随之关闭。鼠标、键盘、麦克风等USB接口设备都启动后,计算机才开机成功;当这些设备都关闭后,计算机才关机成功。
读所编写的USB接口程序,该程序模拟了计算机的开机和关机过程,写出运行结果。

public class Computer {private USB[] usbArr = new USB[4];//向计算机上连接一个USB设备public void add(USB usb) {//遍历所有的插槽for (int i = 0; i < usbArr.length; i++) {//如果发现一个空的if (usbArr[i] == null) {usbArr[i] = usb;break;}}}//计算的开机功能public void powerOn(){//遍历所有的插槽for(int i=0;i<usbArr.length;i++){//如果发现有设备if(usbArr[i]!=null){//将USB设备启动usbArr[i].turnOn();}}System.out.println("计算机开机成功!!!");}//计算的关机功能public void powerOff(){//遍历所有的插槽for(int i=0;i<usbArr.length;i++){//如果发现有设备if(usbArr[i]!=null){//将USB设备关闭usbArr[i].turnOn();}}System.out.println("计算机关机成功!!!");}
}package text2.usb;public class KeyBoard implements USB {@Overridepublic void turnOn() {System.out.println("键盘启动了......");}@Overridepublic void turnOff() {System.out.println("键盘关闭了......");}
}
package text2.usb;public class Mic implements USB {@Overridepublic void turnOn() {System.out.println("麦克风启动了......");}@Overridepublic void turnOff() {System.out.println("麦克风关闭了......");}
}
package text2.usb;public class Mouse implements USB{@Overridepublic void turnOn() {System.out.println("鼠标启动了......");}@Overridepublic void turnOff() {System.out.println("鼠标关闭了......");}
}
package text2.usb;public class Test {public static void main(String[] args) {//实例化计算机对象Computer computer=new Computer();//向计算机中添加鼠标、麦克风、键盘computer.add(new Mouse());computer.add(new Mic());computer.add(new KeyBoard());//启动计算机computer.powerOn();//关闭计算机computer.powerOff();}
}
package text2.usb;public interface USB {void turnOn();//启动void turnOff();//关闭}

7. 定义一个类实现银行帐户的概念,包括的变量有“帐号”"和“存款余额”,包括的方法有“存款”、“取款”、“查询余额”和“显示帐号”。定义主类,创建帐户类的对象,并完成相应操作。

public class Bank {private String zhanghao;private double Num;public Bank(String zhanghao, double Num) {this.zhanghao = zhanghao;this.Num = Num;}public String getZhanghao() { //显示账户return zhanghao;}public double getNum() {  //查询余额return Num;}public double cunNum(double p) {  //存款double i = getNum();    //余额提取为iif (p >= 0) {double m = i + p;    //m为存款后的钱this.Num = m;return m;}this.Num = i;return i;}public double quNum(double n) {  //取款double i = getNum();if (n >= i) {System.out.println("余额不足,取款失败");} else {double m = i - n;this.Num = m;return m;}this.Num = i;return i;}public void getid() {System.out.println("账号:" + zhanghao);}public void getmoney() {System.out.println("您还有余额" + Num+"元");}}
package text2.bank;public class Bank_text {public static void main(String[] args) {// TODO Auto-generated method stubBank bank = new Bank("2020520100",100);bank.getid();   //查询bank.getmoney();System.out.println("===========");double j = 20;bank.cunNum(j);   //存款20元System.out.println("存款20");bank.getmoney();System.out.println("===========");double i = 60;System.out.println("取款:"+i);bank.quNum(i);    //取款bank.getmoney();System.out.println("===========");bank.getid();bank.getmoney();}
}

8. 利用面向对象的编程思想编写程序,模拟一个军队作战,军队里有各种兵种,如步兵,坦克兵和炮兵等,每种兵种攻击敌人的方式不一样。要求建立各种各样的兵种,每种10个,至少3种,然后建立一个军官,军官也会上战场攻击敌人,但是军官还有一种行为就是发命令,军官发令后,所有的兵种的每个士兵,都必须去攻击敌人。最后程序运行的效果就是一个军官一发命令,所有的士兵包括军官都去打仗,显示每个兵种攻击敌人的方式。

abstract class AllBing {   //所有士兵的抽象类private String Type;public AllBing(String Type){this.Type=Type;}public AllBing() {}public String getType() {return Type;}public void setType(String type) {Type = type;}public abstract void attck();
}
package text2.army;public class Infantry extends AllBing  {   //步兵类String i;@Overridepublic void attck() {System.out.println(i+"用步枪攻击");}public Infantry(String i) {this.i = i;}
}
package text2.army;public class Tank_corps  extends AllBing {  //坦克类String i;@Overridepublic void attck() {System.out.println(i+"用坦克攻击");}public Tank_corps(String i) {super();this.i = i;}
}
package text2.army;public class The_officer extends AllBing{  //军官类String i ;public The_officer(String i) {this.i = i;}@Overridepublic void attck() {System.out.println("军官攻击");}}
package text2.army;public class Artillery extends AllBing  {   //炮兵类String i;@Overridepublic void attck() {System.out.println(i+"用大炮攻击");}public Artillery(String i) {this.i = i;}
}
package text2.army;import java.util.ArrayList;
import java.util.Iterator;class People{                     //控制士兵的添加和显示ArrayList<AllBing> list=new ArrayList<>();   //传入的list类型为AllBingpublic void addIt(AllBing ab){      //添加allbing的值到list中list.add(ab);}public void addIt(The_officer b){    list.add(b);}public void display(){       //用Iterator 输出list的值Iterator<AllBing> it=list.iterator();while(it.hasNext()){it.next().attck();   //通过next输出后,对每一个进行attck方法调用。}}}
package text2.army;public class Text extends People{public static void main(String[] args) {People people=new People();The_officer junGuan=new The_officer("军官");AllBing b1=new Infantry("步兵1");AllBing b2=new Infantry("步兵2");AllBing b3=new Infantry("步兵3");AllBing b4=new Infantry("步兵4");AllBing b5=new Infantry("步兵5");AllBing b6=new Infantry("步兵6");AllBing b7=new Infantry("步兵7");AllBing b8=new Infantry("步兵8");AllBing b9=new Infantry("步兵9");AllBing b10=new Infantry("步兵10");AllBing c1=new Tank_corps("坦克1");AllBing c2=new Tank_corps("坦克2");AllBing c3=new Tank_corps("坦克3");AllBing c4=new Tank_corps("坦克4");AllBing c5=new Tank_corps("坦克5");AllBing c6=new Tank_corps("坦克6");AllBing c7=new Tank_corps("坦克7");AllBing c8=new Tank_corps("坦克8");AllBing c9=new Tank_corps("坦克9");AllBing c10=new Tank_corps("坦克10");AllBing f1=new Artillery("大炮兵1");AllBing f2=new Artillery("大炮兵2");AllBing f3=new Artillery("大炮兵3");AllBing f4=new Artillery("大炮兵4");AllBing f5=new Artillery("大炮兵5");AllBing f6=new Artillery("大炮兵6");AllBing f7=new Artillery("大炮兵7");AllBing f8=new Artillery("大炮兵8");AllBing f9=new Artillery("大炮兵9");AllBing f10=new Artillery("大炮兵10");people.addIt(b1);people.addIt(b2);people.addIt(b3);people.addIt(b4);people.addIt(b5);people.addIt(b6);people.addIt(b7);people.addIt(b8);people.addIt(b9);people.addIt(b10);people.addIt(c1);people.addIt(c2);people.addIt(c3);people.addIt(c4);people.addIt(c5);people.addIt(c6);people.addIt(c7);people.addIt(c8);people.addIt(c9);people.addIt(c10);people.addIt(f1);people.addIt(f2);people.addIt(f3);people.addIt(f4);people.addIt(f5);people.addIt(f6);people.addIt(f7);people.addIt(f8);people.addIt(f9);people.addIt(f10);junGuan.attck();people.display();}
}

java第二次实验——接口继承……相关推荐

  1. Java第二次实验——类的层次结构(1)

    Java第二次实验第一题 一. 实验目的 二.实验要求 三.代码展示 1. 结构层次 2. empoyee.java 3.SalariedEmployee.java 4.CommissionEmplo ...

  2. Java第二次实验报告——Java面向对象程序设计

    北京电子科技学院(BESTI) 实    验    报    告 课程名称:java程序设计实验      班级:1352         姓名:洪韶武      学号:20135219 成绩:   ...

  3. 《java第二次实验》

    (一)学习总结 1.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么? public class Test {public static void main(String ar ...

  4. 南京邮电大学java实验报告_南京邮电大学java第二次实验报告

    三.实验内容 1. 寻找并输出11~999之间的数m,它满足m.m2.m3均为回文数.回文数是各位数字左右对称的整数.判断是否为回文要求通过编写方法来完成. packageTest;/*** @Aut ...

  5. java第二次上机实验程序_20165104-JAVA第二次实验

    20165104孟凡斌-JAVA第二次实验 本次实验在同学得帮助下,成功地在周一实验课之前完成,并在课后向同学请教,有了更深得领悟. 以下是我的实验报告 一.面向对象程序设计1--单元测试和TDD 实 ...

  6. 《Java程序设计》实验报告——Java的接口与继承

    浙江理工大学 <Java程序设计>  实验报告  20 19-20 20学年第 1学期      学  院 信息学院 班  级 计算机科学与技术18(3) 姓  名 申屠志刚 学  号 2 ...

  7. Java模式设计卖电脑实验报告,面向对象(Java)实验0继承、接口和多态

    <面向对象(Java)实验0继承.接口和多态>由会员分享,可在线阅读,更多相关<面向对象(Java)实验0继承.接口和多态(11页珍藏版)>请在金锄头文库上搜索. 1.电子信息 ...

  8. java实验报告答案_Java实验报告--继承与接口

    学院 专业 班.学号 姓名 教师评定_________________ 实验题目 继承与接口 一. 实验目的与要求 实验目的: 1.掌握类的继承关系. 2.掌握接口的定义与使用. 实验要求: 按下列要 ...

  9. JAVA实验6继承与接口,java实验6继承与接口

    少年易学老难成,一寸光阴不可轻- 百度文库 1 山西大学计算机与信息技术学院 姓名学号专业班级 课程名称 Java实验实验日期成绩指导教师批改日期实验名称实验 6 继承与接口 [实验目的] 1.掌握j ...

最新文章

  1. php人员排班程序,人员排班软件操作步骤
  2. class没有发布到tomcat_Java 类在 Tomcat 中是如何加载的?
  3. 201709-5 除法 ccf(树状数组)
  4. t-sne 流形_流形学习[t-SNE,LLE,Isomap等]变得轻松
  5. 二分图匹配之匈牙利算法
  6. php类常量的特点,php类常量是什么?类常量用法详解
  7. 最小生成树之prim
  8. Python中用户管理(用户的登陆、用户的增删改查)
  9. Log4j中的AsyncAppender的实现原理
  10. linux删除更新的系统内核,Linux系统如何删除旧内核
  11. vscode过滤pyc文件
  12. Atitit 控制中心快速启动面板quick launcher
  13. 什么邮箱垃圾邮件少?邮箱反垃圾系统是什么?
  14. 新春将至,“牛”气冲天
  15. R语言 时间序列arima模型
  16. 大数据开发:基于Hadoop的数据分析平台
  17. centos6 安装redis
  18. Linux 安装rabbitMQ guest账号登录总是提示失败
  19. “第四产业”升级,中软国际“蝶变”
  20. PHP新闻内容分页类

热门文章

  1. 生活随笔:怀念在广州大学的日子
  2. 贪婪洞窟2服务器维护,贪婪洞窟2在4月19日更新了什么 最新维护内容介绍
  3. 网站优化有哪些方法?
  4. 哗哗地照样子写词语_哗哗地照样子写词语
  5. echarts词云图显示不全和少词问题
  6. python伪原创工具开发_PHP实现免费的在线伪原创工具-toolfk程序员在线工具网
  7. springboot 同一服务器运行同一服务session冲突问题处理
  8. dell inspiron 只有一个飞行模式 没有wifi_开飞行模式能帮手机充电加快?
  9. MATLAB中产生周期方波信号
  10. ART模式和Dalvik模式的异同