版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java大作業(yè)實(shí)踐報(bào)告Animal公司的分析與設(shè)計(jì) 廣東藥學(xué)院一Animal類的設(shè)計(jì)要求:根據(jù)實(shí)際需求設(shè)計(jì)Animal類,并完成以下功能:1. 輸出全部信息2. 對(duì)2個(gè)實(shí)例進(jìn)行比較3. 使用static對(duì)共同的屬性進(jìn)行修飾4. 實(shí)現(xiàn)從鍵盤輸入的功能5. 實(shí)現(xiàn)單態(tài)設(shè)計(jì)模式6. 加異常信息7. 加入多線程8. 使用集合(可選)二設(shè)計(jì)場(chǎng)景,實(shí)現(xiàn)其要求場(chǎng)景設(shè)計(jì)在一間公司,擁有很多的小貓小狗等寵物可以出賣。1. 輸出9只動(dòng)物的全部信息,舉例代表全部動(dòng)物的信息,并用List集合存放所有信息。2. 可以選擇輸入動(dòng)物的信息來(lái)增加動(dòng)物的數(shù)量,其中輸入錯(cuò)誤不能添加,并且進(jìn)行了異常處理。3. 可以對(duì)動(dòng)物的屬性進(jìn)行比
2、較,例如年齡,名字等。用到了方法的重載。4. 公司的動(dòng)物的總數(shù)為共同屬性和來(lái)源,用static修飾。5. 公司實(shí)現(xiàn)單態(tài)模式設(shè)計(jì),所有動(dòng)物都是屬于這間公司的。6. 可以從鍵盤輸入許多不同的選擇,選擇對(duì)動(dòng)物進(jìn)行不同的操作,并且所有的輸入都進(jìn)行了異常的處理。7. 采用多線程售賣動(dòng)物,實(shí)現(xiàn)三個(gè)窗口同時(shí)售賣,并且進(jìn)行了同步設(shè)計(jì),保證安全。8. 利用ArrayList集合收集動(dòng)物的年齡信息,并對(duì)其進(jìn)行分析。三.接口與類的基本設(shè)計(jì)接口Animal(包涵四個(gè)抽象方法):String print();/姓名+年齡String talk();/姓名+他的聲音String all();/全部信息void input
3、();/輸入數(shù)據(jù)抽象父類A:實(shí)現(xiàn)接口Animal1.私有屬性private String name;private int age;private String voice;private String beizhu;/備注共同屬性static String house=KFC;static int num=200;2.構(gòu)造方法3.抽象方法public abstract String print();4. 重寫接口的部分抽象方法5.對(duì)于封裝的屬性對(duì)外提供函數(shù)Dog類:繼承A類1. private String spec;/這個(gè)對(duì)象含有自己獨(dú)特屬性2. 構(gòu)造方法3. 重寫父類的方法:public
4、 String talk()重寫父類的抽象方法:public String print()Cat類:繼承A類1.構(gòu)造方法2.重寫父類的抽象方法:public String print()MyTh類(實(shí)現(xiàn) Runnable):進(jìn)行多線程售賣動(dòng)物Company類:?jiǎn)螒B(tài)設(shè)計(jì)模式T類:測(cè)試功能(主函數(shù))四其他函數(shù)功能塊1. public static void anlyage(ArrayList age) /對(duì)年齡進(jìn)行分析2. public static void randonsale(List name,Dog d)/隨即賣掉X只動(dòng)物3. public static void duosale(int
5、 num) /開創(chuàng)3個(gè)窗口,多線程同步售賣4. public static void campare(String a,String b) /兩個(gè)實(shí)例的對(duì)比 public static void campare(int a,int b)/ 方法的重載五全部代碼塊import java.util.*;/.總接口.interface Animal/總接口String print();/姓名+年齡String talk();/姓名+他的聲音String all();/全部信息void input();/輸入數(shù)據(jù)/.動(dòng)物的父類. abstract class A implements Animal/動(dòng)
6、物的父類 private String name;private int age;private String voice;private String beizhu;/備注static String house=KFC;static int num=200;/父類的構(gòu)造方法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)setnam
7、e(name);setage(age);setvoice(voice);setbeizhu(beizhu);/重寫抽象方法public abstract String print();/留給子類喜歡獨(dú)自擴(kuò)充的抽象方法public String talk()return getname()+ +getvoice();public String all() return getname()+ +getage()+ +getvoice()+ +getbeizhu()+ +this.house;public void input()/輸入數(shù)據(jù)Scanner input1=new Scanner(Sys
8、tem.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(1000000);System.out.println(輸入有誤);/A.num-;/封裝void setname(String name) = name;String getname()return name;
9、void setage(int age)this.age=-999999;if(age=0)this.age= age;elseA.num-;trythrow new IllegalArgumentException(年齡輸入有誤,不能為負(fù)數(shù));/在方法內(nèi)部拋出異常IllegalArgumentExceptioncatch(IllegalArgumentException e)System.out.println(e.getMessage();int getage()return age;void setvoice(String voice) this.voice=voice;String g
10、etvoice()return voice;void setbeizhu(String beizhu) this.beizhu=beizhu;String getbeizhu()return beizhu;/.單態(tài)設(shè)計(jì)模式.class Company/單態(tài)設(shè)計(jì)模式static String cname;private Company(String cname)ame=cname; /單態(tài)設(shè)計(jì)模式核心static Company p=new Company(CKFC);static public Company getC() return p; ;/.大狗類.class Dog e
11、xtends A/繼承private String spec;/這個(gè)對(duì)象含有自己獨(dú)特屬性void setspec(String spec) this.spec=spec;String getspec()return spec;Company p1=Company.getC();/小狗的構(gòu)造方法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)s
12、uper(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
13、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()
14、;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/.主函數(shù).public static void main(String args) Syst
15、em.out.println(輸出動(dòng)物的部分或全部信息);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
16、 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);/信息數(shù)組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(); nam
17、e.add(c3.all(); name.add(c4.all(); name.add(c5.all(); for(int i=0;iname.size();i+)System.out.println(name.get(i);/測(cè)試輸入對(duì)象System.out.println(n增加動(dòng)物數(shù)量);int flag=0;System.out.print(輸入0拒絕添加,輸入1增加:);Scanner input1=new Scanner(System.in);tryflag=input1.nextInt();catch( Exception e)System.out.println(e);Syst
18、em.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!);/年齡數(shù)組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.
19、getage(); age.add(c4.getage(); age.add(c5.getage(); /對(duì)年齡進(jìn)行分析anlyage( age);/隨即賣掉X只動(dòng)物randonsale(name,d1); /多線程duosale(d1.num);/.函數(shù)功能塊./方法的重載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.o
20、ut.println(較小的值:+Math.min(a,b);/多線程public static void duosale(int num) System.out.print(多線程需要買所有的動(dòng)物嗎?按0否認(rèn),其他數(shù)字確定:);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
21、(r).start();new Thread(r).start();new Thread(r).start();elseSystem.out.println(over!);/賣多少只動(dòng)物(隨即抽?。﹑ublic static void randonsale(List name,Dog d)System.out.print(n需要賣多少只動(dòng)物,請(qǐng)輸入:(數(shù)量少于+d.num+):);int num=0;Scanner input1=new Scanner(System.in);trynum=input1.nextInt();catch( Exception e)System.out.printl
22、n(e);System.out.println(輸入有誤);d.num=d.num-num;System.out.println(賣+num+只動(dòng)物:);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(最后剩余的數(shù)目為:+d.num+nn);/對(duì)動(dòng)物年齡進(jìn)行分析public static void anlyage(ArrayList age)System.out.p
23、rintln(n對(duì)動(dòng)物年齡進(jìn)行分析);Collections.sort(age);System.out.println(n對(duì)動(dòng)物年齡從低到高排序結(jié)果:);for(int i=0;iage.size();i+)System.out.print(age.get(i)+);System.out.println( n動(dòng)物最大的是年齡:+Collections.max(age);/最大數(shù)值System.out.println(n動(dòng)物最小的是年齡:+Collections.min(age);/最小數(shù)值System.out.println(n綜合分析“);/*int a=(int)Collections.m
24、ax(age);for(int i=0;i=a;i+)System.out.println(年齡為+i+歲的有:+Collections.frequency(age,i);*/*/增加動(dòng)物數(shù)量public static void addanimal()System.out.println(n增加動(dòng)物數(shù)量);int i=0;System.out.print(請(qǐng)輸入需要添加的數(shù)目:);Scanner input1=new Scanner(System.in);tryi=input1.nextInt();catch( Exception e)System.out.println(e);System.
25、out.println(輸入有誤);for(int j=0;ji;j+)Cat c10=new Cat();c10.input();System.out.println(c10.all()*/*/輸出兩個(gè)實(shí)例比較System.out.println(輸出兩個(gè)實(shí)例比較);campare(d1.getname(),c1.getname();campare(d1.getage(),c1.getage();System.out.println();*/*/測(cè)試單態(tài)設(shè)計(jì)模式System.out.println(測(cè)試單態(tài)設(shè)計(jì)模式);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 C
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度教育機(jī)構(gòu)招生廣告制作合同3篇
- 二零二五年度航空貨運(yùn)包機(jī)運(yùn)輸合同保密條款合同3篇
- 童話故事賣火柴的小女孩讀后感
- 購(gòu)房補(bǔ)充協(xié)議范本
- 二零二五年度綜合設(shè)施建設(shè)、運(yùn)營(yíng)管理及移交合作協(xié)議2篇
- YQP1系列自動(dòng)轉(zhuǎn)換開關(guān)
- 【MPA教學(xué)案例】湖北石首事件
- 《關(guān)于“刷臉”時(shí)代》非連續(xù)文本閱讀練習(xí)及答案-202108140
- 2025年滬教版選擇性必修2物理下冊(cè)月考試卷
- 2025勞動(dòng)合同法對(duì)工資問題的若干規(guī)定陳處長(zhǎng)
- (八省聯(lián)考)2025年高考綜合改革適應(yīng)性演練 物理試卷合集(含答案逐題解析)
- 2025年安徽銅陵市公安局第二批輔警招聘158人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 車間修繕合同模板
- 商會(huì)年會(huì)策劃方案范例(3篇)
- SQE年終總結(jié)報(bào)告
- 《化學(xué)實(shí)驗(yàn)室安全》課程教學(xué)大綱
- 2024年人教版初二地理上冊(cè)期末考試卷(附答案)
- 2024文旅景區(qū)秋季稻田豐收節(jié)稻花香里 說(shuō)豐年主題活動(dòng)策劃方案
- 高低壓供配電設(shè)備檢查和檢修保養(yǎng)合同3篇
- (正式版)JBT 9229-2024 剪叉式升降工作平臺(tái)
- 2023版押品考試題庫(kù)必考點(diǎn)含答案
評(píng)論
0/150
提交評(píng)論