把軟件系統(tǒng)看成是各種對象的集合,這更接近人的思維。軟件需求的變動往往是功能的變動,而功能的執(zhí)行者。更加符合人類的思維,易于編程。
面向?qū)ο蠓椒ǎ∣bject-Oriented Method)是一種把面向?qū)ο蟮乃枷霊糜谲浖_發(fā)過程中,指導開發(fā)活動的系統(tǒng)方法,簡稱OO (Object-Oriented)方法,是建立在“對象”概念基礎上的方法學。對象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實體有直接對應關系,一個對象類定義了具有相似性質(zhì)的一組對象。而每繼承性是對具有層次關系的類的屬性和操作進行共享的一種方式。所謂面向?qū)ο缶褪腔趯ο蟾拍?,以對象為中心,以類和繼承為構(gòu)造機制,來認識、理解、刻畫客觀世界和設計、構(gòu)建相應的軟件系統(tǒng)。
使用面向?qū)ο笏枷脒M行開發(fā)有以下優(yōu)點:
1、易維護
采用面向?qū)ο笏枷朐O計的結(jié)構(gòu),可讀性高,由于繼承的存在,即使改變需求,那么維護也只是在局部模塊,所以維護起來是非常方便和較低成本的。
2、質(zhì)量高
在設計時,可重用現(xiàn)有的,在以前的項目的領域中已被測試過的類使系統(tǒng)滿足業(yè)務需求并具有較高的質(zhì)量。
3、效率高
在軟件開發(fā)時,根據(jù)設計的需要對現(xiàn)實世界的事物進行抽象,產(chǎn)生類。使用這樣的方法解決問題,接近于日常生活和自然的思考方式,勢必提高軟件開發(fā)的效率和質(zhì)量。
4、易擴展
由于繼承、封裝、多態(tài)的特性,自然設計出高內(nèi)聚、低耦合的系統(tǒng)結(jié)構(gòu),使得系統(tǒng)更靈活、更容易擴展,而且成本較低。
缺點:
1.性能損失.面向?qū)ο缶幊踢_到了軟件工程的三個主要目標:重用性、靈活性和擴展性,相對的為了實現(xiàn)相應的目標, 就會有一定的性能損失,如果程序進行超大規(guī)模計算,則性能損失就比較明顯;
2.對數(shù)學運算等對象化很弱的編程不適用;
優(yōu)點:
1、易維護
采用面向?qū)ο笏枷朐O計的結(jié)構(gòu),可讀性高,由于繼承的存在,即使改變需求,那么維護也只是在局部模塊,所以維護起來是非常方便和較低成本的。
2、質(zhì)量高
在設計時,可重用現(xiàn)有的,在以前的項目的領域中已被測試過的類使系統(tǒng)滿足業(yè)務需求并具有較高的質(zhì)量。
3、效率高
在軟件開發(fā)時,根據(jù)設計的需要對現(xiàn)實世界的事物進行抽象,產(chǎn)生類。使用這樣的方法解決問題,接近于日常生活和自然的思考方式,勢必提高軟件開發(fā)的效率和質(zhì)量。
4、易擴展
由于繼承、封裝、多態(tài)的特性,自然設計出高內(nèi)聚、低耦合的系統(tǒng)結(jié)構(gòu),使得系統(tǒng)更靈活、更容易擴展,而且成本較低。
缺點:
1、沒有準確的定義:很難提供一個準確的定義來說明面向?qū)ο驞BMS應建成什么樣,這是因為該名稱已經(jīng)應用到很多不同的產(chǎn)品和原型中,而這些產(chǎn)品和原型考慮的方面可能不一樣。
2、維護困難:隨著組織信息需求的改變,對象的定義也要求改變并且需移植現(xiàn)有數(shù)據(jù)庫,以完成新對象的定義。當改變對象的定義和移植數(shù)據(jù)庫時,它可能面臨真正的挑戰(zhàn)。
3、不適合所有的應用:面向?qū)ο髷?shù)據(jù)模型用于需要管理數(shù)據(jù)對象之間存在的復雜關系的應用,它們特別適合于特定的應用,例如工程、電子商務、醫(yī)療等,但并不適合所有應用。當用于普通應用時,其性能會降低并要求很高的處理能力。
談到面向?qū)ο螅@方面的文章非常多。
但是,明確地給出對象的定義或說明對象的定義的非常少——至少我現(xiàn)在還沒有發(fā)現(xiàn)。其初,“面向?qū)ο蟆笔菍V冈诔绦蛟O計中采用封裝、繼承、抽象等設計方法。
可是,這個定義顯然不能再適合現(xiàn)在情況。面向?qū)ο蟮乃枷胍呀?jīng)涉及到軟件開發(fā)的各個方面。
如,面向?qū)ο蟮姆治觯∣OA,Object Oriented Analysis),面向?qū)ο蟮脑O計(OOD,Object Oriented Design)、以及我們經(jīng)常說的面向?qū)ο蟮木幊虒崿F(xiàn)(OOP,Object Oriented Programming)。許多有關面向?qū)ο蟮奈恼露贾皇侵v述在面向?qū)ο蟮拈_發(fā)中所需要注意的問題或所采用的比較好的設計方法。
看這些文章只有真正懂得什么是對象,什么是面向?qū)ο螅拍茏畲蟪潭鹊貙ψ约河兴砸?。這一點,恐怕對初學者甚至是從事相關工作多年的人員也會對它們的概念模糊不清。
面向?qū)ο笫钱斍坝嬎銠C界關心的重點,它是90年代軟件開發(fā)方法。
說幾個主要的: 優(yōu): (1)是一種全新的系統(tǒng)分析設計方法(對象、類、結(jié)構(gòu)屬性、方法) (2)適用于各類信息系統(tǒng)的開發(fā)。
(3)實現(xiàn)了對客觀世界描述到軟件結(jié)構(gòu)的直接轉(zhuǎn)換 ,大大減少后續(xù)軟件開發(fā)量。 (4)開發(fā)工作的重用性、繼承性高,降低重復工作量。
(5)縮短了開發(fā)周期。 (這幾點是網(wǎng)上復制的) 缺點也很明顯。
類和繼承等特點使得程序會多很多指針操作來定位函數(shù)入口和自身要維護虛擬方法表等額外的工作,程序的處理效率相對要低(但程序開發(fā)效率高)。所以現(xiàn)在單純的C語言還是大為用武之地的。
但隨著科技的進步,CPU和內(nèi)存的性能也突發(fā)猛進。由原來的1核到8核,內(nèi)存16M和現(xiàn)在的16G,所以程序的效率多多少少會隨著硬件的性能變得更好。
你可以發(fā)現(xiàn)很多大的項目也開始由C轉(zhuǎn)而變成讓c++和JAVA等面向?qū)ο髞韺懥恕?/p>
優(yōu)點:
(1)面向用戶的觀點;
(2)自頂向下的分析設計與自底向上的系統(tǒng)實施;
(3)嚴格劃分工作階段明確各階段的界限及任務;
(4)工作成果規(guī)范化、文獻化;
(5)及早地發(fā)現(xiàn)系統(tǒng)開發(fā)過程中的錯誤提高系統(tǒng)的成功率。
缺點:
(1)開發(fā)周期較長難以適應環(huán)境的變化。
(2)開發(fā)過程嚴格無法適應需求的變化。
(3)難以應付非結(jié)構(gòu)化的問題。
(4)用戶很難盡早建立系統(tǒng)預期的概念結(jié)構(gòu)。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡傳播權(quán)保護條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學習鳥. 頁面生成時間:3.740秒