軟考—軟體設計師(面向物件方法)概念總結
1.在C++中,類的繼承主要由如下3種方式:
繼承方式 | 公有成員 | 私有成員 | 保護成員 | 備註 |
---|---|---|---|---|
公有繼承(public) | 公有成員 | 私有成員 | 保護成員 | 保持原有狀態 |
私有繼承(private) | 私有成員 | 基類私有,不能被繼承 | 私有成員 | 公有成員和保護成員作為派生類的私有成員,不能被派生類所訪問 |
保護繼承(protected) | 保護成員 | 基類私有,不能被繼承 | 保護成員 | 派生類中的保護成員只能被成員函式和友元訪問 |
總結:基類成員對派生類的物件來說,是否能被訪問,就要看基類的成員在派生類中變成了什麼型別的成員。
2.面向物件分析和設計的活動
名稱 | 基礎 | 概念 | 活動/作用 |
---|---|---|---|
面向物件分析 | 基於用例模型 | 通過物件建模記錄確定的物件、物件封裝的資料和行為以及物件之間的關係。 | 建模系統功能、發現並且確定業務物件、組織物件並確定其關係 |
面向物件設計 | 在分析物件模型的基礎上 | 設計各個物件、物件之間的關係(如層次關係、繼承關係等)和通訊方式(如訊息模式)等 | 其主要作用是對OOA的結果作進一步規範化整理 |
3.靜態成員和普通成員區別較大,體現在以下幾點:
(1)普通資料成員屬於類的一個具體的物件,只有物件被建立了,普通資料成員才會被分配記憶體。靜態資料成員屬於整個類,即使沒有任何物件建立,類的靜態資料成員變數也存在。
(2)外部訪問類的靜態成員只能通過類名來訪問。
(3)類的靜態成員函式無法直接訪問普通資料成員(可以通過類的指標等作為引數間接訪問),而類的任何成員函式都可以訪問類的靜態資料成員。
(4)類的靜態方法只能訪問該類的靜態資料成員。
補充:靜態成員和類的普通成員一樣,也具有public、protected、private 3中訪問級別,也可以具體返回值及被修改等性質。
4.UML的系統檢視:
UML對系統架構的定義是系統的組織結構,包括系統分解的組成部分,以及它們的關聯性、互動機制和指導原則等提供系統設計的資訊。
名稱 | 作用 |
---|---|
邏輯檢視(設計檢視) | 表示設計模型中在架構方面具有重要意義的部分,即類、子系統、包和用例實現的子集。 |
程序檢視 | 程序檢視是可執行執行緒和程序作為活動圖的建模,是邏輯檢視的一次執行例項,描述了併發和同步結構。 |
實現檢視 | 實現檢視對組成基於系統的物理程式碼的檔案和構件進行建模。 |
部署檢視 | 部署檢視把構建部署到一組物理結點上,表示軟體到硬體的對映和分佈結構。 |
用例檢視 | 用例檢視是最基本的需求分析模型。 |
5.建構函式與解構函式的特徵
在定義一個物件的同時,希望能給它的資料成員賦初值—物件的初始化。在特定物件使用結束時,還經常需要進行一些清理工作。C++程式中的初始化和清理工作分別由兩個特殊的成員函式來完成,即建構函式與解構函式。
函式名稱 | 作用 | 概念 | 性質 | 個數 |
---|---|---|---|---|
建構函式 | 資料成員賦初值——物件的初始化 | 如果在定義時,沒有為類定義建構函式,編譯系統會生成一個預設形成的隱含的建構函式,這個建構函式的函式體是空的,因此預設建構函式不具備任何功能。且建構函式為類的一個成員函式,具有一般成員函式的性質。 | 1.建構函式的函式名必須與定義它的類同名2.建構函式沒有返回值3.建構函式被宣告定義為公有函式4.建構函式在建立物件時由系統自動呼叫 | 一個類可擁有多個建構函式,只要引數個數和引數型別不同即可 |
解構函式 | 在特定物件結束時,進行清理工作 | 解構函式也叫拆構函式,是在物件消失之前的瞬間自動呼叫的函式 | 1.解構函式沒有任何引數,不能被過載,但可以是虛擬函式2.解構函式沒有返回值3.解構函式名與類名相同,但在類名錢加上一個邏輯非運算子"~",以表示與建構函式的區別 | 一個類只能有一個解構函式 |
6.用例之間的基本關係
(1)包含關係:當可以從兩個或兩個以上的用例中提取公共行為時,應該使用包含關係。 其中這個提取出來的公共用例稱為抽象用例,而把原始用例稱為基本用例或基礎用例。包含關係的一個重要特徵,就是被抽象出來的用例是基礎用例必須的部分,不可或缺。
(2)擴充套件關係:如果一個用例明顯地混合了兩種或兩種以上的不同場景,即根據情況可能發生多種分支,則可以將這個用例分為一個基本用例和一個或多個擴充套件用例。 擴充套件關係的一個重要特徵,就是抽取的用例相對於基礎用例來說不是必須的。
(3)泛化關係:當多個用例共同擁有一種類似的結構和行為的時候,可以將它們的共性抽象為父用例,其他的用例作為泛化關係中的子用例。 在用例的泛化關係中,子用例是父用例的一種特殊形式,子用例繼承了父用例所有的結構、行為和關係。例如:某學員進行課程註冊時,假設既可以通過現場註冊,也可以通過網上註冊,則“註冊課程”的用例就是“現場註冊”用例和“網上註冊”用例的泛化。
7.UML 2.0包括的14種圖
名稱 | 概念 | 作用 | 備註 |
---|---|---|---|
類圖 | 類圖描述了一組類、介面、協作和它們之間的關係 | 類圖給出了系統的靜態設計檢視,活動類的類圖給出了系統的靜態程序檢視 | |
物件圖 | 物件圖描述了一組物件及他們之間的關係以及在類圖中所建立的事物例項的靜態快照 | 物件圖給出了系統的靜態設計檢視和靜態程序檢視 | 它們都是從真實案例或原型案例的角度建立的。 |
構件圖 | 構件圖描述了一個封裝的類和它的介面、埠,以及由內嵌的構件和連線件構成的內部結構 | 構件圖用於表示系統的靜態設計實現檢視 | 構件圖是類圖的變體 |
組合結構圖 | 組合結構圖描述結構化類(如構件或類)的內部結構,包括結構化類與系統其餘部分的互動點 | 用於畫出結構化類的內部內容 | |
用例圖 | 用例圖描述了一組用例、參與者及它們之間的關係。 | 用例圖給出系統的靜態用例檢視 | |
順序圖 | 順序圖是強調訊息的時間次序的互動圖 | 互動圖(系統的動態檢視) | |
通訊圖(協作圖) | 協作圖不但描述了物件之間的互動還描述了互動的物件之間的連結關係,即通訊圖同時反映了系統的動態和靜態特徵 | 通訊圖強調收發訊息的物件或參與者的結構組織,反映了物件之間的訊息互動 | 互動圖 |
定時圖 | 強調訊息跨越不同物件或參與者的實際時間,而不僅僅是關係訊息的相對順序 | 互動圖 | |
狀態圖 | 狀態圖描述一個狀態機,由狀態、轉移、事件和活動組成 | 狀態圖給出了物件的動態檢視,它對於介面、類或協作的行為建模尤為重要,而且它強調事件導致的物件性行為,有助於對反應式系統建模 | |
活動圖 | 活動圖將程序或其他計算結構展示位計算內部一步步的控制流和資料流。 | 活動圖專注於系統的動態檢視,它對於系統的功能建模和業務流程建模特別重要,並強調對相見的控制流程 | |
部署圖 | 部署圖描述對執行時的處理結點及在其中生存的構件的配置 | 部署圖給出了架構的靜態部署檢視,通常一個結點包含一個或多個部署圖 | |
製品圖 | 製品圖描述計算機中一個系統的物理結構,製品包括檔案、資料庫和類似的物理位元集合 | 製品圖通常與部署圖一起使用,製品也給出了它們實現的類和構件 | |
包圖 | 包圖描述由模型本身分解而成的組織單元,以及它們之間的依賴關係 | ||
互動概覽圖 | 互動概覽圖是活動圖和順序圖的混合物互動圖 |
結構性檢視(靜態)主要是對系統中的結構成員及其相互關係進行描述 | 行為性檢視(動態) 描述了系統隨時間變化的行為 |
---|---|
類圖、物件圖、包圖、組合結構圖、構件圖、部署圖和製品圖 | 用例圖、順序圖、通訊圖、定時圖、狀態圖、活動圖、互動概覽圖 |