某日小明上數學課,他的老師給了很多個不同的直角三角板讓小明用尺子去量三角板的三個邊,並將長度記錄下來。兩個小時過去,小明完成任務,把資料拿給老師。老師給他說,還有乙個任務就是觀察三條邊之間的數量關係。又是兩個小時,聰明的小明連蹦帶跳走進了辦公室,說:「老師,我找到了,三條邊之中有兩條,它們的平方和約等於另外一條的平方。」老師拍拍小明的頭,「你今天學會了乙個定理,勾股定理。它就是說直角三角形有兩邊平方和等於第三邊的平方和」。
另乙個故事,某日老師告訴小明「今天要教你乙個定理,勾股定理。」小明說,「什麼是勾股定理呢?」「勾股定理是說,直角三角形中有兩條邊的平方和等於第三邊的平方。」然後老師給了一大堆直角三角板給小明,讓他去驗證。兩個小時後,小明告訴老師定理是正確的.
第乙個故事說的是自底向上的設計分析方法,第二個故事說的是自頂而下的設計分析方法。
我們用領域建模ddd這種方式,從乙個乙個用例去推導然後建模乙個的業務的方式是自底向上的方式。
而我們在抽象的角度去定義問題,然後問題拆解,這是乙個自頂向下的方式。自頂向下最重要的是定義問題,而如何定義問題的前提是知道問題的定義。
阿爾伯特· 愛因斯坦曾經說:「 提出乙個問題往往比解決乙個問題更重要。因為解決問題也許僅是乙個數學上或實驗上的技能而已,而提出新的問題,卻需要有創造性的想象力,而且標誌著科學的真正進步。」
兩種分析方法的根本區別是:自底向上的分析,是從具體到抽象;自頂向下的分析,是從抽象到具體。兩種分析思路恰恰又是哲學思考問題的兩大方向。 自底向上和自頂向下
動態規劃的式子都是狀態p由狀態q1 q2 q3 之中選擇乙個或幾個計算出來的形式,但是如果一直是一些狀態這樣遞迴下去,最後會無限迴圈的,所以每個式子一直寫下去最後都會得到一些狀態p是常數 遞迴邊界 的形式。以上可構造乙個dag 自底向上就是已經知道了所有遞迴邊界,把所有可能的狀態都算出來。基本步驟是...
自頂向下和自底向上理解程式設計
example 客戶端程式如何從服務端取資料?自頂向下理解 客戶端想要動態地獲取資料 比如使用者手勢 點選等事件觸發 通過呼叫服務即可 如wcf service,rest service domainservice 等 取到資料後 如json 反序列化到客戶端相應的model類中 而服務幫助我們完成...
自頂向下和自底向上的歸併排序區別
歸併排序中最基本的操作是 歸併 即將兩個 2 路歸併 或兩個以上的有序陣列組合成乙個更大的有序陣列。按照歸併順序的不同,歸併排序可以分為自頂向下和自底向上兩類。自頂向下的歸併排序進行的操作主要就是對陣列的拆分與合併。通過層層拆分得到單元素陣列,天生有序,然後歸併兩個單元素陣列得到乙個較大的有序陣列,...