java类的设计动物类_第1页
java类的设计动物类_第2页
java类的设计动物类_第3页
java类的设计动物类_第4页
java类的设计动物类_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业Java大作业实践报告Animal公司的分析与设计 广东药学院一Animal类的设计要求:根据实际需求设计Animal类,并完成以下功能:输出全部信息对2个实例进行比较使用static对共同的属性进行修饰实现从键盘输入的功能实现单态设计模式加异常信息加入多线程使用集合(可选)二设计场景,实现其要求场景设计在一间公司,拥有很多的小猫小狗等宠物可以出卖。输出9只动物的全部信息,举例代表全部动物的信息,并用List集合存放所有信息。可以选择输入动物的信息来增加动物的数量,其中

2、输入错误不能添加,并且进行了异常处理。可以对动物的属性进行比较,例如年龄,名字等。用到了方法的重载。公司的动物的总数为共同属性和来源,用static修饰。公司实现单态模式设计,所有动物都是属于这间公司的。可以从键盘输入许多不同的选择,选择对动物进行不同的操作,并且所有的输入都进行了异常的处理。采用多线程售卖动物,实现三个窗口同时售卖,并且进行了同步设计,保证安全。利用ArrayList集合收集动物的年龄信息,并对其进行分析。三.接口与类的基本设计接口Animal(包涵四个抽象方法):String print();/姓名+年龄String talk();/姓名+他的声音String all();

3、/全部信息void input();/输入数据抽象父类A:实现接口Animal1.私有属性private String name;private int age;private String voice;private String beizhu;/备注共同属性static String house=KFC;static int num=200;2.构造方法3.抽象方法public abstract String print();4. 重写接口的部分抽象方法5.对于封装的属性对外提供函数Dog类:继承A类private String spec;/这个对象含有自己独特属性构造方法重写父类的方法:

4、public String talk()重写父类的抽象方法:public String print()Cat类:继承A类1.构造方法2.重写父类的抽象方法:public String print()MyTh类(实现 Runnable):进行多线程售卖动物Company类:单态设计模式T类:测试功能(主函数)四其他函数功能块1. public static void anlyage(ArrayList age) /对年龄进行分析2. public static void randonsale(List name,Dog d)/随即卖掉X只动物3. public static void duosa

5、le(int num) /开创3个窗口,多线程同步售卖4. public static void campare(String a,String b) /两个实例的对比 public static void campare(int a,int b)/ 方法的重载五全部代码块import java.util.*;/.总接口.interface Animal/总接口String print();/姓名+年龄String talk();/姓名+他的声音String all();/全部信息void input();/输入数据/.动物的父类. abstract class A implements An

6、imal/动物的父类 private String name;private int age;private String voice;private String beizhu;/备注static String house=KFC;static int num=200;/父类的构造方法public A()public A(String name)setname(name);public A(String name,int age)setname(name);setage(age);public A(String name,int age,String voice,String beizhu)

7、setname(name);setage(age);setvoice(voice);setbeizhu(beizhu);/重写抽象方法public abstract String print();/留给子类喜欢独自扩充的抽象方法public String talk()return getname()+ +getvoice();public String all() return getname()+ +getage()+ +getvoice()+ +getbeizhu()+ +this.house;public void input()/输入数据Scanner input1=new Scann

8、er(System.in);try /=input1.next();setname(input1.next();setage(input1.nextInt();setvoice(input1.next();setbeizhu(input1.next();A.num+;catch( Exception e)System.out.println(e);setage();System.out.println(输入有误);/A.num-;/封装void setname(String name) = name;String getname()return name;v

9、oid setage(int age)this.age=-;if(age=0)this.age= age;elseA.num-;trythrow new IllegalArgumentException(年龄输入有误,不能为负数);/在方法内部抛出异常IllegalArgumentExceptioncatch(IllegalArgumentException e)System.out.println(e.getMessage();int getage()return age;void setvoice(String voice) this.voice=voice;String getvoice

10、()return voice;void setbeizhu(String beizhu) this.beizhu=beizhu;String getbeizhu()return beizhu;/.单态设计模式.class Company/单态设计模式static String cname;private Company(String cname)ame=cname; /单态设计模式核心static Company p=new Company(CKFC);static public Company getC() return p; ;/.大狗类.class Dog extends A/继承pri

11、vate String spec;/这个对象含有自己独特属性void setspec(String spec) this.spec=spec;String getspec()return spec;Company p1=Company.getC();/小狗的构造方法public Dog()public Dog(String name)super(name);public Dog(String name,int age)super(name,age);public Dog(String name,int age,String voice,String beizhu)super(name,age,

12、voice,beizhu);public Dog(String name,int age,String voice,String beizhu,String spec)super(name,age,voice,beizhu);setspec(spec);public String talk()/子类“重写”父类的方法 return getname()+:+getvoice()+:+getspec()+ +ame;/重写抽象方法public String print() return getname()+ +getage();/.猫咪类.class Cat extends Apublic Cat

13、()public Cat(String name)super(name);public Cat(String name,int age)super(name,age);public Cat(String name,int age,String voice,String beizhu)super(name,age,voice,beizhu);/重写抽象方法public String print() return getname()+ +getbeizhu();/.多线程.class MyTh implements Runnableint num;MyTh();MyTh(int num)this.

14、num=num;public void run()while (num0)sale();System.out.println(sale stop!);synchronized void sale()/同步方法 if ( num0) tryThread.sleep(0,1);catch(Exception e) System.out.println(sale :+Thread.currentThread().getName()+ :+ num-); ;class T/.主函数.public static void main(String args) System.out.println(输出动物

15、的部分或全部信息);System.out.println(姓名 +年龄 +声音 +备注 +公司 );Dog d1=new Dog(dwangcai,6,wanwan,nothing, i am a good dog!);Dog d2=new Dog(dxiaohei,9,wanwan,weakness);Dog d3=new Dog(dxiaocai,3,wanwan,young);Dog d4=new Dog(dming,3,wanwan,young);Cat c1=new Cat(cmiao,5,miaomiao,nothing);Cat c2=new Cat(cxiaomi,1,miao

16、miao,nothing);Cat c3=new Cat(capple,3,miaomiao,nothing);Cat c4=new Cat(cwindy,4,miaomiao,nothing);Cat c5=new Cat(cmm,2,miaomiao,nothing);/信息数组List name=new ArrayList();name.add(d1.all();name.add(d2.all();name.add(d3.all();name.add(d4.all();name.add(c1.all(); name.add(c2.all(); name.add(c3.all(); nam

17、e.add(c4.all(); name.add(c5.all(); for(int i=0;iname.size();i+)System.out.println(name.get(i);/测试输入对象System.out.println(n增加动物数量);int flag=0;System.out.print(输入0拒绝添加,输入1增加:);Scanner input1=new Scanner(System.in);tryflag=input1.nextInt();catch( Exception e)System.out.println(e);System.out.println(输入有误

18、);int j=flag;if(j=1)Cat c10=new Cat();c10.input();System.out.println(c10.all();else System.out.println(No Need!);/年龄数组ArrayList age=new ArrayList();age.add(d1.getage();age.add(d2.getage();age.add(d3.getage();age.add(d4.getage();age.add(c1.getage(); age.add(c2.getage(); age.add(c3.getage(); age.add(c

19、4.getage(); age.add(c5.getage(); /对年龄进行分析anlyage( age);/随即卖掉X只动物randonsale(name,d1); /多线程duosale(d1.num);/.函数功能块./方法的重载public static void campare(String a,String b)System.out.println(a.equals(b);public static void campare(int a,int b)System.out.println(较大的值:+Math.max(a,b);System.out.println(较小的值:+Ma

20、th.min(a,b);/多线程public static void duosale(int num) System.out.print(多线程需要买所有的动物吗?按0否认,其他数字确定:);int i=0;Scanner input1=new Scanner(System.in);tryi=input1.nextInt();catch( Exception e)System.out.println(e);System.out.println(输入有误);int j=i;if(j!=0)Runnable r=new MyTh(num);new Thread(r).start();new Thr

21、ead(r).start();new Thread(r).start();elseSystem.out.println(over!);/卖多少只动物(随即抽取)public static void randonsale(List name,Dog d)System.out.print(n需要卖多少只动物,请输入:(数量少于+d.num+):);int num=0;Scanner input1=new Scanner(System.in);trynum=input1.nextInt();catch( Exception e)System.out.println(e);System.out.pri

22、ntln(输入有误);d.num=d.num-num;System.out.println(卖+num+只动物:);Collections.shuffle(name);tryfor(int i=0;inum;i+)System.out.println(name.get(i);catch (Exception e)System.out.println(e);System.out.println(最后剩余的数目为:+d.num+nn);/对动物年龄进行分析public static void anlyage(ArrayList age)System.out.println(n对动物年龄进行分析);

23、Collections.sort(age);System.out.println(n对动物年龄从低到高排序结果:);for(int i=0;iage.size();i+)System.out.print(age.get(i)+);System.out.println( n动物最大的是年龄:+Collections.max(age);/最大数值System.out.println(n动物最小的是年龄:+Collections.min(age);/最小数值System.out.println(n综合分析“);/*int a=(int)Collections.max(age);for(int i=0

24、;i=a;i+)System.out.println(年龄为+i+岁的有:+Collections.frequency(age,i);*/*/增加动物数量public static void addanimal()System.out.println(n增加动物数量);int i=0;System.out.print(请输入需要添加的数目:);Scanner input1=new Scanner(System.in);tryi=input1.nextInt();catch( Exception e)System.out.println(e);System.out.println(输入有误);f

25、or(int j=0;ji;j+)Cat c10=new Cat();c10.input();System.out.println(c10.all()*/*/输出两个实例比较System.out.println(输出两个实例比较);campare(d1.getname(),c1.getname();campare(d1.getage(),c1.getage();System.out.println();*/*/测试单态设计模式System.out.println(测试单态设计模式);Company p1=Company.getC();Company p2=Company.getC();Company p3=Company.getC();System.out.println(ame);System.out.println(p1=p2);System.out.println(p2=p3);ame=xxx;System.out.println(ame);*/*小猫Cat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论