第3章-面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)_第1頁(yè)
第3章-面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)_第2頁(yè)
第3章-面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)_第3頁(yè)
第3章-面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)_第4頁(yè)
第3章-面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章Java面向?qū)ο蟪绦蛟O(shè)計(jì)(上)

第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)本章學(xué)習(xí)目標(biāo)掌握J(rèn)ava面向?qū)ο蟪绦蛟O(shè)計(jì)方法利用面向?qū)ο笤O(shè)計(jì)方法解決實(shí)際問(wèn)題第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)1:一個(gè)簡(jiǎn)單的類(lèi)對(duì)象【任務(wù)內(nèi)容】設(shè)計(jì)一個(gè)音樂(lè)播放器類(lèi),并創(chuàng)建一個(gè)對(duì)象?!灸芰δ繕?biāo)】掌握面向?qū)ο蟪绦蛟O(shè)計(jì)方法掌握創(chuàng)建類(lèi)的基礎(chǔ)語(yǔ)法掌握類(lèi)對(duì)象的創(chuàng)建學(xué)會(huì)用面向?qū)ο笤O(shè)計(jì)思想解決實(shí)際問(wèn)題3.1類(lèi)和對(duì)象第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)【范例3-1】設(shè)計(jì)一個(gè)媒體播放器類(lèi)

classMediaPlayer{ //音樂(lè)文件路徑

publicStringmusicFile; //播放器音量,范圍:0(靜音)~100 publicintsoundLevel; //播放器狀態(tài)

publicbooleanisPlaying; }第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)classMediaAppExam{//主程序

publicstaticvoidmain(Stringargs[]){//用MediaPlayer類(lèi)創(chuàng)建播放器對(duì)象mplayerMediaPlayermplayer=newMediaPlayer(); //設(shè)定播放器內(nèi)部的屬性值

mplayer.musicFile="spring.mp3"; mplayer.soundLevel=50; mplayer.isPlaying=false;} }第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)

結(jié)構(gòu)化的軟件開(kāi)發(fā)方法

結(jié)構(gòu)化的軟件開(kāi)發(fā)方法是20世紀(jì)80年代使用最廣泛的軟件開(kāi)發(fā)方法。它主要依據(jù)功能來(lái)劃分軟件的結(jié)構(gòu),它把軟件系統(tǒng)的功能看做是根據(jù)給定的輸入數(shù)據(jù),然后輸出結(jié)果。 進(jìn)行結(jié)構(gòu)化設(shè)計(jì)時(shí),首先考慮整個(gè)軟件的功能,然后對(duì)功能進(jìn)行分解,將軟件劃分為多個(gè)模塊,每個(gè)模塊實(shí)現(xiàn)子功能(但功能不是一成不變的)。模塊內(nèi)部還可以進(jìn)一步細(xì)分,最后將所有的模塊拼裝起來(lái)構(gòu)成整個(gè)軟件系統(tǒng)。軟件系統(tǒng)可以看做多個(gè)子系統(tǒng)的集合。 結(jié)構(gòu)化設(shè)計(jì)屬于自頂向下的設(shè)計(jì),在設(shè)計(jì)階段就需要考慮如何實(shí)現(xiàn)系統(tǒng)功能,因?yàn)榉纸夤δ艿倪^(guò)程實(shí)際就是實(shí)現(xiàn)功能的過(guò)程。其局限性在于不能適應(yīng)用戶(hù)需求的不斷變化,系統(tǒng)結(jié)構(gòu)會(huì)根據(jù)需求變化而變化。 結(jié)構(gòu)化程序設(shè)計(jì)中,方法是最小的功能模塊。每個(gè)方法都是一個(gè)具有輸入輸出的子系統(tǒng)。預(yù)備知識(shí)----程序設(shè)計(jì)方法第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)

面向?qū)ο蟪绦蛟O(shè)計(jì)

面向?qū)ο蟪绦蛟O(shè)計(jì)(Object-OrientedProgramming簡(jiǎn)稱(chēng)OOP)是當(dāng)今主流的程序設(shè)計(jì)方法,它將軟件系統(tǒng)看做各種對(duì)象的集合,每個(gè)對(duì)象包含對(duì)用戶(hù)公開(kāi)的特定功能部分和隱藏的實(shí)現(xiàn)部分。對(duì)象是最小的子系統(tǒng),一組對(duì)象能夠組合成復(fù)雜的子系統(tǒng)。 程序中的很多對(duì)象來(lái)自于標(biāo)準(zhǔn)庫(kù),還有一些是自定義的。究竟是自己構(gòu)造對(duì)象,還是使用外部對(duì)象(可以是免費(fèi)的,也可以是商業(yè)的)完全取決于預(yù)算和時(shí)間。但只要能夠?qū)崿F(xiàn)功能,完全可以不必關(guān)系其實(shí)現(xiàn)的細(xì)節(jié)。 傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)通過(guò)一系列的過(guò)程(即算法)來(lái)解決問(wèn)題,然后考慮存儲(chǔ)數(shù)據(jù)的方式(即如何組織數(shù)據(jù)),而面向?qū)ο髣偤孟喾础?對(duì)于較小規(guī)模的問(wèn)題使用結(jié)構(gòu)化設(shè)計(jì)比較理想,而面向?qū)ο笤O(shè)計(jì)更適合解決規(guī)模較大的問(wèn)題。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)OOP的邏輯過(guò)程面向?qū)ο笤O(shè)計(jì)分析的完整過(guò)程如圖所示:現(xiàn)實(shí)域抽象抽象類(lèi)對(duì)象實(shí)例化映射抽象數(shù)據(jù)類(lèi)物理實(shí)體邏輯實(shí)現(xiàn)概念域計(jì)算機(jī)世界第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)面向?qū)ο缶哂幸韵聨讉€(gè)重要特征:抽象封裝與隱藏繼承多態(tài)性

33313234第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)面向?qū)ο蟮幕靖拍顚?duì)象(Object)是一個(gè)應(yīng)用系統(tǒng)中用來(lái)描述客觀(guān)事物的實(shí)體,是具有特定屬性(數(shù)據(jù))和行為(方法)的基本運(yùn)行單位,是類(lèi)的一個(gè)特定狀態(tài)下的實(shí)例。類(lèi)(Class)是Java代碼的基本組織模塊,是用以描述一組具有共同屬性和行為的對(duì)象的基本原型,是對(duì)這組對(duì)象的概括、歸納與抽象表達(dá),它定義了本類(lèi)對(duì)象所應(yīng)擁有的狀態(tài)屬性集及操作這組屬性的行為方法集。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)類(lèi)與對(duì)象的關(guān)系類(lèi)與對(duì)象之間的關(guān)系,類(lèi)似于數(shù)據(jù)類(lèi)型與變量之間的關(guān)系;一個(gè)類(lèi)可以生成無(wú)數(shù)個(gè)不同的對(duì)象,每個(gè)對(duì)象屬性值不同,其狀態(tài)也不同??梢杂糜?jì)算機(jī)模型與計(jì)算機(jī)實(shí)體之間的關(guān)系來(lái)更形象地說(shuō)明類(lèi)與對(duì)象之間的關(guān)系:將馮·諾依曼計(jì)算機(jī)模型看作計(jì)算機(jī)類(lèi),則不同品牌的計(jì)算機(jī)實(shí)體就對(duì)應(yīng)為一個(gè)個(gè)的實(shí)例對(duì)象。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)OOP的優(yōu)越性從面向過(guò)程到面向?qū)ο笫浅绦蛟O(shè)計(jì)技術(shù)的一個(gè)飛躍。人們之所以要采用面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù),其目的在于:提升程序的開(kāi)發(fā)與運(yùn)行效率提高代碼的可重用性(或者稱(chēng)為復(fù)用性)按照與人類(lèi)習(xí)慣思維方法一致的原則開(kāi)發(fā)系統(tǒng)第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)OOP的優(yōu)越性(續(xù))提高程序的可靠性與可維護(hù)性提高程序的可擴(kuò)展性增強(qiáng)程序的可控制性總之,面向?qū)ο蟮某绦蛟O(shè)計(jì),能夠有效分解、降低問(wèn)題的難度與復(fù)雜性,提高整個(gè)求解過(guò)程的可控制性、可監(jiān)視性和可維護(hù)性,從而獲得較高的開(kāi)發(fā)效率與可靠效果第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)創(chuàng)建類(lèi)類(lèi)是Java語(yǔ)言面向?qū)ο缶幊痰幕疽?,用?lái)定義對(duì)象的成員變量(數(shù)據(jù)域)與成員方法(功能接口),描述對(duì)象的狀態(tài)與行為。Java程序?qū)⒛阋磉_(dá)的實(shí)體或概念封裝在類(lèi)中,并由類(lèi)來(lái)創(chuàng)建諸多的實(shí)例對(duì)象。應(yīng)用程序的功能便是由各個(gè)類(lèi)的實(shí)例對(duì)象,通過(guò)調(diào)用各類(lèi)方法來(lái)實(shí)現(xiàn)的。JAVA的類(lèi)由類(lèi)的聲明與類(lèi)體兩部分組成。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)1、類(lèi)的聲明用來(lái)指定該類(lèi)的訪(fǎng)問(wèn)修飾符、類(lèi)的名稱(chēng)、父類(lèi)名稱(chēng)及實(shí)現(xiàn)接口等屬性。聲明類(lèi)的完整形式為:[public][abstract|final]class<類(lèi)名>[extends<基類(lèi)名>][implements<接口列表>]說(shuō)明了類(lèi)的屬性類(lèi)名應(yīng)該能夠描述出類(lèi)的特征或作用,類(lèi)名的第一個(gè)字母通常要大寫(xiě),如果類(lèi)名由多個(gè)單詞組成,則每一單詞的首字母一般都要大寫(xiě)第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)2、類(lèi)體:是類(lèi)功能的主體,是JAVA語(yǔ)句的集合。一般要定義三類(lèi)元素:成員變量;構(gòu)造方法;成員方法。語(yǔ)句塊界定符{及}標(biāo)識(shí)出類(lèi)體的有效范圍。成員變量與成員方法為類(lèi)的成員要素,簡(jiǎn)稱(chēng)為成員(Member),它們又分為靜態(tài)/類(lèi)要素與對(duì)象/實(shí)例要素兩類(lèi)。構(gòu)造方法是具有與類(lèi)名相同名稱(chēng)的一種特殊方法,用來(lái)創(chuàng)建類(lèi)的對(duì)象及對(duì)成員變量進(jìn)行初始化。構(gòu)造方法為可選項(xiàng),當(dāng)省略時(shí),Java系統(tǒng)會(huì)按缺省方式定義空白的構(gòu)造方法。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)類(lèi)定義示例【例】建立一個(gè)公共的最終類(lèi)—日期類(lèi),其聲明格式如下:publicfinalclassDate//類(lèi)的聲明語(yǔ)句{//類(lèi)體定義

privateintyear;//年

privateintmonth;//月

privateintday;//日

publicinitDate(inty,intm,intd){……}//初始化年、月、日值的方法

publicshowDate(){……}//顯示當(dāng)前日期值的方法}第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)實(shí)例化對(duì)象類(lèi)只是一種數(shù)據(jù)類(lèi)型,需要實(shí)例化對(duì)象以后才能使用。類(lèi)類(lèi)型實(shí)例化對(duì)象需要由兩個(gè)步驟來(lái)完成,首先用類(lèi)定義對(duì)象變量,然后通過(guò)實(shí)例化類(lèi)的對(duì)象來(lái)初始化對(duì)象變量,即:類(lèi)名稱(chēng)對(duì)象變量;對(duì)象變量=new類(lèi)名稱(chēng)();

也可以一步完成,即:類(lèi)名稱(chēng)對(duì)象變量=new類(lèi)名稱(chēng)();第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)實(shí)例化對(duì)象(續(xù))一旦一個(gè)類(lèi)的實(shí)例化對(duì)象產(chǎn)生,就可以通過(guò)該對(duì)象訪(fǎng)問(wèn)類(lèi)中定義的成員了。通過(guò)對(duì)象訪(fǎng)問(wèn)成員的基本結(jié)構(gòu)如下:對(duì)象變量.屬性=值;對(duì)象變量.方法();第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)2---方法的定義【任務(wù)內(nèi)容】給任務(wù)1中的媒體播放器類(lèi)增加控制方法【能力目標(biāo)】掌握方法定義學(xué)會(huì)用方法解決實(shí)際問(wèn)題【任務(wù)分析】本案例要求在任務(wù)1案例中MediaPlayer類(lèi)基礎(chǔ)上擴(kuò)充可控制播放器的方法。通過(guò)分析任務(wù)1的案例,我們可以得知,MediaPlayer類(lèi)至少包含播放、暫停、調(diào)節(jié)音量等方法。范例3-2MediaAppExam.java3.2方法第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)2---方法定義(續(xù))成員方法(MemberMethod)又稱(chēng)為功能接口(FunctionInterface),簡(jiǎn)稱(chēng)為方法(Method),是類(lèi)對(duì)象與外界的接口,包含了理解和操縱對(duì)象狀態(tài)的代碼,反應(yīng)了對(duì)象的行為特征,特別是對(duì)屬性進(jìn)行操作的特征。成員方法對(duì)成員變量的操作主要體現(xiàn)在以下兩個(gè)方面:改變對(duì)象的屬性,一般記為set方法返回對(duì)象的屬性,一般記為get方法第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)方法定義格式如下:[public|protected|private][static][final|abstract][native][synchronized]<方法的返回類(lèi)型><方法名>([參數(shù)列表])[throws<異常列表>]{//方法體定義

……//用于描繪方法行為的Java語(yǔ)句}訪(fǎng)問(wèn)控制修飾符第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)3:靜態(tài)方法【任務(wù)內(nèi)容】設(shè)計(jì)一維數(shù)組工具類(lèi),包含數(shù)組復(fù)制,打印任務(wù)【能力目標(biāo)】掌握靜態(tài)方法的定義學(xué)會(huì)用靜態(tài)方法解決實(shí)際問(wèn)題【任務(wù)分析】本案例要求設(shè)計(jì)一個(gè)針對(duì)一維數(shù)組做操作的工具類(lèi),這些方法對(duì)于所有一維數(shù)組來(lái)說(shuō)是通用的。作為工具類(lèi),它只是包含了操作數(shù)組的方法,而與數(shù)組沒(méi)有任何直接關(guān)系。因此,在使用操作數(shù)組的方法時(shí)并不需要對(duì)工具類(lèi)做實(shí)例化。那么如何才能在不實(shí)例化類(lèi)對(duì)象的情況下訪(fǎng)問(wèn)類(lèi)內(nèi)部的方法呢?Java編程語(yǔ)言中靜態(tài)方法可以很好的解決上述問(wèn)題。Java允許開(kāi)發(fā)人員在一個(gè)類(lèi)內(nèi)部定義直接通過(guò)類(lèi)名稱(chēng)訪(fǎng)問(wèn)的靜態(tài)方法,而無(wú)需實(shí)例化類(lèi)對(duì)象。3.2方法第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)范例:Application.java通過(guò)上例,我們知道:static方法可以用類(lèi)來(lái)直接調(diào)用,而無(wú)需用從類(lèi)中實(shí)例化出來(lái)的具體對(duì)象來(lái)調(diào)用,因此這類(lèi)方法被稱(chēng)為類(lèi)的方法。

注意:

static方法只能訪(fǎng)問(wèn)類(lèi)中的static屬性和其他的static方法。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)4:main方法【任務(wù)內(nèi)容】實(shí)現(xiàn)命令行計(jì)算器程序【能力目標(biāo)】了解Java程序的執(zhí)行掌握J(rèn)ava程序入口方法借助主程序入口參數(shù)解決實(shí)際問(wèn)題【任務(wù)分析】命令行計(jì)算器就是用戶(hù)在命令行輸入要參加計(jì)算的兩個(gè)數(shù)和運(yùn)算符,然后程序參照用戶(hù)輸入的運(yùn)算符對(duì)兩個(gè)數(shù)進(jìn)行算術(shù)運(yùn)算,最終將運(yùn)算結(jié)果呈現(xiàn)給用戶(hù)。本案例要求程序在啟動(dòng)時(shí)接收用戶(hù)的輸入。那么,程序該如何實(shí)現(xiàn)在程序啟動(dòng)過(guò)程中傳遞用戶(hù)輸入呢?答案就是Java程序中的主方法main()。3.2方法第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)范例:Calc.java在Java中,main()方法是Java應(yīng)用程序的入口方法,也就是說(shuō),程序在運(yùn)行的時(shí)候,第一個(gè)執(zhí)行的方法就是main()方法。main()方法與其他的方法有所不同,它在程序中有固定的語(yǔ)法聲明:publicstaticvoidmain(Stringargs[])第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)5:成員變量和局部變量【任務(wù)內(nèi)容】設(shè)計(jì)一個(gè)Person類(lèi),包含姓名、性別、年齡屬性,并通過(guò)方法訪(fǎng)問(wèn)這些屬性?!灸芰δ繕?biāo)】掌握成員變量定義掌握局部變量定義掌握成員變量和局部變量的區(qū)別【任務(wù)分析】

該案例要求設(shè)計(jì)一個(gè)Person類(lèi),并且包含有姓名、性別和年齡三個(gè)屬性,屬性的訪(fǎng)問(wèn)必須通過(guò)方法來(lái)完成。每個(gè)屬性的訪(fǎng)問(wèn)包括讀和寫(xiě),所以Person類(lèi)至少包含六個(gè)屬性分別對(duì)應(yīng)上述三個(gè)屬性的讀寫(xiě)操作。其中寫(xiě)屬性操作還需要外界提供一個(gè)參數(shù),作為被操作屬性的新值。3.3成員變量和局部變量第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)范例:ApplicationDemo.java在上例中涉及到兩類(lèi)變量:局部變量和成員變量局部變量:

1)局部變量是定義在方法體內(nèi)部的變量,包括方法圓括號(hào)中的參數(shù)在內(nèi)。局部變量有時(shí)被稱(chēng)作自動(dòng)變量。局部變量存儲(chǔ)在棧內(nèi)存中,其生命周期從方法的執(zhí)行到方法方法的結(jié)束。

2)局部變量定義以后,必須進(jìn)行初始化。

3)局部變量只能在定義方法范圍內(nèi)使用

第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)成員變量:成員變量是定義在類(lèi)當(dāng)中的變量,又稱(chēng)為屬性(Attribute)或數(shù)據(jù)域(DataField),用以表述一個(gè)對(duì)象的狀態(tài)信息。成員變量跟隨對(duì)象一起存儲(chǔ)在堆內(nèi)存當(dāng)中,其生命周期從對(duì)象的實(shí)例化開(kāi)始,直到對(duì)象被銷(xiāo)毀時(shí)消失。語(yǔ)法描述格式如下:[public|protected|private][static][final][transient][volatile]<類(lèi)型><屬性名>[=初始值/new<構(gòu)造方法>>];第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)public、protected與private為成員要素訪(fǎng)問(wèn)修飾符,用來(lái)限制成員變量或成員方法的訪(fǎng)問(wèn)范圍,即哪些類(lèi)或?qū)ο罂梢栽L(fǎng)問(wèn)此成員要素。static用來(lái)指明成員要素為靜態(tài)要素,又稱(chēng)類(lèi)要素,以區(qū)別于對(duì)象要素。靜態(tài)要素存在于類(lèi)的定義區(qū)域中,屬于類(lèi)本身的成員,每個(gè)該類(lèi)的對(duì)象共享這些要素final用于成員變量時(shí),是作為定義最終變量即常量的關(guān)鍵字。這類(lèi)常量的值不允許修改。transient(意為短暫的、瞬時(shí)的)為專(zhuān)門(mén)用于成員變量的修飾符,表明成員變量為臨時(shí)變量。volatile(意為可變的、不穩(wěn)定的)為專(zhuān)門(mén)用于成員變量的修飾符,聲明一個(gè)被多個(gè)并發(fā)線(xiàn)程所共享的變量。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)在類(lèi)實(shí)例化一個(gè)對(duì)象后,對(duì)象內(nèi)的所有成員變量已經(jīng)被初始化。成員變量默認(rèn)初始化規(guī)則如下:對(duì)象類(lèi)型:默認(rèn)初始化為null整數(shù)類(lèi)型:默認(rèn)初始化為0字符類(lèi)型:默認(rèn)初始化為’\u0000’浮點(diǎn)類(lèi)型:默認(rèn)初始化為0.0和0.0f邏輯類(lèi)型:默認(rèn)初始化為false第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)6:訪(fǎng)問(wèn)控制【任務(wù)內(nèi)容】修改任務(wù)2中的MediaPlayer播放器,限制外界任意訪(fǎng)問(wèn)對(duì)象內(nèi)的屬性【能力目標(biāo)】了解Java封裝機(jī)制掌握J(rèn)ava訪(fǎng)問(wèn)控制修飾符學(xué)會(huì)采用封裝機(jī)制解決實(shí)際問(wèn)題【任務(wù)分析】本案例要求對(duì)任務(wù)2中的媒體播放器進(jìn)程改造,限制對(duì)象外部代碼對(duì)對(duì)象屬性的任意操作。任務(wù)2中,主程序是可以隨意通過(guò)mplayer對(duì)象去訪(fǎng)問(wèn)內(nèi)部的任何屬性。一個(gè)對(duì)象內(nèi)部屬性可以被隨意修改是一個(gè)極其危險(xiǎn)的事情,它直接影響了對(duì)象的有效性。例如隨意設(shè)置音量屬性soundLevel為-1,從語(yǔ)法上,int類(lèi)型的soundLevel是可以接受-1值得,但是從邏輯上,音量范圍是0~100,變量自身是無(wú)法控制其邏輯上的有效性的。3.4封裝第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)范例:MediaAppDemo.java注意:類(lèi)中的所有成員都可以被類(lèi)自身的代碼訪(fǎng)問(wèn)。為控制其他類(lèi)的訪(fǎng)問(wèn)權(quán)限,類(lèi)成員有四種訪(fǎng)問(wèn)修飾符。private:聲明為private的成員只能被包含它的類(lèi)自身訪(fǎng)問(wèn)default:包成員無(wú)任何訪(fǎng)問(wèn)修飾符,它們只能被所在包中的類(lèi)所訪(fǎng)問(wèn)。protected:聲明為protected的成員可以被它的子類(lèi)、同一個(gè)包中的類(lèi)訪(fǎng)問(wèn)。public:聲明為public的成員可以被任何類(lèi)訪(fǎng)問(wèn)。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)成員變量的訪(fǎng)問(wèn)控制修飾符修飾符本類(lèi)相同包中的不同類(lèi)(包含子類(lèi))不同包中的子類(lèi)不同包中的非子類(lèi)public缺?。╬ackeage)××private×××protected×上述訪(fǎng)問(wèn)控制修飾符主要用于定義成員的作用域,即可以在哪些范圍內(nèi)訪(fǎng)問(wèn)其成員.第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)舉例1:

classClassA{privateintisPrivate;privatevoidprivateMethod(){System.out.println(“私有方法”);}}classClassB{voidaccessMethod(){ClassAa=newClassA();a.isPrivate=10;//非法

a.privateMethod();//非法}}第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)舉例2:classFieldTest{privateintnum=5;//私有作用域,本類(lèi)可見(jiàn)

publicintget(){//公共作用域

returnnum;//返回成員變量num的值}}classTest{publicstaticvoidmain(String[]args){FieldTestft=newFieldTest();intt=ft.get();//正確訪(fǎng)問(wèn)

//ints=ft.num;//不能訪(fǎng)問(wèn)FieldTest類(lèi)的私有成員變量

System.out.println(“t=“+t);//System.out.println(s);}}第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)7:構(gòu)造方法【任務(wù)內(nèi)容】創(chuàng)建一個(gè)按鈕類(lèi),保證其實(shí)例化的對(duì)象所有狀態(tài)初始都是有效的【能力目標(biāo)】掌握構(gòu)造方法的定義掌握用構(gòu)造方法初始化對(duì)象學(xué)會(huì)用構(gòu)造方法解決實(shí)際問(wèn)題【任務(wù)分析】本案例要求設(shè)計(jì)一個(gè)按鈕類(lèi),并且按鈕類(lèi)在實(shí)例化對(duì)象后,其內(nèi)部的狀態(tài)值應(yīng)該保持在有效狀態(tài)。實(shí)例化一個(gè)類(lèi)的對(duì)象時(shí),對(duì)象內(nèi)部的狀態(tài)已經(jīng)被初始化為默認(rèn)值,但是這個(gè)默認(rèn)值并不是我們想要的,因?yàn)樗鼈儚倪壿嬌喜⒉皇怯行У?。我們?cè)撊绾卧趯?shí)例化對(duì)象的過(guò)程中將對(duì)象屬性初始化為符合對(duì)象自身特性的有效狀態(tài)呢?3.5構(gòu)造方法第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)范例:ApplicationDemo2.java構(gòu)造方法(Constructor)又稱(chēng)為構(gòu)造器,熟悉C++語(yǔ)言的人習(xí)慣上稱(chēng)之為構(gòu)造函數(shù)。構(gòu)造方法是類(lèi)用來(lái)創(chuàng)建對(duì)象、初始化類(lèi)的屬性的一種特殊方法,構(gòu)造方法每次只會(huì)在類(lèi)創(chuàng)建對(duì)象的時(shí)候被自動(dòng)調(diào)用,且只會(huì)被調(diào)用一次。Java中所有的類(lèi)至少都要有一個(gè)構(gòu)造方法,即使用戶(hù)不明確地定義,系統(tǒng)也會(huì)為該類(lèi)生成一個(gè)默認(rèn)構(gòu)造方法或缺省構(gòu)造方法,這種缺省構(gòu)造方法沒(méi)有任何參數(shù),且方法體為空。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)構(gòu)造方法沒(méi)有返回類(lèi)型,也不允許返回void類(lèi)型。構(gòu)造方法的方法名與類(lèi)名完全相同(包括字母大小寫(xiě))一個(gè)類(lèi)可以包含多個(gè)重載的構(gòu)造方法,使用這些重載的構(gòu)造方法創(chuàng)建不同對(duì)象時(shí),通過(guò)參數(shù)的不同來(lái)決定調(diào)用哪個(gè)構(gòu)造方法。構(gòu)造方法不允許用戶(hù)直接調(diào)用,只能通過(guò)new關(guān)鍵字在創(chuàng)建對(duì)象時(shí)由系統(tǒng)調(diào)用。33343132構(gòu)造方法的特征:第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)8:類(lèi)的繼承【任務(wù)內(nèi)容】設(shè)計(jì)一個(gè)Person類(lèi),并派生出Employee【能力目標(biāo)】了解類(lèi)繼承的概念掌握類(lèi)繼承的語(yǔ)法學(xué)會(huì)用類(lèi)繼承解決實(shí)際問(wèn)題【任務(wù)分析】

本案例要求設(shè)計(jì)一個(gè)Person類(lèi),然后在Person類(lèi)基礎(chǔ)之上擴(kuò)充新功能另外一個(gè)新類(lèi)Employee。另外,Person類(lèi)中定義的方法并不完全符合Employee的要求,因此,Employee必要的情況下可以重新定義Person類(lèi)中已定義過(guò)的方法。3.6類(lèi)的繼承第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)范例:ExtendExample.java繼承也稱(chēng)為派生,其概念來(lái)源于這樣一種思想:同類(lèi)事物具有共同性,在同類(lèi)事物中,每個(gè)事物又具有其特殊性。運(yùn)用抽象的原則舍棄對(duì)象的特殊性,抽取其共性,便得到適應(yīng)于一組對(duì)象的類(lèi),這便是一般類(lèi)或通用類(lèi),而把具有特殊性的類(lèi)稱(chēng)為特殊類(lèi)或具體類(lèi)。假定B類(lèi)與C類(lèi)具有A類(lèi)的全部屬性和方法,同時(shí)又分別具有自己特有的某些屬性和方法,則把類(lèi)A稱(chēng)作一般類(lèi),把類(lèi)B與類(lèi)C稱(chēng)作類(lèi)A的特殊類(lèi)。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)繼承的意義繼承很好地解決了軟件復(fù)用。通過(guò)繼承,一個(gè)類(lèi)可以擁有已有類(lèi)的所有功能。因此,只需指明新類(lèi)與現(xiàn)有類(lèi)的不同,即增加自己的屬性和方法即可,從而有效地減少了代碼和數(shù)據(jù)的冗余度,增強(qiáng)了程序的可重用性。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)繼承的特征33343132繼承關(guān)系是傳遞的繼承簡(jiǎn)化了人們對(duì)事物的認(rèn)識(shí)和描述,能清晰體現(xiàn)相關(guān)類(lèi)之間的層次結(jié)構(gòu)關(guān)系通過(guò)增強(qiáng)一致性來(lái)減少模塊的接口和界面,大大增加程序的易維護(hù)性Java不支持類(lèi)的多重繼承,只支持類(lèi)的單一繼承第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)繼承的實(shí)現(xiàn)Java程序中,繼承通過(guò)extends關(guān)鍵字來(lái)實(shí)現(xiàn)。子類(lèi)對(duì)父類(lèi)的繼承是在類(lèi)的聲明中通過(guò)關(guān)鍵字extends來(lái)指明。實(shí)現(xiàn)繼承的語(yǔ)法結(jié)構(gòu)為:[修飾符]class<子類(lèi)類(lèi)名>extends<父類(lèi)類(lèi)名>{……//類(lèi)體定義}第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)繼承的示例【例】實(shí)現(xiàn)兩個(gè)類(lèi)的描述:基類(lèi)人(Person)及子類(lèi)學(xué)生(Pupil)。人具有姓名(name)、年齡(age)、性別(sex)及配偶姓名(spouseName)四類(lèi)屬性,同時(shí)具有工作(work)、休息(rest)、娛樂(lè)(amusement)及處理家務(wù)(housework)四種行為方法。學(xué)生將從人這一父類(lèi)中繼承除配偶姓名以外的三類(lèi)屬性,并繼承及除工作和處理家務(wù)以外的兩類(lèi)行為,同時(shí)要添加自身類(lèi)特有的幾類(lèi)屬性:所屬學(xué)校(school)、所學(xué)專(zhuān)業(yè)(specialty)及所在年級(jí)(degree),同時(shí)還要增加幾種學(xué)生的行為方法:學(xué)習(xí)(study)與考試(exam)。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)類(lèi)的繼承關(guān)系第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)繼承機(jī)制下成員要素的行為繼承機(jī)制下,類(lèi)的成員要素的行為方式將會(huì)發(fā)生很大的變化。子類(lèi)可以定義與基類(lèi)相同的成員變量和成員方法,這種情況下,Java系統(tǒng)將面臨如何解決成員要素定義的二義性沖突現(xiàn)象。對(duì)于屬性而言,子類(lèi)在實(shí)現(xiàn)繼承父類(lèi)屬性的同時(shí),可以定義與父類(lèi)屬性相同名稱(chēng)與類(lèi)型的自身屬性,子類(lèi)在執(zhí)行自身方法時(shí),默認(rèn)情況下使用的是自身定義的屬性,從而將父類(lèi)的同名屬性暫時(shí)屏蔽掉。這種原則稱(chēng)為屬性隱藏。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)同樣,對(duì)于成員方法而言,子類(lèi)在繼承父類(lèi)方法的同時(shí),可以定義與父類(lèi)原型相同而方法的具體實(shí)現(xiàn)不同的自身的成員方法,子類(lèi)在自身方法中調(diào)用與父類(lèi)同名的方法時(shí),默認(rèn)情況下調(diào)用的是自身定義的方法,從而相當(dāng)于重新實(shí)現(xiàn)了父類(lèi)的方法功能。這一原則稱(chēng)為方法覆蓋(override)。例:InheritDemo.java第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)this和super(1)super用來(lái)實(shí)現(xiàn)對(duì)直接基類(lèi)成員要素的訪(fǎng)問(wèn),它代表當(dāng)前類(lèi)對(duì)象的直接父類(lèi),用于以下場(chǎng)合:調(diào)用直接父類(lèi)的構(gòu)造方法。訪(fǎng)問(wèn)直接父類(lèi)中被隱藏的成員變量。調(diào)用直接父類(lèi)中被隱藏的成員方法。(2)this代表當(dāng)前類(lèi)對(duì)象本身,用于以下場(chǎng)合:構(gòu)造方法重載時(shí)調(diào)用本類(lèi)的其它構(gòu)造方法。訪(fǎng)問(wèn)本類(lèi)對(duì)象的成員變量。調(diào)用本類(lèi)對(duì)象的成員方法。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)9:認(rèn)識(shí)面向?qū)ο蟮亩鄳B(tài)

【任務(wù)內(nèi)容】設(shè)計(jì)一個(gè)媒體播放器,該媒體播放器可以向后兼容任何格式的音頻媒體?!灸芰δ繕?biāo)】了解什么是面向?qū)ο蟮亩鄳B(tài)掌握如何運(yùn)用面向?qū)ο蟮亩鄳B(tài)特性學(xué)會(huì)用多態(tài)解決實(shí)際問(wèn)題【任務(wù)分析】

該案例要求設(shè)計(jì)一個(gè)功能強(qiáng)大的媒體播放器,能夠支持各種音頻格式的播放。我們知道不同音頻格式的文件數(shù)據(jù)編碼格式都不相同。要讓媒體播放器識(shí)別各種編碼格式的音頻文件是個(gè)比較棘手的任務(wù)。3.7多態(tài)第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)實(shí)例:ApplicationDemo3.java在上例中涉及到了對(duì)象類(lèi)型的轉(zhuǎn)型問(wèn)題,我們知道,基本數(shù)據(jù)類(lèi)型可以進(jìn)行類(lèi)型轉(zhuǎn)換,Java支持隱式(自動(dòng))及顯式(強(qiáng)制)兩種類(lèi)型轉(zhuǎn)換方式類(lèi)的對(duì)象也能夠進(jìn)行類(lèi)型轉(zhuǎn)換。類(lèi)型轉(zhuǎn)換(TypeCasting),也稱(chēng)為塑型

第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)對(duì)象類(lèi)型轉(zhuǎn)換遵循的原則333132對(duì)象類(lèi)型轉(zhuǎn)換必須在繼承的層次內(nèi)進(jìn)行,否則程序?qū)⒊霈F(xiàn)異常向上轉(zhuǎn)型是安全的CastingDemo.java向下轉(zhuǎn)型是危險(xiǎn)的

第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)對(duì)象類(lèi)型轉(zhuǎn)換遵循的原則(續(xù))353634對(duì)象能夠轉(zhuǎn)換為對(duì)象類(lèi)型實(shí)現(xiàn)的一個(gè)接口

對(duì)象多態(tài)------父類(lèi)引用指向子類(lèi)對(duì)象,此刻為了使用子類(lèi)特有的方法,必須在方法體內(nèi)將對(duì)象進(jìn)行向下轉(zhuǎn)型(強(qiáng)制轉(zhuǎn)型),之前要用instanceof測(cè)試在類(lèi)的繼承結(jié)構(gòu)中,處于相同層次的類(lèi)對(duì)象之間不能進(jìn)行轉(zhuǎn)換第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)10:初始化塊【任務(wù)內(nèi)容】將某個(gè)類(lèi)中部分成員初始化為默認(rèn)值,其它成員通

溫馨提示

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

評(píng)論

0/150

提交評(píng)論