1. 什麼是物件導向- 國立中山大學程式諮詢網 - Google Sites

文章推薦指數: 80 %
投票人數:10人

物件導向程式設計在某種程度上透過強調可重複性解決了這一問題,物件導向程式設計可以被視作一種在程式中包含各種獨立而又互相呼叫的單位和物件的思想,這與傳統的思想 ... 國立中山大學程式諮詢網搜尋這個協作平台 首頁1.JavaSE基礎篇1.安裝JAVA環境2.初學者必學觀念3.第一支程式:HelloWorld4.基本輸入輸出5.變數6.基本運算7.條件式8.迴圈9.陣列練習2.JavaSE進階篇GUI篇1.Java的AWT與Swing2.如何建立視窗3.如何加入其他物件4.如何建立事件IDE使用篇BlueJEclipseNetBean執行緒應用1.什麼是執行緒多執行緒_矩陣相乘應用篇1.什麼是序列化檔案I/O篇1.如何讀XML檔2.如何讀寫文字檔物件導向1.什麼是物件導向2.什麼是繼承3.什麼是封裝4.什麼是介面5.什麼是多型6.什麼是Override7.什麼是Overload網路篇1.什麼是Socket2.如何建立Server3.如何建立Client繪圖篇1.Java繪圖方法2.繪圖字型3.繪製顏色4.繪製字串資料庫篇0.連接資料庫1.如何與資料庫連線2.如何查尋資料3.如何新增資料4.如何修改資料5.如何刪除資料3.JavaEE基礎篇1.Web基本概念1.何謂容器2.JavaEE簡介3.環境配置4.Jsp/Servlet初探1.Jsp與Servlet關係2.Servlet初探3.Jsp初探5.Jsp基本語法1.建立JSP網頁2.JSP五種建構元素3.DirectivesElement概述3.1page指令3.2include指令3.3taglib指令6.隱含物件與Session1.隱含物件簡介2.out物件3.application物件4.session的概念5.session物件6.request物件7.其它內建物件7.使用標籤1.標準標籤8.使用EL1.簡介EL9.使用JavaBean元件1.簡介JavaBean簡單購物程式4.JavaEE進階篇(1)MVC模式概述為何需要遵循MVC架構?(2)Struts概觀(3)Struts的工作流程(4)Struts-Spring-Hibernate概述(4.1)展示層(4.2)持久層(4.3)商業層(4.4)領域模組層(5)Struts技術(5.1)建立Controller組件a.web.xml中ActionServerlet配置b.struts-config.xml配置ResponseProcesser類(5.2)建立Model組件a.ActionFormBean類別b.Action類別(5.3)建立View組件a.表單和FormBean的互動b.國際化語言頁面c.Struts常用標籤庫(6)Spring技術xml檔的配置web.xml配置(7)Hibernate技術基礎入門映射文件簡單範例第一個hibernate程式第二個Hibernate程式準備工作Hibernate所需類別庫物件/關係對應(Object/RelationalMapping)實體映射資料更新、刪除資料查詢HQL-基本查詢進階查詢5.Android基礎篇1.初探Android2.準備開發環境1.安裝AndroidSDK2.安裝AndroidADTplugin3.管理SDK4.Android專案結構與佈署1.開啟、刪除、滙入專案2.專案結構3.操作Android虛擬機器5.建立應用程式1.使用者介面概述2.設計使用者介面3.存取識別符號4.程式流程說明6.重構程式7.Android資源使用1.字串使用2.顏色使用3.圖片使用4.樣式使用5.動畫使用8.加入對話框9.加入選單Q&AAndroid如何動態產生按鈕CallbyvalueorreferenceJDBCNetBean如何透過命令提示字元執行編譯過的程式暑期課程教材矩陣相乘使用thread--C上傳檔案關於我們本學期(105上學期)技術課程助教諮詢時間、名單與專長歷屆技術課程助教名單 2.JavaSE進階篇‎>‎物件導向‎>‎ 1.什麼是物件導向 1概述[1]      物件導向程式設計在某種程度上透過強調可重複性解決了這一問題,物件導向程式設計可以被視作一種在程式中包含各種獨立而又互相呼叫的單位和物件的思想,這與傳統的思想剛好相反:傳統的程式設計主張將程式看作一系列函式的集合,或者直接就是一系列對電腦下達的指令。

物件導向程式設計中的每一個物件都應該能夠接受資料、處理資料並將資料傳達給其它物件,因此它們都可以被看作一個小型的「機器」,或者說是負有責任的角色。

2基本理論類別      類別可當作蓋房子的藍圖(blueprint),當你畫出來,就以依照這個藍圖去蓋出許多個你要的房子,而且每個都是與類別一模一樣的樣式。

      在寫程式中,類別稱Class,每個Class中可包含成員或屬性(Field)與方法(Method),此外,通常每個class都會有建構子,什麼是建構子?建構子是程式被執行的時候,第一個去執行的方法,常用來設定程式的初始狀態。

解說:      在中山大學中,我們一個系統,這系統需要學生個人資料,我們可以把學生當成一個類別,把學生的特性給抽象化出來(本文後章會講解抽象化),學生應該具備有學號(ID),姓名(name),年紀(age),並給一個建構子,用來設定每個學生的個人資料。

程式碼:publicclassStudent{    StringID;    Stringname;    int age;   //以下為建構子    publicStudent(StringiD, Stringname,intage){        ID=iD;        this.name=name;        this.age=age;    }}方法       方法是存在於類別中的,可以用來表示該類別的一個行為,如:動物會叫,人會走路,魚會游泳……等等,這些生物所表示出來的一個動作可當方法,也可以說,你希望這個類別所表現出來的一個動作。

解說:      將下列程式碼加入上述的類別中,學生這個類別擁有getInformation(),當你呼叫這個方法時,它會回傳學生個人資料,就像有人問你說:「請問您個人資料?」,而你會回答,回答這個動作,它就可當成一個方法,對問的人來說,就像是得到資訊(getInformation()這個方法)一樣。

程式碼:   publicString getInformation(){    return"學號ID"+"  姓名:"+name+" 年紀:"+age;        }物件      有了上述的類別,我們可以依照類別,產生出許多學生資料,每一個學生在這裡都稱為物件,每一個物件都是獨立的個體,互不影響彼此之間的。

物件解說:      有了上述的Student類別檔,可透過new這個關鍵字來產生物件程式碼:Students;//宣告變數s的型態是一個Students=newStudent("M994020023","陳裕翔",22);//設定學生資料,並指定給s System.out.println(s.getInformation());//印出資訊訊息傳遞機制[2]      ProcedureLanguage以函數作為寫作和執行的主體。

函數由一群程式碼所組成,函數的開頭地址在Compiletime或Linktime就已經決定好了,而在Runtime呼叫函數時給予適當的參數。

函數和記憶體之間沒有關聯性,而且函數A可以被任何其他函數呼叫,程式語言並沒有特別的規範。

Object-OrientedLanguage以Class作為寫作的主體,執行時主要由Object來紀錄程式狀態。

由於物件導向程式語言將ObjectVariable和ObjectMethod一起定義在Class內,再透過Encapsulation的機制規範存取ObjectMember的範圍,因此Object的Variable和Method就組成了一個完整的個體。

雖然ObjectMethod寫起來就像Function,但執行Method內程式碼的機制和Function不同:ObjectMethod定義物件接受到訊息時的反應,也就是說執行Method時有一個隱形的參數,意即這個物件(this)Function的實際地址在Compile或Linktime就已經決定好了,但對OO來說,Object必須在Runtime接受到訊息後,才能決定實際要執行的Method。

封裝性      封裝即所謂資訊隱藏(InformationHiding),主要是將物件的內外部份分開來,其他物件只能藉由外部的界面取得其提供的資料,物件內部的細節資料則隱藏起來,其他物件即無法瞭解此物件的內部細節,若不經過允許之窗口(即此物件提供之方法)便無從更動此物件內之資料。

 繼承性      又稱為一般化(Generalization)與特殊化(Specialization)的關係,A繼承B乃指物件類別A是物件類別B的一種,因此物件類別A可以繼承物件類別B的屬性與方法。

兩個以上類別一般化後之類別稱為超類別(Superclass)。

多型性      所謂多型是指類別內同名的「方法」,因在不同的類別中定義,執行時會有不同結果的功能。

 好文推薦思考OO,蔡學鏞,http://jerrylovesrebol.blogspot.com/2007/12/oo.html抽象性      抽象化可以視為一項事物的簡單化到什麼樣的一個程度,比如把中山學抽象化,你可以有很多種表達。

1.中山大學=>一所學校2.中山大學=>有文、理、工、管、海、社六大院3.中山大學=>將上述六個院在細分到各系------------------------------------------------------1.電腦=>主機一台2.電腦=>CPU+HD+RAM+主機板3.電腦=>CPU的五大單元+HD(碟片+讀寫臂...)+RAM(正反器...)+主機板(各式晶片)------------------------------------------------------由上述可知,看你要做的細膩度來決定你抽象化的大小此外,抽象化可以將多種事物的共同特徵取出來,做為父類別,可達到重覆使用,修改時只要修改父類別,子類別也就跟著改,不需要全部重新編譯,節省開發成本。

補充:1.讓抽象化程度愈高,愈有機會讓相依性變低建立抽象化層級是抵抗改變的一大支柱 在相依圖上兩類別間若存在路徑,那麼當它們之間的距離便可被視為是二者之間的相依間接層級當二者之間的間接層級愈高時,當某一類別發生變動,此變動的影響傳遞至另一個類別的機會就會愈低 針對抽象的介面來撰寫程式,相較於針對實作細目來撰寫程式,被改變所影響的機會就小多了 詳文請見:http://download.microsoft.com/download/1/1/3/11338303-8d34-447d-9151-cfa69ae79683/1.talk_code.ppt2. 當你在分析你身旁某個東西的特性或外觀時,就已經在作抽象化的動作了。

當然了一般都要舉例才會比較容易明白,例如說,今天你要寫一支"電視類別",必須要有一些功能,像是可以開關電視機、調大小聲、切換頻道等等,當你知道這樣功能而想把這些功能程式化到你的類別裡時,這個動作就是抽象化了。

詳文請見:http://www.dotblogs.com.tw/momo/archive/2008/09/25/5481.aspx參考文獻[1]wiki:http://zh.wikipedia.org/zh-tw/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1#.E5.9F.BA.E6.9C.AC.E7.90.86.E8.AE.BA[2]訊息傳遞(MessagePassing)和函數呼叫(FunctionCall)的不同點,http://programming.im.ncnu.edu.tw/J_Chapter5.htm[3]軟體工程:物件導向程式設計與UML系統分析實作,陳湘揚等/著,2004年09月16日 Comments Signin|RecentSiteActivity|ReportAbuse|PrintPage|PoweredByGoogleSites



請為這篇文章評分?