面向對象基礎


 查看本人文章索引請通過http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html

 

一、面向對象的術語?

1.

  類作為設計藍圖來創建對象的代碼段,它描述了對象的特征;該對象具有什么樣的屬性,怎樣使用對象完成一些任務,他對事件進行怎樣的響應等!

    對象具有狀態,一個對象用數據值來描述它的狀態。

    對象還有操作,用於改變對象的狀態,對象及其操作就是對象的行為。

    對象實現了數據和操作的結合,使數據和操作封裝於對象的統一體中。

 

  2. 對象

  對象是類的一個實例,通常通過調用類的一個構造函數來創建它!

  3. 方法

  方法是在類中定義的函數,一般而言,一個方法描述了對象可以執行的一個操作!

  4. 屬性

  屬性是類中定義的變量,類的屬性突出刻畫了對象的性質或狀態。某些情況下,對象的使用者可能不允許改變對象的某些屬性,這是因為類的創建者已經規定了那些屬性不能被使用者更改。這就比如你只能知道我是男生,但你沒有辦法改變!

  5.事件

  VB是由事件觸發!事件是由某個外部行為所引發的對象方法。他可與用戶行為(例如單擊某個Button)或系統行為相關聯。

  6.構造函數

  構造函數是創建對象所調用的特殊方法,在VB中,對象的創建是通過在給定的類中創建名為new的過程而實現的!

  7. 析構函數

  析構函數是釋放對象時所調用的特殊方法,在VB中,為了編寫析構函數,我們必須重寫基類的Dispose方法。但是,由於CLR自動進行垃圾收集,因此在受管代碼中很少需要顯式得調用析構函數。然后,當運行CLR之外的資源(如設備,文件句柄,網絡連接等)時,應調用Dispose方法確保計算機的性能!

  8. 繼承

  繼承是面向對象的一個概念,它規定一個類可以從其他的小類(基類)中派生,並且該派生類繼承其基類的接口和相應代碼!(該類稱為派生類或子類)

  9. 重寫

  重寫是面向對象的一個概念,它規定一個派生類可以創建其基類某個方法的不同實現代碼。實際上,它完全重寫了基類中該方法所執行的操作!

  10. 接口

  接口是一種約定,它定義了方法、屬性、時間和索引器的結構。我們不能直接從一個接口創建對象,而必須首先通過創建一個類來實現接口所定義的特征!

  11.封裝

  封裝是一個概念,它的含義是把方法、屬性、事件集中到一個統一的類中,並對使用者屏蔽其中的細節問題一個關於的封裝的實例是小汽車——我們通過操作方向盤、剎車和加速來操作汽車。好的封裝不需要我們考慮燃料的噴出、流動問題等。

  12. 重載

  他規定一個方法可以具有不同的實現,但方法的名稱是相同的。

  13. 多態

  它規定,一個同樣的函數對於不同的對象可以具有不同的實現。例如一個Add方法,它既可以執行整數的加法求和操作,也可以執行字符串的連接操作!

 

 

二、什么是實體?

實體:具有相同屬性描述的對象(人、地點、事物)的集合。

 

三、什么是UML?

是一種面向對象的建模語言,它是運用統一的、標准化的標記和定義實現對軟件系統進行面向對象的描述和建模。

 

四、類分為哪些類型?

分為邊界類、實體類和控制類。

邊界類是一種用於對系統外部環境與其內部運作之間的交互進行建模的類。這種交互包括轉換事件,並記錄系統表示方式(例如接口)中的變更。

實體類:主要是作為數據管理和業務邏輯處理層面上存在的類別;它們主要在分析階段區分實體類的主要職責是存儲和管理系統內部的信息,它也可以有行為,甚至很復雜的行為,但這些行為必須與它所代表的實體對象密切相關。

控制類用於對一個或幾個用例所特有的控制行為進行建模。控制對象(控制類的實例)通常控制其他對象,因此它們的行為具有協調性質。控制類將用例的特有行為進行封裝。

 

五、類的層次結構?

(1) 聚集關系。

  聚集是一種整體-部分關系。在這種關系中,有整體類和部分類之分。聚集最重要的性質是傳遞性,也具有逆對稱性。

  聚集可以有不同層次,可以把不同分類聚集起來得到一顆簡單的聚集樹,聚集樹是一種簡單表示,比畫很多線來將部分類聯系起來簡單得多,對象模型應該容易地反映各級層次。

  (2)一般化關系。

  一般化關系是在保留對象差異的同時共享對象相似性的一種高度抽象方式。它是一般---具體的關系。一般化類稱為你類,具體類又能稱為子類,各子類繼承了交類的性質,而各子類的一些共同性質和操作又歸納到你類中。因此,一般化關系和繼承是同時存在的。一般化關系的符號表示是在類關聯的連線上加一個小三角形

 

六、什么是屬性和行為?

屬性可用來描述同一類事物的特征, 行為可描述一類事物可做的操作

 

七、面向對象三大特征是什么?

封裝:也就是把客觀事物封裝成抽象的類,並且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。對象是封裝的最基本單位。

繼承:指一個對象直接使用另一對象的屬性和方法。

多態:多態性是指相同的操作或函數、過程可作用於多種類型的對象上並獲得不同的結果。不同的對象,收到同一消息可以產生不同的結果,這種現象稱為多態性。

 

八、什么是裝箱拆箱?裝箱拆箱為什么要進行大量運算?

裝箱是將值類型轉換為引用類型;拆箱是將引用類型轉換為值類型;

將值類型轉換為引用類型,需要進行裝箱操作(boxing)

  1)首先從托管堆中為新生成的引用對象分配內存。

  2)然后將值類型的數據拷貝到剛剛分配的內存中。

  3)返回托管堆中新分配對象的地址。

  可以看出,進行一次裝箱要進行分配內存和拷貝數據這兩項比較影響性能的操作。

  將引用內型轉換為值內型,需要進行拆箱操作(unboxing)

  1)首先獲取托管堆中屬於值類型那部分字段的地址,這一步是嚴格意義上的拆箱。

  2)將引用對象中的值拷貝到位於線程堆棧上的值類型實例中。

  經過這2步,可以認為是同boxing是互反操作。嚴格意義上的拆箱,並不影響性能,但伴隨這之后的拷貝數據的操作就會同boxing操作中一樣影響性能。

 

 

九、為什么用泛型,都哪些是泛型,哪些是非泛型?

泛型是一種特殊的類型,它把指定類型的工作推遲到客戶端代碼聲明並實例化類或方法的時候進行。不會強行對值類型進行裝箱和拆箱,或對引用類型進行向下強制類型轉換,所以性能得到提高。

C#中,所有被聲明為以下類型的事物被稱為值類型:

 

bool

byte

char

decimal

double

enum

float

int

long

sbyte

short

struct

uint

ulong

ushort

 

 

2.引用類型:

 

所有的被聲明為以下類型的事物被稱為引用類型:

 

class

interface

delegate

object

string


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM