l

2012年1月22日 星期日

什麼是物件導向(1):簡介

January 21 19:58~21:38

談了好幾次軟體設計與軟體架構,Teddy今天突然想到好像一直假設鄉民們都很懂OO(Object-Orientation 物件導向)。不管這個假設是否成立,在兔年尾龍年初的時期就來幫鄉民們複習幾個基本的OO觀念吧。

鄉民甲:應該是沒料可寫了吧。

Teddy:這是新年特別節目啦。

***

話說又是N年前的事情,當時Teddy還在念五專電子科,應該是專二還是專三的時候,當時C++很流行,由於Teddy當時已經學會了一點C的皮毛想說接著學C++應該也是「順理成章」的事情。沒想到雖然只是多了兩個「++」符號,兩個語言的差異還真大。原來C++只有在「程序導向(Procedure-Orientation 」和C語言差不多,但是對於學習C++所需的物件導向觀念Teddy則是完全不懂。

在當年那個「反共抗俄 資訊與物資匱乏 」的年代,Teddy可是花了不少冤枉錢買了一堆看完之後還是不知所云的書。請不要說:不是google一下就有答案了?別說google,那個年代WWW都還沒發明勒…XD。

總之,重點是,後來好像是專四還是專五的時候,有一門忘了是什麼課,剛好有一位剛從國外拿到PhD的老師居然很好心的印了一份講義講了一點OO的觀念。請注意,Teddy五專念的可是電子科,當年能在這麼「硬」的科系學到這麼「軟」的觀念,現在想起來覺得那一學期的學費沒有白交了...XD。

當初那份講義早就不知道消失到哪裡去了(應該已經重新投胎好幾次了),後來不曉得過了多久Teddy才發現原來那份講義就是Object-Oriented Software Engineering: A Use Case Driven Approach(1992年出版)這本書的第三章。這一章一共有個小節:

  • 3.1 Introduction
  • 3.2 Object
  • 3.3 Class and instance
  • 3.4 Polymorphism
  • 3.5 Inheritance
  • 3.6 Summary

這次先整理幾點3.1 Introduction所提到的重點:

  • Object-orientation is a technique for system modeling. Using OO, we model the system as a number of objects that interact.(物件導向是一種系統塑模技術。使用物件導向我們將系統塑模成若干個彼此互動的物件。)
  • OO提供了兩點很重要的好處:Understanding(理解性)與Modifications(修改性)。

換句話說,OO的目的是一種讓開發人員可以用來model(塑模、設計)軟體系統的技術。如何model?透過把系統視為由許多彼此互動的物件所組成。使用OO技術所設計的系統可以提高可了解性與可修改性(這兩點都是non-functional requirements)。

總之,如果要用一句話來形容,用以說:OO是一種用來設計可了解性與可修改性系統的技術

***

友藏內心獨白:這一篇要測試一下設定張貼日期的功能。

沒有留言:

張貼留言