SlideShare a Scribd company logo
1 of 32
Download to read offline
Object Oriented
Programming
20150111
Yeti
軟體開發是⾨門藝術
軟體開發是⾨門藝術
簡
單
http://static2.ithome.com.tw/uploads/image-upload/53188aecc6cb4.jpg
• ⼤大家都會說話、看書(⾃自然語⾔言)
• 國⼩小⽣生會寫網⾴頁、Flash(程式語⾔言)
• 國中⽣生會寫外掛(Script語⾔言)
• 全世界都講中國話
WARNING
問題
WARNING
軟體開發的問題
• 重⽤用性
• 維護性
• 品質
• 擴充性
OOP
• OOP(Object Oriented Programming)
• ⾯面向对象程序设计
• 物件導向程式設計
• 始祖:Simula —> Smalltalk(發揚光⼤大)
特性
• 封裝(Encapsulation)
• 繼承(Inheritance)
• 多型(Polymorphism)
startup()
shutdown()
getOS()
setOS()
- cpu
- ram
- disk
- os
Laptop
InstallWindows()
WindowsInstallable
getOS()
setOS()
recovery()
Mac
getOS()
setOS()
fastBoot()
openOpticalDrive()
closeOpticalDrive()
- opticalDrive
ASUS
InstallOSX()
OSXInstallable
Encapsulation
• 隱藏某個步驟,透過定義的⽅方式進⾏行存取
startup()
shutdown()
getOS()
setOS()
- cpu
- ram
- disk
- os
Laptop
startup()
shutdown()
getOS()
setOS()
- os
getOS()
setOS()
recovery()
Mac
getOS()
setOS()
fastBoot()
openOpticalDrive()
closeOpticalDrive()
- opticalDrive
ASUS
Inheritance
• 擴充既有物件
startup()
shutdown()
getOS()
setOS()
- cpu
- ram
- disk
- os
Laptop
InstallWindows()
WindowsInstallable
getOS()
setOS()
recovery()
Mac
getOS()
setOS()
fastBoot()
openOpticalDrive()
closeOpticalDrive()
- opticalDrive
ASUS
InstallOSX()
OSXInstallable
Polymorphism
• 根據不同類型做相對應的動作
startup()
shutdown()
getOS()
setOS()
- cpu
- ram
- disk
- os
Laptop
getOS()
setOS()
recovery()
Mac
getOS()
setOS()
fastBoot()
openOpticalDrive()
closeOpticalDrive()
- opticalDrive
ASUS
⼩小蛋糕
• 吉娃娃是狗,⽐比特是狗
• 吉娃娃體型⼩小、⽐比特體型⼤大
• 吉娃娃神經質、⽐比特兇猛
• 吉娃娃跟⽐比特都會跑
• Rick是⼈人,⼈人跟狗同屬動物
• ⼈人會跑
• 狗有四隻腳,⼈人有兩隻腳
()
( ()
()
1
2
3
4
)
( () ( ()
1
2
• 繼承很好⽤用,看起來很強⼤大
• C++⽀支援多重繼承
• Java不⽀支援多重繼承,以Interface替代
• 繼承很好⽤用,看起來很強⼤大
• C++⽀支援多重繼承
• Java不⽀支援多重繼承,以Interface替代
Why?
()
( ()
()
1
2
3
4
)
( () ( ()
1
2
x()
()
( ()
()
1
2
3
4
( () ( ()
1
2
)
介⾯面
• 定義於不同物件中、具相同特性的功能
startup()
shutdown()
getOS()
setOS()
- cpu
- ram
- disk
- os
Laptop
InstallWindows()
WindowsInstallable
getOS()
setOS()
recovery()
Mac
getOS()
setOS()
fastBoot()
openOpticalDrive()
closeOpticalDrive()
- opticalDrive
ASUS
InstallOSX()
OSXInstallable
()
( ()
()
1
2
3
4
( () ( ()
1
2
)
Class & Object?
Class & Object?
• Class 是定義
• Object 是根據Class定義⽽而產⽣生出來的實體
modifier
• public
• protected
• Visibility: C++(Inherit), Java(Inherit||Package)
• private
• static
• like global. share in same Class. (EX:Definition)
Design Pattern?
Next time…(maybe)

More Related Content

Viewers also liked

Object oriented programming by Waqas
Object oriented programming by WaqasObject oriented programming by Waqas
Object oriented programming by WaqasWaqas !!!!
 
Parameterized Constructor
Parameterized ConstructorParameterized Constructor
Parameterized ConstructorMukesh Pathak
 
SystemVerilog OOP Ovm Features Summary
SystemVerilog OOP Ovm Features SummarySystemVerilog OOP Ovm Features Summary
SystemVerilog OOP Ovm Features SummaryAmal Khailtash
 
Post-graduate course: Object technology: Prototype-based object-oriented prog...
Post-graduate course: Object technology: Prototype-based object-oriented prog...Post-graduate course: Object technology: Prototype-based object-oriented prog...
Post-graduate course: Object technology: Prototype-based object-oriented prog...Baltasar García Perez-Schofield
 
OOP programming
OOP programmingOOP programming
OOP programminganhdbh
 
Object Orinted Programing(OOP) concepts \
Object Orinted Programing(OOP) concepts \Object Orinted Programing(OOP) concepts \
Object Orinted Programing(OOP) concepts \Pritom Chaki
 
Object oriented programming (oop) cs304 power point slides lecture 01
Object oriented programming (oop)   cs304 power point slides lecture 01Object oriented programming (oop)   cs304 power point slides lecture 01
Object oriented programming (oop) cs304 power point slides lecture 01Adil Kakakhel
 
LinkedIn SlideShare: Knowledge, Well-Presented
LinkedIn SlideShare: Knowledge, Well-PresentedLinkedIn SlideShare: Knowledge, Well-Presented
LinkedIn SlideShare: Knowledge, Well-PresentedSlideShare
 

Viewers also liked (15)

Object oriented programming by Waqas
Object oriented programming by WaqasObject oriented programming by Waqas
Object oriented programming by Waqas
 
General oops concepts
General oops conceptsGeneral oops concepts
General oops concepts
 
Parameterized Constructor
Parameterized ConstructorParameterized Constructor
Parameterized Constructor
 
Oops
OopsOops
Oops
 
03. oop concepts
03. oop concepts03. oop concepts
03. oop concepts
 
SystemVerilog OOP Ovm Features Summary
SystemVerilog OOP Ovm Features SummarySystemVerilog OOP Ovm Features Summary
SystemVerilog OOP Ovm Features Summary
 
Oop concepts
Oop conceptsOop concepts
Oop concepts
 
Post-graduate course: Object technology: Prototype-based object-oriented prog...
Post-graduate course: Object technology: Prototype-based object-oriented prog...Post-graduate course: Object technology: Prototype-based object-oriented prog...
Post-graduate course: Object technology: Prototype-based object-oriented prog...
 
OOP programming
OOP programmingOOP programming
OOP programming
 
Oops concept on c#
Oops concept on c#Oops concept on c#
Oops concept on c#
 
General OOP concept [by-Digvijay]
General OOP concept [by-Digvijay]General OOP concept [by-Digvijay]
General OOP concept [by-Digvijay]
 
Object Orinted Programing(OOP) concepts \
Object Orinted Programing(OOP) concepts \Object Orinted Programing(OOP) concepts \
Object Orinted Programing(OOP) concepts \
 
Object oriented programming (oop) cs304 power point slides lecture 01
Object oriented programming (oop)   cs304 power point slides lecture 01Object oriented programming (oop)   cs304 power point slides lecture 01
Object oriented programming (oop) cs304 power point slides lecture 01
 
Constructor ppt
Constructor pptConstructor ppt
Constructor ppt
 
LinkedIn SlideShare: Knowledge, Well-Presented
LinkedIn SlideShare: Knowledge, Well-PresentedLinkedIn SlideShare: Knowledge, Well-Presented
LinkedIn SlideShare: Knowledge, Well-Presented
 

Similar to OOP Basic

Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作kewuc
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网yang alex
 
前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScript前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScriptGelis Wu
 
TQC+ Java 認證研習
TQC+ Java 認證研習TQC+ Java 認證研習
TQC+ Java 認證研習Kyle Lin
 
Build desktop app_by_xulrunner
Build desktop app_by_xulrunnerBuild desktop app_by_xulrunner
Build desktop app_by_xulrunnerRack Lin
 
你所不知道的 DDD - 文件驅動開發
你所不知道的 DDD - 文件驅動開發你所不知道的 DDD - 文件驅動開發
你所不知道的 DDD - 文件驅動開發志龍 陳
 
从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1天青 王
 
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文MAKERPRO.cc
 
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計Amigo 陳兆祥
 
HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程Souyi Yang
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby建興 王
 
文學通的開發心路歷程
文學通的開發心路歷程文學通的開發心路歷程
文學通的開發心路歷程建銘 廖
 
高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程Souyi Yang
 
開放原始碼 Ch2.3 app - oss - ui framewoks (ver 1.0)
開放原始碼 Ch2.3   app - oss - ui framewoks (ver 1.0)開放原始碼 Ch2.3   app - oss - ui framewoks (ver 1.0)
開放原始碼 Ch2.3 app - oss - ui framewoks (ver 1.0)My own sweet home!
 
3.android 应用程序通用自动脱壳方法研究
3.android 应用程序通用自动脱壳方法研究3.android 应用程序通用自动脱壳方法研究
3.android 应用程序通用自动脱壳方法研究Hsiao Tim
 
Athrun instrument driver
Athrun instrument driverAthrun instrument driver
Athrun instrument driverdrewz lin
 
Appcan平台介绍
Appcan平台介绍Appcan平台介绍
Appcan平台介绍36Kr.com
 

Similar to OOP Basic (20)

Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作Geo science cafe 如何找到一份满意的工作
Geo science cafe 如何找到一份满意的工作
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
 
前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScript前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScript
 
TQC+ Java 認證研習
TQC+ Java 認證研習TQC+ Java 認證研習
TQC+ Java 認證研習
 
Android工作坊
Android工作坊Android工作坊
Android工作坊
 
Build desktop app_by_xulrunner
Build desktop app_by_xulrunnerBuild desktop app_by_xulrunner
Build desktop app_by_xulrunner
 
你所不知道的 DDD - 文件驅動開發
你所不知道的 DDD - 文件驅動開發你所不知道的 DDD - 文件驅動開發
你所不知道的 DDD - 文件驅動開發
 
从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1
 
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
 
Chrome dev tool
Chrome dev toolChrome dev tool
Chrome dev tool
 
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
 
HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby
 
文學通的開發心路歷程
文學通的開發心路歷程文學通的開發心路歷程
文學通的開發心路歷程
 
高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程
 
開放原始碼 Ch2.3 app - oss - ui framewoks (ver 1.0)
開放原始碼 Ch2.3   app - oss - ui framewoks (ver 1.0)開放原始碼 Ch2.3   app - oss - ui framewoks (ver 1.0)
開放原始碼 Ch2.3 app - oss - ui framewoks (ver 1.0)
 
3.android 应用程序通用自动脱壳方法研究
3.android 应用程序通用自动脱壳方法研究3.android 应用程序通用自动脱壳方法研究
3.android 应用程序通用自动脱壳方法研究
 
Processing 基礎教學
Processing 基礎教學Processing 基礎教學
Processing 基礎教學
 
Athrun instrument driver
Athrun instrument driverAthrun instrument driver
Athrun instrument driver
 
Appcan平台介绍
Appcan平台介绍Appcan平台介绍
Appcan平台介绍
 

OOP Basic