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

下载本文档

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

文档简介

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

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

3、input();/输入数据抽象父类A:实现接口Animal1.私有属性privateStringname;privateintage;privateStringvoice;privateStringbeizhu;/备注共同属性staticStringhouse=KFC;staticintnum=200;2.构造方法3.抽象方法publicabstractStringprint();4.重写接口的部分抽象方法5.对于封装的属性对外提供函数Dog类:继承A类privateStringspec;/这个对象含有自己独特属性构造方法重写父类的方法:publicStringtalk()重写父类的抽象方法:

4、publicStringprint()Cat类:继承A类1.构造方法2.重写父类的抽象方法:publicStringprint()MyTh类(实现Runnable):进行多线程售卖动物Company类:单态设计模式T类:测试功能(主函数)四其他函数功能块1.publicstaticvoidanlyage(ArrayListage)/对年龄进行分析2.publicstaticvoidrandonsale(Listname,Dogd)/随即卖掉X只动物3.publicstaticvoidduosale(intnum)/开创3个窗口,多线程同步售卖4.publicstaticvoidcampare(

5、Stringa,Stringb)/两个实例的对比publicstaticvoidcampare(inta,intb)/方法的重载五全部代码块importjava.util.*;/.总接口.interfaceAnimal/总接口Stringprint();/姓名+年龄Stringtalk();/姓名+他的声音Stringall();/全部信息voidinput();/输入数据/.动物的父类.abstractclassAimplementsAnimal/动物的父类privateStringname;privateintage;privateStringvoice;privateStringbeiz

6、hu;/备注staticStringhouse=KFC;staticintnum=200;/父类的构造方法publicA()publicA(Stringname)setname(name);publicA(Stringname,intage)setname(name);setage(age);publicA(Stringname,intage,Stringvoice,Stringbeizhu)setname(name);setage(age);setvoice(voice);setbeizhu(beizhu);/重写抽象方法publicabstractStringprint();/留给子类喜欢

7、独自扩充的抽象方法publicStringtalk()returngetname()+getvoice();publicStringall()returngetname()+getage()+getvoice()+getbeizhu()+this.house;publicvoidinput()/输入数据Scannerinput1=newScanner(System.in);try/=input1.next();setname(input1.next();setage(input1.nextInt();setvoice(input1.next();setbeizhu(input1.next();

8、A.num+;catch(Exceptione)System.out.println(e);setage(1000000);System.out.println(输入有误);/A.num-;/封装voidsetname(Stringname)=name;Stringgetname()returnname;voidsetage(intage)this.age=-999999;if(age=0)this.age=age;elseA.num-;trythrownewIllegalArgumentException(年龄输入有误,不能为负数);/在方法内部抛出异常IllegalArgumentExce

9、ptioncatch(IllegalArgumentExceptione)System.out.println(e.getMessage();intgetage()returnage;voidsetvoice(Stringvoice)this.voice=voice;Stringgetvoice()returnvoice;voidsetbeizhu(Stringbeizhu)this.beizhu=beizhu;Stringgetbeizhu()returnbeizhu;/.单态设计模式.classCompany/单态设计模式staticStringcname;privateCompany(S

10、tringcname)ame=cname;/单态设计模式核心staticCompanyp=newCompany(CKFC);staticpublicCompanygetC()returnp;/.大狗类.classDogextendsA/继承privateStringspec;/这个对象含有自己独特属性voidsetspec(Stringspec)this.spec=spec;Stringgetspec()returnspec;Companyp1=Company.getC();/小狗的构造方法publicDog()publicDog(Stringname)super(name);publicDo

11、g(Stringname,intage)super(name,age);publicDog(Stringname,intage,Stringvoice,Stringbeizhu)super(name,age,voice,beizhu);publicDog(Stringname,intage,Stringvoice,Stringbeizhu,Stringspec)super(name,age,voice,beizhu);setspec(spec);publicStringtalk()/子类“重写”父类的方法returngetname()+:+getvoice()+:+getspec()+ame;

12、/重写抽象方法publicStringprint()returngetname()+getage();/.猫咪类.classCatextendsApublicCat()publicCat(Stringname)super(name);publicCat(Stringname,intage)super(name,age);publicCat(Stringname,intage,Stringvoice,Stringbeizhu)super(name,age,voice,beizhu);/重写抽象方法publicStringprint()returngetname()+getbeizhu();/.多

13、线程.classMyThimplementsRunnableintnum;MyTh();MyTh(intnum)this.num=num;publicvoidrun()while(num0)sale();System.out.println(salestop!);synchronizedvoidsale()/同步方法if(num0)tryThread.sleep(0,1);catch(Exceptione)System.out.println(sale:+Thread.currentThread().getName()+:+num-);classT/.主函数.publicstaticvoidm

14、ain(Stringargs)System.out.println(输出动物的部分或全部信息);System.out.println(姓名+年龄+声音+备注+公司);Dogd1=newDog(dwangcai,6,wanwan,nothing,iamagooddog!);Dogd2=newDog(dxiaohei,9,wanwan,weakness);Dogd3=newDog(dxiaocai,3,wanwan,young);Dogd4=newDog(dming,3,wanwan,young);Catc1=newCat(cmiao,5,miaomiao,nothing);Catc2=newCa

15、t(cxiaomi,1,miaomiao,nothing);Catc3=newCat(capple,3,miaomiao,nothing);Catc4=newCat(cwindy,4,miaomiao,nothing);Catc5=newCat(cmm,2,miaomiao,nothing);/信息数组Listname=newArrayList();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(

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

17、ntj=flag;if(j=1)Catc10=newCat();c10.input();System.out.println(c10.all();elseSystem.out.println(NoNeed!);/年龄数组ArrayListage=newArrayList();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(c4.getage();ag

18、e.add(c5.getage();/对年龄进行分析anlyage(age);/随即卖掉X只动物randonsale(name,d1);/多线程duosale(d1.num);/.函数功能块./方法的重载publicstaticvoidcampare(Stringa,Stringb)System.out.println(a.equals(b);publicstaticvoidcampare(inta,intb)System.out.println(较大的值:+Math.max(a,b);System.out.println(较小的值:+Math.min(a,b);/多线程publicstati

19、cvoidduosale(intnum)System.out.print(多线程需要买所有的动物吗?按0否认,其他数字确定:);inti=0;Scannerinput1=newScanner(System.in);tryi=input1.nextInt();catch(Exceptione)System.out.println(e);System.out.println(输入有误);intj=i;if(j!=0)Runnabler=newMyTh(num);newThread(r).start();newThread(r).start();newThread(r).start();elseSy

20、stem.out.println(over!);/卖多少只动物(随即抽取)publicstaticvoidrandonsale(Listname,Dogd)System.out.print(n需要卖多少只动物,请输入:(数量少于+d.num+):);intnum=0;Scannerinput1=newScanner(System.in);trynum=input1.nextInt();catch(Exceptione)System.out.println(e);System.out.println(输入有误);d.num=d.num-num;System.out.println(卖+num+只

21、动物:);Collections.shuffle(name);tryfor(inti=0;inum;i+)System.out.println(name.get(i);catch(Exceptione)System.out.println(e);System.out.println(最后剩余的数目为:+d.num+nn);/对动物年龄进行分析publicstaticvoidanlyage(ArrayListage)System.out.println(n对动物年龄进行分析);Collections.sort(age);System.out.println(n对动物年龄从低到高排序结果:);fo

22、r(inti=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综合分析“);/*inta=(int)Collections.max(age);for(inti=0;i=a;i+)System.out.println(年龄为+i+岁的有:+Collections.frequency(age,

23、i);*/*/增加动物数量publicstaticvoidaddanimal()System.out.println(n增加动物数量);inti=0;System.out.print(请输入需要添加的数目:);Scannerinput1=newScanner(System.in);tryi=input1.nextInt();catch(Exceptione)System.out.println(e);System.out.println(输入有误);for(intj=0;ji;j+)Catc10=newCat();c10.input();System.out.println(c10.all()*/*/输出两个实例比较System.out.println(输出两个实例比较);campare(d1.getname(),c1.getname();campare(d1.getage(),c1.geta

温馨提示

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

评论

0/150

提交评论