自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解讀面向對象的程序設計(二)

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

面向對象編程(ObjectOrientedProgramming,OOP,面向對象程序設計)是一種計算機編程架構。接上一篇。

OOP的一條基本原則是計算機程序是由單個能夠起到子程序作用的單元或對象組合而成。OOP達到了軟件工程的三個主要目標:重用性、靈活性和擴展性。

一、OOP技術的歷史

面向對象技術最初是從面向對象的程序設計開始的,它的出現以60年代simula語言為標志。80年代中后期,面向對象程序設計逐漸成熟,被計算機界理解和接受,人們又開始進一步考慮面向對象的開發(fā)問題。這就是九十年代以MicrosoftVisual系列OOP軟件的流行的背景。

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

傳統(tǒng)的軟件結構和設計方法難以適應軟件生產自動化的要求,因為它以過程為中心進行功能組合,軟件的擴充和復用能力很差。

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

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

對象(Object)是一個現實實體的抽象,由現實實體的過程或信息牲來定義。一個對象可被認為是一個把數據(屬性)和程序(方法)封裝在一起的實體,這個程序產生該對象的動作或對它接受到的外界信號的反應。這些對象操作有時稱為方法。對象是個動態(tài)的概念,其中的屬性反映了對象當前的狀態(tài)。

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

由上分析不難看出,盡管OOP技術更看中用戶的對象模型,但其目的都是以編程為目的的,而不是以用戶的信息為中心的,總想把用戶的信息納入到某個用戶不感興趣的“程序對象”中。

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

OOP的優(yōu)點

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

OOP的缺點

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

在計算機速度飛速發(fā)展的今天,你可能會說,一丁點的性能犧牲沒什么大不了。是的,從面向對象的角度,使的編程的結構更加清晰完整,數據更加獨立和易于管理,性能的犧牲可以帶來這么多的好處,沒有理由不做穩(wěn)賺的生意吧?

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

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

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

進一步閱讀:解讀面向對象的程序設計(三)

【編輯推薦】

  1. 用Objective-C進行面向對象的編程
  2. 詳細介紹Scala面向對象編程
  3. JavaScript面向對象編程深入分析
  4. 軟件設計師:關于面向對象的一些思考
責任編輯:于鐵 來源: 互聯網
相關推薦

2011-07-05 15:22:04

程序設計

2011-07-05 16:05:43

面向對象編程

2022-06-07 14:13:58

Simula編程語言GNU cim

2012-03-14 10:48:05

C#

2009-10-21 17:36:36

VB基礎教程

2011-07-10 15:36:54

C++

2013-12-16 16:58:47

OpenMP并行

2013-04-17 10:46:54

面向對象

2010-12-24 10:23:50

程序員

2013-12-12 16:30:20

Lua腳本語言

2012-06-07 10:11:01

面向對象設計原則Java

2011-04-11 10:44:53

對象編程C++

2011-08-25 14:43:55

LUA對象序列化

2012-12-25 10:51:39

IBMdW

2012-05-31 10:24:59

架構

2011-05-13 10:51:25

javascript

2011-05-25 10:59:26

Javascript繼承

2015-03-16 11:14:26

Java程序員面向對象程序員

2022-04-01 10:27:04

面向對象串口協議代碼

2010-07-08 10:47:42

UML面向對象
點贊
收藏

51CTO技術棧公眾號