9.1.1 面向對象的技術的由來
9.1.2 基本概念
可以這樣認為:“面向對象=對象+類+繼承+通信。”如果一個軟件系統是使用這樣四個概念來設計和實現的,我們認為這個軟件系統是面向對象的。
對象(object)
對象是面向對象開發方法的基本成分。每個對象可用它本身的一組屬性和其上的一組操作來定義。對象可以是現實生活中的一個物理對象,還可以是某一類概念實體的實例。比如,一輛汽車、一個人、一本書,乃至一種語言、一個圖形、一種管理方式,都可以作為一個對象。
從分析和設計的角度來看,對象表示了一種概念,它們把有關的現實世界的實體模型化。實體的有關聲明有:描述實體,包括實體的屬性和可以執行的操作。比如對於汽車這個對象,它的重量、顏色都可以作為對象的屬性,它可以執行的操作可以是行駛、鳴笛等。
類(class)
類是一組具有相同數據結構和相同操作的對象的集合。類是對一系列具有相同性質的對象的抽象,是對對象共同特征的描述。比如每一輛汽車是一個對象的話,所有的汽車都可以作為一個模板,我們就定義汽車這個類。
在一個類中,每個對象都是類的實例,可以使用類中提供的方法。從類定義中產生對象,必須有建立實例的操作,C++和C#中的new操作符可用於建立一個類的實例,C#為我們提供的方法則更安全。
繼承(inheritance)
繼承是使用已存在的定義作為基礎建立新定義的技術。新類的定義可以是即存類所聲明的數據和新類所增加的聲明組合。新類復用即存在的定義,而不要求修改即存類。即存類可以作為基類來引用,而新類可以作為派生類來引用。這種復用技術大大降低了軟件的開發費用。
例如,汽車作為一個類已經存在,作為具有自身特征的卡車就可以從汽車類中繼承。它同汽車一樣,具有顏色、重量這些特征,可以行駛和鳴笛。它還具有一般汽車不一定具備的特征,比如可以載貨等。