關於物件導向,系統和程式執行緒的一些想法

2021-06-16 01:54:03 字數 2227 閱讀 4307

上篇提到了物件的方法定義,一類是表示對物件的某種操作;另一類表示物件提供的某種功能和服務。基於實體物件的方法可以組成更複雜的方法,這些更複雜的方法在現實世界中可能沒實體物件對應,但是依然可以定義乙個物件來包含這些方法。例如流程的物件,服務的物件。物件有了,方法有了,接下來的問題是怎麼來執行它們,怎麼驅動這些「死」的程式**呢?

一般來說程式都是被使用者使用,提供一定的功能服務。這些功能服務的實現有兩種模式,一是接收使用者請求,執行相應操作,然後將結果返還給使用者;另一種是自動地執行既定的操作,完成一定的功能。所以我們把執行時的程式看作乙個對外提供操作和服務介面,內部有自動操作流程的系統。該系統由物件集合構成,包含粗粒度的流程實現物件,服務實現物件;細粒度的實體物件。

(1)對於系統內部的服務實現物件,它沒有真正的實體對應,只是一組對其他物件操作指令的序列。可以說這類物件是死的,只能被動地接受方法呼叫,提供一定的功能服務。

(2)

在整個系統上會有乙個「活」的方法,這個方法來接收使用者請求,呼叫相應服務實現物件的方法得到請求結果,然後返還給使用者。在程式實現上,這個方法是執行緒主函式,會由乙個或者多個執行緒來執行。可以把這種作為執行緒主函式的方法叫做驅動方法,區別於其他普通的方法。

(3)對於系統內部的流程實現物件,這個物件的方法實現乙個流程操作。這個流程是自驅動的流程,自動持續地執行既定的操作。這個實現流程的方法也會作為是執行緒主函式,會由乙個或者多個執行緒來執行。

(4)實體物件有「死」的,有「活」的。「死」的物件提供普通方法,被動的接受呼叫;「活」的物件也提供普通方法,但是也有內在的「活」的方法,這類「活」的方法會作為執行緒的主函式,描述這個實體物件自身對於外部各種作用和內部狀態變化的反應規則。從這個角度上,實體本身也是乙個系統,即實體提供操作和服務的普通方法,同時有乙個驅動方法實現對於外部作用的各種被動反應;乙個驅動方法實現內部自發的各種主動行為。例如「人」這個物件定義,有的方法表示外部作用於「人」的反應,有的方法表示「人」提供的某種功能,同時人有著自己的大腦和心臟(即執行緒),驅動「人」對於外部各種作用,請求的反應,驅動「人」自身內部的一些思維和生理迴圈系統。

乙個執行時物件示意圖如下:

說明:(1)「死」的物件提供的都是普通的方法;「活」的物件除了提供普通方法,還有驅動方法。

(2)「死」物件的普通方法可以直接被外部系統呼叫,是被外部系統的執行緒呼叫執行的。

(3)「活」物件的驅動方法

1實現物件對外部作用的被動反應,接收外界發來的操作呼叫和服務請求,呼叫物件內部的普通方法,得到結果後返回給外界呼叫者。驅動方法

1作為該物件對於外界的唯一介面,遮蔽了物件內部的普通方法。

(4)「活」物件的驅動方法

2實現物件內部自發的主動行為,同樣基於物件內部的普通方法。

(5)「活」物件可以同時有驅動方法

1和驅動方法

2,也可以只有其中的乙個。

乙個執行時程式示意圖如下:  

說明:(1)系統的驅動方法負責響應外界的請求,呼叫內部各種物件的方法,完成對外界請求的處理。

(2)流程物件的驅動方法實現系統內部自發的流程操作。

關於物件的方法,上文中提到一類是表示對物件的某種操作;另一類表示物件提供的某種功能和服務。現在補充一類,即驅動物件對外對內行為的方法。這類方法在程式裡會是執行緒的主函式。概括一下兩篇文章的中心思想:

(1)

所有的方法可以用狀態機模型

+規則集模型來描述。

(2)

物件的方法從功能上分為對物件的操作,物件提供的功能和服務,作為執行緒主函式的驅動方法。

(3)

物件包括實體物件,提供操作和服務的非實體物件,流程物件,系統物件。

(4)程式,實體都可以用系統模型來表示。

(5)

完整的系統包含內部屬性和子系統集合;提供各種操作,功能服務方法;對外的自驅動介面實現系統對於外部各種作用的反應規則;內部有自驅動的主動行為操作,描述系統內部對於狀態變化的反應規則。

(6)程式中的物件定義可以對應整個系統,也可以對應系統的乙個部分。

目前很流行的

soa開發模式,旨在把系統劃分為各種粒度提供一定功能的服務,然後基於細粒度的服務構建粗粒度的服務,基於服務構建內部自動的流程操作,同時系統會有對外的服務介面,用來給使用者提供功能服務。這和上面描述的系統模型相契合。

關於物件導向 (一)

物件導向有哪些?什麼是物件導向?物件導向的屬性?物件導向有哪些?1.抽象 2.封裝 3.繼承 4.多型 什麼是物件導向?物件導向 將現實生活中的事物,封裝成物件,通過物件的例項化和呼叫,完成需求。物件導向,關注點是物件的屬性和方法,而忽略事物執行的順序或過程。面向過程 面向過程 將現實生活中的事物,...

關於javascript物件導向和原型

ecmascript有兩種開發模式 1.函式式 過程化 2.物件導向 oop 物件導向的語言有乙個標誌,那就是類的概念,而通過類可以建立任意多個具有相同屬性和方法的物件。但是,ecmascript沒有類的概念,因此它的物件也與基於類的語言中的物件有所不同。二.建立物件 建立乙個物件,然後給這個物件新...

物件導向 子系統和包

主要的邏輯構造塊是類,其他邏輯結構的概念則是子系統和包。分而治之可以將大問題劃分為許多小問題,從而簡化直接求解大問題的難度,這導致了問題空間的分層模組化,也導致了系統被劃分為子系統和軟體包。這種劃分必須謹慎規劃,以減少子系統和軟體包的層次間的依賴。子系統的概念特殊化了構件的概念,並被建模為構建的構造...