第二章類和物件
2.1物件導向程式設計方法概述
2.1.1 物件導向程式設計的基本概念
一、物件
二、類三、訊息
四、方法
2.1.2 物件導向程式設計的基本特徵
一、抽象
二、封裝
三、繼承
四、多型
2.1.3 物件導向的程式設計的特點(p40)
2.1.4 物件導向的軟體開發過程(p42~43)
2.2類的宣告和物件的定義
一、類和物件的關係(p44)
二、宣告類型別
三、定義物件的方法(p46)
四、類和結構體的異同(p48)
2.3 類的成員函式
一、成員函式的性質(p49)
二、在類外定義成員函式
三、inline成員函式
四、成員函式的儲存方式(p52)
2.4 物件成員的引用
一、通過物件名和成員運算子訪問物件中的成員
二、通過指向物件的指標訪問物件中的成員(p55)
三、通過物件的引用訪問物件中的成員
2.5 類和物件的簡單應用舉例
2.6 類的封裝性和資訊隱蔽
一、公用介面與私有實現的分離
二、類宣告和成員函式定義的分離
三、物件導向程式設計中的幾個名詞
2.1物件導向程式設計方法概述
2.1.1 物件導向程式設計的基本概念
一、物件
從一般意義上講,物件是現實世界中乙個實際存在的事物,它可以是有形的(比如一輛汽車),也可以是無形的(比如一項計畫)。物件是構成世界的乙個獨立單位,它具有自己的靜態特徵(狀態)和動態特徵(操作)[,即可以用某種資料來描述的特徵,即物件所表現的行為或物件所具有的功能。(不同的物件其具有的靜態特徵和動態特徵是不一樣的)
1.現實世界中的物件
現實世界中物件具有的共同特性:
名字、屬性、一組操作(每個操作決定物件一種的行為)
2.計算機中的物件
物件是待解決問題中的客觀事物表示。
物件的屬性表示客觀事物的靜態特徵,一般用;物件的操作是描述客觀事物的動態特性,即事物的行為,一般用。
計算機中的物件是一系列具有描寫特定結構的資料(屬性)和建立在這些資料上的操作(行為),通過這些資料和操作,物件可以完成一系列的任務,因此說,物件是構成電腦程式的基本單位。
二、類1.現實世界中類
是一組具有相同屬性和行為的物件的抽象。
類和物件之間的關係是抽象和具體的關係,類是多個物件進行綜合抽象的結果,乙個物件是類的乙個例項。
2.計算機中的類
就是具有相同的資料和相同的操作的一組物件的集合。
即:類是具有相同資料結構(屬性)和相同操作(行為)的一類物件的描述。
實際上,類也是一種型別,這種型別是自定義的,其中包含有資料結構和操作(方法)兩部分,而物件是某個類的乙個例項。
例如:class stud以calss開頭,定義類stud
stud stud1,stud2; 定義兩個stud類的物件stud1,stud2。
三、訊息
乙個物件向另乙個物件發出的請求被稱為「訊息」,訊息是乙個物件要求另乙個物件執行某個操作的規格的說明,通過訊息傳遞能夠完成物件之間的相互請求或相互協作。
傳送訊息的物件稱為傳送者,接受訊息的物件稱為接收者。
物件間的聯絡只能通過訊息來進行。物件在接收到訊息時才被啟用。
訊息一般有三部分:接受物件名、呼叫操作名、引數。
訊息可分為公有訊息和私有訊息。
訊息具有三個性質:
(1) 同一物件可接收不同形式的多個訊息,產生不同響應;
(2) 相同形式的訊息可以送給不同物件,所做出的響應可以截然不同;
(3) 訊息的傳送可以不考慮具體的接收者,物件可以響應訊息,也可對訊息不予理會。
四、方法
方法就是物件所能執行的操作。
1.方法包括兩部分:介面和方法體。
其中:是指: 方法的呼叫協議。
是指:實現某種操作的一系列計算步驟,即一段程式。
2.訊息和方法的關係
物件根據接收到的訊息,呼叫相應的方法;反過來,有了方法,物件才能響應相應的訊息。
2.1.2 物件導向程式設計的基本特徵
一、抽象
所謂抽象是指:通過特定的例項(物件)抽取共同性質以後形成概念的過程。
抽象包括兩個方面:資料抽象和**抽象。
其中::用於描述某類物件的屬性和狀況;
:用於描述某類物件的共同行為特徵或具有的共同操作。
注意:對同一類研究物件,由於所研究問題的側重點不同就可能產生不同的抽象結果。
二、封裝
1.封裝的概念
是指把資料和實現操作的**集中起來存放在物件的內部,並盡可能的隱蔽物件的內部細節。
封裝是物件導向方法的乙個重要原則。它有兩個涵義:第乙個涵義是,把物件的全部屬性和全部服務結合在一起,形成乙個不可分割的獨立單位(即物件)。
第二個涵義也稱作「資訊隱蔽」,即盡可能隱蔽物件的內部細節,對外形成乙個邊界(或者說形成一道屏障),只保留有限的對外介面使之與外部發生聯絡。這主要是指物件的外部不能直接地訪問物件地屬性,只能通過幾個允許外部使用地服務與物件發生聯絡。
2.封裝的目的
封裝的目的在於將物件的使用者與物件設計者分開,簡化使用者的工作,提高效率。
而對於設計者來說,也可以簡化外界的干擾,提高整體效率。
對於軟體設計而言,為了盡量避免某個模組的行為干擾同一系統中的其他模組,應該讓模組僅僅公開必須讓外界知道的內容,而隱藏其他一切內容。
三、繼承
1.繼承的概念
是用於描述物件類之間一種相關的關係。
例如:說明:
汽車稱作是大卡車的父類或基類,大卡車稱為是汽車的子類或派生類。
繼承是物件導向語言的另一特性。類與類之間可以組成繼承層次,乙個類的定義(子類)可以定義在另乙個已定義類(父類)的基礎上。子類可以繼承父類中的屬性和操作,也可以定義自己的屬性和操作。
2.繼承的意義
(1)避免公共**的重複開發,減少**和資料的冗餘;
(2)通過增強一致性來減少模組間的介面和介面。
繼承的最大意義在於:重複使用的特性。
四、多型性(p40)
1.多型性的概念
是指不同的物件收到相同訊息時產生多種不同的行為方式。
2.多型性的意義
增強了軟體的靈活性和重用性,同時為軟體的開發與維護提供了極大的便利。
多型性又分為:靜態多型性(如函式的過載)和動態多型性
c++支援兩種多型性:編譯時的多型性和執行時的多型性。編譯時的多型性通過過載函式實現,而執行時的多型性通過虛函式實現。
2.1.3 物件導向的程式設計的特點(p40)
傳統的程式設計是把程式看成是處理資料的一系列過程。過程或函式定義為乙個接乙個順序執行的一組指令。資料與程式分開儲存。
程式設計的主要技巧在於追蹤哪些函式呼叫哪些函式,哪些資料發生了變化。然而當資料項和資料處理能力需求增強時,這種將資料與處理這些資料的方法的分離就使得程式變的越來越難以理解。
所謂物件導向的方法:將資料及對資料的操作方法放在一起,作為乙個相互依存、不可分離的整體---物件。對同型別物件抽象出其共性形成類。
類中的大多數資料只能由本類的方法進行處理。類通過乙個簡單的外部介面與外界發生關係,物件與物件之間通過訊息進行通訊。
物件導向程式設計是在吸取結構化程式設計的一切優點的基礎上發展起來的一種新的程式設計方法。它的本質是把資料和處理資料的過程當成乙個整體——物件。
經典公式:
程式=(演算法 )+程式結構)
即演算法是乙個獨立的整體,資料結構(包含數型別與資料)也是乙個獨立的整體,兩者分開設計,以演算法為主。
在物件導向中,演算法與資料結構被**成乙個類。由於現實世界本身就是乙個物件的世界,任何物件都具有一定的屬性與操作,也就總能用資料結構與演算法兩者合一地來描述,此時,程式就被看成是:
物件=(演算法+程式結構)
程式=(物件+物件+。。訊息
2.1.4 物件導向的軟體開發過程(p42~43)
一、系統調查和需求分析
對系統要實現的功能及使用者對系統開發的需求進行調查研究。
二、物件導向分析(ooa)
在繁雜的問題域中抽象地識別出物件及其行為、結構、屬性、方法等。
三、物件導向設計(ood)
對分析的結果作進一步的抽象、歸類、整理,最終以規範的形式描述物件和類。
四、物件導向程式設計(oop)
用物件導向的程式語言將上一步整理的物件和類的描述對映為應用程式軟體。
五、物件導向測試(oot)
六、物件導向維護(oosm)
2.2 類的宣告和物件的定義
一、類和物件的關係(p44)
類和物件之間的關係是抽象和具體的關係,類是多個物件進行綜合抽象的結果,乙個物件是類的乙個例項。
實際上,類也是一種型別,這種型別是自定義的,其中包含有資料結構和操作(方法)兩部分,而物件是某個類的乙個變數(即例項)。
類是抽象的,不占用記憶體,而物件是具體的 ,占用記憶體。
二、宣告類型別
1、從結構到類
struct student
struct student stu1,stu2; 定義兩個結構體變數
class student
void display成員函式
class student stu1,stu2; 定義兩個student類的物件stu1,stu2;
2.類型別宣告的一般格式
class 類名
《C語言程式設計》第2章作業
布置日期 2012 2 17截止日期 2012 2 23 一 單選題 每小題5分,共100分 1 1.關於c程式的構成描述是不正確的。a 乙個源程式至少且僅包含乙個main函式,也可包含乙個main函式和若干個其他函式。b 函式由函式首部和函式體兩部分組成,二者缺一不可。c 函式首部通常是函式的第1...
c教案 第5章 理論教學
大理學院課程教案 理論教學 課程名稱 c 物件導向程式設計 課程型別 1 1 必修 2 選修 3 其它 授課物件 電腦科學與技術專業 本科 2010 級 1 班 授課時間 2011 至 2012 學年三學期 計畫學時 72學時 其中 理論 36 實驗 36 任課教師 杜英國 所屬學院 數計學院 課程...
張波 第2周教學反思
而且,我在寫字課上,給他們講解的頓筆也許不太適合基礎較差的他們,對於他們來說,也許首先做到基本的橫平豎直 結構勻稱更重要些。還有一點,就是我自己也時常有板書隨意的問題,這沒有給學生起到乙個好的示範作用,這點也要盡力避免。我想,也許寫字和朗讀一樣,起步時很慢,但經過幾次耐心的指導後,就會有較大的改變,...