馬曉娟
面向對象是當今程序設計的主流,主要通過類和對象實現軟件的各種功能。它從客觀世界中的實物出發,盡可能通過人類自然的思維方式來認識和思考問題,抓住這些實物的特點,經抽象將它們定義為類,系統就是由不同類的對象所構成的。文章主要圍繞面向對象的幾個基本概念和特征對面向對象編程思想做了一個概述。
【關鍵詞】面向對象 類 對象 封裝 繼承
1 引言
面向對象的思想不僅僅局限于軟件設計,它已經拓展到更多的領域,如分布式系統、應用平臺、交互式界面、數據庫系統、人工智能、嵌入式軟件系統等領域。作為計算機專業的求學者和從業人員,不管鉆研或從事哪個方向的,都應該對面向對象編程思想有所了解。
通俗地講,面向對象編程思想可以概括如下:系統中的一切事物都是對象;將屬性和對屬性執行的操作封裝成為整體,這個封裝體即是對象;屬性和操作相同的對象抽象成為類,對象則是類的實體;發送消息可以使對象執行相應的操作;在現有類的基礎上增加屬性或操作可以構成另一個類,這是類的繼承。
2 面向過程編程思想所存在的問題
2.1 可維護性差
用傳統的面向過程方法所開發出的軟件,由于可修改性較差,維護時產生的費用仍很高,造成其可維護性差。
2.2 重用性差
重用性指軟件不用修改或略加修改就能重復使用。面向過程程序設計階段軟件重用性極差,引起軟件危機,軟件工程這一學科由此而誕生,提高重用性是軟件工程的重要目標,而面向對象的繼承機制很好地解決了軟件重用性這一問題。
2.3 軟件功能與用戶需求不一致
用傳統的結構化方法開發大型軟件系統涉及各種不同領域的知識,在開發需求模糊或需求動態變化的系統時,所開發出的軟件系統往往不能真正滿足用戶的需要。
3 面向對象的重要概念
3.1 類
類是屬性與操作相同的對象的抽象。因此,類是對象的抽象,對象是類的實例。 例如“人”是所有人的一個抽象的總稱,他是一個類,“魯迅”是具體的一個人,這就是個對象。再如“班級”是個抽象的類名,“計算機系13級軟件1班”是具體的一個班級對象。
類的屬性用來表示對象的各種特征,用數據結構來描述。如長方體有三個基本屬性長、寬、高;時間有三個基本屬性小時、分、妙;人的基本屬性有姓名、年齡、性別、工作單位等。在不同的處理需求下對于同一事物的屬性描述是不一樣的。
類的操作是對于對象行為的描述,包括操作的名稱和操作實現過程。
3.2 對象
對象是任何被人類研究的實物,不管是簡單的實數還是結構復雜的核潛艇都可以認為是對象。除了具體的事物,對象還能表示抽象的規則、計劃。
3.3 對象的屬性和操作
對象的屬性用各類數據描述。 如一個餐桌的屬性包括長、寬、高、材質和顏色,前三種屬性值用實型數據表示,后兩種屬性值用字符串表示。對象的操作用于改變或訪問對象的屬性。 如一個餐桌對象有一個求桌面面積的操作,這個操作需要訪問此餐桌的長和寬。對象將其屬性值與操作結合在一起形成一個整體,將這個整體封裝在對象中。
3.4 消息和方法
當要求對象執行某種操作時,必須由外界向對象發送一條消息,消息包括對象名和方法名,有時還要加若干參數。類中操作的實現過程叫做方法,一個方法有方法名、參數、方法體。
3.5 類與類的特殊關系
在現實世界中存在很多類,有些類之間是毫無關聯的,但有些類之間具有一定的特殊關系,有兩種這樣的關系:繼承關系和組合關系。
如果現有一個定義好的類是“人”,還需要再定義一個“男人”類,可以不用對“男人”類進行重新定義,而是選擇在“人”這個類的基礎上增加一個性別屬性即可。“人”稱為父類或基類,“男人”稱為子類或派生類,這兩個類的關系叫做繼承,可以說這兩個類是一種“是”的關系,即男人是人。
如果現有一個“日期”類,還要定義一個“學生”類,屬性中要體現出生日期,那也可以不用在“學生”類中重新定義出生日期這一屬性,可以直接用已有的“日期”類來定義生日,這兩個類的關系叫做類的組合,可以說這兩個類是一種“有”的關系,即每個學生都有生日,而生日是日期信息。
4 面向對象的顯著特征
4.1 封裝
封裝很好地實現了信息隱藏,可以達到數據保護的目的,即對象的屬性一般不被外界直接訪問,而是通過對象的方法來訪問,從而保護了對象的屬性,為軟件的模塊性提供了保證。另外,類定義將外部接口(用戶可見)與內部實現(外界不可見)分離,對象的方法其內部實現細節對外界是不可見的,用戶只管調用外部接口完成對象的一系列操作。
4.2 繼承
子類繼承父類的所有屬性和方法,避免了許多重復性的工作,在一個現有類的基礎上新增一些屬性或方法級大地減少了軟件設計的工作量。繼承是面向對象編程語言區別于面向過程編程語言的最顯著的特點。如果子類只有一個父類稱為單繼承,子類存在多個父類叫做多重繼承。在軟件設計工作中,繼承是信息分類與組織的切實可行的方法,它簡化了創建類的過程,提高了軟件的可重用性,使得軟件的可擴充性大大加強。
4.3 多態
多態指相同的方法作用于類型不同的對象上可以得到不一樣的結果。 每個對象通過滿足自身意愿的方式響應同樣的消息。例如在聽到統一的上課鈴聲后,老師們各自進入自己任課的班級,而不是進入同一個班級,并且所講的內容也都不同。 多態性使得軟件的可重用性和靈活性進一步增強了。
5 結語
面向對象編程思想以其獨特的形式將數據以及在數據之上的操作細節封裝在類中,改變了面向過程編程思路的程序結構和整體格局,由于其繼承性可以加快軟件開發速度,并增強軟件可重用性,便于軟件擴充功能,多態性可提高軟件設計的靈活性,故從過去較長時間至今一直以來仍占據著程序設計的主流地位,也一直是衡量各層次程序員與計算機從業人員業務素質的標準。
參考文獻
[1]彭莉芬、陳俊生.淺析面向對象的三大特征[J].福建電腦,2010(05).
[2]譚大海、劉興勇.面向對象分析與設計[J]. 科技信息,2014(10).
[3]張忠華、李德蓉、肖章林.淺析面向對象程序技術的特征和思想[J].裝備制造與教育,2014(01).
作者單位
內蒙古自治區烏蘭察布市集寧師范學院 內蒙古自治區烏蘭察布市 012000endprint