English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

小弟有幾個小小的觀念問題,希望有經驗的大大能不吝指教嫩嫩的我


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

5 個解答

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

fedest.com, questions and answers