面向對象的消息是什麼?
什麼是面向對象中的消息?一條消息由哪幾部分組成?
軟件對象通過相互間傳遞消息來相互作用和通信,一個消息由三部分組成:
1. 接受消息的對象
2. 接收對象要採取的方法
3. 方法需要的參數
封裝把對象的所有組成部分組合在一起
子類是作為另一個類的擴充或修正而定義的一個類
繼承是子類利用父類中定義的方法和變量,就像它們屬於子類本身一樣。
n方法的覆蓋
覆蓋使得在子類中可以重新定義父類中已有的方法,從而體現出子類自己的行為。
重載指得是在同一個類中至少有兩個方法用同一個名字,但有不同的參數。
面向對象編程語言中的消息是什麼意思
Windows系統是一個消息驅動的OS,什麼是消息呢?很難下一個定義,下面從不同的幾個方面講解一下:
1、消息的組成:一個消息由一個消息名稱(UINT),和兩個參數(WPARAM,LPARAM)。當用戶進行了輸入或是窗口的狀態發生改變時系統都會發送消息到某一個窗口。例如當菜單轉中之後會有WM_COMMAND消息發送,WPARAM的高字中(HIWORD(wParam))是命令的ID號,對菜單來講就是菜單ID。當然用戶也可以定義自己的消息名稱,也可以利用自定義消息來發送通知和傳送數據。
2、誰將收到消息:一個消息必須由一個窗口接收。在窗口的過程(WNDPROC)中可以對消息進行分析,對自己感興趣的消息進行處理。例如你希望對菜單選擇進行處理那麼你可以定義對WM_COMMAND進行處理的代碼,如果希望在窗口中進行圖形輸出就必須對WM_PAINT進行處理。
3、未處理的消息到那裡去了:M$為窗口編寫了默認的窗口過程,這個窗口過程將負責處理那些你不處理消息。正因為有了這個默認窗口過程我們才可以利用Windows的窗口進行開發而不必過多關注窗口各種消息的處理。例如窗口在被拖動時會有很多消息發送,而我們都可以不予理睬讓系統自己去處理。
4、窗口句柄:說到消息就不能不說窗口句柄,系統通過窗口句柄來在整個系統中唯一標識一個窗口,發送一個消息時必須指定一個窗口句柄表明該消息由那個窗口接收。而每個窗口都會有自己的窗口過程,所以用戶的輸入就會被正確的處理。例如有兩個窗口共用一個窗口過程代碼,你在窗口一上按下鼠標時消息就會通過窗口一的句柄被髮送到窗口一而不是窗口二。
5、示例:下面有一段偽代碼演示如何在窗口過程中處理消息
LONG yourWndProc(HWND hWnd,UINT uMessageType,WPARAM wP,LPARAM)
{
switch(uMessageType)
{//使用SWITCH語句將各種消息分開
case(WM_PAINT):
doYourWindow(...);//在窗口需要重新繪製時進行輸出
break;
case(WM_LBUTTONDOWN):
doYourWork(...);//在鼠標左鍵被按下時進行處理
break;
default:
callDefaultWndProc(...);//對於其它情況就讓系統自己處理
break;
}
}
找了這樣一段給你看一下,希望對你有幫助,其實消息並不是面向對象編程語言的東西,而是WINDOWS系統的東西,而且這種消息機制的編程我只是在VC++裡面看到過,對於其他面向對象的編程語言就不是這樣了!
面向對象編程 什麼是對象和消息
對象是類的實例的意思 面向對象 面向對象是一種新興的程序設計方法,或者說它是一種新的程序設計範型,其基本思想是使用對象,類,繼承,封裝,消息等基本概念來進行程序設計。 它是從現實世界中客觀存在的事物(即對象)出發來構造軟件系統,並...
面向對象是什麼意思?
人類解決問題的方法就是分而治之。所以,不管是面向對象還是面向過程,本質上都是對問題進行分解。 區別是面向過程把問題分解為一系列的步驟,這些步驟再分解,直到你能很容易實現為止,相當於算法分解。而面向對象則把問題分解為一系列相互協作的對象,這些對象再分解。系統中的每個對象都代表與問題相關或者與實現相關的實體,那些與問題相關的對象是問題的組成部分,而與實現相關的對象是具體實現所使用的輔助實體,與問題本身無直接聯繫。系統中所有對象的相互協作和配合實現了整個系統的功能。系統中所有的對象和他們之間的關係構成了系統的組成部分結構。通常所說的抽象、封裝、模塊化、層次結構則是對對象進行描述和分類。通過結合抽象、封裝、繼承、多態等等要素可以得到類層次結構。類層次結構和組成層次結構稱為面向對象系統的架構。所以面向對象主要是建立對象結構和類層次結構,而面向過程則是建立“算法”(過程)的層次結構。面向對象的底層需要面向過程來實現,但是對於高層次的地方,面向過程就不能使用,所以面向對象在抽象的層次上處於比面向過程更高的層次。
舉個例子,汽車的製造我們可以從兩個方面來考慮:1.我們可以認為汽車的製造是一系列過程的產物,而每個過程有包含子過程,給定適當的材料,經過一系列步驟的加工,最終生產出一輛汽車。2.我們也可以認為汽車的製造是由不同的工廠相互協作完成的,每個工廠有自己的工人和機器,每個工人、每臺機器、每家工廠各司其職,最終完成一輛輛汽車的製造。通過觀察,我們會發現有一些工人他們有很大的相似性(如他們都穿同樣的工作服,生產同樣的零件),這時我們會建立一個類來描述他們之間的相似性(抽象)以及定義一個接口規定他們的職責(封裝);同樣經過觀察我們也發現即使是不同的類(如生產不同零件的工人),他們之間也具有某些相似性(比如都在同一家工廠生產零件),但是在相似的地方又有區別(不同種類的工人生產不同的零件),這時我們使用基類(繼承)來描述相似性,使用虛函數(多態)來描述相似中的差異。通過上面的分析,我們建立了組成和類層次結構,用面向對象的方法描述了汽車的製造。
面向對象的語言特徵中所說的“消息傳遞機制”,指的是什麼?。。。
一個消息就是一個對象調用了另一個對象的成員函數(C++)或者方法(java)。這個術語是純面嚮對象語言觸用的,因為不同的面嚮對象語言對面向對象的實現不同,所以出現了一些方言,也就是同一個概念不同語言有不同叫法。
什麼是(面向對象方法中的)消息,名詞解釋
對象之間的相互作用是通過消息產生。消息由某個對象發出,請求其他某個對象執行 某一處理或回答某些信息。
什麼是面向對象對象,什麼是面向過程,什麼是面向對象
面向對象技術是一種以對象為基礎,以事件或消息來驅動對象執行處理的程序設計技術。它具有抽象性、封裝性、繼承性及多態性。
面向對象與面向過程程序設計有如下不同:
(1)面向過程程序設計方法採用函數(或過程)來描述對數據的操作,但又將函數與其操作的數據分離開來;面向對象程序設計方法將數據和對數據的操作封裝在一起,作為一個整體來處理。 函數與數據是否分離
(2)面向過程程序設計方法以功能為中心來設計功能模塊,難於維護;而面向對象程序設計方法以數據為中心來描述系統,數據相對於功能而言具有較強的穩定性,因此更易於維護。
(3)面向過程程序的控制流程由程序中預定順序來決定;面向對象程序的控制流程由運行時各種事件的實際發生來觸發,而不再由預定順序來決定,更符合實際需要。 預定順序;由運行時各種事件的實際發生來觸發
(4)面向對象程序設計方法可以利用框架產品(如MFC,Microsoft Foundation Classes)進行編程。 面向對象可利用框架 面向對象和麵向過程的根本差別,在於封裝之後,面向對象提供了面向過程不具備的各種特性,最主要的,就是繼承和多態。
C++中,什麼叫消息,什麼叫類,什麼叫對象
比如:
類 →蘋果
對象→你手裡拿的那個蘋果
至於 消息。。。貌似是軟件開發裡用到的吧。。。並不能歸屬到哪種語言裡。
好像是一種響應機制,操作產生消息,系統通過消息隊列一步一步地執行。。。(貌似是這樣~)
"面向對象"通俗講是什麼意思?
面向對象其實是現實世界模型的自然延伸。現實世界中任何實體都可以看作是對象。對象之間通過消息相互作用。另外,現實世界中任何實體都可歸屬於某類事物,任何對象都是某一類事物的實例。如果說傳統的面向過程式編程語言是以過程為中心以算法為驅動的話,面向對象的編程語言則是以對象為中心以消息為驅動。用公式表示,過程式編程語言為:程序=算法+數據;面向對象編程語言為:程序=對象+消息。所有面向對象編程語言都支持三個概念:封裝、多態性和繼承,Java也不例外。現實世界中的對象均有屬性和行為,映射到計算機程序上,屬性則表示對象的數據,行為表示對象的方法(其作用是處理數據或同外界交互)。所謂封裝,就是用一個自主式框架把對象的數據和方法聯在一起形成一個整體。可以說,對象是支持封裝的手段,是封裝的基本單位。Java語言的封裝性較強,因為Java無全局變量,無主函數,在Java中絕大部分成員是對象,只有簡單的數字類型、字符類型和布爾類型除外。而對於這些類型,Java也提供了相應的對象類型以便與其他對象交互操作。多態性就是多種表現形式,具體來說,可以用"一個對外接口,多個內在實現方法"表示。舉一個例子,計算機中的堆棧可以存儲各種格式的數據,包括整型,浮點或字符。不管存儲的是何種數據,堆棧的算法實現是一樣的。針對不同的數據類型,編程人員不必手工選擇,只需使用統一接口名,系統可自動選擇。運算符重載(operator overload)一直被認為是一種優秀的多態機制體現,但由於考慮到它會使程序變得難以理解,所以Java最後還是把它取消了。繼承是指一個對象直接使用另一對象的屬性和方法。事實上,我們遇到的很多實體都有繼承的含義。例如,若把汽車看成一個實體,它可以分成多個子實體,如:卡車、公共汽車等。這些子實體都具有汽車的特性,因此,汽車是它們的"父親",而這些子實體則是汽車的"孩子"。Java提供給用戶一系列類(class),Java的類有層次結構,子類可以繼承父類的屬性和方法。與另外一些面向對象編程語言不同,Java只支持單一繼承。
面向對象的軟件開發中對象事件(消息),函數,過程,屬性的理解,及他們之間的區別?
面向對象(Object Oriented,OO)是當前計算機界關心的重點,它是90年代軟件開發方法的主流。面向對象的概念和應用已超越了程序設計和軟件開發,擴展到很寬的範圍。如數據庫系統、交互式界面、應用結構、應用平臺、分佈式系統、網絡管理結構、CAD技術、人工智能等領域。
談到面向對象,這方面的文章非常多。但是,明確地給出對象的定義或說明對象的定義的非常少——至少我現在還沒有發現。其初,“面向對象”是專指在程序設計中採用封裝、繼承、抽象等設計方法。可是,這個定義顯然不能再適合現在情況。面向對象的思想已經涉及到軟件開發的各個方面。如,面向對象的分析(OOA,Object Oriented Analysis),面向對象的設計(OOD,Object Oriented Design)、以及我們經常說的面向對象的編程實現(OOP,Object Oriented Programming)。許多有關面向對象的文章都只是講述在面向對象的開發中所需要注意的問題或所採用的比較好的設計方法。看這些文章只有真正懂得什麼是對象,什麼是面向對象,才能最大程度地對自己有所裨益。這一點,恐怕對初學者甚至是從事相關工作多年的人員也會對它們的概念模糊不清。
面向對象是當前計算機界關心的重點,它是90年代軟件開發方法的主流。面向對象的概念和應用已超越了程序設計和軟件開發,擴展到很寬的範圍。如數據庫系統、交互式界面、應用結構、應用平臺、分佈式系統、網絡管理結構、CAD技術、人工智能等領域。
一、傳統開發方法存在問題
1.軟件重用性差
重用性是指同一事物不經修改或稍加修改就可多次重複使用的性質。軟件重用性是軟件工程追求的目標之一。
2.軟件可維護性差
軟件工程強調軟件的可維護性,強調文檔資料的重要性,規定最終的軟件產品應該由完整、一致的配置成分組成。在軟件開發過程中,始終強調軟件的可讀性、可修改性和可測試性是軟件的重要的質量指標。實踐證明,用傳統方法開發出來的軟件,維護時其費用和成本仍然很高,其原因是可修改性差,維護困難,導致可維護性差。
3.開發出的軟件不能滿足用戶需要
用傳統的結構化方法開發大型軟件系統涉及各種不同領域的知識,在開發需求模糊或需求動態變化的系統時,所開發出的軟件系統往往不能真正滿足用戶的需要。
用結構化方法開發的軟件,其穩定性、可修改性和可重用性都比較差,這是因為結構化方法的本質是功能分解,從代表目標系統整體功能的單個處理著手,自頂向下不斷把複雜的處理分解為子處理,這樣一層一層的分解下去,直到僅剩下若干個容易實現的子處理功能為止,然後用相應的工具來描述各個最低層的處理。因此,結構化方法是圍繞實現處理功能的“過程”來構造系統的。然而,用戶需求的變化大部分是針對功能的,因此,這種變化對於基於過程的設計來說是災難性的。用這種方法設計出來的系統結構常常是不穩定的 ,用戶需求的變化往往造成系統結構的較大變化,從而需要花費很大代價才能實現這種變化。
二、面向對象的基本概念
(1)對象。
對象是人們要進行研究的任何事物,從最簡單的整數到複雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件。
(2)對象的狀態和行為。
對象具有狀態,一個對象用數據值來描述它的狀態。
對象還有操作,用於改變對象的狀態,對象及其操作就是對象的行為。
對象實現了數據和操作的結合,使數據和操作封裝於對象的統一體中
(3)類。
具有相同或相似性質的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是......