国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

面向對象的思維方法

2019-11-18 11:13:04
字體:
來源:轉載
供稿:網友

  我是從學習java編程開始接觸OOP(面向對象編程),剛開始使用Java編寫程序的時候感覺很別扭,因為我早以習慣用C來編寫程序,很欣賞C的簡潔性和高效性,喜歡C簡練而表達能力豐富的風格,非凡忍受不了Java運行起來慢吞吞的速度,相對冗長的代碼,而且一個很簡單的事情,要寫好多類,一個類調用一個類,心里的抵觸情緒很強。

  我對Java的面向對象的特性琢磨良久,自認為有所領悟,也開始有意識的運用OOP風格來寫程序,然而還是經常會覺得不知道應該怎樣提煉類,面對一個具體的問題的時候,會覺得腦子里千頭萬緒的,不知道怎么下手,一不小心,又會回到原來的思路上去。

  舉個例子,要發(fā)廣告郵件,廣告郵件列表存在數(shù)據(jù)庫里面。倘若用C來寫的話,一般會這樣思考,先把郵件內容讀入,然后連接數(shù)據(jù)庫,循環(huán)取郵件地址,調用本機的qmail的sendmail命令發(fā)送。

  然后考慮用Java來實現(xiàn),既然是OOP,就不能什么代碼都塞到main過程里面,于是就設計了三個類:

  一個類是負責讀取數(shù)據(jù)庫,取郵件地址,調用qmail的sendmail命令發(fā)送;

  一個類是讀郵件內容,MIME編碼成Html格式的,再加上郵件頭;

  一個主類負責從命令讀參數(shù),處理命令行參數(shù),調用發(fā)email的類。

  把一件工作按照功能劃分為3個模塊分別處理,每個類完成一件模塊任務。

  仔細的分析一下,就會發(fā)現(xiàn)這樣的設計完全是從程序員實現(xiàn)程序功能的角度來設計的,或者說,設計類的時候,是自低向上的,從機器的角度到現(xiàn)實世界的角度來分析問題的。因此在設計的時候,就已經把程序編程實現(xiàn)的細節(jié)都考慮進去了,企圖從底層實現(xiàn)程序這樣的出發(fā)點來達到滿足現(xiàn)實世界的軟件需求的目標。

  這樣的分析方法其實是不適用于Java這樣面向對象的編程語言,因為,假如改用C語言,封裝兩個C函數(shù),都會比Java實現(xiàn)起來輕松的多,邏輯上也清楚的多。

  我覺得面向對象的精髓在于考慮問題的思路是從現(xiàn)實世界的人類思維習慣出發(fā)的,只要領會了這一點,就領會了面向對象的思維方法。

  舉一個非常簡單的例子:假使現(xiàn)在需要寫一個網頁計數(shù)器,客戶訪問一次頁面,網頁計數(shù)器加1,計數(shù)器是這樣來訪問的

http://hostname/count.cgi?id=xxx

  后臺有一個數(shù)據(jù)庫表,保存每個id(一個id對應一個被統(tǒng)計訪問次數(shù)的頁面)的計數(shù)器當前值,請求頁面一次,對應id的計數(shù)器的字段加1(這里我們忽略并發(fā)更新數(shù)據(jù)庫表,出現(xiàn)的表鎖定的問題)。

  假如按照一般從程序實現(xiàn)的角度來分析,我們會這樣考慮:首先是從HTTP GET請求取到id,然后按照id查數(shù)據(jù)庫表,獲得某id對應的訪問計數(shù)值,然后加1,更新數(shù)據(jù)庫,最后向頁面顯示訪問計數(shù)。
QQ病毒 騰訊QQ空間代碼專題 PPT教程專題 ADSL應用面面俱到 fireworks教程專題 計算機和網絡技術基礎知識 校園網專題 網吧技術專題


  現(xiàn)在假設一個沒有程序設計經驗的人,他會怎樣來思考這個問題的呢?他會提出什么樣的需求呢?他很可能會這樣想:

  我需要有一個計數(shù)器,這個計數(shù)器應該有這樣的功能,刷新一次頁面,訪問量就會加1,另外最好還有一個計數(shù)器清0的功能,當然計數(shù)器假如有一個可以設為任意值的功能的話,我就可以作弊了。

  做為一個沒有程序設計經驗的人來說,他完全不會想到對數(shù)據(jù)庫應該如何操作,對于HTTP變量該如何傳遞,他考慮問題的角度就是我有什么需求,我的業(yè)務邏輯是什么,軟件應該有什么功能。

  按照這樣的思路(請注重,他的思路其實就是我們平時在生活中習慣的思維方式),我們知道需要有一個計數(shù)器類 Counter,有一個必須的和兩個可選的方法:

getCount() // 取計數(shù)器值方法
resetCounter() // 計數(shù)器清0方法
setCount() // 設計數(shù)器為相應的值方法
  把Counter類完整的定義如下:



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 景宁| 莲花县| 德钦县| 疏附县| 凌海市| 平和县| 马公市| 广水市| 登封市| 永善县| 化德县| 巫溪县| 砚山县| 屯门区| 布拖县| 多伦县| 昌黎县| 甘德县| 延津县| 榆林市| 伊金霍洛旗| 读书| 扬中市| 奉化市| 丹寨县| 承德市| 莲花县| 安庆市| 郴州市| 自治县| 辉南县| 微山县| 滕州市| 胶州市| 山阴县| 武胜县| 台北市| 兰考县| 即墨市| 余姚市| 房产|