面向對象編程:類和對象的概念
[說明:本文是給剛剛接觸編程的初學者看的,大佬們看起來 可能覺得很簡單,勿怪]
類(Class)
面向對象思想來源於對現實世界的認知。現實世界缤紛復雜、種類繁多,難於認識和理 解。但是聰明的人們學會了把這些錯綜復雜的事物進行分類,從而使世界變得井井有條。比如我們由各式 各樣的汽車抽象出汽車的概念,由形形色色的貓抽象出貓的概念,由五彩斑斓的鮮花抽象出花的概念等。 汽車、貓、鮮花都代表著一類事物。每一類事物都有特定的狀態,比如汽車的品牌、時速、馬力、耗油量 、座椅數,小貓的年齡、體重、毛色,鮮花的顏色、花瓣形狀、花瓣數目,都是在描述事物的狀態。每類 事物也都有一定的行為,比如汽車啟動、行駛、加速、減速、剎車、停車,貓捉老鼠,鮮花盛開。這些不 同的狀態和行為將各類事物區分開來。
面向對象編程也采用了類的概念,把事物編寫成一個個“類”。在類中,用數據表示事物的狀態,用 函數實現事物的行為,這樣就使編程方式和人的思維方式保持一致,極大的降低了思維難度。
封裝(Encapsulation)
制造汽車的過程中什麼人最牛?當然不是焊鋼板的,也不是裝輪胎的,更不 是擰螺絲的,而是設計汽車的工程師,因為他知道汽車的運行原理。但是我們開車時,需要知道汽車的運 行原理嗎?答案顯然不需要。汽車的運行原理已經被偉大的工程師封裝在汽車內部,提供給司機的只是一 個簡單的使用接口,司機操縱方向盤和各種按鈕就可以靈活自如的開動汽車了。
與制造汽車相似,面向對象技術把事物的狀態和行為的實現細節封裝在類中,形成一個可以重復使用 的“零件”。類一旦被設計好,就可以像工業零件一樣,被成千上萬的對其內部原理毫不知情的程序員使 用。類的設計者相當於汽車工程師,類的使用者相當於司機。這樣程序員就可以充份利用他人已經編寫好 的“零件”,而將主要精力集中在自己的專署領域。//《C#初學課堂》
接口(Interface)
今天你買了一台等離子電視機,你拿出遙控器,操縱按鈕,開始欣賞精彩的電視 節目。人們通過遙控器這個接口使用電視機,同樣,人們通過類的接口使用類。程序員在編寫類時精心地 為它設計接口,而設計良好的接口不但方便其他程序員使用,還有利於類的升級改造。
假設你是一個環保人士,最近你用節能的熒光燈代替了普通的白熾燈。白熾燈通過加熱電阻絲照亮整 個屋子;熒光燈則是激活空氣中的某些分子的電子能而發光。雖然它們的原理不同,但是它們的功能卻是 一樣的——照明。因為兩種燈具有相同的接口,所以你只需擰下白熾燈,然後再擰上熒光燈即可,輕易的 實現“零件”的更新換代。同樣,在面向對象編程中,只要保持接口不變,你可以任意更改類的實現細節 ,用一個設計更好的類替換原來的類,實現類的升級換代。
現在軟件維護和修改的成本已經占到了整個軟件開發的80%,類的這一編成思想極大的方便了程序的維 護和修改,降低了軟件成本。