1、什么是面向對象編程(Object-Oriented Programming)?
面向對象編程(Object-Oriented Programming)簡(jiǎn)稱(chēng)OOP技術(shù),是開(kāi)發(fā)計算機應用程序的一種新方法、新思想。過(guò)去的面向過(guò)程編程常常會(huì )導致所有的代碼都包含在幾個(gè)模塊中,使程序難以閱讀和維護。在做一些修改時(shí)常常牽一動(dòng)百,使以后的開(kāi)發(fā)和維護難以為繼。而使用OOP技術(shù),常常要使用許多代碼模塊,每個(gè)模塊都只提供特定的功能,它們是彼此獨立的,這樣就增大了代碼重用的幾率,更加有利于軟件的開(kāi)發(fā)、維護和升級。
在面向對象中,算法與數據結構被看做是一個(gè)整體,稱(chēng)作對象,現實(shí)世界中任何類(lèi)的對象都具有一定的屬性和操作,也總能用數據結構與算法兩者合一地來(lái)描述,所以可以用下面的等式來(lái)定義對象和程序:
對象=(算法+數據結構),程序=(對象+對象+……)。
從上面的等式可以看出,程序就是許多對象在計算機中相繼表現自己,而對象則是一個(gè)個(gè)程序實(shí)體。
2、什么是面向組件編程(Component-Oriented Programming)?
組件不是一個(gè)新的概念,Java中的javaBean規范和EJB規范都是典型的組件。組件的特點(diǎn)在于他定義了一種通用的處理方式。例如,JavaBean 擁有內視的特性,這樣就可以通過(guò)工具來(lái)實(shí)現JavaBean的可視化。而EJB規范定義了企業(yè)服務(wù)中的一些特性,使得EJB容器能夠為符合EJB規范的代碼增添企業(yè)計算所需要的能力,例如事務(wù)、持久化、池等。
所以,組件比起對象來(lái)的進(jìn)步就在于通用的規范的引入。通用規范往往能夠為組件添加新的能力(就像上面所討論的),但也給組件添加了限制,例如你需要實(shí)現EJB的一些接口
COP比OOP更進(jìn)一步。通常OOP將數據對象組織到實(shí)體中。這種方法具有很多優(yōu)點(diǎn)。但是,OOP有一個(gè)大的限制:對象之間的相互依賴(lài)關(guān)系。去掉這個(gè)限制的一個(gè)好的想法就是組件。組件和一般對象之間的關(guān)鍵區別是組件是可以替代的。
3、什么是面向方面編程(Aspect-Oriented Programming)?
將通用需求功能從不相關(guān)類(lèi)之中分離出來(lái);同時(shí),能夠使得很多類(lèi)共享一個(gè)行為,一旦行為發(fā)生變化,不必修改很多類(lèi),只要修改這個(gè)行為就可以。
AOP就是這種實(shí)現分散關(guān)注的編程方法,它將“關(guān)注”封裝在“方面”中。
4、什么是面向服務(wù)編程(Service-Oriented Programming)?
SOP是一種體系結構,目標是在軟件代理交互中獲得松散耦合。一個(gè)服務(wù)是一個(gè)服務(wù)提供者為一個(gè)服務(wù)消費者獲得其想要的最終結果的一個(gè)工作單元。服務(wù)者與消費者都以軟件代理代表他們自己的角色。
這聽(tīng)起來(lái)有些太抽象,但是SOP確實(shí)無(wú)處不在。讓我們在你的住房中找到一個(gè)SOP的例子。例如播放一個(gè)CD,你可以將要播放的CD放入CD機中,CD機將為你播放這張CD,CD機提供了一個(gè)CD播放服務(wù)。這里的好處就是你可以用不同的CD機去播放同一張CD。他們能提供同樣的CD播放服務(wù),但是服務(wù)質(zhì)量是不同的。
SOP的思想明顯不同于面向對象的編程,面向對象編程強烈的建議你應該將數據與其操作綁定。因此在面向對象編程風(fēng)格中,每張CD 有它自己的CD播放機,他們之間不能被拆開(kāi)。這聽(tīng)起來(lái)很奇怪,但是這就是我們建立許多已存軟件系統的方式。
而SOP就不一樣了,為了減少異構性、互操作性和不斷改變的要求的問(wèn)題,這樣的體系結構應該提供平臺來(lái)構建具有下列特征的應用程序服務(wù):
松散耦合、位置透明、協(xié)議獨立
基于這樣的面向服務(wù)的體系結構,服務(wù)使用者甚至不必關(guān)心與之通信的特定服務(wù),因為底層基礎設施或服務(wù)“總線(xiàn)”將代表使用者做出適當的選擇?;A設施對請求者隱藏了盡可能多的技術(shù)。特別地,來(lái)自不同實(shí)現技術(shù)(如 J2EE 或 .NET)的技術(shù)規范不應該影響 SOP用戶(hù)。如果已經(jīng)存在一個(gè)服務(wù)實(shí)現,我們就還應該重新考慮用一個(gè)“更好”的服務(wù)實(shí)現來(lái)代替,新的服務(wù)實(shí)現必須具有更好的服務(wù)質(zhì)量。
聯(lián)系客服