看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《OfficeGL (妤欣)》之銘言: : 網路上查詢好久,可能我不是本科系的關係 : 很難理解這個是什麼? : 不知道是不是所謂的ADT概念呢 : 還是就單純API的意思? : 這邊開始好抽象 : 先謝謝大家了~ 1. Wrapper: 用來(臨時)減少某個類別在某些情境的使用難度,可能隱藏、修改類別功能 用 wrapper 的好處是不用更動被 wrapped 的程式碼,等到確定可以統一了再一次 merge 進去 修改類別功能:不改變實際上做的事情 - 只改變資料 representation、格式 (假設原本函數回傳 int,而且某些情境下它只會是年齡而且要用來顯示,所以改成 Str ing 然後後面加歲或周歲) - 或是減少函數參數改用預設 (假設某個 case 就只會使用 18 當參數,那這個參數就可以省略) 2. API: 一組沒有實作的函數模型、結構 (class,struct) 再加上規格、文件描述功用 3.ADT: 可以指兩種不同的東西, Algebraic Data Type 或 Abstract Data Type - Algebraic Data Type: 泛指一種支援把 inheritance (不精確) 和 composition 寫在一起的類型定義方式 (你講的 ADT 應該不是這個,是 Abstract Data Type) - Abstract Data Type: 其實就只是指沒有寫壞的類別定義,該露的露,不該露的沒有露 類別名稱要夠抽象(才可以講我隱藏了哪些不重要的細節)的同時,程式本身要夠具體( 夠具體才會有細節),在剛好滿足這樣的前提下該露的露,不該露的沒有露,而且本身功 能夠具體的類別 (個人認為這是個假議題) Wrapper <=> API API 更多說明提供了使用者哪些函數,而且指這些函數的"文字描述或宣告" Wrapper 指用來 adapt 一個類別的"那些程式碼本身" Wrapper <=> Abstract Data Type Abstract Data Type 僅僅指沒設計壞的,功能夠具體的類別 然而提到 Wrapper 就代表還有一個被 wrapped 的類別,這個類別可能不太適用某些情境 ,但情境中需要的基本功能都可以用它來實現(可能需要稍作修改),所以為它寫一個 w rapper 或 adapter 順便 Adapter <=> Wrapper Adapter 是 ad-hoc 的,而且專門用來解決 incompatibilities 問題 通常 adapter adapt 的兩邊都是不能更改的,adapter 的功用就是負責連接兩邊 Wrapper 則是用來臨時更改功能/解決 incompatibility 問題,不是最終方案 通常有 wrapper 出現就代表可能程式有還沒確定或統一的地方,等到需求/架構確定了就 會把 wrapper 拿掉,要馬統一要馬獨立出來 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 174.112.170.249 (加拿大) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1568961812.A.AF3.html ※ 編輯: CoNsTaR (174.112.170.249 加拿大), 09/20/2019 16:12:37