1. 程式人生 > >面向物件方法與結構化方法比較

面向物件方法與結構化方法比較

        結構化方法首先關心的是功能,強調以模組(即過程)為中心,採用模組化、自頂向下、逐步求精設計過程,系統是實現模組功能的函式和過程的集合,結構清晰、可讀性好,的確是提高軟體開發質量的一種有效手段。
結構化設計從系統的功能入手,按照工程標準和嚴格規範將系統分解為若干功能模組。然而,由於使用者的需求和軟、硬體技術的不斷髮展變化,作為系統基本成分的功能模組很容易受到影響,區域性修改甚至會引起系統的根本性變化。開發過程前期入手快而後期頻繁改動的現象比較常見。
        面向物件方法則從所處理的資料入手,以資料為中心來描述系統,資料相對於功能而言,具有更強的穩定性,這樣設計出的系統模型往往能較好地對映問題域模型。物件、類,、繼承性、多型性、動態定連概念和設施的引入使用,顯然令面向物件的設計方法具有一定的優勢,能為生產可重用的軟體構件和解決軟體的複雜性問題提供一條有效的途徑。
        面向物件的設計過程就是指通過建立一些類以及它們之間的關係來解決實際問題,這就需要對問題域中的物件作整體分析,類和類間關係的設計要求較高,否則設計出的並不是真正意義上的面向物件的軟體系統,而只是一些類的堆砌而已,不能體現出面向物件設計方法的優勢之處。
     同時,系統的分析設計是一個注重實踐的領域,不僅僅依賴於一整套核心的概念與原理,要想設計出一個成功的系統來,還需要相應的語言、工具和技術的有力支援。在這方面,經過多年的實踐和發展,適應結構化方法的技術和開發環境已經相當成熟穩定。而對面向物件方法而言,雖然近時期湧現了大量的新工具和新技術,但仍有待於不斷的完善和改進,特別是面向物件的資料庫技術。
結束語-理解和體會
1. 軟體工程的目標是以最小的代價開發出滿足使用者需求的軟體。為此,根據系統的實際需求,分別針對具體情況選擇採用不同的設計方法,可以充分發揮面向物件與結構化方法各自的優勢。目前在大多數軟體系統的分析設計過程中,這兩者方法都兼而有之。
事實上,在上述《機動裝置管理系統》的開發過程中,除了使用物件模型、動態模型等面向物件的一些建模技術外,結構化的一些技術也被採用了,比如為了清晰描述系統的執行流程,依然使用了系統流程圖,這些技術的綜合使用起到了非常良好的作用。
2. 理解是修改維護任何一個軟體系統的基礎,對面向物件的軟體而言,理解該軟體就需要了解軟體系統中主要物件的整個執行機制。但物件間的並行、繼承、傳遞、啟用等特性,可能會對後期維護人員快速理解系統原設計思想帶來一定的障礙。目前,支援面向物件方法的軟體開發環境中能幫助理解軟體設計思路的工具並不多,在這方面結構化方法佔有相對優勢。所以,使用面向物件方法設計的軟體系統要切實注意避免此類理解錯誤對開發帶來的不良影響。
3. 不論哪一種設計方法,正確清晰的需求界定都是開發一個成功的軟體系統必不可少的前提條件,否則再好的設計方法也無濟於事。 

相關推薦

面向物件方法結構方法比較

        結構化方法首先關心的是功能,強調以模組(即過程)為中心,採用模組化、自頂向下、逐步求精設計過程,系統是實現模組功能的函式和過程的集合,結構清晰、可讀性好,的確是提高軟體開發質量的一種有效手段。結構化設計從系統的功能入手,按照工程標準和嚴格規範將系統分解為若干功

面向物件方法結構方法各自的特點利弊

結構化技術的特點:把現實世界描繪為資料在資訊系統中的流動,在資料流動過程中資料發生轉化。通過自頂向下的程式設計將複雜的程式分解為程式模組的層次圖。概括為自頂向下、逐步求精、模組化設計、結構化編碼的基本特點。面向物件的特點:面向物件技術將資料模型和處理模型二者合一,將屬性和方

Go面向物件三之結構方法

一:結構體方法定義 type Student struct { Name string Age int }//stu可以看做Student的副本,stu就代表Student func (stu Student) say() string { }  二:簡單舉例 pa

面向物件開發方法面向資料流的結構開發方法有什麼不同?

(1)結構化開發方法是使用最廣泛、歷史最長的過程化開發方法。結構化開發方法產生過程的抽象,這些抽象把軟體視為 處理流,定義構成一系列步驟的演算法,每一步驟都是帶有預定義輸入和特定輸出的一個過程,把這些步驟串聯在一起可產生合理 的穩定的貫通於整個程式的控制流。這將最終導致一個很簡單的具有靜

面向物件—的__new__()方法詳解 [Python] Python 之 __new__() 方法例項

[Python] Python 之 __new__() 方法與例項化   __new__() 是在新式類中新出現的方法,它作用在構造方法建造例項之前,可以這麼理解,在 Python 中存在於類裡面的構造方法 __init__() 負責將類的例項化,而在 __init__()

Java面向物件——類方法

面向物件——能進行現實生活的抽象 世界是由一系列物件互相組合形成(多個物件之間的相互協作),每個物件有自己的屬性和方法。 通俗解釋:狗吃糧,狗和糧是兩個物件 ,吃是行為 每個物件——類,每個類有自己的屬性及方法 新興的程式設計正規化: 面向切面程式設計:EE-AOP 面向介面

Java面向物件——類方法(練習:將車抽象為類)

程式碼: public class Car{ //屬性 //品牌(不可更改)、產地(不可更改)、顏色、價格 private String brand; private String origin; private String colour; private int price;

純程式碼實用教材,python的面向物件思維類的一些方法

面向物件(Object Oriented,OO)是軟體開發方法。面向物件的概念和應用已超越了程式設計和軟體開發,擴充套件到如資料庫系統、互動式介面、應用結構、應用平臺、分散式系統、網路管理結構、CAD技術、人工智慧等領域。面向物件是一種對現實世界理解和抽象的方法,是計算機程式設計技術發展到一定階

Golang的面向物件程式設計【結構體、方法、繼承、介面】

Golang也支援面向物件程式設計。但與以前學過傳統的面向物件程式語言有區別。 1)Golang沒有類class,Go語言的結構體struct和類class有相似的特性。 2)Golang中不存在繼承,方法過載,建構函式,解構函式,隱藏和this指標。 3)Go

java面向物件——介面方法實現

介面與方法實現 關鍵字interface  implements public interface Smoking { public abstract void smoke();   } public 

乾貨大派送——Python的面向物件思維類的一些方法

有基礎或者是學過其他程式設計的小夥伴,想必對面向物件(Object Oriented,OO)一定不陌生。面向物件(Object Oriented,OO)是軟體開發的方法。它是一種對現實世界理解和抽象的方法。面向物件的概念和應用包含了程式設計、軟體開發、資料庫系統、互動式介面、應用結構、應用平臺、分散式系統、網

C#靜態方法非靜態方法比較

使用 特殊 his 差異比較 method 分配內存 成員方法 關鍵字 ted c#靜態方法與非靜態方法比較: 一、靜態方法:使用static修改的方法就是靜態方法,否則就是非靜態方法。 二、差異比較: 第一:C#靜態成員:(1)靜態成員屬於類所有,非靜態成員屬於類的實

hbase非結構數據庫結構數據庫比較

數據可靠性 插入 聯網 定位 海量數據 倍增 關系型 字符類型 文件 目的:了解hbase與支持海量數據查詢的特性以及實現方式 傳統關系型數據庫特點及局限 傳統數據庫事務性特別強,要求數據完整性及安全性,造成系統可用性以及伸縮性大打折扣。對於高並發的訪問量,數據庫性

作業題:輸入4個整數,找出其中最大的數。用一個函數來實現. 分別使用結構方法和函數嵌套的方法

system 是否 進行 如果 div 使用 clu 函數 整型 之前在main()函數中的思路是: #include <iostream> using namespace std; int main(){ //求四個數中最大的數? /

ReadResolve方法序列

結果 強行 反射 target pos com read str bsp 使用枚舉實現的單例模式,不但可以防止利用反射強行構建單例對象,而且可以在枚舉類對象被反序列化的時候,保證反序列的返回結果是同一對象。 對於其他方式實現的單例模式,如果既想要做到可序列化,又想要反序列

C#靜態類 靜態方法非靜態方法比較

定義 都是 無法 不能 tro 就是 類的本質 bsp true 靜態類: 在類(class)上加入static修飾, 表示該類無法被實例化,並且該類中,無法實例化變量或函數。 那麽如果要在此靜態類中添加函數、變量、屬性,則必須都是靜態的。 靜態類的主要特性: 1:僅包含靜

Python面向物件(類的成員之方法)

day24 類的成員之方法 - 普通方法,儲存在類中,由物件來呼叫,self > 物件  - 靜態方法,儲存在類中,由類直接呼叫  - 類方法,儲存在類中,由類直接呼叫,cls > 當前類 1 class Foo(): 2 def bar(self)

PHP中的面向物件OOP中的魔術方法

一、什麼是魔術方法: PHP為我們提供了一系列用__開頭的函式,這些函式無需自己手動呼叫,會在合適的時機自動呼叫,這類函式稱為魔術函式。 例如: function __construct(){} 在new一個新物件時自動呼叫此函式 二、PHP中都有那些魔術方法,以及它們的作用:

Python基礎(三)--- Python面向物件oop,類、方法和變數,繼承

一、面向物件oop ----------------------------------------------------- 1.類 用來描述具有相同的屬性和方法的物件的集合。 它定義了該集合中每個物件所共有的屬性和方法。 物件是類的例項。

梯度下降之隨機梯度下降 -minibatch 並行方法

問題的引入: 考慮一個典型的有監督機器學習問題,給定m個訓練樣本S={x(i),y(i)},通過經驗風險最小化來得到一組權值w,則現在對於整個訓練集待優化目標函式為: 其中為單個訓練樣本(x(i),y(i))的損失函式,單個樣本的損失表示如下: 引入L2正則,即在損失函式中引入,那麼最終的損失為