先用物件導向看軟體設計

我們在此,使用C++來做個簡單的解釋

C++ without OO的Hello World

一個main,執行了一行cout,顯示一個字串,簡潔有力。

#include <cstdio>

int main()
{
    printf("Hello World!\n");
    return 0;
}

結構化程式設計

運用結構化程式設計的方式,除了帶入了if, loop之類的,還有function的寫法。

主程式呼叫了一個函數,函數內容就顯示一個字串。 優點就是可以重覆使用這個函數的內容,而不再是複製、貼上了。

#include <cstdio>

void ShowHelloWorld()
{
    printf("Hello World!\n");
}

int main()
{
    ShowHelloWorld();
    return 0;
}

物件導向程式設計

這叫做「用一個類別(X)的物件來做這個動作」(這句比之前的描述更像自然語言了)

X.h

#include <cstdio>

class X
{
    void ShowHelloWorld();
};

X.cpp

#include "X.h"

void ShowHelloWorld()
{
    printf("Hello World!\n");
}

main.cpp

#include "X.h"

int main()
{
    X xxx;
    xxx.ShowHelloWorld();
    return 0;
}

看完有沒有發現code變得好複雜,說好的Hello World呢?不是很簡單的嗎?我們來看看它的優缺點。

優點

  • 建立類別,管理程式碼。

  • 物件可以模組化重覆呼叫使用。

缺點

  • 使用了大量的記體體空間

  • 程式呼叫物件與function 之間,浪費了些許的時間成本。

咦?怎麼沒有提到....「程式碼的呼叫變得更複雜」呢?

物件導向,是提供一套設計工具,讓程式設計師方便管理程式碼。也許你會問「明明就更複雜了,怎麼還會是『更好的管理』呀?應該是變簡潔才對呀!哪有比較好?」

也許多年以後,Hello World變成了更多行的程式碼。更多的if-else邏輯描述,一個又一個的function跑了出來,讓程式碼愈來愈看不出,這是在執行什麼東西。

但是,物件導向是一套可以讓「真實執行的程式碼」管理得更有條有理的方式,就像是心智圖一樣。

        int
       /
main--Obj--char
  \
   Obj--float

Last updated

Was this helpful?