-
1 # 風行科技說
-
2 # 程式界小學生
面向物件是把所有東西看成一個物件去操作,利於理解,擴充套件,維護等,也就是它的特性:封裝、繼承、多型帶來的一些好處
相關的還有面向過程、面向切面等
為什麼java叫面向物件,是因為早些時候很多語言都面向過程的吧,像c 和一些指令碼語言 bat 等
總的來說,面向過程就是一行行執行,可以有跳轉到其它函式繼續一行行執行
而java是可以透過呼叫其它物件的方法去執行,並且可以繼承,介面多實現等,所以是面向物件的程式設計,也就是你說的基於物件的程式設計
-
3 # gamelover
面向物件程式設計(Object Oriented Programming,OOP)是一種計算機程式設計架構。OOP的一條基本原則是計算機程式由單個能夠起到子程式作用的單元或物件組合而成。OOP達到了軟體工程的三個主要目標:重用性、靈活性和擴充套件性。OOP=物件+類+繼承+多型+訊息,其中核心概念是類和物件
相對於C語言的面像過程的程式設計,面像對把把一系列的規則,行為抽象封裝成類,更利於程式碼組織,複用。在可讀性,可維護型方面有極大提升。就比如人類,在java程式碼中,就可以抽象封裝成為一個類Person,而對於現實中我們一個個的人(個體),就相當於java中的物件(例項),它擁有人類的全部屬性,同時又可以透過繼承(如同人類的爺爺父親孩子)來實現不同的特性。這就和我們現實世界很接近了,不同的人有不同的個性,不同行為。java透過這樣的機制,就能很好的表現我們的現實世界,更利於理解。
-
4 # 武漢朝夕教育科技
Java 是面向物件的程式語言,物件就是面向物件程式設計的核心。所謂物件就是真實世界中的實體,物件與實體是一一對應的,也就是說現實世界中每一個實體都是一個物件,它是一種具體的概念。
定義:以基於物件的思維去分析和解決問題,萬物皆物件
物件有以下特點:
物件具有屬性和行為。
物件具有變化的狀態。
物件具有唯一性。
物件都是某個類別的例項。
一切皆為物件,真實世界中的所有事物都可以視為物件。
類
物件:物件是類的一個例項(物件不是找個女朋友),有狀態和行為。例如,一條狗是一個物件,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。
類:類是一個模板,它描述一類物件的行為和狀態。
類的基本結構
屬性:物件資料的描述
方法:物件的行為
構造方法:用於例項化物件
內部類:在類中宣告的類(inner class)
塊:分靜態塊與例項塊
類的宣告:(訪問許可權修飾符public.default(可忽略不寫,為預設))(修飾final.abstract.synchronized)class 類名{ 類體 }
類的作用:類就是一個模板,定義多個物件共同的屬性和方法 如:學生類(張三,李四) 手機類(華為.oppo)
屬性
屬性可理解為物件的資料。注:屬性有稱成員變數,是宣告在類中的變數,在方法體中宣告的變數稱為區域性變數或臨時變數。
宣告方式:(訪問許可權修飾符)(修飾符)資料型別 屬性名(=初值)
例如:
變數
區域性變數:在方法、構造方法或者語句塊中定義的變數被稱為區域性變數。變數宣告和初始化都是在方法中,方法結束後,變數就會自動銷燬。
成員變數:成員變數是定義在類中,方法體之外的變數。這種變數在建立物件的時候例項化。成員變數可以被類中方法、構造方法和特定類的語句塊訪問。
類變數:類變數也宣告在類中,方法體之外,但必須宣告為static型別。
方法
方法即物件的行為,為定義在類中的具特定功能的一段獨立的小程式,方法也稱為函式
方法執行後的返回結果的資料型別,如果沒有返回值使用void
宣告形式:
(訪問許可權修飾符)(修飾符)返回值資料型別 方法名(形式引數列表){
執行語句;
return;
}
1
2
3
4
引數型別: 形式引數的資料型別
形式引數:就是一個變數,用於儲存呼叫方法時傳遞給方法的實際引數
return 用於結束方法
返回值:該方法執行後的結果,該結果會返回給呼叫者
方法的特點:
定義方法可以將功能程式碼進行封裝。
便於該功能進行復用。 方法只有被呼叫才會被執行。
方法的出現提高程式碼的複用性。
方法若沒有返回值,則用關鍵字void表示,那麼該方法中的return語句如果在最後一行可以省略不寫。
方法中可以呼叫方法,不可以在方法內部定義方法。
定義方法時,方法的結果應返回給呼叫者,交由呼叫者來處理.
方法的過載
方法名相同、引數不同(數量不同、型別不同、順序不同)、同一作用域。
構造方法(構造器)
要想使用Java類,必須建立類的物件,即對類進行例項化。而建立物件就必須使用構造方法。因此,構造方法幾乎是一個類必須有的元素。
構造方法的作用:
1.為了初始化成員屬性,而不是初始化物件,初始化物件是透過new關鍵字實現的
2.透過new呼叫構造方法初始化物件,編譯時根據引數簽名來檢查建構函式,稱為靜態聯編和編譯多型(引數簽名:引數的型別,引數個數和引數順序)
3.建立子類物件會呼叫父類構造方法但不會建立父類物件,只是呼叫父類構造方法初始化父類成員屬性;如下圖,對一個銀行卡賬號的設計:
類與類之間的關係
一、繼承關係 繼承指的是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力。在Java中繼承關係透過關鍵字extends明確標識,在設計時一般沒有爭議性。在UML類圖設計中,繼承用一條帶空心三角箭頭的實線表示,從子類指向父類,或者子介面指向父介面。
二、實現關係 實現指的是一個class類實現interface介面(可以是多個)的功能,實現是類與介面之間最常見的關係。在Java中此類關係透過關鍵字implements明確標識,在設計時一般沒有爭議性。在UML類圖設計中,實現用一條帶空心三角箭頭的虛線表示,從類指向實現的介面。
三、依賴關係 簡單的理解,依賴就是一個類A使用到了另一個類B,而這種使用關係是具有偶然性的、臨時性的、非常弱的,但是類B的變化會影響到類A。比如某人要過河,需要借用一條船,此時人與船之間的關係就是依賴。表現在程式碼層面,為類B作為引數被類A在某個method方法中使用。在UML類圖設計中,依賴關係用由類A指向類B的帶箭頭虛線表示。
四、關聯關係 關聯體現的是兩個類之間語義級別的一種強依賴關係,比如我和我的朋友,這種關係比依賴更強、不存在依賴關係的偶然性、關係也不是臨時性的,一般是長期性的,而且雙方的關係一般是平等的。關聯可以是單向、雙向的。表現在程式碼層面,為被關聯類B以類的屬性形式出現在關聯類A中,也可能是關聯類A引用了一個型別為被關聯類B的全域性變數。在UML類圖設計中,關聯關係用由關聯類A指向被關聯類B的帶箭頭實線表示,在關聯的兩端可以標註關聯雙方的角色和多重性標記。
五、聚合關係 聚合是關聯關係的一種特例,它體現的是整體與部分的關係,即has-a的關係。此時整體與部分之間是可分離的,它們可以具有各自的生命週期,部分可以屬於多個整體物件,也可以為多個整體物件共享。比如計算機與CPU、公司與員工的關係等,比如一個航母編隊包括海空母艦、驅護艦艇、艦載飛機及核動力攻擊潛艇等。表現在程式碼層面,和關聯關係是一致的,只能從語義級別來區分。在UML類圖設計中,聚合關係以空心菱形加實線箭頭表示。
六、組合關係 組合也是關聯關係的一種特例,它體現的是一種contains-a的關係,這種關係比聚合更強,也稱為強聚合。它同樣體現整體與部分間的關係,但此時整體與部分是不可分的,整體的生命週期結束也就意味著部分的生命週期結束,比如人和人的大腦。表現在程式碼層面,和關聯關係是一致的,只能從語義級別來區分。在UML類圖設計中,組合關係以實心菱形加實線箭頭表示。
七、總結 對於繼承、實現這兩種關係沒多少疑問,它們體現的是一種類和類、或者類與介面間的縱向關係。其他的四種關係體現的是類和類、或者類與介面間的引用、橫向關係,是比較難區分的,有很多事物間的關係要想準確定位是很難的。前面也提到,這四種關係都是語義級別的,所以從程式碼層面並不能完全區分各種關係,但總的來說,後幾種關係所表現的強弱程度依次為:組合>聚合>關聯>依賴。
Java 訊息服務
Java訊息服務指的是兩個應用程式之間進行非同步通訊的API,它為標準訊息協議和訊息服務提供了一組通用介面,包括建立、傳送、讀取訊息等,用於支援JAVA應用程式開發。在J2EE中,當兩個應用程式使用JMS進行通訊時,它們之間並不是直接相連的,而是透過一個共同的訊息收發服務連線起來,可以達到解耦的效果。
優點
非同步:JMS天生就是非同步的,客戶端獲取訊息的時候,不需要主動傳送請求,訊息會自動傳送給可用的客戶端。
可靠:JMS保證訊息只會遞送一次。大家都遇到過重複建立訊息問題,而JMS能幫你避免該問題。
JMS訊息傳送模型
點對點訊息傳送模型
在點對點訊息傳送模型中,應用程式由訊息佇列,傳送者,接收者組成。每一個訊息傳送給一個特殊的訊息佇列,該佇列儲存了所有傳送給它的訊息(除了被接收者消費掉的和過期的訊息)。點對點訊息模型有一些特性,如下:
每個訊息只有一個接收者;
訊息傳送者和接收者並沒有時間依賴性;
當訊息傳送者傳送訊息的時候,無論接收者程式在不在執行,都能獲取到訊息;
當接收者收到訊息的時候,會發送確認收到通知(acknowledgement)。
釋出/訂閱訊息傳遞模型
在釋出/訂閱訊息模型中,釋出者釋出一個訊息,該訊息透過topic傳遞給所有的客戶端。在這種模型中,釋出者和訂閱者彼此不知道對方,是匿名的且可以動態釋出和訂閱topic。topic主要用於儲存和傳遞訊息,且會一直儲存訊息直到訊息被傳遞給客戶端。
釋出/訂閱訊息模型特性如下:
一個訊息可以傳遞給多個訂閱者
釋出者和訂閱者有時間依賴性,只有當客戶端建立訂閱後才能接受訊息,且訂閱者需一直保持活動狀態以接收訊息。
為了緩和這樣嚴格的時間相關性,JMS允許訂閱者建立一個可持久化的訂閱。這樣,即使訂閱者沒有被啟用(執行),它也能接收到釋出者的訊息。
接收訊息
同步
使用同步方式接收訊息的話,訊息訂閱者呼叫receive()方法。在receive()中,訊息未到達或在到達指定時間之前,方法會阻塞,直到訊息可用。
非同步
使用非同步方式接收訊息的話,訊息訂閱者需註冊一個訊息監聽者,類似於事件監聽器,只要訊息到達,JMS服務提供者會透過呼叫監聽器的onMessage()遞送訊息。
JMS程式設計介面
JMS應用程式由如下基本模組組成:
管理物件(Administered objects)-連線工廠(Connection Factories)和目的地(Destination)
連線物件(Connections)
會話(Sessions)
訊息生產者(Message Producers)
訊息消費者(Message Consumers)
訊息監聽者(Message Listeners)
JMS訊息結構:訊息頭、訊息屬性、訊息體。
-
5 # IT人劉俊明
Java語言本身是面向物件程式語言,而所謂的基於物件的程式設計,是以物件為基礎來展開程式設計流程。
要想掌握Java的基於物件程式設計,需要從以下幾個方面來了解:
第一:Java面向物件程式設計過程。Java基於物件的程式設計有三個大的步驟,分別是類的設計、物件的建立和方法的呼叫,這三個步驟是Java基於物件程式設計的基礎,在此基礎上可以完成更多面向物件特徵的新增和運用。
第二:Java面向物件程式設計特徵。Java面向物件程式設計有三大特徵,分別是封裝、繼承和多型。封裝有三個步驟,分別是私有化成員屬性、定義設定器(setter)、定義獲取器(getter)。繼承簡單地理解就是在一個類的基礎之上派生出新類的過程,類也可以替換成介面。多型是相對比較麻煩的,但是可以用三個定義和兩個方法來描述,三個定義分別是父類定義子類實現、介面定義類實現、抽象類定義實體類實現,兩個方法分別是方法重寫和方法過載。
第三:Java面向物件程式設計模式。面向物件程式設計的核心在於抽象,所以很多人也把學習Java看成是學習各種抽象的應用,而在學習抽象的過程中,掌握各種Java程式設計模式和框架也是比較重要的,比如掌握MVC、DAO等框架,對於後續程式碼的組織具有較為積極的意義。實際上,隨著雲計算平臺的發展,未來Java程式設計更多地會趨向於資源介面的程式設計方式,具體的功能實現則由平臺來完成。
回覆列表
不只是java,面向物件作為一種方法,已經超越程式語言,超越技術,成為一種理解方式,一種解決問題的方法。
其實質就是用抽象的思維把相關的過程、需要的元素、相關資料作為一個整體提煉出來。
以下名稱說明了面向物件設計開發的過程
封裝 :把資料 方法組合為一個物件集合。其結果就是生成類,也就是一個物件。
繼承 : 不同類中相同的部分,可以抽取出來,組成一個父類,讓子類繼承。
多型 :同一操作,產生的不同結果,就是多型,需要我們指定相同的外部介面處理。達到到程式碼的健壯。
大致這麼多,可以搜尋瞭解。