10.1 物件與類
在現實世界中,隨處可見的一種事物就是物件,物件是事物存在的實體,如學生、汽車等。人類解決問題的方式總是將複雜的事物簡單化,於是就會思考這些物件都是由哪些部分組成的。通常都會將物件劃分為兩個部分,即靜態部分與動態部分。顧名思義,靜態部分就是不能動的部分,這個部分被稱為「屬性」,任何物件都會具備其自身屬性,如乙個人,其屬性包括高矮、胖瘦、年齡、性別等。然而具有這些屬性的人會執行哪些動作也是乙個值得**的部分,這個人可以轉身、微笑、說話、奔跑,這些是這個人具備的行為(動態部分),人類通過**物件的屬性和觀察物件的行為來了解物件。
在計算機世界中,物件導向程式設計的思想要以物件來思考問題,首先要將現實世界的實體抽象為物件,然後考慮這個物件具備的屬性和行為。例如,現在面臨一名足球運動員想要將球射進對方球門這個實際問題,試著以物件導向的思想來解決它。步驟如下:
首先可以從這一問題中抽象出物件,這裡抽象出的物件為一名足球運動員。
然後識別這個物件的屬性。物件具備的屬性都是靜態屬性,如足球運動員有乙個鼻子、兩條腿等,這些屬性如圖所示。
接著識別這個物件的動態行為,即足球運動員的動作,如跳躍、轉身等,這些行為都是這個物件基於其屬性而具有的動作,這些行為如圖所示。
識別出這個物件的屬性和行為後,這個物件就被定義完成了,然後根據足球運動員具有的特性制定要射進對方球門的具體方案以解決問題。
究其本質,所有的足球運動員都具有以上的屬性和行為,可以將這些屬性和行為封裝起來以描述足球運動員這類人。由此可見,類實質上就是封裝物件屬性和行為的載體,而物件則是類抽象出來的乙個例項。這也是進行物件導向程式設計的核心思想,即把具體事物的共同特徵抽象成實體概念,有了這些抽象出來的實體概念,就可以在程式語言的支援下建立類。因此,類是那些實體的一種模型,具體如圖所示。
在圖中,通過物件導向程式設計的思想可以建立現實世界中具體事物、實體概念與程式語言中類、物件之間的一一對應關係。
10.2 類的定義
python使用class關鍵字來定義類,其語法格式如下:
其中,類名的首字母一般需要大寫,具體示例如下:
其中,例項方法與前面學習的函式格式類似,區別在於類的所有例項方法都必須至少有乙個名為self的引數,並且必須是方法的第乙個形參(如果有多個形參),self引數代表將來要建立的物件本身。另外,self.name稱為例項屬性,在類的例項方法中訪問例項屬性時需要以self為字首。
在類中定義例項方法時,第乙個引數指定為「self」只是乙個習慣。實際上,該引數的名字是可以變化的,具體如下所示:
儘管如此,本書建議大家編寫**時仍以self作為例項方法的第乙個引數名字,這樣便於他人閱讀**。
第10章 物件導向
1 物件導向設計的三個基本原則 封裝 繼承 多型 2 c 的空類預設產生哪些成員函式?預設建構函式 析構函式 預設拷貝建構函式 賦值函式 3 c 中的struct和class的唯一不同點 sruct裡的預設訪問控制是public,class裡的預設訪問控制是private 4 使用靜態成員變數在乙個...
C 程式設計第10章,物件導向思想
1.2 追加字串 1.3 字串賦值 s.assign 5種用法1.4 函式at,clear,erase及empty 提取指定位置 at index 清空 clear 刪除指定部分 erase index,n 檢測乙個字串是否為空 empty 1.5 函式length,size,capacity和c ...
第12章 物件上
物件是乙個資料結構,帶有一些行為。作為乙個類的例項,物件從中獲益,取得其行為。類定義的方法 就是那些應用於類和它的事例的性質。如果需要區分上面兩種情況,那麼我們就把適用於某乙個特定物件的方法叫做例項方法,而把那些適用於整個類的方法叫做類的方 法。你可以把例項方法看做乙個由特定物件執行的某種動作,乙個...