來介紹物件導向觀念,以Java程式語言為基礎來介紹,大部分是以觀念為主,
只要想成任何東西都是一個物件,物件就會有它的外觀跟功能去使用,
例如電視,電視的外觀、品牌、大小、顯示器等等,有不同的屬性去呈現這個物件,
而電視的功能就是撥放影片等等,讓使用者去使用。以下介紹OOP觀念。
物件導向程式設計(Object-oriented programming, OOP):
(一)OOP係以結構化程式設計為基礎,並對它加以改進。它使用封裝(encapsulation)的概念將資料與程式碼作為一個模組。構成的一個模組稱為物件、類別。
以類別為基礎,透過分門別類的觀念,也就是說OOP裡是使用繼承方式來更進一步地將上層類別的資料與程式碼交由下面類別來分享。
以類別為基礎的物件導向程式設計的思維涉及三大原則:
封裝(encapsulation)、繼承(inherit)與多型(polymorphism)。(後續會說明)
※維基百科:
物件導向程式設計(Object-oriented programming,OOP)是種具有物件概念的程式,也是一種程式開發的方法。它包含資料、屬性、程式碼與方法。物件則指的是類別的實體概念。
OOP將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性、靈活性和擴充功能性。物件導向程式設計具有靈活性和可維護性,且在大型專案設計中廣為應用。它能夠讓人們更簡單地設計並維護程式,使得程式更加便於分析、設計、理解。
當提到物件導向的時,不僅是一種程式設計方法。它更是一種程式開發方式。重要的物件導向程式語言包含
Common Lisp、Python、C++、ObjectiveC、Smalltalk、Delphi、Java、Swift、C#、Perl、Ruby 與 PHP.
(二)封裝(encapsulation):何謂封裝?顧名思義就是把東西包裝起來;
將相關的資料與處理用的程序包裝在一起即所謂的封裝,有時也稱資訊隱藏(information hiding)。封裝的意義即在為設計專屬於某特定類別/物件的資料與處理程序(方法)。
封裝的作用像是為特定的物件/類別啟動一道防火牆,除非經過允許,否則專屬該物件的資料與方法是不能被其他物件/類別所存取的。
好處有:
1.簡化程式設計,可取用已設計完成的物件/類別而非重新設計,簡化了程式設計。
2.容易修改與擴充的彈性。重新設計類別內部程式,對於產生此類別的物件類別不會受影響。
(三)繼承(inherit):繼承,就字面上的觀念來看,就像孩子繼承了爸爸媽媽的基因,所以很像爸爸媽媽,但又有自己的特色。
利用繼承觀念來實作程式世界裡的層類別層級,讓下層的物件/類別能夠將其上層的物件/類別的某些資料或方法沿用過來,可簡化程式的設計,也能讓已設計好的物件/類別能再利用。
物件導向思維的繼承精神在於分門別類與再利用,也就是即使上下層類別間並不具備父子關係時,仍可以用繼承的觀念。如,「書」不是「紙」,但是書一旦繼承自「紙」後,將擁有紙所具有的屬性與方法,也就適用紙的屬性與方法,書與紙不構成父子類別,此行為卻因再利用能使程式設計得以簡化。
(四)多型(Polymorphism):能讓同一種操作方法會因為對象不同而有不同的處理方式,例如”跑”,用於人類、狗,程式都會有不同的處理方式。
透過多型的機制,程式設計師得以在不修改、破壞現存程式碼的情況下也能擴充與加強現有系統的功能。
Java物件導向程式語言2個精神與3個特徵如下:
精神:
- 抽象化(abstraction):物件抽象化幫助我們了解並實際掌握物件內容。
- 繼承(inheritance):抽象化是指物件被良好的定義及描述,繼承則是賦予程式能重複使用物件以增加其延展性。
特徵:
- 繼承(inheritance)
- 封裝(encapsulation)
- 多型(polymorphism)
2016/10/04 碰騰
留言
張貼留言