一個C++程式設計師的Delphi學習筆記 (轉)
一個C++員的學習筆記
說心裡話,站在一個C++程式設計師的立場,是有那麼一點看不上用Delphi的開發者的。就幾周前,我還撰文維護過C++的尊嚴。種種原因,今天我卻須學習Delphi、熟悉Delphi,不由興起人生無常的感慨。
我給了自己十五天的時間,不知夠否掌握一門語言?我選擇了Marco cantu的《Delphi從到精通》及《Delphi高階開發指南》作為學習用書。第一本書名叫《從入門到精通》,但如果你不熟悉一門語言,那這本書不合適你。對我,則正合適。二書總厚度共一千五百頁,嗯,一天一百頁就差不多了,希望自己能做到吧。
我決定如實記下自己的思考與困惑,做為自己進軍新領域的記念,也希望能為後行的同路者提供一點幫助。
一 環境
"工欲善其事,必先利其器",對開發環境的熟悉是非常重要的。不同於VC的MDI介面,Delphi採用了多個獨立窗體設計。這是否預示Borland更提倡間進行對等的互動?我暗暗猜測著。
1.Desktop設定是可以與Project分離的,而且Desktop設定優先於Project設定。
2.To-Do列表無論是用於提醒自己還是別人,都是好工具。
3.AppBrowser感覺上很相似於VC的主介面。也提供了符號提示,Code Completiont等功能。嗯,還有VC所沒有的Class Completion,可以在宣告和實現間雙向自動補完。
4.Project Group的概念,有點像平臺中的Solution,不過.net是多語言協作的。
二 語言
Delphi的核心是VCL庫,其基礎是 Pascal。《從入門到精通》用兩章的篇幅細說"Object",卻隻字沒有提到"Pascal"。嗯,還好,我隱隱記得。
1.Use用於引用外部單元。與頭不同,Use沒有傳遞性。
2.Delphi使用引用模型,物件變數只持有物件引用,不再持有物件本身,所有物件手動自堆中分配。
3.Delphi的封裝很奇怪,類成員訪問的設定,只對單元外部起作用。在單元內,可以自物件外部任意訪問類私有成員。朋友解釋說相當於C++的友元,細想其實差異很大--友誼一定是雙向的嗎?(將Unit方式用作友元,A能訪問B,B一定能訪問A)友誼有傳遞性嗎?(將Unit方式用作友元,A能訪問B,B能訪問C,A一定能訪問C)。在我看來,這和友員的概念是不相容的。希望某天我能明白Delphi如此設計的考量。
4.在宣告物件變數後,Delphi物件的實際生成需構造器。構造器是特殊的類方法,自TObject繼承並可過載。不使用關鍵字而用類方法構造物件,我認為這是單根繼承的特有用法。
5.書中有一段動態建立TButton的例子,使用Creat建立了物件,卻沒用Free顯式的釋放
。我疑心會發生洩漏,細細想來,該是由持有TButton的容器TForm來負責釋放,朋友證實了我的想法。Delphi以此避免了手動釋放記憶體的麻煩。
6.Delphi的關鍵字很煩,長而多,要鍵入的地方也多。好處是能為提供更多的資訊,用以查錯和加快編譯速度。
7.因著引用物件模型,不再有C++中直接物件訪問無多型,只在指標和引用下多型機制才起作用的問題。
8.用message直接指出方法可以處理的事件,唉,讓我想起OWL時Borland對C++語言的相似擴充套件,真是懷念。
9.大量使用動態型別轉換,該是Pascal本就具有的特點吧?
10.窗體繼承,好像連的屬性都可以繼承呢。
11.很奇怪的設計。有類方法,卻不提供類變數,需用Unit級的變數來模擬。
12.如果我的猜想不錯,控制元件的Events應該就是"物件方法指標"。
13.極強有力的機制:類引用,可用相同的形式動態建立不同的資料型別。C++中相似的能力,怕要用Builder才行。
14.引數物件按引用傳遞,按引用賦值,只有部分類提供Assign方法複製對像。唉,C++的值語意,好懷念。
15.Finally塊!解決了C++中好些需高度技巧的資源釋放問題。但為什麼不能和except一起使用?不太明白。
16.屬性和事件??真是為VCL量身定製的語言啊。其實屬性和事件並非物件導向的必要元素。
17.我想VCL事件處理的委託模型,該是與相似的。只是Java的Listener可以處理多
個Listener的存在,Delphi的事件屬性好像只能處理一個吧?不過處理速度上要快多了。
18.a)從TComponent類繼承,b)新構造程式,c)例行的Register,d)。VCL元件建立的方便,真讓人感動。
19.書上說VCL優於,因為ActiveX沒有完全的繼承機制,我不敢苟同。聚合該是先於繼承選用的機制。
20.Interface,醜死了!!我甚至懷疑這是否Hejlsberg的設計。完全像是為Com支援臨時拼湊的語言成份,與整體毫不協調,像個外來戶。介面本身是強大的東西,但糟糕的設計會讓它的使用成為一種痛苦。除了COM和多重繼承沒有選擇外,我想是沒人願意用它的。
整個來說,Object pascal給我很深的映象。接下來就該學習VCL了,且看Borland是如何將這種種語言的成份,組裝成為開發的利器。(續待)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1000525/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師web前端培訓學習筆記Vue學習筆記一程式設計師Web前端筆記Vue
- 好程式設計師學習筆記:函式程式設計師筆記函式
- 好程式設計師web前端分享Vue學習筆記(一)程式設計師Web前端Vue筆記
- 高效程式設計師的45個習慣 讀書筆記程式設計師筆記
- python的GUI程式設計和tkinter學習筆記——第一個GUI程式PythonGUI程式設計筆記
- 好程式設計師web前端培訓學習筆記Vue學習筆記之二程式設計師Web前端筆記Vue
- 好程式設計師web前端培訓分享React學習筆記(一)程式設計師Web前端React筆記
- 好程式設計師教程分析Vue學習筆記五程式設計師Vue筆記
- Linux學習/TCP程式設計學習筆記LinuxTCP程式設計筆記
- java程式設計師程式設計筆試基礎學習Java程式設計師筆試
- 網路程式設計學習筆記程式設計筆記
- 一個JS程式設計師對機器學習的概念簡單手記JS程式設計師機器學習
- 好程式設計師大資料學習路線分享Actor學習筆記程式設計師大資料筆記
- 好程式設計師大資料學習路線分享Map學習筆記程式設計師大資料筆記
- C++核心程式設計筆記C++程式設計筆記
- 好程式設計師web前端培訓JavaScript學習筆記DOM程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享node學習筆記程式設計師Web前端筆記
- 好程式設計師web前端培訓JavaScript學習筆記--jQuery程式設計師Web前端JavaScript筆記jQuery
- 好程式設計師大資料學習筆記:Storm架構程式設計師大資料筆記ORM架構
- VNote:一個更懂程式設計師和 Markdown 的筆記軟體程式設計師筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記之設計模式程式設計師Web前端JavaScript筆記設計模式
- spark學習筆記--進階程式設計Spark筆記程式設計
- Javascript高階程式設計 學習筆記JavaScript程式設計筆記
- ROS串列埠程式設計學習筆記ROS串列埠程式設計筆記
- 結構化程式設計--學習筆記程式設計筆記
- Golang 學習筆記——tun/tap 程式設計Golang筆記程式設計
- 程式設計師的數學筆記2--餘數程式設計師筆記
- 《C++ Primer》學習筆記(六):C++模組設計——函式C++筆記函式
- 四. 文字程式設計--Windows程式設計課程學習筆記程式設計Windows筆記
- 程式設計師生存指南讀書筆記-第三篇(學習)程式設計師筆記
- 好程式設計師web前端培訓分享HTMLCSS學習筆記BFC程式設計師Web前端HTMLCSS筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記Promise程式設計師Web前端JavaScript筆記Promise
- 好程式設計師web前端培訓分享JavaScript學習筆記cookie程式設計師Web前端JavaScript筆記Cookie
- 好程式設計師web前端培訓分享JavaScript學習筆記SASS程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享React學習筆記(三)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享React學習筆記(二)程式設計師Web前端React筆記
- 好程式設計師web前端分享菜鳥Vue學習筆記(二)程式設計師Web前端Vue筆記
- 好程式設計師大資料學習路線分享TCP和UDP學習筆記程式設計師大資料TCPUDP筆記
- shell程式設計學習筆記(一):編寫我的第一段程式碼程式設計筆記