偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

解讀面向?qū)ο蟮某绦蛟O(shè)計(jì)(二)

開發(fā) 開發(fā)工具
本文是本系列的第二篇,主要介紹的是OOP技術(shù)的歷史,以及優(yōu)點(diǎn)和缺點(diǎn),希望對(duì)你有幫助,一起來看。

面向?qū)ο缶幊?/strong>(ObjectOrientedProgramming,OOP,面向?qū)ο蟪绦蛟O(shè)計(jì))是一種計(jì)算機(jī)編程架構(gòu)。接上一篇。

OOP的一條基本原則是計(jì)算機(jī)程序是由單個(gè)能夠起到子程序作用的單元或?qū)ο蠼M合而成。OOP達(dá)到了軟件工程的三個(gè)主要目標(biāo):重用性、靈活性和擴(kuò)展性。

一、OOP技術(shù)的歷史

面向?qū)ο蠹夹g(shù)最初是從面向?qū)ο蟮某绦蛟O(shè)計(jì)開始的,它的出現(xiàn)以60年代simula語言為標(biāo)志。80年代中后期,面向?qū)ο蟪绦蛟O(shè)計(jì)逐漸成熟,被計(jì)算機(jī)界理解和接受,人們又開始進(jìn)一步考慮面向?qū)ο蟮拈_發(fā)問題。這就是九十年代以MicrosoftVisual系列OOP軟件的流行的背景。

傳統(tǒng)的結(jié)構(gòu)化分析與設(shè)計(jì)開發(fā)方法是一個(gè)線性過程,因此,傳統(tǒng)的結(jié)構(gòu)化分析與設(shè)計(jì)方法要求現(xiàn)實(shí)系統(tǒng)的業(yè)務(wù)管理規(guī)范,處理數(shù)據(jù)齊全,用戶能全面完整地其業(yè)務(wù)需求。

傳統(tǒng)的軟件結(jié)構(gòu)和設(shè)計(jì)方法難以適應(yīng)軟件生產(chǎn)自動(dòng)化的要求,因?yàn)樗赃^程為中心進(jìn)行功能組合,軟件的擴(kuò)充和復(fù)用能力很差。

對(duì)象是對(duì)現(xiàn)實(shí)世界實(shí)體的模擬,因面能更容易地理解需求,即使用戶和分析者之間具有不同的教育背景和工作特點(diǎn),也可很好地溝通。

區(qū)別面向?qū)ο蟮拈_發(fā)和傳統(tǒng)過程的開發(fā)的要素有:對(duì)象識(shí)別和抽象、封裝、多態(tài)性和繼承。

對(duì)象(Object)是一個(gè)現(xiàn)實(shí)實(shí)體的抽象,由現(xiàn)實(shí)實(shí)體的過程或信息牲來定義。一個(gè)對(duì)象可被認(rèn)為是一個(gè)把數(shù)據(jù)(屬性)和程序(方法)封裝在一起的實(shí)體,這個(gè)程序產(chǎn)生該對(duì)象的動(dòng)作或?qū)λ邮艿降耐饨缧盘?hào)的反應(yīng)。這些對(duì)象操作有時(shí)稱為方法。對(duì)象是個(gè)動(dòng)態(tài)的概念,其中的屬性反映了對(duì)象當(dāng)前的狀態(tài)。

類(Class)用來描述具有相同的屬性和方法的對(duì)象的集合。它定義了該集合中每個(gè)對(duì)象所共有的屬性和方法。對(duì)象是類的實(shí)例。

由上分析不難看出,盡管OOP技術(shù)更看中用戶的對(duì)象模型,但其目的都是以編程為目的的,而不是以用戶的信息為中心的,總想把用戶的信息納入到某個(gè)用戶不感興趣的“程序?qū)ο?rdquo;中。

二、OOP的優(yōu)缺點(diǎn)

OOP的優(yōu)點(diǎn)

使人們的編程與實(shí)際的世界更加接近,所有的對(duì)象被賦予屬性和方法,結(jié)果編程就更加富有人性化。

OOP的缺點(diǎn)

就C++而言,由于面向更高的邏輯抽象層,使得C++在實(shí)現(xiàn)的時(shí)候,不得不做出性能上面的犧牲,有時(shí)候甚至是致命的(所有對(duì)象的屬性都經(jīng)過內(nèi)置多重指針的間接引用是其性能損失的主要原因之一;不過,筆者的局限性在于未使用過VC++外的面向?qū)ο笳Z言,所以不是十分肯定,哈哈,有人笑出來了…)。

在計(jì)算機(jī)速度飛速發(fā)展的今天,你可能會(huì)說,一丁點(diǎn)的性能犧牲沒什么大不了。是的,從面向?qū)ο蟮慕嵌龋沟木幊痰慕Y(jié)構(gòu)更加清晰完整,數(shù)據(jù)更加獨(dú)立和易于管理,性能的犧牲可以帶來這么多的好處,沒有理由不做穩(wěn)賺的生意吧?

不過,在某些對(duì)速度要求極高特殊場合,例如你做的是電信的交換系統(tǒng),每秒鐘有超過百萬的人同時(shí)進(jìn)行電話交換,如果,每一個(gè)數(shù)據(jù)交換過程都是一個(gè)對(duì)象,那么總的性能損失將是天文數(shù)字??!

或者這個(gè)例子不夠貼身,再舉個(gè)例子吧。假如你受聘于一個(gè)游戲設(shè)計(jì)公司,老板希望做出來的游戲可以更多的兼顧到更多的電腦使用者,游戲每秒鐘的運(yùn)行的幀可以更多,子彈和爆炸物可以更多、更華麗。那么,你會(huì)發(fā)現(xiàn)使用C++會(huì)使你的程序變得笨拙,無法滿足你的需求,除非你非得要你的游戲運(yùn)行于奔騰四的機(jī)器上(如果不是,而你又堅(jiān)持用C++的對(duì)象編程,那么請(qǐng)減少主角的槍的威力吧)。

如果你是冥頑不寧的人,你說不相信OOP會(huì)有性能上的損失,那么,我記得曾看到在CSDN上關(guān)于VB和VC執(zhí)行效率的討論的文章,講述的就是使用了MFC以后,執(zhí)行效率甚至低于VB開發(fā)出來的東西。請(qǐng)各位驗(yàn)證一下:如果使用的是純粹的C語言語法的話,那么一定會(huì)比在VB編出來的東西要快很多(GetTickCount函數(shù)可以查閱MSDN,如果想更加精確一些,可以使用QueryPerformanceCounter函數(shù))。

進(jìn)一步閱讀:解讀面向?qū)ο蟮某绦蛟O(shè)計(jì)(三)

【編輯推薦】

  1. 用Objective-C進(jìn)行面向?qū)ο蟮木幊?/span>
  2. 詳細(xì)介紹Scala面向?qū)ο缶幊?/span>
  3. JavaScript面向?qū)ο缶幊躺钊敕治?/span>
  4. 軟件設(shè)計(jì)師:關(guān)于面向?qū)ο蟮囊恍┧伎?/span>
責(zé)任編輯:于鐵 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-05 16:05:43

面向?qū)ο缶幊?/a>

2011-07-05 15:22:04

程序設(shè)計(jì)

2022-06-07 14:13:58

Simula編程語言GNU cim

2012-03-14 10:48:05

C#

2009-10-21 17:36:36

VB基礎(chǔ)教程

2011-07-10 15:36:54

C++

2013-12-16 16:58:47

OpenMP并行

2013-04-17 10:46:54

面向?qū)ο?/a>

2010-12-24 10:23:50

程序員

2012-06-07 10:11:01

面向?qū)ο?/a>設(shè)計(jì)原則Java

2011-04-11 10:44:53

對(duì)象編程C++

2013-12-12 16:30:20

Lua腳本語言

2011-08-25 14:43:55

LUA對(duì)象序列化

2012-12-25 10:51:39

IBMdW

2011-05-13 10:51:25

javascript

2011-05-25 10:59:26

Javascript繼承

2012-03-13 09:24:30

Java

2012-05-31 10:24:59

架構(gòu)

2013-06-07 11:31:36

面向?qū)ο?/a>設(shè)計(jì)模式

2022-04-01 10:27:04

面向?qū)ο?/a>串口協(xié)議代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)