小弟有幾個小小的觀念問題,希望有經驗的大大能不吝指教嫩嫩的我
1. 我看結構化程式
有人說結構化程式設計的缺點
1.指令數量較非結構化程式設計多。
2.所佔用記憶體空間較多。
3.執行時間較長。
為啥呢?
是啥原因使它會耗資源又慢
2. 結構化設計和物件設計有啥抵觸嗎
也就是有啥方面不能並存嗎?
3. 如果可以並存
兩者可以互相輔助嗎
如果是
設計程式時要如何使兩者在各自方面相互發揮優點
互相補強
4. 如果說一個問題
我把解法拆成幾個步驟
每個布奏用副函式來解決
而主程式可能就是簡單明瞭的幾行呼叫副函式的動作
而這些副函式也有一定的獨立性與再用性
這算符合物件設計的精神嗎
還是這也算是結構化的設計
2006-07-12 02:19:43 · 5 個解答 · 發問者 志民 2 in 電腦與網際網路 ➔ 程式設計
基本上我會提第四問題是因為
我在一本書上看到作者它說
(我照書上的說的打)
===============================
有經驗的程式設計師甚至可以
使用不支援物件導向的語法的
程式語言來撰寫出非常物件導向的物件
例如組合語言(不要懷疑,筆者就曾經寫過)
====================================
書大概描述
松* 出版
綠色書皮
Visual c# .net******
就是他的最後ㄧ句!!
他說用組合語就能寫出"非常"物件導向的
2006-07-13 00:48:49 · update #1
真的嗎 ?_?
所謂的非常代表有幾分像??
我第四個所提出來的就是我所覺得用C
所能寫出最不錯感覺的解題方法
有如何的改進空間呢
如果有可能用組語寫的出來物件導向化的
那大概是會市長怎樣呢
小弟乃ㄧ個學程式兩年
卻還跟物件導向觀念極不熟的笨學生
2006-07-13 00:48:59 · update #2
基本上我觀念還很薄弱 希望有高人指點的說
2006-07-17 13:09:39 · update #3
1. 結構化程式設計的確有您所列出的缺點。
天下沒有白吃的午餐,要這,就得犧牲那。
簡單來說:為了結構化,必須加上一些命令。這就是原因。
但好的演算法造成的加速效果,遠大於結構化造成的減速效果。
花同樣的時間,若多研究/研讀/應用一些好的演算法,會比
花同樣的時間,去寫成沒結構化的加速效果好得多。
當然,若時間/金錢/能力三方面都許可,用好的演算法、再用非結構化造成加速效果,當然更好。
但,您用去了研讀/研發下一個好演算法/好程式的時間!
2. 物件設計能〝幫助〞結構化。所以,可以並存。
3. 兩者高度相關,但不相同。〝最好〞2者都包括,會比較好。
物件的好處是〝再用〞、保密、團隊設計、大程式較易寫。
但,沒有物件,不等於不能做這些。
結構的好處是,維護、團隊設計上的方便。
4. 這〝主要〞是結構化。物件〝至少/主要/……〞還要再包括包裝、繼承……等。
2006-07-12 11:50:28 補充:
感謝 John 的補充。我是站在不同的角度來看所以這麼寫。OO 的確是結構化的演申。但,我也可以用OO的語言,寫不結構化的程式!!用非OO的語言,很難(甚至可說不可能)寫出OO的程式。(但可寫結構化的程式沒問題。)所以,我才這麼寫的!
2006-07-12 16:19:00 補充:
Void,我覺得我們的意見沒啥不同耶!我是說〝很難(甚至可說不可能)〞,那要看定義囉!現在的〝正常人〞不會用 C 去寫 OO,那主要是訓練學生用的!而沒有一個組合/機器語言是 OO 的,卻都能寫出 OO 的 Compiler!第一個問世的 OO 語言,不管是用高階或低階,鐵定是用非OO的語言寫成 Compiler 的!所以,它確定是難,但怎麼定義〝可能不可能〞就因人而異了!。我要是真的認定他〝絕〞不可能,就不會寫成〝可說〞。不過,還是得說,我表達上不夠完整。謝謝你的討論,別人才有機會看到較完整的敘述。
2006-07-12 03:47:05 · answer #1 · answered by ? 7 · 0⤊ 0⤋
他喵喵的
生氣~不小心刪掉~想重寫結果不能
之前那個看過了~所以我不再打一次
這次換個說法
http://tw.myblog.yahoo.com/jw!YpB6i4SBBAKbWf7BIsintwzw6w--
來這裡看吧
有問題再提問吧~我時間很多
靭體工程師應該程度不一樣吧=.=~
真是令我羨慕的工作~
2006-07-20 00:13:24 補充:
JACOB~不知您的"正常人"定義範圍在哪
如果只是學校課業的話~大部份人都不會去在意oo是什麼東西~甚至會寫hello world就滿足
但oo正如void所講~oo正是一種風格
只要你撰寫時~對每筆資料的存取定義夠嚴謹,獨立的話~都是可以成為類oo的物件
而這些對"大部份"的設計師而言~只是個基本課題而己~只是為了撰寫時的效率而己
至於"正常人"=.=?
2006-07-18 10:14:42 · answer #2 · answered by ? 2 · 0⤊ 0⤋
同意 void, 但 OO 語言確實在撰寫 OO 程式時多了許多的方便
2006-07-14 03:48:45 · answer #3 · answered by 象象 3 · 0⤊ 0⤋
我比較贊同John講的,在很多早期單純用C語言寫的程式就已經包含了OO的特性跟架構.
封裝跟抽象化特性本來就非OO的程式語言所獨有的,那是看寫作者的寫作風格而定.
也許有人會認為繼承跟多型是非OO語言所沒有的特性,但是有些早期的程式利用void指標跟function指標,也是能達到類似的效果.而現今有些書籍還建議不要太過濫用繼承,能夠不用繼承就不要繼承,除非有virutal function使用上的必要.
2006-07-12 13:59:22 補充:
而在十年前左右,有些資訊相關科系的學生會寫過一個作業,是利用macro等C語言本來就有的語法來模擬C++,可以達到幾乎完全一樣.
因此我個人認為OO只是一種寫作風格,而不用OO的語言也是寫的出OO的程式.
2006-07-13 11:54:30 補充:
我覺得我們的意見大部份相同,但還是比較建議了解一下OO的基本精神,不是不會用C去寫OO,而是有些人會用C寫OO還以為只是某種自創的結構化方法,而更多的人是當用C來寫程式就放棄了OO的基本精神,最基本的抽象化和資料封裝都不去做,造成程式一團亂才怪C語言不是OO語言,享受著最大的自由而不自我設限才是程式混亂的主因.OO的程式語言只是用"半強迫"的手段逼迫我們對OO基本精神就範,而非OO的語言並沒有這種手段,自由度更高,但要寫的很有OO的風格一點都不難.
可以去參考一本古老的書"世紀末軟體革命",裡面有對OO Base跟OO Language作明確的定義,並且加以區分.
2006-07-12 09:58:55 · answer #4 · answered by ? 2 · 0⤊ 0⤋
2&3
我認為物件導向應是結構化設計的延伸才是。
4.內容描述看起來僅是結構化特性,離物件導向還有一段距離。
2006-07-14 22:19:39 補充:
回答7/13關於書上所寫的問題:
回歸基本面,
組合語言是極接近機械碼的一種程式語言.
而用物件導向程式語言編譯後的結果,
也是變成機械碼.
所以,用什麼來寫都可以,
重要的是呈現出來的效果,
那跟語言一點關係都沒有,是抽象的,
是為了"編寫程式更容易"而產生的.
我的工作是韌體(micro controller),
無法使用太高階的語言,只有用C/組語.
在實做中,
則盡可能模擬物件化的概念,
以完成較高階的應用.(化繁為簡)
謝謝大家熱烈的討論,
我也受益良多,吸收很多不同的看法.
2006-07-12 04:48:38 · answer #5 · answered by John 6 · 0⤊ 0⤋