物件導向程式設計

2021-09-30 13:02:24 字數 1779 閱讀 9560

一切事物皆物件,通過物件導向的方式,將現實世界中的事物抽象為物件,現實世界中的關係抽象成類、繼承,幫助人們實現對現實世界的抽象與數字建模。人們所要研究的任何事物,它可以是具體的事物,也可以是抽象的事件、計畫、規則等。決定事物性質的概念,從眾多的事物中抽取共同的、本質性的特徵。狀態:物件用資料來描述它的狀態。

行為:物件擁有操作,操作用於改變物件的狀態,物件及其操作就是物件的行為。具有相同特性(資料元素)和行為(功能)的物件的抽象。組合:「has a」(有乙個)的關係,乙個類包含另乙個類。

繼承:「is a」(是乙個)的關係,乙個類繼承另乙個類。

不管是組合還是繼承,其目的都是為了復用類。

乙個物件通過向另外乙個物件傳送訊息進行方法呼叫。比如,在乙個物件b中呼叫了a.f();**,代表物件b向物件a發出一條訊息:物件a你呼叫你的f()方法來處理一些事情。過載:類中多個方法使用相同的方法名,而形參形式不同。

重寫:子類重寫父類中的方法,用於實現不同的功能,在某處呼叫父類的該方法時使用不同子類物件即可表現出多型。在現實世界中存在的客體是問題域中的主角,所謂客體是指客觀存在的物件實體和主觀抽象的概念,他是人類觀察問題和解決問題的主要目標。

通常人類觀察問題的視角是這些客體,客體的屬性反應客體在某一時刻的狀態,客體的行為反映客體能從事的操作。這些操作附在客體之上並能用來設定、改變和獲取客體的狀態。任何問題域都有一系列的客體,因此解決問題的基本方式是讓這些客體之間相互驅動、相互作用,最終使每個客體按照設計者的意願改變其屬性狀態。

結構化設計方法所採用的設計思路不是將客體作為乙個整體,而是將依附於客體之上的行為抽取出來,以功能為目標來設計構造應用系統。這種做法導致在進行程式設計的時候,不得不將客體所構成的現實世界對映到由功能模組組成的解空間中,這種變換過程,不僅增加了程式設計的複雜程度,而且背離了人們觀察問題和解決問題的基本思路。另外,再仔細思考會發現,在任何乙個問題域中,客體是穩定的,而行為是不穩定的。抽象主要包括過程抽象和資料抽象。結構化設計方法應用的是過程抽象。所謂過程抽象是將問題域中具有明確功能定義的操作抽取出來,並將其作為乙個實體看待。這種抽象級別對於軟體系統結構的設計顯得有些武斷,並且穩定性差,導致很難準確無誤地設計出系統的每乙個操作環節。一旦某個客體屬性的表示方式發生了變化,就有可能牽扯到已有系統的很多部分。而資料抽象是較過程抽象更高階別的抽象方式,將描述客體的屬性和行為繫結在一起,實現統一的抽象,從而達到對現實世界客體的真正模擬。封裝是指將現實世界中存在的某個客體的屬性與行為繫結在一起,並放置在乙個邏輯單元內。該邏輯單元負責將所描述的屬性隱藏起來,外界對客體內部屬性的所有訪問只能通過提供的使用者介面實現。這樣做既可以實現對客體屬性的保護作用,又可以提高軟體系統的可維護性。只要使用者介面不改變,任何封裝體內部的改變都不會對軟體系統的其他部分造成影響。結構化設計方法沒有做到客體的整體封裝,只是封裝了各個功能模組,而每個功能模組可以隨意地對沒有保護能力客體屬性實施操作,並且由於描述屬性的資料與行為被分割開來,所以一旦某個客體屬性的表達方式發生了變化,或某個行為效果發生了改變,就有可能對整個系統產生影響。可重用性標識著軟體產品的可復用能力,是衡量乙個軟體產品成功與否的重要標誌。當今的軟體開發行業,人們越來越追求開發更多的、更有通用性的可重用構件,從而使軟體開發過程徹底改善,即從過去的語句級編寫發展到現在的構件組裝,從而提高軟體開發效率,推動應用領域迅速擴充套件。然而,結構化程式設計方法的基本單位是模組,每個模組只是實現特定功能的過程描述,因此,它的可重用單位只能是模組。例如,在c語言編寫程式時使用大量的標準函式。但對於今天的軟體開發來說,這樣的重用力度顯得微不足道,而且當參與操作的某些資料型別發生變化時,就不能夠再使用那些函式了。因此,渴望更大力度的可重用構件是如今應用領域對軟體開發提出的新需求。

c 物件導向程式設計 物件導向

什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...

物件導向程式設計

物件導向程式設計 抽象 封裝 繼承 多型 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。開放封閉原則 軟體實體應該可以擴充套件,但是不可修改。所有的設計模式都是對不同的可變性進行封裝,從而使系統在不同的角度上達到開發封閉原則。依賴倒轉原則 a 高層不應該依賴低層,兩個都應該依賴抽象。b ...

物件導向程式設計

class team def init self self.name tampa bay buccaneers bucs team print bucs.name tampa bay buccaneers 當呼叫team 函式時,會自動呼叫init函式,self是自動傳入到init中的引數,它指向當...