您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > [整理]java类的设计动物类.
--------------------------《Java大作业实践》报告Animal公司的分析与设计广东药学院一.Animal类的设计要求:根据实际需求设计Animal类,并完成以下功能:1.输出全部信息2.对2个实例进行比较3.使用static对共同的属性进行修饰4.实现从键盘输入的功能5.实现单态设计模式--------------------------6.加异常信息7.加入多线程8.使用集合(可选)二.设计场景,实现其要求场景设计在一间公司,拥有很多的小猫小狗等宠物可以出卖。1.输出9只动物的全部信息,举例代表全部动物的信息,并用List集合存放所有信息。2.可以选择输入动物的信息来增加动物的数量,其中输入错误不能添加,并且进行了异常处理。3.可以对动物的属性进行比较,例如年龄,名字等。用到了方法的重载。4.公司的动物的总数为共同属性和来源,用static修饰。5.公司实现单态模式设计,所有动物都是属于这间公司的。6.可以从键盘输入许多不同的选择,选择对动物进行不同的操作,并且所有的输入都进行了异常的处理。7.采用多线程售卖动物,实现三个窗口同时售卖,并且进行了同步设计,保证安全。8.利用ArrayList集合收集动物的年龄信息,并对其进行分析。三.接口与类的基本设计--------------------------接口Animal(包涵四个抽象方法):Stringprint();//姓名+年龄Stringtalk();//姓名+他的声音Stringall();//全部信息voidinput();//输入数据抽象父类A:实现接口Animal1.私有属性privateStringname;privateintage;privateStringvoice;privateStringbeizhu;//备注共同属性staticStringhouse=KFC;staticintnum=200;2.构造方法3.抽象方法publicabstractStringprint();4.重写接口的部分抽象方法5.对于封装的属性对外提供函数Dog类:继承A类--------------------------1.privateStringspec;//这个对象含有自己独特属性2.构造方法3.重写父类的方法:publicStringtalk()重写父类的抽象方法:publicStringprint()Cat类:继承A类1.构造方法2.重写父类的抽象方法:publicStringprint()MyTh类(实现Runnable):进行多线程售卖动物Company类:单态设计模式T类:测试功能(主函数)四.其他函数功能块1.publicstaticvoidanlyage(ArrayListage)//对年龄进行分析2.publicstaticvoidrandonsale(Listname,Dogd)//随即卖掉X只动物3.publicstaticvoidduosale(intnum)//开创3个窗口,多线程同步售卖4.publicstaticvoidcampare(Stringa,Stringb)//两个实例的对比--------------------------publicstaticvoidcampare(inta,intb)//方法的重载五.全部代码块importjava.util.*;//...........................................总接口.............................................interfaceAnimal//总接口{Stringprint();//姓名+年龄Stringtalk();//姓名+他的声音Stringall();//全部信息voidinput();//输入数据}//...........................................动物的父类.............................................abstractclassAimplementsAnimal//动物的父类{privateStringname;privateintage;privateStringvoice;privateStringbeizhu;//备注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();//留给子类喜欢独自扩充的抽象方法publicStringtalk()--------------------------{returngetname()++getvoice();};publicStringall(){returngetname()++getage()++getvoice()++getbeizhu()++this.house;}publicvoidinput()//输入数据{Scannerinput1=newScanner(System.in);try//this.name=input1.next();{setname(input1.next());setage(input1.nextInt());setvoice(input1.next());setbeizhu(input1.next());A.num++;}catch(Exceptione){System.out.println(e);setage(1000000);System.out.println(输入有误);//A.num--;}}//封装voidsetname(Stringname){this.name=name;}Stringgetname(){returnname;}voidsetage(intage){this.age=-999999;if(age=0)this.age=age;else{A.num--;try{thrownewIllegalArgumentException(年龄输入有误,不能为负数);}//在方法内部抛出异常IllegalArgumentExceptioncatch(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(Stringcname){this.cname=cname;}//单态设计模式核心staticCompanyp=newCompany(CKFC);staticpublicCompanygetC(){returnp;}};//..........................................大狗类.............................................classDogextendsA//继承{privateStringspec;//这个对象含有自己独特属性voidsetspec(Stringspec){this.spec=spec;}Stringgetspec(){returnspec;}Companyp1=Company.getC();//小狗的构造方法publicDog(){}publicDog(Stringname){super(name);}publicDog(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()++p1.cname;}//重写抽象方法publicStringprint(){returngetname()++getage();}}//...........................................猫咪类.............................................classCatextendsA{publicCat(){}publicCat(Stringname){super(name);}publicCat(Stringname,intage)--------------------------{super(name,age);}publicCat(Stringname,intage,Stringvoice,Stringbeizhu){super(name,age,voice,beizhu);}//重写抽象方法publicStringprint(){returngetname()++getbeizhu();}}//..........................................多线程.............................................classMyThimplementsRunnable{intnum;MyTh(){};MyTh(intnum){this.num=num;};publicvoidrun(){while(num0){sale();}System.out.println(salestop!);}synchronizedvoidsale()//同步方法{if(num0){try{Thread.sleep(0,1);}catch(Exceptione){}System.out.println(sale:+Thread.currentThread().getName()+:+num--);}}};classT{//...........................................主函数.............................................publicstaticvoidmain(String[]args){System.out.println(输出动物的部分或全部信息);System.out.println(姓名+年龄+声音+备注+公司);Dogd1=newDog(dwangcai,6
本文标题:[整理]java类的设计动物类.
链接地址:https://www.777doc.com/doc-6917659 .html