不管是系統分析、資訊管理、還是程式語言,統統都會講到OO(物件導向,Object Oriented)概念,而且被提及得非常頻繁。究竟什麼是物件導向?這大概可以分成兩個層面來說:OOA(物件導向分析)、以及OOD(物件導向設計)。

 

所謂的OOA,是把整個需求拆解成幾個甚至於許多個細部需求,這些細部需求組合起來必然為委案者的原始需求,然後根據這些被簡化了的細部需求瞭解各種功能物件,從而在分析階段清楚的辨明整個需求的面貌。

OOD則是建立在OOA前提之上;根據物件導向分析結果,分別同步或依序設計、撰寫、測試、組裝所有的功能元件,以一種類似於模組化設計生產的方式,將需求實質化。

 

物件導向的好處,從這裡可以看到,大約是迅速、具有良好的擴充性、維修容易。缺點為不同設計者之間所設計出的各種物件如果沒有標準化,則會出現各種配合上的錯誤問題。一般模組化設計如建築、管線配置、或機械設計等等,因為已經有了各種參考遍覽,因此這種問題較小,但程式語言與資訊領域中的物件導向雖然與模組化設計十分相似,卻相當容易出現裝配問題,尤其是前任設計者已經離職、而接任設計者意圖擴充或修改設計時,可能會因為邏輯不同而出現問題。

 

前言至此,以下是簡單的例子。

此範例將會取得一個預定的半徑,並且輸出平面面積與球體體積。

 

#include<math.h>//因為要用到pow來做(簡化次方與立方),所以要引用這個,不引用就只好一個一個輸入
#include <iostream>
using namespace std;

const double pi = 3.14159;//圓周率為常數
class OOD
{
public://假設你不設定,那class中預設,這會是private
  int radious;
  double area()
  {
        double areasize=pow((double)radious, 2)*pi;
        return areasize;
  };
  void getradious(int n)
  {    radious=n;};
};
以上為第一個物件

物件包涵「取得輸入之半徑」、「進行面積運算」兩個部份

class volumn:public OOD
{
public:
  double volsize()
  {
       double vol=area()*radious*(4/3);
       return vol;
  };
};

用 : 運算子來繼承另外一個

此物件包涵「體積計算」、繼承了「取得輸入之半徑」、「進行面積運算」兩個功能

void main()
{
    int n=3;//預設半徑為3
    OOD test;//宣告使用一個OOD的物件,並將該物件命名為test2

    volumn test2;//宣告使用一個volumn的物件,並將該物件命名為test2

    test.getradious(n);//使用OOD中的功能,將半徑值置入
    cout<<test.area()<<endl;
    test2.getradious(n);//這裡就是有趣的地方;名為test2的物件實體為volumn,這個物件裡面實際上並沒有宣告功能函數getradious(),但因為繼承關係,所以當我們呼叫的時候,他就會去使用OOD物件裡被繼承的功能來使用。

    cout<<test2.volsize();
    

    system("pause");
}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 archerdevil 的頭像
    archerdevil

    Archer, who doesn't know how to shoot...

    archerdevil 發表在 痞客邦 留言(0) 人氣()