版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版城市更新项目施工环保及文明施工协议3篇
- 2025年度高标准住宅木工支模与装修一体化承包协议4篇
- 2025年度个人设备租赁借款合同模板7篇
- 2025年染料中间体项目可行性研究报告
- 个人信用贷款合同2024年度3篇
- 2025年度挖掘机交易信息服务平台合作协议4篇
- 2025版木跳板生产设备采购合同示范文本4篇
- 二零二五年度钟点工家庭保姆综合服务合同
- 二零二五年度港口集装箱运输公司股权转让合同
- 2025年度酒店客房满意度调查与改进合同
- 2024年高考八省联考地理适应性试卷附答案解析
- 足浴技师与店内禁止黄赌毒协议书范文
- 中国高血压防治指南(2024年修订版)要点解读
- 2024-2030年中国光电干扰一体设备行业发展现状与前景预测分析研究报告
- 湖南省岳阳市岳阳楼区2023-2024学年七年级下学期期末数学试题(解析版)
- 农村自建房安全合同协议书
- 杜仲叶药理作用及临床应用研究进展
- 4S店售后服务6S管理新规制度
- 高性能建筑钢材的研发与应用
- 无线广播行业现状分析
- 汉语言沟通发展量表(长表)-词汇及手势(8-16月龄)
评论
0/150
提交评论