Object Oriented Programming - Java備忘筆記 - GitBook

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

物件導向程式設計Object Oriented Programming (OOP) · 抽象化? Abstraction? · 好處? Benefits? JJJava備忘筆記Search…JJJava備忘筆記IntroductionJava特性如何開始編譯並執行console編譯並執行Eclipse作者介紹BasicObject-OrientedBasicJavaProgrammingObjectOrientedProgramming封裝繼承多型抽象介面PoweredByGitBookObjectOrientedProgramming介紹物件導向程式設計的核心概念,及三大支柱。

歷史:物件導向程式設計的雛形,早在1960年的Simula語言中即可發現,當時的程式設計領域正面臨著一種危機:在軟硬體環境逐漸複雜的情況下,軟體如何得到良好的維護?物件導向程式設計在某種程度上通過強調可重複性解決了這一問題。

20世紀70年代的Smalltalk語言在物件導向方面堪稱經典——以至於30年後的今天依然將這一語言視為物件導向語言的基礎。

(copyfromWiki)從高階語言的設計發展來看,大概可分為四個部分:1.非結構化程式設計(UnstructuredProgramming)非結構化程式設計把所有的敘述寫在主程式(main)中去執行,資料都設為全域(global),可想而知規模稍為大一點的程式會讓程式碼變得很凌亂,而且不易維護,同樣的動作就複製同樣的程式碼去達成目標。

2.結構化程式設計(StructuredProgramming)結構化程式設計引入了函數(function)及回傳(return)的概念,把一些程式碼敘述包成函式讓主程式呼叫使用。

一樣的動作就呼叫一樣的函數。

3.模組化程式設計(ModularProgramming)隨著程式的規模越來越大,結構化程式設計會有越來越多的函數,產了管理不易的問題。

模組化的概念就是把功能相似的函數包成一個模組,主程式跟各模組要求資料、函數來達成所需要的功能。

4.物件導向程式設計(Object-OrientedProgramming)同樣的,更多的模組只會讓程式變得更複雜。

而且資料在模組中是全域的,無法完整的描述現實世界的情況。

物件導向程式設計以『資料』為主體構成物件,物件有其『方法』可以與別的物件進行運作。

物件導向程式設計ObjectOrientedProgramming(OOP)把真實世界的事物抽象化為物件。

抽象化?Abstraction?舉個例子,試著描述何謂電腦,底下是五個人的回答:A:一種計算設備。

B:由滑鼠、鍵盤、螢幕、主機構成的裝置。

C:可以提供服務、解決問題的物品。

D:一種可以讓你熬夜爆肝的惡魔玩具。

E:可以快速執行指令的東西(?。

不管你的答案是什麼,你在腦海裡試著描述的這個動作就叫『抽象化(Abstraction)』。

一般來說抽象化的越詳細,越能表述你想要描述的物體,但實務上還是要依現實需求去思考抽象化的程度。

好處?Benefits?1.程式的可重複利用性(Reusability)程式設計師可以重複的使用母類別(superclass)的程式。

2.軟體原型(SoftwarePrototyping)類別的發展可以視為一顆軟體IC,使系統的開發更簡單且有效率。

三大支柱:1.封裝(Encapsulation)2.繼承(Inheritance)3.多型(Polymorphism)接下來章節會討論OOP三大支柱。

要知道的是,物件導向只是一種『設計概念(designconcept)』,而不是一種程式語法,只是Java是純物件導向,所以要學Java一定要弄清楚物件導向。

設計類別要從『資料(data)』的觀點出發,而不是從方法的觀點。

以資料為主體產生類別,再去設計其方法(method)。

設計重點要在於物件之間的互動(interactionamongobjects),而非流程控制(controlflow)。

Previous標準輸入ScannerNext封裝Lastmodified1yragoCopylinkOutline歷史:從高階語言的設計發展來看,大概可分為四個部分:1.非結構化程式設計(UnstructuredProgramming)2.結構化程式設計(StructuredProgramming)3.模組化程式設計(ModularProgramming)4.物件導向程式設計(Object-OrientedProgramming)物件導向程式設計ObjectOrientedProgramming(OOP)抽象化?Abstraction?好處?Benefits?三大支柱:



請為這篇文章評分?