第四章 類與物件

2021-10-18 16:53:36 字數 2505 閱讀 2148

編寫程式的目的是描述和解決現實世界中的問題,第一步就是要將現實中的類如實地反應在程式中。

本章主要介紹物件導向設計方法的主要特點:抽象,封裝,繼承,多型

物件導向的方法中的抽象,是對具體問題(物件)進行概括,抽出一類物件的公共屬性並加以描述的過程。

對問題的抽象過程,也是對問題的分析和認識過程。

對於乙個問題的抽象包含兩個方面:資料抽象和行為抽象。(或稱為,功能抽象和**抽象)

前者是描述某類物件的屬性或狀態,後者是描述某類物件共同行為或功能特徵。

封裝就是將抽象得到的資料和行為相結合,形成乙個遊記的整體,也就是將資料與運算元據的函式**進行有機的結合,形成「類」,其中的資料和函式都是類的成員。

可以對成員訪問許可權的合理控制,使不同類之間的相互影響減少到最低限度,進而增強資料的安全性和簡化程式的編寫工作。

c++ 提供類的繼承機制,允許程式設計師在保持原有類特性的基礎上,進行更具體,更詳細的說明。

多型性是指一段程式能夠處理多種型別物件的能力。在c++中,這種多型性可以通過強制多型,過載多型,型別引數化多型,包含多型四種形式來實現。

強制多型,資料型別轉換,表面多型

過載多型 函式過載,運算子過載,表面多型

型別引數化多型 函式模板,類模板,一般多型

包含多型 虛函式 一般多型

在面向過程的結構化程式設計中,程式的模組是由函式構成的,函式將邏輯上相關的語句和資料封裝,用於完成特定的功能。

在物件導向的程式設計中,程式模組是由類組成的。類是對邏輯上相關的函式與資料的封裝,它是對問題的抽象描述。

另一角度

變數的宣告如int i,int 型別包括了資料本身的屬性以及對屬性的操作,但是基本資料型別是有限的,c++的基本資料型別也遠遠不能滿足描述現實世界中各種物件的需要。類就相當於使用者自定義的型別。不僅可以用int型表示整數,也可以用類來表示「時鐘」,「人」等物件。

語法:class 類名稱

;在中可以只宣告函式的原型,函式的實現(即函式體)可以在類外定義。

訪問控制分為三種:

公有型別成員定義了類的外部介面

私有成員只能被本類成員函式訪問,來自類外部的任何訪問都是非法的。

保護型別成員的性質和私有成員的性質相似,其差別在於繼承過程中產生的新類影響不同。

習慣

一般情況下,乙個類的資料成員都應該宣告為私有成員,這樣內部資料結構不會對類意外的其餘部分造成影響,程式模組之間的相互作用就被降低到最小。

類實際上一種抽象機制,它描述了一類事物的共同屬性和行為。物件就是這一類資料結構的某一特定實體(也是例項)。

物件所佔的記憶體空間只是用於存放資料成員的。

在類的外部只能訪問到類的公有成員;在類的內部成員函式,可以訪問到類的全部成員。

函式的實現:

返回值型別 類名::函式成員名(參數列)

成員函式呼叫中的目的物件:

使用「.」操作符指出呼叫所針對的物件,這一物件在本次呼叫中稱為目的物件

在類的成員函式中,可以訪問目的物件的私有成員,又可以訪問當前類的其他物件的私有成員。

帶有預設形參值的成員函式:

類成員函式的預設值,一定要寫到類定義中,而不能寫在類定義之外的函式實現中。

內聯函式成員:

隱式宣告:將函式體直接放在類內。

顯式宣告:採用inline顯式宣告

和普通內聯函式一樣

在定義物件的時候進行資料成員設定,稱為物件的初始化。

c++的初始化由建構函式完成,清理工作由析構函式完成

在遇到物件宣告語句時,程式會向作業系統申請一定的記憶體空間,我們希望編譯器可以在分配記憶體空間一樣將初始值寫入,但是,類的物件太過複雜,編譯器不知道如何產生**來實現初始化。

所以程式設計師要自己編寫初始化程式。

建構函式的作用就是在物件被建立時利用特定的值構造物件,將物件初始化為乙個特定狀態。特點

建構函式與類名相同

沒有返回值

通常被宣告為公有函式

只要類中有建構函式,編譯器會自動插入對構造函式呼叫的**。即建構函式在物件建立的時候將被自動呼叫。無需提供引數的建構函式稱為預設建構函式。如果類中沒有寫建構函式,編譯器會自動生成乙個隱含的預設建構函式。如果自己宣告了建構函式,編譯器便不會生成。

#include

using

namespace std;

class

clock

;clock::

clock

(int newh,

int newm,

int news)

intmain()

複製建構函式的能力:

生成乙個物件的副本時,可以新建乙個物件,然後將每乙個資料元素進行複製,但過於繁瑣

不如將類具有自行複製物件的能力。

第四章 物件

三個特性 身份 型別 值 每個物件都有唯一的身份來標識自己,使用內建函式id 得到。例子 usr bin env python coding utf 8 a 32 print a b a print id a id b 結果 d python27 python.exe e workp python ...

C 程式設計 第四章類與物件

物件導向程式設計的基本特點 class clock private int hour,minute 顯示宣告 class clock inline void clock show 建構函式 class point point point p 複製建構函式 intgetx int gety priva...

第四章 python物件

4.1 python 物件 所有的python 對像都擁有三個特性 身份,型別和值。身份 每乙個物件都有乙個唯一的身份標識自己,任何物件的身份可以使用內建函式id 來得到。這個值可以被認為是該物件的記憶體位址。您極少會用到這個值,也不用太關心它究竟是什麼。型別物件的型別決定了該物件可以儲存什麼型別的...