Java基礎:第二十四講 類與對象的關係

來源:互聯網
上載者:User

    本講所介紹的內容主要目的是為了協助大家更好的理解物件導向的思想。主要的觀點包括:萬物皆為對象;對象具有屬性、狀態、行為、標識等特性;對象之間具有內含項目關聯性和關聯關係等;類是對對象的劃分;類是對對象的抽象;對多個對象進行抽象可以得到類;對類的每個屬性賦值可以得到對象。

1對象觀 1.1 萬物皆為對象    不管處於什麼樣的環境,不可否認的是,您會面對諸多的對象。如果您在學習,書本、電腦、您的同學和您的老師都是對象。如果您在踢足球,足球、場地和球門都是對象。如果您正在吃飯,飯碗、筷子和餐桌都是對象。對象可能是非常小的,例如分子,對象可能非常大,例如太陽系。 1.2對象的屬性 對象的屬性用於描述對象的狀態、特徵以及組成部分。     如果對一輛公交汽車進行描述,可能會涉及到如下一些內容:車的車牌號是多少,車的高度是多少,車的長度是多少,車的寬度是多少,車的顏色,車的最高時速,車的額定載客量,車行使的裡程數,是否在加速,是否在減速,是否在上客,是否在下客,是否在運行,啟動並執行方向,啟動並執行速度,車有幾個輪胎,車有多少座位,車的發動機,車的投幣箱,等等。這些描述中有用於描述車的特徵的,包括:車牌號、高度、長度、寬度、顏色、最高時速等。有用於描述車的狀態的,包括:裡程數、是否加速、是否減速、是否上客、是否下客、是否在運行、啟動並執行方向、啟動並執行速度等。有用於描述車的組成部分的,包括:車的座位,車的發動機和車的投幣箱等。 1.3 對象的行為對象的行為也就是對象能夠完成的功能,每個對象都會有自己的行為,行為用於改變對象自身的狀態,或者向其他對象發送訊息,有時候一個行為會同時包含這兩者。現在只討論改變自身狀態的行為,關於向其他對象發送訊息的行為後面進行討論。下面以司機為對象來研究對象的行為。 每個對象都存在大量的行為。 有些行為是可以看到的。司機在整個10路公交系統中的主要作用是開車,所以司機最基本的行為就是:發動汽車、啟動汽車、加速、拐彎、減速、停止、開車門、關車門、放廣播等等。 另外還有一些行為是作為司機所必需的,卻不被注意的。這些行為包括:能夠走路、手能動、腳能動、眼睛能夠看到外界資訊、能夠從大腦中查詢線路資訊(10路車的車站在什麼地方)。能夠走路這樣的行為保證司機能夠到達汽車所在位置,並上車。手能動,是司機轉彎、換檔、開關車門、播放廣播這些行為所必需的。腳能動,是司機加速、減速、啟動、停止這些行為所必需的。眼睛能夠看到外界資訊是所有這些動作的基礎,如果不能從外界擷取資訊,司機就不知道什麼時候停車,什麼時候開車,什麼時候轉彎等。 1.4 對象的標識 系統中的每個對象都有自己的編號,這個編號對於系統中的每個對象來說是惟一的,用於標識這個對象。    這些標識有些對大家熟悉的,例如車站,有些是不熟悉的,例如車牌號。但是車牌號對於司機來說肯定熟悉。因為屬於系統的不同的使用者,所以關注的對象也不一樣。但是如果你是一個系統分析員,要完成這樣一個系統,系統中所有的使用者關注的資訊你都需要關注。 標識也是一個屬性。通常標識也是用於描述對象的,這和前面的屬性是相同的。    標識本身可能有意義,例如車站的站名。標識本身也可能沒有意義,僅僅作為標識,例如社會安全號碼用於標識一個人,但是本身沒有意義。 1.5 對象之間的關係    對象之間的關係包括:n         整體與部分的關係,例如輪胎和汽車的關係。n         關聯關係,例如張三乘坐某一輛公交汽車。 1.5.1 整體與部分的關係    具有這種關係的兩個對象之間有比較強的依賴關係,就像上面說的某一輛汽車有幾個輪胎,如果沒有輪胎,這個汽車就不能正常運行,也就是說只要有一輛汽車,就有屬於它的輪胎。    這種關係的對象一旦建立完之後,都是作為一個整體來使用,通常情況下不會單獨考慮組成部分,如果要考慮組成部分也是先考慮整體。例如,要修理某個輪胎,通常都會說修車,然後會說車的輪胎,即使直接說輪胎,也會有一個前提,就是某輛車的輪胎。 這種關係一旦建立,通常不再改變。或者說生命週期基本相同。 1.5.2 關聯關係 這種關係的兩個對象之間通常沒有依賴關係。就像汽車在整個運行過程中,會不停地上客、下客,這樣它所搭載的乘客也就在不停地變化。乘客上車了,建立汽車和乘客之間的關聯關係。關聯關係建立之後,汽車運動,車上的乘客就會跟著運動。乘客下車了,這種關聯關係就解除了,汽車的運動不再會對下車的乘客產生影響。    另外不像整體與部分的關係,一旦建立基本不再變化, 關聯關係可以根據需要隨時建立,隨時解除。 1.5.3 關係中的量       1輛汽車有4個輪胎,1輛汽車上有20個乘客,這裡面的數字就是關係中的量,1輛汽車對應4個輪胎,1輛汽車對應20個乘客。不管是整體與部分的關係,還是關聯關係都存在著量。根據關係中的量可以把關係分為4種:n         一對一n         一對多n         多對一n         多對多 2 類型 2.1 類型是對對象的分類    人們總是喜歡分類,通過分類可以更好地理解對象。每個對象都屬於特定的類型。例如,提到10路車並不是某輛10路車,乘客也不是某個特定乘客,車站也不是某個特定的車站。10路車通常是所有10路車組成的一個集合,乘客是所有乘坐10路車的人組成的集合,車站是所有10路車所經過的車站組成的集合。這裡的10路車、乘客、車站就是不同的類型,而具體的某輛車應該是10路車這個集合中的一個元素,某個具體的人是乘客這個集合中的一個元素,某個車站是車站這個集合中的一個元素。    從上面的描述可以得出這樣一個結論, 類型就是一個集合。但是集合是不是類型呢?車和人可以組成一個集合,但是二者不是一個類型。 所以集合不一定是類型。那麼什麼樣的集合才是類型呢?    考察上面的幾個集合中的元素具有什麼特點。10路車這樣一個集合是由所有的10路車組成的,它們都是汽車,並且樣子都很像,更重要的是運營的線路是相同的,功能也相同,也就是說它們具有很多相同的特徵,尤其是在主要特徵方面,在這裡對於10路車來說,最主要的特徵就是啟動並執行線路。 所以類型應該是由多個具有相同特徵的對象組成的集合。提到這個類型就會知道屬於這個類型的對象的特徵。前面介紹,對象的要素包括對象的屬性、行為和標識,同一種類型的對象都應該具有這些相同的屬性、行為,使用相同的標識(指的是都使用車牌號或者社會安全號碼),但是對於具體的某個對象來說,可能這些屬性和標識的值不同,行為可能會有不同的實現。例如,都使用車牌號作為10路車的標識,但是不同的車具有不同的車牌號。都具有加速這樣的功能,但是不同的車加速的過程可能不一樣。 2.2 類型的層次    類型是由多個對象組成的集合,那麼公交車是由很多公交車組成的集合,同樣汽車也是一個類型,是由所有的汽車組成的集合,這個集合也包括了公交車。一輛具體的公交車既屬於公交車這個集合,又屬於汽車這個集合,所以它的類型可以是公交車,也可以是汽車。那麼這兩個類型之間有什麼關係呢?    很明顯,所有的公交車都是汽車,也就是說公交車這個集合屬於汽車這個集合的子集。這兩個類型之間的關係通常稱為子類和父類的關係。公交車是子類,汽車是父類。    父類所具有的特徵子類都有,汽車具有的特徵公交車都應該有。但是公交車具有自己的比較特殊的一些特徵,例如它有具體的線路、它的始末車時間、有發車間隔等。    在由對象組成的現實世界中,這種類的分層到處可見。 3 類和對象之間的關係    對象是具體的,類型是抽象的 類型是對一組對象的抽象,提取了這一組對象的共同特點。這些對象本身是客觀存在的,是具體的,而類型則是一個抽象的概念,不是一個客觀存在。所以如果說到了某個類型,您不由自主地會去想一個具體的對象會是什麼樣子。類型是抽象的。你可以說人類具有姓名、身高、體重等屬性,但是你不能說人類的人高是多少,而只能說某個人(具體的對象)的身高是多少,因為一個具體的人才會有具體的身高。 如果為某個類型的所有屬性賦值,將會得到一個具體的對象,對象是類型的執行個體。    認識類型和對象之間的關係,先是根據這些具有相同特徵的對象抽象出一個類型,然後需要的時候,根據類型的特徵去描述這個對象。    例如,學校裡的每個學生都有學號、姓名、生日、教室、課程、班級等屬性,所以就會根據這些學生抽象出來一個類型——學生類,這樣如果要描述一個學生的時候,也會從這些方面進行描述,這個學生的學號是多少,叫什麼名字,在哪個教室上課,是哪個班級的,有哪些課程等等。通過這樣的描述,就知道這個學生了。 上一次: 第二十三講 物件導向概述 下一次: 第二十五講 軟體系統的對象與現實世界對象的關係李緒成 CSDN Blog:http://blog.csdn.net/javaeeteacher邀請您為好友:http://student.csdn.net/invite.php?u=124362&c=7be8ba2b6f3b6cc5

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.