java 板


LINE

※ 引述《withdrawn (翔)》之銘言: : 這學期老師剛交完 : 期末要給他看一個物件導向程式 : 須用到封裝.繼承.抽象.多型.建構子 : (用法都了解) : 問題是不知道從哪方面下手.. : 不知道要做什麼主題= = : 雖然說只有5% 還是想寫看看 畢竟以後還是要寫專題 我比較好奇的是... 如果用法都了解的話... 為甚麼還要煩惱做什麼主題? 如果只是講到這邊,大概又會說版主在酸人 秉持著把 Java 版糟糕化的任務(喂喂!) 只好以身作則...... [挺] (建議使用空白鍵翻頁 \囧/) - 首先,你必須要先知道 即使是封裝,也不是程式必需品 就算是你打算寫出一個作業系統 你還是可以完全沒有任何封裝的行為 更不用說後頭的繼承、多型之類的鬼東西 (當然,請不要真的這樣嘗試... XDrz) 還是那句話 「道不虛明、有為而發」 你必須要先體驗到「棍!這樣下去好煩」 進階版是可以感覺到「棍!這樣下去以後會有爆炸的危險」 為了解決這些問題,所以找了這些技術來克服 我覺得這樣才有意義... 以我的標準來說,這樣才算「會」那些東西 (所以,其實我還是不確定多型是啥東西... 只是寫出來的程式,人家說:「這就是多型啊 [毆]」) - 如果你真的純粹只想交作業 那麼,一個剛開始寫程式要會的印星星金字塔 也是可以搞出那些東西的 [茶] ========== 不負責任程式碼開始了 ========== //Pyramid.java public abstract class Pyramid extends BbsBuilding { Pyramid(char brick, int level) { super(brick); build(level); } @Override public void build(int level) { for (int i = 0; i < level; i++) { fillFloor(i); nextFloor(); } } public static void show(Pyramid pyramid) { pyramid.takePicture(); } public static void main(String[] args) { StarPyramid star = new StarPyramid(5); Pyramid.show(star); MysteriousPyramid mysterious = new MysteriousPyramid(25); Pyramid.show(mysterious); GhostPyramid nothing = new GhostPyramid(10); Pyramid.show(nothing); } } //StarPyramid.java public class StarPyramid extends Pyramid{ public StarPyramid(int level) { super('*', level); } } //MysteriousPyramid.java public class MysteriousPyramid extends Pyramid { MysteriousPyramid(int level) { super('?', level); } } //GhostPyramid.java public class GhostPyramid extends Pyramid { public GhostPyramid(int level) { super(' ', level); } } //BbsBuilding.java import java.util.ArrayList; public abstract class BbsBuilding implements Building { ArrayList<String> building; private String floor = ""; private char brick; BbsBuilding(char brick) { this.brick = brick; building = new ArrayList<String>(); } @Override public void fillFloor(int size) { for (int i = 0; i <= size; i++) { floor += brick; } } @Override public void nextFloor() { building.add(floor); floor = ""; } private final int CONSOLE_WIDTH = 77; private final int CONSOLE_HIGHT = 21; //TODO level > 80 will break pic @Override public void takePicture() { // 相框下緣 System.out.print("+"); drawLineBy(0, CONSOLE_WIDTH - this.getClass().getName().length() - 4, '-'); System.out.println(this.getClass().getName() + "---+"); // 留白 for (int i = building.size(); i < CONSOLE_HIGHT - 2; i++) { System.out.print("|"); drawLineBy(0, CONSOLE_WIDTH - 1, ' '); System.out.println("|"); } // 建築主體 for (int i = getTopFloor(); i < building.size(); i++) { System.out.print("|"); System.out.print(building.get(i)); drawLineBy(building.get(i).length() + 1, CONSOLE_WIDTH, ' '); System.out.println("|"); } // 相框下緣 System.out.print("+"); drawLineBy(0, CONSOLE_WIDTH - 1, '-'); System.out.println("+"); } private void drawLineBy(int start, int end, char c) { for (int i = start; i < end; i++) { System.out.print(c); } } private int getTopFloor() { if (building.size() > CONSOLE_HIGHT) { return building.size() - CONSOLE_HIGHT + 2; } else { return 0; } } } //Building.java public interface Building { void build(int level); void fillFloor(int size); void nextFloor(); //TODO next version will make Camera interface and cancel this behavior public void takePicture(); } ========== 以下為執行結果,請將此行對齊螢幕頂端,用空白鍵翻頁 ========== +--------------------------------------------------------------StarPyramid---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | |* | |** | |*** | |**** | |***** | +----------------------------------------------------------------------------+ +--------------------------------------------------------MysteriousPyramid---+ |??????? | |???????? | |????????? | |?????????? | |??????????? | |???????????? | |????????????? | |?????????????? | |??????????????? | |???????????????? | |????????????????? | |?????????????????? | |??????????????????? | |???????????????????? | |????????????????????? | |?????????????????????? | |??????????????????????? | |???????????????????????? | |????????????????????????? | +----------------------------------------------------------------------------+ +-------------------------------------------------------------GhostPyramid---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------------------------------------------------------+ ㄜ... 該不該寫信給出作業的老師,以防有人拿這個版本交差呢? [核爆] -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Java 版 cookcomic 版 只影射著說不出來的話 and more...... --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.70.214.149
1F:→ rofellosx:我以為GhostPyramid反白有東西 06/10 12:42
2F:→ PsMonkey:ㄜ... 理論上是有... [茶] 06/10 13:10







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP