第3章-面向對象思想_第1頁
第3章-面向對象思想_第2頁
第3章-面向對象思想_第3頁
第3章-面向對象思想_第4頁
第3章-面向對象思想_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

人民郵電出版社3面向對象思想Java程序設計第章3.2面向對象與面向過程3.3面向對象語言的三大特性3.5小結3.1從數(shù)據開始3.4UML2.0簡介C目錄ONTENTS3.1.1類的角色類是一種數(shù)據類型,用它可以定義復雜的數(shù)據,類似C語言的結構體和共體類型,Pascal語言的記錄類型。從數(shù)據處理的角度看:類是有相同屬性的事物的聚合或抽象。所謂“物以類聚”。按人類的語言表述:類是一個封裝體,它把屬性數(shù)據和操作方法封裝在其中。按面向對象語言的術語解釋:類是程序構成的單位,類似其他語言的函數(shù)、過程。從Java程序的結構看:類的角色3.1.2事物數(shù)據化計算機是進行數(shù)據處理的工具。人們使用計算機語言編程序進行針對不同問題的、方式方法各異的數(shù)據處理。數(shù)據處理包括數(shù)值數(shù)據處理和非數(shù)值數(shù)據處理。計算機在各行各業(yè)普及應用的今天,萬事萬物都已成為數(shù)據,用計算機存儲、用計算機進行處理。各種電子政務系統(tǒng)、電子商務系統(tǒng)就是典型應用。過去,對象指現(xiàn)實世界可區(qū)分的事物;現(xiàn)在,對象也可以是計算機中的數(shù)據。3.1.3對象的特殊性1、對象有多種屬性一事物區(qū)別于其他事物,是因為它們具有不同的屬性。一本書的屬性很多,在圖書管理系統(tǒng)中對書選取的屬性包括書名、著者、出版社、出版時間、定價等。2、對象有行為在學校的管理系統(tǒng)中,學生除了具有一些屬性,還具有一些行為。例如注冊、選課、評師等。3.1.3對象的特殊性屬性是關于對象的靜態(tài)描述。行為是對象的動態(tài)描述。人有吃飯、穿衣、形、走、坐、臥等行為。人有姓名、年齡、性別、家庭住址、電話號碼等屬性。3.1.4對象分類1、物以類聚就是事物分類3、程序中也需要定義類面向對象語言中有此類語法,Java是面向對象語言。4、類是對象的抽象,對象是類實例類是有共同屬性和行為名的對象的集合。對象具有具體的屬性值和行為。名-值對應于類-對象。2、事物分類便于高效管理。單位里有不同崗位的人。超市里有不同種類的商品。一本英語辭典里的十幾萬單詞被按照首字母A~Z分為26個類。這樣你才能快速地翻查到某個單詞。對象的數(shù)據處理,根據要解決的問題的需要,確定定義哪些方(method)。對象的處理方法也和屬性一樣,往往是對象獨有的。例如平面幾何圖形類對象有計算面積和周長的需求,可能需要定義area()和perimeter()方法。但是對于立體類對象,往往需要計算體積,那就需要定義volume()方法了。再比如,在學校的管理系統(tǒng)中,學生類Student對象,可能要定義注冊、交學費、選課等方法,而教師則有提交教學材料、提交成績等方法。3.1.5對象處理【例3.1】定義圓、矩形和三角形類,觀察邊長相等情況下哪種圖形的面積最大。Example3_1.java3.2面向對象與面向過程3.3面向對象語言的三大特性3.5小結3.1從數(shù)據開始3.4UML2.0簡介C目錄ONTENTS【面向過程】面向過程的語言人們已經使用了幾十年,現(xiàn)在仍然在使用,例如C語言就是這樣一種語言。面向過程的編程技術中,程序員關注于程序的函數(shù)和函數(shù)的執(zhí)行,反而忽視了數(shù)據本身。對象難于以整體存在。屬性被“撕裂”成不同的數(shù)據;屬性和行為被“割裂”開來。用于開發(fā)大型復雜應用系統(tǒng)時,不能建立在類似人解決問題那樣的“自然”地思考和分析。3.2.1問題與解決問題的思維方式3.2.1問題與解決問題的思維方式過程化程序圖示。程序員要設計每一個函數(shù)func1~funcn,還要管理每一個函數(shù)的調用和執(zhí)行。在這個過程中,對象(如果有的話)似乎不存在?!久嫦蜻^程】面向過程編程應用于大型的、復雜的系統(tǒng)開發(fā)時可能遇到的問題:難于維護和修改程序難于調試程序,難于跟蹤其執(zhí)行邏輯容易出現(xiàn)意外數(shù)據修改等邏輯錯誤編程細節(jié)難于組織,程序員在程序的組織和管理方面的負擔重3.2.1問題與解決問題的思維方式【面向過程】【面向對象】在面向對象編程中,程序員關注于數(shù)據本身,或者說對象本身。關注與對象有哪些屬性,對屬性進行什么操作。這樣的問題和思考接近于人解決問題的方式。對象各有其行為,對象之間通過消息相互通信,構成復雜的系統(tǒng)的運行。3.2.1問題與解決問題的思維方式3.2.2面向對象的內涵面向對象的思想和它的原理機制可謂內涵豐富,在后續(xù)各章中依照基本語法、原理機制、應用編程的順序展開。在此,僅就面向對象之“面向”二字的含義進行解讀。面向對象就是把對象作為整體,因為對象本來是一個整體?;趯ο蟮恼w性,于是有對象的封裝和數(shù)據隱藏?;趯ο箝g的關系,于是有繼承和多態(tài),形成層次體系?;趯ο蟮膹碗s性,需要對其抽象,于是有類。把對象作為整體,于是分析問題和解決問題的方式方法都更自然簡潔。軟件開發(fā)和維護也變得容易了。3.2.3面向對象和面向過程思想的關系OOP程序圖示:對象的函數(shù)可以是與具體業(yè)務邏輯有關的實用的函數(shù);也可以是負責與其他對象通信的接口函數(shù)。3.2面向對象與面向過程3.3面向對象語言的三大特性3.5小結3.1從數(shù)據開始3.4UML2.0簡介C目錄ONTENTS3.3面向對象語言的三大特性面向對象的語言有三個特性:封裝性;繼承性;多態(tài)性;正是因為具有這些特性,面向對象語言才適用于大型系統(tǒng)的開發(fā)。

3.3.1封裝性(encapsulation)封裝是指把數(shù)據和函數(shù)綁定到一個容器或者對象中。這一概念也稱為數(shù)據抽象(dataabstraction),它支持數(shù)據隱藏(datahiding),就是說對象可以對程序的其他部分隱藏其數(shù)據,使數(shù)據不能被直接訪問,而只可以通過接口函數(shù)訪問。封裝減少了意外數(shù)據修改和邏輯錯誤發(fā)生的可能性。3.3.2繼承性(inheritance)繼承機制是為了支持代碼的可重用性(reusability)。定義新的類,可以從已有的類中繼承代碼,減少了程序的總代碼量和寫代碼時間,縮短了開發(fā)周期。例如,已經定義了三角形類Triangle,則定義直角三角形Rtriangle可以繼承Triangle中的數(shù)據和方法,再添加新的數(shù)據和方法,即實現(xiàn)了代碼的重用。生活中繼承的情況比比皆是。建筑設計部門開始一個新樓設計時可能從一個過去的設計承一些風格、結構思路。修改增補之后得到一個新設計。3.3.2繼承性(inheritance)OOPL比面向過程的語言更加支持代碼的可重用性。繼承是實現(xiàn)代碼可重用方面最重要的概念和操作機制。使用繼承,我們從已有的代碼繼承,得到新的代碼。繼承減少了代碼編寫量,縮小了程序的規(guī)模。3.3.3多態(tài)性(polymorphism)多態(tài)性類似自然語言的一詞多義現(xiàn)象,比如漢字“打”,用在不同上下文中含義不同?!按蜥u油”是買醬油,“打蘋果”是削蘋果皮,“打牌”是玩牌,“打車”則是租車。面向對象語言中的多態(tài)性也是為了用單一的接口形式,表達多種不同的動作。Java中有方法重載(methodoverloading)和方法重寫(methodoverriding)兩種多態(tài)。在此對重載的用法用代碼舉例說明。3.3.3多態(tài)性intmax(inta,intb,intc){if(a>b&&a>c)returna;if(b>a&&b>c)returnb;elsereturnc;}intmax(inta,intb){returna>b?a:b;}doublemax(doublex,doubley){returnx>y?x:y;}3.2面向對象與面向過程3.3面向對象語言的三大特性3.5小結3.1從數(shù)據開始3.4UML2.0簡介C目錄ONTENTS3.4.1UML概述

我們寫程序,需要先分析問題,建立解決問題的思路。有了思路,寫程序就容易了。我們可以用很多表達思路的工具。

在面向過程語言中,常用的工具包括流程圖、NS圖、PAD圖、偽碼(Pseudo-code)等等。

在面向對象設計場合,有一個常用的工具,叫做統(tǒng)一建模語言UML(UniformModelingLanguage)。UML是軟件設計階段的有用工具,利用它的各種圖形符號,可以描述軟件系統(tǒng)的結構和行為特性。3.4.1UML概述UML2.0提供13種圖形:表3.4UML2.0的13種圖形序號名稱作用1用例圖對系統(tǒng)的使用方式分類2類圖顯示類及類間關系3對象圖顯示對象及它們的相互關系4活動圖顯示人或對象的活動,其方式類似于流程圖5狀態(tài)機圖顯示生命周期比較有趣或復雜的對象的各種狀態(tài)6通信圖顯示在某種情形下對象之間發(fā)送的消息7順序圖顯示與通信圖類以的信息,但強調的是順序,而不是連接8包圖顯示相關的類如何組合9部署圖顯示安裝已完成系統(tǒng)的機器、過程和部署制品10組件圖顯示可重用的組件(對象或子系統(tǒng))及接口11交互概覽圖將活動圖和順序圖組合圖形12定時圖顯示消息和對象狀態(tài)的準確時間限制13復合結構圖顯示對象在聚合或復合中的相互關系,顯示接口和協(xié)作的對象3.4.2類圖UML類圖,用矩形封裝類的名稱、屬性、方法、包括屬性和方法的可見性。見下圖所示。圖中描述了一個類Circle,屬性radius、x、y,方法area,以及屬性和方法的可見性,分別用+、#、-、~表示共有的、保護的、私有的和友好的4中可見性(也稱為訪問權限)。3.4.3對象圖對象圖描述具體的對象名稱和屬性值。見下圖所示。Circle類的3個對象c1、c2、c3。3.2面向過程與面向對象3.3OOPL三大特性3.5小結3.1數(shù)據、對象和類3.4UML簡介C目錄ONTENTS小結Summary本章從計算機應用普及過程中事物數(shù)據化的角度開始,分析對象的本質,總結類的作用,從現(xiàn)實世界和計算機數(shù)據處理相對應的角度理解面向對象思想。用實例說明方式引領大家理解面向對象技術的基本概念的含義。為理解面向對象的語法和操作

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論