Soft_Job 板


LINE

我用我寫的程式來說明怎麼用到 OOP。 俄羅斯方塊, 俄羅斯方塊不是有很多不同的方塊嗎? ex: ZTetromino ** ** -------- STetromino ** ** -------- OTetromino ** ** -------- ITetromino **** -------- 我實做一個 Tetromino 代表最基本的方塊元素, 定義出 move() 這個移動的 member function。 rotate() 則是以 virtual function 來定義。 ZTetromino, STetromino, OTetromino, ITetromino 繼承 Tetromino, move() 都是一樣的作法, 所以繼承之後, 每個方塊都有了移動的能力, 這是繼承提供的好處。c 也做的到, 就用 function pointer 指到對應的 function。 rotate 旋轉的話, 每個方塊的旋轉都不同, 所以就各自定義出自己的旋轉方式。 上面提的是繼承與多型。 還少個封裝, 封裝的話, 每個方塊有 4 個點 (x, y), 這 4 個點被我以 private data member 的形式設計在 Tetromino class 內。 其實俄羅斯方塊也可以不要用多型 (OOP) 的方式來設計, 但我覺得用多型來設計 非常適合俄羅斯方塊的那些方塊。 另外一個是編譯器的例子, AST 的每個 node 也可以設計成 OOP 方式, 例如: FunctionNode, AddNode, SubNode 之類的, 不過在我的實做中, 我覺得這樣 並沒有太大的好處, 所以並沒有這樣設計, 但是 两周自制脚本语言 這本書 是以 java 來實做 AST, 他就是這樣設計的。 若你有寫過用 OOP 來設計的程式, 把那個思考方式說出來, 也許面試官就能 更清楚你想表達的內容。 ※ 引述《goooeooo (ge)》之銘言: : 以前面試遇到的問題 : 面試官問我什麼是OOP : 當時我覺得我回答不好 : 我想請問以下 這樣解釋可以嗎? : OOP觀念 運用得宜可以將開發時間縮至最短 且觀念正確下 也可讓將來維護人員好維護 : 在大型系統下效果尤其顯著 : 譬如今天開發倉庫系統(我隨意舉例實際沒有碰過這種系統) : 由上往下分類 譬如有電子類、玩具類 此兩類都還有很多繼續向下的分類... : 將電子類、玩具類 設計製作成大致物件 : 就是讓此兩類的向下分類幾乎都是以此兩物件做為變化繼續修正或增加差異的部份來開發 : 譬如:電子類 再向下有手機類、電腦類 : 那將手機類、電腦類會共通的方法、邏輯再加上變數 制作成電子類物件 : 用電子類物件來小幅修正 完成向下的手機類跟電腦類兩個小差異的部份就行了 : 照這樣的規則一直向下 就是說 也將手機類跟電腦類 繼續做成物件 供向下分類使用 : 也就是說你必須在規劃開始時就已經思考好整個系統架構 會由幾個最上層的物件開始向下 : 一直向下創造物件 讓程式碼進而達到最簡化 但又能完成繁瑣的任務 : 讓開發人員可以快速開發 將來維護人員也可快速理解維護 : 所以最上層的物件設置規劃非常重要 關係到整個系統開發的過程 : 這是我所理解的 請問這樣可以解釋OOP觀念嗎? -- 紙上得來終覺淺,絕知此事要躬行。 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.214.247.42
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1510492579.A.349.html
1F:推 landlord: 挺好的!game of life 其實也可以 OOD 成這樣 :) 11/12 21:36
2F:推 Vick753: 推 11/14 11:25
3F:推 youtuuube000: 也許你在補充多型的擴充性會更好 但這篇已經寫的不 11/14 22:09
4F:→ youtuuube000: 錯了 11/14 22:09
5F:→ viper9709: 推~這例子不錯 11/14 22:45
※ 編輯: descent (175.98.141.254), 11/15/2017 09:01:23







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燈, 水草

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

TOP