顯示具有 物件導向 標籤的文章。 顯示所有文章
顯示具有 物件導向 標籤的文章。 顯示所有文章

2012-04-07

簡介物件導向

在軟體的世界中, 雖說是 [ 物件 ], 但實際上並沒有真正的實體存在, 嚴格說來就是由一堆電子信號 ON 與 OFF 交替所構成的複雜網絡而已, [ 物件 ] 之說只是以人類較能接受的形式來稱呼, [ 物件 ] 僅是一種抽象的意涵, 千萬不要太過執著於字面上的意義.

身為軟體開發者, 我只在乎所學的技術是否能協助我完成整個開發工作, 至於物件導向的優劣問題與未來發展就留給專家學者們去論述 ! 我之前也說過了, 物件導向的概念教學隨處都可以搜尋到, 我不想在這裡多加詳述, 僅針對物件導向的概念做一番簡略描述.

在談論本篇主題前, 我假設您對函式的用法已經相當瞭解.
函式的宣告、函式的呼叫、參數 (引數) 的代入、函式的傳回值 ... 等等

先做個簡單測試 :

(修飾詞不同)
private void myFunction0 ( ) { .... }
public void myFunction1( ) { .... }

(傳回值 與 參數 的運用)
public int myFunction2 (int num1, int num2 ) { .... }
public double myFunction3 (double num1, double num2) { .... }

上面的幾個函式如果您無法理解它們的意義, 那麼請您先把 [ 函式 ] 這個課題學好後再來碰觸物件導向的知識會比較好, 因為 [ 函式 ] 一詞在物件導向的 class (類別) 中將會改以 [ 方法 ] 來稱呼.

class (類別) 與 instance (物件) 的關係 : 我用圖來說明



在程式設計階段中, 你可以將 class 當成是一個模板來設計, 透過 new 關鍵字就可以產生與 class 相關的 [ 物件 ]; 在程式執行期間 (Runtime), 實際參與運作的就是這些 [ 物件 ].

我用簡略的程式碼來表示 : (Java)
===============================
class Monster {
    屬性 : (略)
    方法 : (略)
}
.......
Monstre myMonster = new Monster(); // 產生一隻 Monster 物件 myMonster
===============================
這個 class (類別) 的名稱就是 Monster, 而 myMonster 就是 instance (物件).


我們來創造更多與 Monster 相關的物件 ~ 沿用之前的 class Monster { .... }
====================================
// 以 ArrayList<> 方式宣告物件陣列清單
ArrayList<Monster> myMonster = new ArrayList<Monster>();
....
for (int i=0; i<10; i++) {                  // 準備創造10 個
      Monster m = new Monster();   // 先產生單隻的 Monster 物件 m
      myMonster.add(m);                // 將單隻的物件 m 陸續加入陣列清單中
}
====================================

2012-04-06

物件導向在哪裡 ?

[ 物件導向 ] 的設計概念只要網搜一下就能找出一堆, 所以, 我不打算在這裡解釋何謂物件導向, 而且我也不擅長論述這方面的知識, 如果你已經讀過許多有關物件導向這方面的書籍或網路常識, 最後你得問你自己一個問題 ~ 我到底會不會用 ?

站在程式設計者的立場, 不管你懂不懂或是要不要運用 [ 物件導向 ] 的概念來設計程式, 目前來說 ~ 恐怕都由不得你了 !

觀察目前的各種程式語言版本, 當你開啟編輯器進入程式編輯畫面時, 畫面上只要出現 class 的字樣, 就表示你已經身在物件導向的懷抱中了 ! 下面我舉幾個例子給你看 : ( 藍色字樣為個別的程式語言編輯器, 請注意裡面的 class 字樣 )

( Android Java & Eclipse )
public class Hello extends Activity {
    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        .......... (略)


( Microsoft Visual C# )
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        ........ (略)



( 其他 C++ 或 JAVA 版本 )
 public class myfirst {
    public static void main(String[] args) {
       ..... (略)


( Microsoft Visual Basic )
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
........... (略)



有沒有發現到處都有 class 的蹤影 ? 而 class (類別) 就是物件導向的基礎 !
我想告訴您的是 ~ 物件導向的設計概念已經無所不在, 只要您是學習軟體設計 (程式設計) 的人都一定會接觸到這個議題. 下次我再用一些實際的範例來談談.

搜尋此網誌