java类的设计动物类

上传人:仙*** 文档编号:65381367 上传时间:2022-03-23 格式:DOC 页数:17 大小:260.53KB
返回 下载 相关 举报
java类的设计动物类_第1页
第1页 / 共17页
java类的设计动物类_第2页
第2页 / 共17页
java类的设计动物类_第3页
第3页 / 共17页
点击查看更多>>
资源描述
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(包涵四个抽象方法):String print();/姓名+年龄String talk();/姓名+他的声音String all();/全部信息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类1. private String spec;/这个对象含有自己独特属性2. 构造方法3. 重写父类的方法: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 duosale(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 Animal/动物的父类 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)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 Scanner(System.in);try /this.name=input1.next();setname(input1.next();setage(input1.nextInt();setvoice(input1.next();setbeizhu(input1.next();A.num+;catch( Exception e)System.out.println(e);setage(1000000);System.out.println(输入有误);/A.num-;/封装void setname(String name) this.name= name;String getname()return name;void setage(int age)this.age=-999999;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()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/继承private 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,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()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.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(输出动物的部分或全部信息);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,miaomiao,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(); name.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(输入有误);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(c4.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(较小的值:+Math.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 Thread(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.println(输入有误);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对动物年龄进行分析);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;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(输入有误);for(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 c2=new Cat(miaomiao,-100,miaomiao,nothing);System.out.println(c2.all();*/*小狗的构造测试 d1.setspec(i am a dog;);Dog.num=Dog.num-2;/static对共同属性进行比较System.out.println(d1.talk();System.out.println(d1.all();Dog d2=new Dog(xiaohei);System.out.println(d2.talk();Dog d3=new Dog(wangcai,19,wan wan,nothing,i am a big dog);System.out.println(d3.talk();*/*Iterator iterator =age.iterator();while(iterator.hasNext()System.out.print(iterator.next()+);*/ 六测试结果1输出动物信息2.通过输入增加动物增加一只:动物数量本来为:200不需要:4. 对动物年龄进行分析5. 需要卖多少只动物6. 多线程卖动物不需要时:7. 输出两个实例比较8. 测试单态设计模式9一些异常处理的结果
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!