|零壹成員|部落格化|數位建築|城鄉建築|作品建築|推薦留言|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
以程式中的物件導向技術建構合院形態中的單體建築 | 指導教授:楊裕富 | |
The Research of Form Construction used in Taiwan Traditional Quadrangle Buildings | 研究生:吳學軒 | |
1、
程式中的物件導向技術 早在1957年,美國人所設計義勇兵飛彈系統(Minuteman)時,便運用了物件導向技術(Object-Oriented Technology)。當時他們以電腦系統來設計模擬真實的飛彈飛行。整個模擬過程分成幾個獨立的階段,每個階段都是由一位專家負責加以完成。各個階段之間則靠著資訊的傳遞來完成整個系統的工作。例如,彈道組件可能會向鼻尖組件詢問,為了達到某個速度和高度,該使用多大的推力等等。在這個系統中,雖然沒有用到「物件導向」這個字眼,但是,物件的觀念(將資料和方法包裝在一起,彼此用訊息溝通),則已經隱含其中。 物件導向技術的一些觀念與術語,是從1960年代挪威所發展的Simula程式設計 語言中衍生出來的。而Simula這個字,實際上便代表著「模擬用語言」(Simulation Language)。其基本設計構想,是用來對於實體世界中的各種處理過程進行電腦的模擬。模型的建立,乃是以所要模擬的實體做為標的,每一個外界的實體都有一個軟體構建的物件來對應、模擬它,而真實的反映這些實體的一些行為與特性。另外能以較為精確的模型,來模擬真實世界中由數以千萬計的元件所組成的複雜系統。同時,這些物件之間,則靠著訊息的相互傳遞,來造成彼此間的互動。而傳統的語言則是以程式內的程序(Procedure)以及這些程序所要處理的資料為標準。 2、物件導向的基本觀念 物件導向的基本觀念可分為物件、訊息和類別,分別說明如下: 物件 「物件」,為一個由軟體程式碼所構成的「包裝」,包含了一組彼此相關的程序和資料。這些程序,稱為這個物件的「方法」(Method),而資料,則稱之為「變數」(Variable)。方法是該物件展現對外表達的一些行為,它告訴外界,它能夠做些什麼,以及外界該如何去和該物件進行溝通。變數則代表該物件內在的一面,存放了該物件的一些相關資料,這些資料是物件內部所使用,而不為外界所知的。如果一個物件打算讓它的某些變數開放讓外界存取的話,可以在其方法中加入適當的存取這些變數的方式。無論如何,外界只能透過物件的方法來和物件溝通,絕無法直接去存取物件的變數。因此,方法是一個物件和外界之間的窗口。 物件的觀念看起非常的簡單,可是其功能卻很強大。我們可以定義出各種物件,來模擬真實世界的實體,並把各實體的行為、屬性、狀態等等,全部包裝在一起,而這些物件彼此都是獨立的小世界。一部再大的機器,也是由小零件所組成的,如果將物件看成軟體的小零件的話,我們便可以用這些小零件來組合成一個大軟體。這是物件導向技術最基本,也是最重要的觀念。 訊息(Message) 真實世界的各實體之間,可能會發生許多的關係。譬如說,對談、接觸、碰撞、買入、賣出….等,隨時都在發生。應用到電腦模擬來,便產生了一個問題-該如何來模擬各個實體(物件)之間的互動呢?前面所述Simula語言提供了這個問題的解答:使用訊息,來表達物間之間的互動。物件之間的互動,乃是由一個物件發送一個訊息給另一個物件,要求它執行它的某一個方法。發出訊息的這一端,稱之為「發送者」(Sender),而接收的那一個物件,稱之為「接收者」(Receiver)。由於發送者送出訊息要求接收者提供服務,也有人把發送者稱為「從端」(Client),而把接收者稱為「主端」(Server)。 類別 在實際世界中,實體並非獨立而是有關聯性的。而物件導向對此關聯性的表達提出了解決知道:使用類別(Class)。而類別,乃是一種樣板,它定義了可能包含於個別物件的方法及變數。對於某一特定種類的物件所共同具有的方法和變數,只要將它們定義在類別中,然後再將這些物件宣告成屬於該類別即可。屬於同一個類別的這些物件便稱為該類別的「案例」(Instance)。在同一類別中案例的屬性皆是相同的,所不同的是變數的值。 子類別 Simula語言把類別的觀念再往前擴充了一大步,它容許一個類別以其它類別來進行定義。例如,若你引進另外一種新型的汽車,而這型的汽車許多特性是和舊型汽車一樣的。此時,你對新型汽車的定義,可以定義成「原有舊型汽車的定義,再加上一些修改或增添」。所以說,新型汽車的很多定義便是由舊型汽車的定義繼承(Inheritance)而來的。
繼承的方式,乃是經由修改或加添現有的定義,以得到所需的定義的一種做法。也就是說,我們將某一類型定義成另一類型的「特殊情形」(Specialization)。這個定義成特殊情形的類別,我們稱之為「子類別」(Subclass),而原來較為廣泛的類別,則稱為「超類別」(Superclass)。在某些物件導向程式設計語言中,超類別又稱為「基礎類別」(Base
Class),子類別則稱為「衍生類別」(Derived Class)。子類別除了由超類別繼承到一些方法和變數之外,它也可以定義自己的方法和變數,而這些新的方法和變數,也可以將超類別的相同名稱的方法和變數蓋掉。 類別階層 超類別和子類別這種層級關係,可以衍生出很多層。如果將它們之間的關係全部畫出,我們便可以得到一個類似於樹狀結構的關係。這個結構,我們便稱之為類別階層(Class
hierarchy)。在一個類別階層中,越是上方的類別,越具有一般性和廣泛性,越是下方的類別,越具有特殊性和獨立性。 3、物件導向分析與程式設計 物件導向分析 創造出一個軟體,必須先對軟體系統進行分析、設計,然後才能進入程式設計的階段。在物件導向技術中,分析、設計、以及程式設計這三者的分野,已經十分模糊。物件導向軟體開發是-分析一點,設計一點,寫一點程式,然後又回到分析…。也就是說,物件導向的開發過程是採取逐步漸進開發(Incremental
development)的方式,來進行軟體的開發。物件導向分析/設計的工作,可以分成下列的四個步驟來進行:1、找出物件和歸納出類別2、定義出各物件的類別和功用;這些物件和類別該存放那些變數,該提供那些方法等等3、找出這些物件和類別間的關係,並建立類別階層圖4、模擬實作並檢核這些物件和類別。 程式設計 完成物件導向分析/設計之後,所得到的乃是系統中各個類別的詳細規格(每一個物件該具有那些方法和變數)以及這些類別之間的關係。有了這些,接下來的問題便是如何寫程式去將它實作出來了。在此,物件導向技術強調再用,任何一個類別,只要能夠找到舊有的並能符合新作,便不需要再去製作它。而製作出來的類別,也要加入能再用的考慮。如此,在物件導向軟體開發過程中,一個類別的生命週期便可一而再、再而三的循環被使用。如此看來,程式設計的方式可分為三種: 1、利用現有的類別:這是最有效率的一種情況。在現有的類別庫中,找到我們所要的,而直接加以利用。而這種方式需注意測試此類別是否和系統中的其它類別衝突。如衝突,調整至整合無誤即可。 2、由現有類別演化而得:最常見到的情形是,現有的類別只能滿足部份的需求。此時,除了加以再利用外,還要做一些開發的工作。演化成果可能是樹枝狀結構中水平的產生另一枝節的類別本,亦可能是由現有類別繼承下來的垂直關係。而演化的開發工作乃是屬於漸增式的。在實作時,加入原有類別未提供的功能;而在測試時,亦針對這些新增的功能加以測試;其餘的部份,則可以再用原有的東西(包括測試程式及資料)。 3.
從頭開發:這是最差且對程式設計者最累的情況,所有的工作都要從頭做起。對於一個剛踏入這個技術領域的軟體開發者來說,若還沒有累積足夠的資產,便最有可能出現這種情形。這時候,必須根據類別的規格,去把要的類別製作出來。同時,還得經由不斷地測試以便驗證其類別的正確性和效率性。 4、單體建築形態建構的基本觀念 在此,建構的對象為單體建築和合院建築,而建構的方式可分為四步驟: 1、
了解與整理單體建築和合院建築,並分別就其形態加以歸類、分出類型。 2、
由類型中找出組成類型的“單元”,這些單元初步定為“基形”。 3、
有了“基形”後,進一步找出組合的文法和規則。 單體建築建構 就劉致平在《中國建築類型及結構》一書中,將單體建築分為五類:一、樓、閣、塔。
二、宮、室、殿、堂。
三、亭、廊、軒、榭、齋、館、舫。四、門、闕、牌、坊。
五、橋。而台灣傳統合院民居和寺廟部分所使用的單體建築多為前三類。茲以前三類單體建築中合用或流用的構件來作說明:
單體建築構件組織 一般來說,傳統建築外觀大致上來說可分為台基、屋身和屋頂三大部分,而這三大部分再由各個不同的構件組織而成,其組織如下:
磚 如綠釉花瓶…等。
屏門和太師壁 ![]() ![]() 單體基形 所以,“基形”如同是構成物體的“分子”。但成為“基形”還有另一條件,就是具共通性和流用性,也就是具一類型的共同特徵。例如有同一類型兩物體b、c。物體a符合為物體b的構成要件,但物體a僅出現在物體b上,於物體c上卻沒有。則物體a並非是物體b、c的基形,僅能說是出現在物體b的“特例”。 可以發現,“基形”也是判別出一物體屬於何種類型的依據。我們以類型歸納來找出共同的組成因子“基形”,同時卻又依賴“基形”來判別類型。 4-2-1、宋營造法式卷第一<總釋>中對殿的描述 「殿堂附倉頡篇,殿,大堂也。徐堅注云,商周以前其名,不載勤本紀,使約作前殿。周官考公記:夏后世室,堂脩二七,廣四脩。一商人,重屋堂脩七尋,堂重三尺。周人明堂,東西九筵,南北七筵,堂重一筵。鄭司農注云:脩,南北之深也。夏度以步,今堂脩十四步,其廣益以四分,脩之一則堂廣十七步半,商度以尋周。以筵六尺曰步,八尺曰尋,九尺曰筵。」 「禮記,天子之堂九尺,諸侯七尺,大夫五尺,士三尺。墨子,堯舜堂高三尺。說文,堂,殿也。釋名:堂,猶堂,堂高顯貌也,殿,殿鄂也。尚書:大傳,天子之堂高九雉,公侯七雉,子男五雉。雉長三尺。博雅:堂,堭殿也。義訓:漢曰殿,周曰寢。」 由此段《營造法式》中對於殿堂之描述,我們可以知道殿堂的尺寸依屋主身分地位的不同而有規模大小上的差異。而三開間為最小、最基本的殿堂形制。 4-2-2三開間承重牆單體建築組合文法規則 同上一節的觀念,但我們只細分到數枝狀圖層級關係的上下兩層(因構件太多)。 簡單的組合規則: 規則1 三開間單體建築→
屋頂 屋身
台基 再進一步細分為 規則2 屋頂→
鋪作層(枓拱) 屋瓦
屋脊 規則3 屋身→
牆 門
窗 5、 結論 台灣傳統合院的形式生從中國南方建築延續過來,並受宋營造法式對於形態、樣式、用料、做法的規範,及理法風水和尺寸分別對於合院佈局形成和單體建築尺寸作一吉凶的判斷。這些對於合院建築形態是屬於“無形”的規範。而形態建構的部分,在此形態建構需要兩條件,一是需有物體來形成形態,二是需有文法規則來組織形態。 物件導向技術是軟體程式設計的語言,有了它,才能進行設計運算進而達到電腦模擬的效果。而物件導向技術中所需要的三元素:物件、訊息和類型;符合傳統合院中找出的基形、文法規則及兩者結合後生出的類型,這更說明了傳統合院建築建構生成是符合設計運算理念的。如以電腦建構出台灣傳統合院建築,所採取較佳的方式為由下而上「加成式的」建構特質,不同於真正實際的營建過程的「由上而下」的特質-先從地形、勘查位置及風水等架構出建築的配置格局後分別依單體建築的地位和規模來施工。而在電腦輔助設計中以加成式的建構特質來建構的好處是,當各個構件建構完成形成各個不同的單體建築後,接下來的步驟,只是將這些單體建築單元加以組合和變化而已。另外,可以根據單體建築性質地位的不同來進行構件的更換(如鹿港龍山寺和台北龍山寺廳堂正脊的大小和形式不同,屋頂的形式也不同)。如此一來,將單體建築構件各類形式整理成一構件的倉庫(在電腦中稱資料庫),且將組合的順序關係和文法規則找出來,再根據這些文法規則配合不同類型的單體建築及單體建築中的建築構件,便可組合出上百種的合院建築。
|
推薦|零壹試點|林揖世在新浪|林揖世在GOL|林揖世在Xuite|馬知黃在樂多|馬知黃在無名|馬知黃在Xuite|馬知黃在中|建築傳統工匠報|