Java面向對象程序設計實驗指導模板代碼.doc_第1頁
Java面向對象程序設計實驗指導模板代碼.doc_第2頁
Java面向對象程序設計實驗指導模板代碼.doc_第3頁
Java面向對象程序設計實驗指導模板代碼.doc_第4頁
Java面向對象程序設計實驗指導模板代碼.doc_第5頁
已閱讀5頁,還剩166頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1 JAVA 面向對象程序設計實驗指導代碼 內容簡介內容簡介 本書是 Java 面向對象程序設計 的配套實驗指導和習題解答 本書的第一部分為 16 次上機實踐的 內容 每次上機實踐由若干個實驗組成 每個實驗由相關知識點 實驗目的 實驗要求 實驗模版 實 驗知道和實驗報告組成 在進行實驗之前 首先通過實驗目的了解實驗要完成的關鍵主題 通過實驗要 求知道本實驗應達到怎樣的標準 然后 完成實驗模板 填寫實驗報告 本書的第二部分為主教材的習 題參考解答 上機實踐上機實踐 1 Java 入門入門 實驗實驗 1 一個簡單的應用程序一個簡單的應用程序 5 程序模板 程序模板 Hello java public class Hello public static void main String args 代碼 1 命令行窗口輸出 你好 很高興學習 Java A a new A a fA class A void fA 代碼 2 命令行窗口輸出 We are students 2 實驗實驗 2 教室 老師和學生教室 老師和學生 程序模板程序模板 請按模板要求 將 代碼 替換為 Java 程序代碼 ClassRoom java public class ClassRoom public static void main String args 代碼 1 命令行窗口輸出 教學活動從教室開始 Teacher zhang new Teacher Student jiang new Student zhang introduceSelf jiang introduceSelf Teacher java public class Teacher void introduceSelf 代碼 2 命令行窗口輸出 我是張老師 Student java public class Student void introduceSelf 代碼 3 命令行窗口輸出 我是學生 名字是 獎勵 上機實踐上機實踐 2 基本數據類型基本數據類型 實驗實驗 1 輸出輸出特殊邊傍的漢字特殊邊傍的漢字 程序模板程序模板 請按模板要求 將 代碼 替換為 Java 程序代碼 3 InputChinese java public class E public static void main String args char ch 研 zifu 0 int p 22920 count 5 position 0 System out printf 輸出 d 個石字傍的漢字 n count for char c ch c ch count c 代碼 1 c 進行 int 型轉換據運算 并將結果賦值給 position System out printf c d c position System out printf n 輸出 d 個女字傍的漢字 n count for int n p n p count n 代碼 2 n 做 char 型轉換運算 并將結果賦值給 zifu System out printf c d zifu n 實驗實驗 2 輸入 輸出學生的基本信息輸入 輸出學生的基本信息 程序模板程序模板 請按模板要求 將 代碼 替換為 Java 程序代碼 InputMess java import java util Scanner public class InputMess public static void main String args Scanner reader new Scanner System in System out println 輸入姓名 回車確認 String name 代碼 1 從鍵盤為 name 賦值 System out println 輸入年齡 回車確認 byte age 代碼 2 從鍵盤為 age 賦值 System out println 輸入身高 回車確認 float height 代碼 3 從鍵盤為 height 賦值 System out printf 28s n 基本信息 System out printf 10s 10s 姓名 name System out printf 4s 4d 年齡 age System out printf 4s 4 2f 身高 height 4 實驗實驗 3 超大整數的加法超大整數的加法 程序模板程序模板 仔細閱讀模板代碼 完成實驗后的練習 HandleLargeNumber java public class HandleLargeNumber public static void main String args int a 0 9 9 7 9 4 5 6 7 2 3 4 5 6 4 7 8 9 8 7 6 9 int b 0 0 5 9 1 6 4 5 6 2 3 4 5 7 2 1 3 4 0 3 2 9 int c new int a length int i 0 result 0 k 0 for i 0 i a length i if a i 0 k i break for i k i a length i System out printf d a i System out printf n 加上 n for i 0 i b length i if b i 0 k i break for i k i 0 i result a i b i if result 10 c i result 10 a i 1 a i 1 1 else c i result System out printf n 等于 n 5 for i 0 i c length i if c i 0 k i break for i k i 0 代碼 4 將 speed d 賦值給 speed else speed 0 void setBulletAmount int m bulletAmount m int getBulletAmount return bulletAmount double getSpeed return speed void fire if bulletAmount 1 代碼 5 將 bulletAmount 1 賦值給 bulletAmount System out println 打出一發(fā)炮彈 else System out println 沒有炮彈了 無法開火 10 Fight java public class Fight public static void main String args Tank tank1 tank2 tank1 new Tank tank2 new Tank tank1 setBulletAmount 10 tank2 setBulletAmount 10 System out println tank1 的炮彈數量 tank1 getBulletAmount System out println tank2 的炮彈數量 tank2 getBulletAmount tank1 speedUp 80 tank2 speedUp 90 System out println tank1 目前的速度 tank1 getSpeed System out println tank2 目前的速度 tank2 getSpeed tank1 speedDown 15 tank2 speedDown 30 System out println tank1 目前的速度 tank1 getSpeed System out println tank2 目前的速度 tank2 getSpeed System out println tank1 開火 tank1 fire System out println tank2 開火 tank2 fire tank2 fire System out println tank1 的炮彈數量 tank1 getBulletAmount System out println tank2 的炮彈數量 tank2 getBulletAmount 實驗實驗 2 計算機與光盤計算機與光盤 程序模板程序模板 請按模板要求 將 代碼 替換為 Java 程序代碼 CD javaCD java public class CD int size int content public void setSize int size this size size content new int size 11 public int getSize return size public int getContent return content public void setContent int b int min Math min content length b length for int i 0 i min i content i b i Computer java public class Computer int data CD includeCD public void putCD CD cd includeCD cd int size includeCD getSize data new int size void copyToComputer int b includeCD getContent int min Math min data length b length for int i 0 i min i data i b i public void addData int m for int i 0 i data length i data i data i m void copyToCD includeCD setContent data void showData for int i 0 i data length i System out printf 3d data i 12 User java public class User public static void main String args CD dataCD new CD int b 1 2 3 4 5 6 7 8 dataCD setSize b length dataCD setContent b int a dataCD getContent System out println dataCD 上的內容 for int i 0 i a length i System out printf 3d a i Computer computerIMB new Computer 代碼 1 computerIMB 調用 putCD CD cd 方法 將 dataCD 的引用傳遞給 cd System out println n 將 dataCD 的數據復制到計算機 computerIMB 代碼 2 computerIMB 調用 copyToComputer 方法 System out println computerIMB 上的內容 computerIMB showData int m 12 System out println ncomputerIMB 將每個數據增加 m computerIMB addData m System out println computerIMB 將增值后的數據復制到 CD dataCD 代碼 3 computerIMB 調用 copyToCD 方法 System out println dataCD 上的內容 a dataCD getContent for int i 0 i a length i System out printf 3d a i 實驗實驗 3 家族的姓氏家族的姓氏 程序模板程序模板 請按模板要求 將 代碼 替換為 Java 程序代碼 FamilyPerson javaFamilyPerson java public class FamilyPerson static String surname String name public static void setSurname String s surname s 13 public void setName String s name s MainClass java public class MainClass public static void main String args 代碼 1 用類名 FamilyPerson 訪問 surname 并為 surname 賦值 李 FamilyPerson father sonOne sonTwo father new FamilyPerson sonOne new FamilyPerson sonTwo new FamilyPerson 代碼 2 father 調用 setName String s 并向 s 傳遞 向陽 sonOne setName 抗日 sonTwo setName 抗戰(zhàn) System out println 父親 father surname father name System out println 大兒子 sonOne surname sonOne name System out println 二兒子 sonTwo surname sonTwo name 代碼 3 father 調用 setSurName String s 并向 s 傳遞 張 System out println 父親 father surname father name System out println 大兒子 sonOne surname sonOne name System out println 二兒子 sonTwo surname sonTwo name 14 上機實踐上機實踐 5 繼承繼承與接口與接口 實驗實驗 1 中國人與美國人中國人與美國人 程序模板程序模板 請按模板要求 將 代碼 替換為 Java 程序代碼 People javaPeople java public class People protected double weight height public void speakHello System out println yayayaya public void averageHeight height 173 System out println average height height public void averageWeight weight 70 System out println average weight weight ChinaPeople java public class ChinaPeople extends People public void speakHello System out println 您好 public void averageHeight height 168 78 System out println 中國人的平均身高 height 厘米 代碼 1 重寫 public void averageWeight 方法 輸出 中國人的平均體重 65 公斤 public void chinaGongfu System out println 坐如鐘 站如松 睡如弓 15 AmericanPeople java public class AmericanPeople extends People 代碼 2 重寫 public void speakHello 方法 輸出 How do you do 代碼 3 重寫 public void averageHeight 方法 輸出 American s average height 176 cm public void averageWeight weight 75 System out println American s average weight weight kg public void americanBoxing System out println 直拳 鉤拳 組合拳 BeijingPeople java public class BeijingPeople extends ChinaPeople 代碼 4 重寫 public void averageHeight 方法 輸出 北京人的平均身高 172 5 厘米 代碼 5 重寫 public void averageWeight 方法 輸出 北京人的平均體重 70 公斤 public void beijingOpera System out println 花臉 青衣 花旦和老生 Example java public class Example public static void main String args ChinaPeople chinaPeople new ChinaPeople AmericanPeople americanPeople new AmericanPeople BeijingPeople beijingPeople new BeijingPeople chinaPeople speakHello americanPeople speakHello beijingPeople speakHello chinaPeople averageHeight americanPeople averageHeight beijingPeople averageHeight chinaPeople averageWeight americanPeople averageWeight beijingPeople averageWeight chinaPeople chinaGongfu americanPeople americanBoxing beijingPeople beijingOpera beijingPeople chinaGongfu 16 實驗實驗 2 銀行與利息銀行與利息 程序模板程序模板 請按模板要求 將 代碼 替換為 Java 程序代碼 Bank javaBank java public class Bank int savedMoney int year double interest double interestRate 0 29 public double computerInterest interest year interestRate savedMoney return interest public void setInterestRate double rate interestRate rate ConstructionBank java public class ConstructionBank extends Bank double year public double computerInterest super year int year double r year int year int day int r 1000 double yearInterest 代碼 1 super 調用隱藏的 computerInterest 方法 double dayInterest day 0 0001 savedMoney interest yearInterest dayInterest System out printf d 元存在建設銀行 d 年零 d 天的利息 f 元 n savedMoney super year day interest return interest BankOfDalian java public class BankOfDalian extends Bank double year public double computerInterest super year int year double r year int year 17 int day int r 1000 double yearInterest 代碼 2 super 調用隱藏的 computerInterest 方法 double dayInterest day 0 00012 savedMoney interest yearInterest dayInterest System out printf d 元存在大連銀行 d 年零 d 天的利息 f 元 n savedMoney super year day interest return interest SaveMoney java public class SaveMoney public static void main String args int amount 8000 ConstructionBank bank1 new ConstructionBank bank1 savedMoney amount bank1 year 8 236 bank1 setInterestRate 0 035 double interest1 puterInterest BankOfDalian bank2 new BankOfDalian bank2 savedMoney amount bank2 year 8 236 bank2 setInterestRate 0 035 double interest2 puterInterest System out printf 兩個銀行利息相差 f 元 n interest2 interest1 實驗實驗 3 面積之和面積之和 程序模板程序模板 請按模板要求 將 代碼 替換為 Java 程序代碼 Geometry java public abstract class Geometry public abstract double getArea TotalArea java public class TotalArea Geometry tuxing 18 double totalArea 0 public void setTuxing Geometry t tuxing t public double computerTotalArea 代碼 3 用循環(huán)語句讓 tuxing 的元素調用 getArea 方法 并將返回的值累加到 totalArea return totalArea Rect java public class Rect extends Geometry double a b Rect double a double b this a a this b b 代碼 1 重寫 getArea 方法 Circle java public class Circle extends Geometry double r Circle double r this r r 代碼 2 重寫 getArea 方法 MainClass java public class MainClass public static void main String args Geometry tuxing new Geometry 29 有 29 個 Geometry 對象 for int i 0 i tuxing length i 29 個 Geometry 對象分成兩類 if i 2 0 tuxing i new Rect 16 i 68 else if i 2 1 tuxing i new Circle 10 i TotalArea computer new TotalArea computer setTuxing tuxing 19 System out printf 各種圖形的面積之和 n f puterTotalArea 實驗實驗 4 歌手大賽歌手大賽 程序模板程序模板 請按模板要求 將 代碼 替換為 Java 程序代碼 CompurerAverage java public interface CompurerAverage 接口 public double average double x SongGame java public class SongGame implements CompurerAverage public double average double x int count x length double aver 0 temp 0 for int i 0 i count i for int j i j count j if x j x i temp x j x j x i x i temp for int i 1 i2 aver aver count 2 else aver 0 return aver School java public class School implements CompurerAverage 20 代碼 1 重寫 public double average double x 方法 返回數組 x 的元素的算術平均 Estimator java public class Estimator 主類 public static void main String args double a 9 89 9 88 9 99 9 12 9 69 9 76 8 97 double b 56 55 5 65 50 51 5 53 6 70 49 66 62 46 CompurerAverage computer computer new SongGame double result 代碼 2 computer 調用 average double x 方法 將數組 a 傳遞給參數 x System out printf n System out printf 歌手最后得分 5 3f n result computer new School result 代碼 3 computer 調用 average double x 方法 將數組 b 傳遞給參數 x System out printf 學生平均體重 5 2f kg result 實驗實驗 5 天氣預報天氣預報 程序模板程序模板 請按模板要求 將 代碼 替換為 Java 程序代碼 WeatherState java public interface WeatherState 接口 public void showState Weather java public class Weather WeatherState state public void show state showState public void setState WeatherState s state s WeatherForecast java 21 public class WeatherForecast 主類 public static void main String args Weather weatherBeijing new Weather System out print n 今天白天 weatherBeijing setState new CloudyDayState weatherBeijing show System out print n 今天夜間 weatherBeijing setState new LightRainState weatherBeijing show System out print 轉 weatherBeijing setState new HeavyRainState weatherBeijing show System out print n 明天白天 weatherBeijing setState new LightRainState weatherBeijing show System out print n 明天夜間 weatherBeijing setState new CloudyLittleState weatherBeijing show CloudyLittleState java public class CloudyLittleState implements WeatherState public void showState System out print 少云 有時晴 CloudyDayState java public class CloudyDayState implements WeatherState 代碼 1 重寫 public void showState HeavyRainState java public class HeavyRainState implements WeatherState 代碼 2 重寫 public void showState LightRainState java public class LightRainState implements WeatherState 代碼 3 重寫 public void showState 方法 22 上機實踐上機實踐 6 內部類與異常類內部類與異常類 實驗實驗 1 紅牛農場紅牛農場 程序模板程序模板 請按模板要求 將 代碼 替換為 Java 程序代碼 RedCowForm java public class RedCowForm String formName 代碼 1 用內部類 RedCow 聲明對象 cow RedCowForm RedCowForm String s 代碼 2 創(chuàng)建 cow formName s public void showCowMess cow speak class RedCow 內部類的聲明 String cowName 紅牛 int height weight price RedCow int h int w int p height h weight w price p void speak System out println cowName 身高 height cm 體重 weight kg System out println 生活在 formName MainClass java 23 public class MainClass public static void main String args RedCowForm form new RedCowForm 紅牛農場 form showCowMess 實驗實驗 2 檢查危險品檢查危險品 程序模板程序模板 請按模板要求 將 代碼 替換為 Java 程序代碼 Goods java public class Goods boolean isDanger String name public void setIsDanger boolean boo isDanger boo public boolean isDanger return isDanger public void setName String s name s public String getName return name DangerException java public class DangerException extends Exception String message public DangerException message 危險品 public void toShow System out print message Machine java 24 public class Goods boolean isDanger String name public void setIsDanger boolean boo isDanger boo public boolean isDanger Check java public class Check public static void main String args Machine machine new Machine String name 蘋果 炸藥 西服 硫酸 手表 硫磺 Goods goods new Goods name length 檢查 6 件物品 for int i 0 i name length i goods i new Goods if i 2 0 goods i setIsDanger false goods i setName name i else goods i setIsDanger true goods i setName name i for int i 0 i goods length i try machine checkBag goods i System out println goods i getName 檢查通過 catch DangerException e 代碼 2 e 調用 toShow 方法 System out println goods i getName 被禁止 25 上機實踐上機實踐 7 面向對象的幾個基本原則面向對象的幾個基本原則 實驗實驗 1 樓房的窗戶樓房的窗戶 程序模板程序模板 請認真閱讀并調試模板給出的程序代碼 然后完成實驗后的練習 Window java public abstract class Window double width double height public abstract String getMaterial public void setWidth double w width w public void setHeight double h height h public double getHeight return height public double getWidth return width Building java public class Building int windowNumber 100 double width 109 98 double height 156 88 Window window Building window new Window windowNumber Building int n windowNumber n 26 window new Window windowNumber public void use Window w for int i 0 i window length i boolean boo Math abs w i getWidth width 1E 2 if boo window i w i public void showWindow for int i 0 i window length i if window i null System out println 第 i 1 扇窗戶是 window i getMaterial else System out println 該窗戶未安裝 WoodWindow java public class WoodWindow extends Window public String getMaterial return 木制窗戶 AluminumWindow java public class AluminumWindow extends Window public String getMaterial return 鋁合金窗戶 Application java public class Application public static void main String args Building schoolBuilding int m 7 schoolBuilding new Building m 27 Window w new Window m for int i 0 i m i if i 2 0 w i new WoodWindow w i setWidth 109 98 w i setHeight 156 89 else if i 2 1 w i new AluminumWindow w i setWidth 109 99 w i setHeight 156 87 schoolBuilding use w schoolBuilding showWindow 6 實驗指導 實驗指導 如果將實驗要求中的 Window 類 Building 類以及 WoodWindow 和 AluminumWindow 類看作是一個小的開發(fā)框架 將 Application java 看作是使用該框架進行應用開發(fā)的用戶程 序 那么框架滿足 開 閉 原則 該框架相對用戶的需求就比較容易維護 因為 當用戶 程序需要模擬老虎的聲音時 系統(tǒng)只需簡單的擴展框架 即在框架中增加一個 Window 的 子類 無須修改框架中的其他類 如圖 7 3 所示 7 實驗后的練習 實驗后的練習 在實驗代碼的基礎上再增加一個 Window 的子類 用于刻畫鐵制窗戶 并在主類的代 碼 Application java 中讓樓房使用鐵制窗戶 8 填寫實驗報告 填寫實驗報告 圖 7 3 滿足開 閉原則的框架 框架的核心部分 框架的可擴展部分 WoodWindow WindowBuilding 用戶程序 AluminumWindow 28 實驗編號 701 學生姓名 實驗時間 教師簽字 實驗效果評價實驗效果評價ABCDE 模板完成情況 實驗后的練習效果評價實驗后的練習效果評價ABCDE 練習完成情況 總評總評 實驗實驗 2 搭建流水線搭建流水線 1 相關知識點 相關知識點 如果一個對象 a 組合了對象 b 那么對象 a 就可以委托對象 b 調用其方法 即對象 a 以組合的方式復用對象 b 的方法 通過組合對象來復用方法的優(yōu)點是 通過組合對象來復 用方法也稱 黑盒 復用 因為當前對象只能委托所包含的對象調用其方法 這樣一來 當前對象所包含的對象的方法的細節(jié)對當前對象是不可見的 另外 對象與所包含的對象 屬于弱耦合關系 因為 如果修改當前對象所包含的對象的類的代碼 不必修改當前對象 的類的代碼 1 實驗目的 實驗目的 本實驗的目的是讓學生怎樣一個對象怎樣組合另一個對象 3 實驗要求 實驗要求 流水線的作用是 用戶只需將要處理的數據交給流水線 即依次讓流水線上的對象來 處理數據 比如 在歌手比賽時 只需將評委給出的分數交給設計好的流水線 就可以得 到選手的最后得分 流水線上的第一個對象負責錄入裁判給選手的分數 第二個對象負責 去掉一個最高分和一個最低分 最后一個對象負責計算出平均成績 具體要求如下 編寫 InputScore DelScore ComputerAver 和 Line 類 InputScore 類的對象負責錄入分數 InputScore 類組合了 DelScore 類的對象 DelScore 類的對象負責去掉一個最高分和一個最低分 DelScore 類組合了 ComputerAver 類的對象 ComputerAver 類的對象負責計算平均值 Line 類組合了 InputScore DelScoren ComputerAver 三個類的實例 在主類中用 Line 創(chuàng)建一個流水線對象 并將裁判的分數交給給流水線 4 運行效果示例 運行效果示例 程序運行效果如圖 7 4 所示 5 程序模板 程序模板 請認真閱讀并調試模板給出的程序代碼 然后 完成實驗后的練習 圖 7 4 流水線 29 MainClass java public class SingGame public static void main String args Line line new Line line givePersonScore InputScore java import java util Scanner public class InputScore DelScore del InputScore DelScore del this del del public void inputScore System out println 請輸入評委數 Scanner read new Scanner System in int count read nextInt System out println 請輸入各個評委的分數 double a new double count for int i 0 i count i a i read nextDouble del doDelete a DelScore java public class DelScore ComputerAver computer DelScore ComputerAver computer puter computer public void doDelete double a java util Arrays sort a 數組 a 從小到大排序 System out print 去掉一個最高分 a a length 1 System out print 去掉一個最低分 a 0 double b new double a length 2 for int i 1 i a length 1 i 去掉最高分和最低分 b i 1 a i 30 computer giveAver b ComputerAver java public class ComputerAver public void giveAver double b double sum 0 for int i 0 i b length i sum sum b i double aver sum b length System out println 選手最后得分 aver Line java public class Line InputScore one DelScore two ComputerAver three Line three new ComputerAver two new DelScore three one new InputScore two public void givePersonScore one inputScore 6 實驗指導 實驗指導 一個類的成員變量可以是 Java 允許的任何數據類型 因此 一個類可以把對象作為自 己的成員變量 如果用這樣的類創(chuàng)建對象 那么該對象中就會有其它對象 也就是說該對 象將其他對象作為自己的組成部分 這就是人們常說的 Has A 或者說該對象是由幾個對 象組合而成 7 實驗后的練習 實驗后的練習 在流水線上在增加一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論