對象
某種計算機語言中對於某特定程式的函式
對象(object)是一件事、一個實體、一個名詞,可以獲得的東西,可以想像有自己的標識的任何東西。對象是類的實例化。一些對象是活的,一些對象不是。
客戶端對象件的包含關係圖
比如這輛汽車、這個人、這間房子、這張桌子、這株植物、這張支票、這件雨衣。 概括來說就是:萬物皆對象。
面向對象(ObjectOriented,OO)是當前計算機界關心的重點,它是90年代軟體開發方法的主流。面向對象的概念和套用已超越了程式設計和軟體開發,擴展到很寬的範圍。如
資料庫系統、互動式界面、套用結構、套用平台、
分散式系統、網路管理結構、CAD技術、人工智慧等領域。
在ASP動態網頁中,對象是一個抽象的概念,是要操作的目標。比如,在現實生活中,電腦就是我們搜尋資料的一個對象,他具有外觀、作業系統、價格等等特點,這在對象概念中被稱為屬性,而利用這個電腦玩遊戲、看電影、查找資料等用途,這就對應於對象里的方法,另外,主機板、CPU、顯示卡、鍵盤等等組件,我們可以稱作對象的集合。
在ASP動態網頁中,對象的特點歸結起來有三個:屬性、方法、集合。
概念
(1)類
具有相同或相似性質的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。
類具有屬性,它是對象的狀態的抽象,用數據結構來描述類的屬性。
類具有操作,它是對象的行為的抽象,用操作名和實現該操作的方法來描述。
(2)類的結構
在客觀世界中有若干類,這些類之間有一定的結構關係。通常有兩種主要的結構關係,即一般--具體結構關係,整體--部分結構關係。
①一般——具體結構稱為分類結構,也可以說是“或”關係,或者是“is a”關係。
②整體——部分結構稱為組裝結構,它們之間的關係是一種“與”關係,或者是“has a”關係。
(3)對象
對象是人們要進行研究的任何事物,從最簡單的整數到複雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計畫或事件。
(4)對象的狀態和行為
對象具有狀態,一個對象用數據值來描述它的狀態。
對象還有操作,用於改變對象的狀態,對象及其操作就是對象的行為。
對象實現了數據和操作的結合,使數據和操作封裝於對象的統一體中
(5)訊息和方法
對象之間進行通信的結構叫做訊息。在對象的操作中,當一個訊息傳送給某個對象時,訊息包含接收對象去執行某種操作的信息。傳送一條訊息至少要包括說明接受訊息的對象名、傳送給該對象的訊息名(即對象名、方法名)。一般還要對參數加以說明,參數可以是認識該訊息的對象所知道的變數名,或者是所有對象都知道的
全局變數名。
特徵
(1)對象唯一性
每個對象都有自身唯一的標識,通過這種標識,可找到相應的對象。在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。
(2)分類性
分類性是指將具有一致的數據結構(屬性)和行為(操作)的對象抽象成類。一個類就是這樣一種抽象,它反映了與套用有關的重要性質,而忽略其他一些無關內容。任何類的劃分都是主觀的,但必須與具體的套用有關。
(3)繼承性
繼承性是子類自動共享父類數據結構和方法的機制,這是類之間的一種關係。在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作為自己的內容,並加入若干新的內容。
在類層次中,子類只繼承一個父類的數據結構和方法,則稱為單重繼承。
在類層次中,子類繼承了多個父類的數據結構和方法,則稱為
多重繼承。
在軟體開發中,類的繼承性使所建立的軟體具有開放性、可擴充性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的創建工作量,增加了代碼的可重性。
採用繼承性,提供了類的規範的等級結構。通過類的繼承關係,使公共的特性能夠共享,提高了軟體的重用性。
多態性使指相同的操作或函式、過程可作用於多種類型的對象上並獲得不同的結果。不同的對象,收到同一訊息可以產生不同的結果,這種現象稱為多態性。
多態性允許每個對象以適合自身的方式去回響共同的訊息。
多態性增強了軟體的靈活性和重用性。
要素
(1)抽象
抽象是指強調實體的本質、內在的屬性。在系統開發中,抽象指的是在決定如何實現對象之前的對象的意義和行為。使用抽象可以儘可能避免過早考慮一些細節。
類實現了對象的數據(即狀態)和行為的抽象。
封裝性是保證軟體部件具有優良的模組性的基礎。
面向對象的類是封裝良好的模組,類定義將其說明(用戶可見的外部接口)與實現(用戶不可見的內部實現)顯式地分開,其內部實現按其具體定義的
作用域提供保護。
對象是封裝的最基本單位。封裝防止了程式相互依賴性而帶來的變動影響。面向對象的封裝比傳統語言的封裝更為清晰、更為有力。
(3)共享性
①同一類中的共享
同一類中的對象有著相同數據結構。這些對象之間是結構、行為特徵的共享關係。
②在同一套用中共享
在同一套用的類層次結構中,存在繼承關係的各相似子類中,存在數據結構和行為的繼承,使各相似子類共享共同的結構和行為。使用繼承來實現代碼的共享,這也是
面向對象的主要優點之一。
③在不同套用中共享
面向對象不僅允許在同一套用中共享信息,而且為未來目標的可重用設計準備了條件。通過
類庫這種機制和結構來實現不同套用中的信息共享。
(4).強調對象結構而不是程式結構
開發
目前,面向對象開發方法的研究已日趨成熟,國際上已有不少面向對象產品出現。面向對象開發方法有Coad方法、Booch方法和OMT方法等。
(1).Booch方法
Booch最先描述了
面向對象的
軟體開發方法的基礎問題,指出面向對象開發是一種根本不同於傳統的功能分解的設計方法。面向對象的軟體分解更接近人對客觀事務的理解,而功能分解只通過問題空間的轉換來獲得。
(2).Coad方法
Coad方法是1989年Coad和Yourdon提出的面向對象開發方法。該方法的主要優點是通過多年來大系統開發的經驗與面向對象概念的有機結合,在對象、結構、屬性和操作的認定方面,提出了一套系統的原則。該方法完成了從需求角度進一步進行類和類層次結構的認定。儘管Coad方法沒有引入類和類層次結構的術語,但事實上已經在分類結構、屬性、操作、訊息關聯等概念中體現了類和類層次結構的特徵。
(3).OMT方法
OMT方法是1991年由James Rumbaugh等5人提出來的,其經典著作為“
面向對象的建模與設計”。
該方法是一種新興的面向對象的開發方法,開發工作的基礎是對真實世界的對象建模,然後圍繞這些對象使用
分析模型來進行獨立於語言的設計,面向對象的建模和設計促進了對需求的理解,有利於開發得更清晰、更容易維護的軟體系統。該方法為大多數套用領域的軟體開發提供了一種實際的、高效的保證,努力尋求一種問題求解的實際方法。
(4).UML(Unified Modeling Language)語言
軟體工程領域在1995年~1997年取得了前所未有的進展,其成果超過軟體工程領域過去15年的成就總和,其中最重要的成果之一就是
統一建模語言(UML)的出現。UML將是
面向對象技術領域內占主導地位的
標準建模語言。
UML不僅統一了Booch方法、OMT方法、OOSE方法的表示方法,而且對其作了進一步的發展,最終統一為大眾接受的標準建模語言。UML是一種定義良好、易於表達、功能強大且普遍適用的
建模語言。它融入了
軟體工程領域的新思想、新方法和新技術。它的
作用域不限於支持
面向對象的分析與設計,還支持從
需求分析開始的軟體開發全過程。
數組
概述
關於可變長數組(VLA)的問題:原來的C標準中是不允許可變長數組出現的,也就是你說的那個n可變。但是在C99中,加入了對VLA的支持,也有不少
編譯器已經支持這個了,而且好像沒有太多的人用這個可變長數組。
如果有過用其它語言編程的經歷,那么想必會熟悉數組的概念。由於有了數組,可以用相同名字引用一系列變數,並用數字(索引)來識別它們。在許多場合,使用數組可以縮短和簡化程式,因為可以利用索引值設計一個循環,高效處理多種情況。數組有上界和下界,數組的元素在上下界內是連續的。因為 Visual Basic對每一個索引值都分配空間,所以不要不切實際聲明一個太大的數組。
此處數組是程式中聲明的變數數組。它們不同於控制項數組,控制項數組是在設計時通過設定控制項的 Index 屬性規定的。變數數組總是連續的;與控制項數組不同的是,不能從一個數組的中部載入或卸載數組元素。
一個數組中的所有元素具有相同的數據類型(在在C、C++、Java中都這樣。但也並非所有涉及數組的地方都這樣,比如在Visual Foxpro中的數組就並沒這樣的要求)。當然,當數據類型為 Variant 時,各個元素能夠包含不同種類的數據(對象、 字元串 、數值等等)。 可以聲明任何基本數據類型的數組,包括用戶自定義類型(請參閱 “再論編程”中的“創建自己的數據類型”)和對象變數(請參閱“用對象編程”)。
如果要用戶輸入的是一個數組,一般是用一個循環,但是在輸入前也需要固定數組的大小。
compact跟變長數組沒有太大的關係,也應該用不到變長數組。因為一般的傳數組到函式中就是傳數組的地址和元素的個數的,那只是一個提示,不是要求。
原型可以這樣寫(假設數組的元素是type):
int compact(type *Array,int Count)
數組類型說明 在C語言中使用數組必須先進行類型說明。
數組說明的一般形式為: 類型說明符 數組名 [
常量表達式],……; 其中,類型說明符是任一種基本數據類型或構造數據類型。 數組名是用戶定義的數組
標識符。 方括弧中的常量表達式表示
數據元素的個數,也稱為數組的長度。
例
int a[10]; 說明
整型數組a,有10個元素。
float b[10],c[20]; 說明實型數組b,有10個元素,實型數組c,有20個元素。
char ch[20]; 說明
字元數組ch,有20個元素。