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