【教学课件】第4章XML与Java物件导向程式设计.ppt
《【教学课件】第4章XML与Java物件导向程式设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第4章XML与Java物件导向程式设计.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 XML與與Java物件導向程式設計物件導向程式設計n4-1 XML的基礎 n4-2 類別與物件n4-3 類別的繼承n4-4 巢狀類別與匿名內層類別n4-5 常數類別與抽象類別n4-6 介面與套件n4-7 執行緒n4-8 集合物件與泛型4-1 XML的基礎的基礎 n4-1 XML的基礎 n4-1-2 XML文件的內容 n4-1-3 XML文件的組成元素 n4-1-4 XML文件的命名空間 4-1 XML的基礎的基礎nXML(Extensible Markup Language)是W3C建議規格的標示語言(Markup Language),可以讓使用者建立特殊用途的標示語言來建立所需的
2、XML文件(XML Documents),例如:定義Android應用程式資源的XML檔案。4-1-1 標示語言的基礎標示語言的基礎 說明說明nXML和HTML都是一種標示語言(Markup Language),標示(Markup)是一種方法讓資料擁有描述資料本身的資訊。例如:在讀書時,我們常常使用黃色螢光筆在書中的某些句子作上記號,因為這些句子是考前複習的重點。n當我們在書中的某些句子劃上黃色螢光線時,就是在標示資料,表示這些句子的資料很重要。簡單的說,我們使用黃色螢光筆替句子加上描述資訊,描述這些句子是考試重點。當我們在進行標示操作時,需要注意兩件事,如下所示:標示方法:定義如何標示是合法
3、標示,以此例是劃上黃色螢光線。標示的意義:標示代表的意義,以此例是代表考試重點。4-1-1 標示語言的基礎標示語言的基礎 範例範例n對於電子檔案的文件來說,標示文件資料就是使用標示語言,標示語言通常是使用標籤(Tags)的標示方法來標示資料,標籤名稱代表標示的意義,如下所示:陳會安n上述符號括起的是標籤,標示資料【陳會安】,標籤名稱author表示標示的資料是作者。當文件使用標示語言處理後,文件除了內容外,還包含描述資料的標籤。4-1-2 XML文件的文件的內內容容 定義定義內內容(容(Defining Content)n一般文件內容的主要目的是用來顯示或列印資料,但是XML文件的內容需要定義
4、其意義。例如:筆者姓名【陳會安】對於電腦來說只是一串字元組成的字串,其意義需視閱讀者而定,如下所示:在本書是作者。在Web網站是管理者。在公司是程式設計師。在家中是爸媽的兒子。n在XML可以使用、和標籤來定義文件的內容,如下所示:陳會安陳會安陳會安陳會安4-1-2 XML文件的文件的內內容容 結構資訊(結構資訊(Structured Information)1n當定義XML文件的內容後,事實上,我們就是在建立結構資訊,結構資訊除了告訴電腦顯示資料外,還包含資料本身的描述資料,稱為Metadata中繼資料。n例如:XML文件除了告訴應用程式筆者的姓名資料外,還提供結構資訊的作者author、網站
5、管理者webmaster、程式設計者programming和兒子son,這是描述姓名資料的Metadata資料。4-1-2 XML文件的文件的內內容容 結構資訊(結構資訊(Structured Information)2n結構資訊不僅可以提供XML元素的自我描述能力,我們還可以從結構資訊建立出資料的樹狀結構,例如:一本圖書的內容,如下所示:F1772 Android SDK床程式設計範例教本 陳會安 6204-1-3 XML文件的組成元素文件的組成元素 PInPI(Processing Instructions)允許XML文件包含傳送給應用程式的指令。PI的基本格式是以字串結束,如下所示:n上
6、述name是PI目標(PI Target)名稱,其中xml和XML是保留給XML使用,名稱是一個PI識別字,應用程式可以依照此名稱處理所需的PI,而不處理其他PI。例如:XML文件開頭宣告就是PI,這些資訊是告訴XML剖析器如何處理XML文件,如下所示:n上述PI並不屬於XML文件內容,version是XML版本,encoding是文件內容的編碼,Android是使用utf-8編碼。4-1-3 XML文件的組成元素文件的組成元素 元素元素(組成組成)nXML文件是由元素(Elements)組成,XML元素和標籤不同,其意義如下所示:標籤(Tags):XML能夠自己定義標籤,一個標籤是標示文件的
7、部分內容。例如:標籤、和等,標籤分為開始標籤和結尾標籤。元素(Elements):XML元素是整個文件的主要架構,元素是標籤加上其中的文字內容,或在元素中包含其他元素,基本上,元素是一個完整項目,包含標籤、屬性、開始標籤、標籤內的文字內容和結尾標籤。4-1-3 XML文件的組成元素文件的組成元素 元素元素(範例範例)nXML元素需要由開始和結尾標籤構成,在其中包含文字內容。例如:XML元素color,包含值#800F,如下所示:#800Fn在XML元素還允許包含其他子元素。例如:在resource元素擁有string-array子元素,string-array元素擁有item子元素,如下所示:
8、白色 黑色 藍色 紅色 黃色 綠色 4-1-3 XML文件的組成元素文件的組成元素 元素元素(空元素標籤空元素標籤)n如果在開始和結尾標籤之中沒有任何內容,稱為空元素標籤,其語法有兩種,如下所示:n上述兩種寫法都是空元素標籤,如果空元素標籤沒有結尾標籤,標籤需要使用/符號結束,例如:標籤,如下所示:4-1-3 XML文件的組成元素文件的組成元素 屬性屬性nXML屬性可以替XML元素新增一些額外的資訊,屬性是位在開始標籤的標籤名稱之後,這是一個屬性(Attributes)清單,每一個屬性擁有屬性名稱和值,屬性值需要使用引號括起,Android是使用雙引號,如下所示:#800Fn上述標籤擁有nam
9、e屬性,其值為background_color。4-1-4 XML文件的命名空間文件的命名空間 說明說明n因為XML元素和屬性名稱都是使用者自行命名,對於愈來愈多各種不同公司、組織或個人建立的XML文件,當XML文件引用其他XML文件的架構或元素時,就有可能產生名稱重複的問題。nXML命名空間(Namespace)可以解決與其他公司進行XML資料交換時,避免標籤或屬性名稱重複的問題。4-1-4 XML文件的命名空間文件的命名空間 XML標籤的完整名稱標籤的完整名稱nXML標籤和屬性的完整名稱需要加上命名空間的字首,如下所示:n上述標籤名稱在:符號前是命名空間的字首(Prefix),可以將它視為
10、是代替命名空間字串URI(Uniform Resource Identifier)的一個縮寫。n在:符號之後才是我們命名的標籤名稱。換句話說,同一份XML文件,就算之後的標籤名稱相同,只要命名空間不同,XML剖析器一樣可以分辨出是屬於不同的標籤,如下所示:4-1-4 XML文件的命名空間文件的命名空間 在在Android的的XML檔使用的命名空間檔使用的命名空間n在Android專案定義資源是使用XML文件內容的檔案,其根元素需要宣告命名空間來識別是Android系統的屬性,例如:宣告使用介面的XML檔activity_main.xml,其內容如下所示:4-2 類別與物件類別與物件 n4-2-
11、1 物件的基礎 n4-2-2 Java的類別與物件 n4-2-3 過載方法與串流呼叫方法 n4-2-4 靜態成員與靜態初始程式區塊 4-2 類別與物件類別與物件n物件導向程式設計(Object-oriented Programming,OOP)是一種更符合人性化的程式設計方法,因為我們本來就生活在一個物件的世界,思考模式也導循著物件導向模式。n物件導向技術有三個重要觀念:物件(Object)、訊息(Message)和類別(Class),其簡單說明如下所示:物件:提供資料和方法的封裝。訊息:物件之間的溝通方式,可以建立互動和支援過過載和多形觀念。類別:物件的分類,可以實作類別架構的繼承。4-2-
12、1 物件的基礎物件的基礎 圖例圖例n物件(Objects)是物件導向技術的關鍵,以程式角度來說,物件是資料與相關程序與函數結合在一起的組合體,資料就是變數;程序和函數在Java語言稱為方法(Methods),如下圖所示:4-2-1 物件的基礎物件的基礎 特性特性n在現實生活中的物件範例隨處可見,例如:車子、電視、書桌和貓狗等,這些物件擁有三種特性,如下所示:狀態(State):物件擁有屬性(Attributes、Fields或Properties)的目前狀態值,屬性是儲存物件的狀態,可以簡單的只是一個布林值變數,也可能是另一個物件,例如:車子的車型、排氣量、色彩和自排或手排等屬性。行為(Beh
13、avior):行為是物件可見部分提供的服務,可以作什麼事,例如:車子可以發動、停車、加速和換擋等。識別字(Identity):識別字是用來識別不同的物件,每一個物件都擁有獨一無二的識別字,Java語言是使用物件參考(Reference)作為物件的識別字,簡單的說,就是物件實際儲存的記憶體位址,即物件變數值。4-2-2 Java的類別與物件的類別與物件 說明說明nJava類別宣告是物件的原型宣告,對於物件原型宣告的類別可以分為2個部分,如下所示:成員資料(Data Member):物件的資料部分,屬於基本資料型態的變數、常數或其他物件的成員變數(Member Variables)。成員方法(Me
14、thod Member):物件的操作部分,即程式與函數,也就是Java方法。4-2-2 Java的類別與物件的類別與物件 宣告類別宣告類別1class Customer private String name;private String address;public int age;/建構子 public Customer(String name,String a)this.name=name;address=a;4-2-2 Java的類別與物件的類別與物件 宣告類別宣告類別2 /方法:傳回姓名 public String getName()return name;/方法:傳回月份 publ
15、ic String getAddress()return address;/方法:傳回郵寄資料 public String getLabelData()String str=;str+=n姓名:+name;.return str;4-2-2 Java的類別與物件的類別與物件 存取修飾子存取修飾子nprivate修飾子:成員變數或成員方法只能在類別本身呼叫或存取。npublic修飾子:類別建立物件的對外使用介面,可以讓其他類別的程式碼呼叫物件宣告成public的方法或存取public的成員變數。nprotected修飾子:宣告的成員方法或變數可以在同一類別、其子類別或同一個套件存取,存取權限介於
16、public和private之間。4-2-2 Java的類別與物件的類別與物件 建構子建構子n建構子是物件的初始方法,這是與Java類別同名的方法,其程式碼的撰寫方式和其他成員方法相同,類別是呼叫此方法來建立物件和指定初值。類別建構子有一些特點,如下所示:建構子與類別同名,例如:類別Customer的建構子方法是Customer()。建構子沒有傳回值,不過也不用指明void。建構子支援方法的過載(Overload),簡單的說,就是擁有多個同名的建構子,只是擁有不同參數型態和參數個數。4-2-2 Java的類別與物件的類別與物件 thisn如果在Customer()建構子的參數與成員變數同名,我
17、們需要使用this關鍵字指明是類別的成員變數,而不是參數,如下所示:this.name=name;4-2-2 Java的類別與物件的類別與物件 宣告物件變數宣告物件變數n在Java程式碼宣告類別後,就可以將類別當作資料型態,使用資料型態宣告物件變數,如下所示:Customer joe;n程式碼宣告Customer類別的變數joe,稱為物件變數,這是因為變數內容是參考的指標,這個指標就是物件的識別字(Identity),目前只有宣告物件變數,並沒有真正建立物件。4-2-2 Java的類別與物件的類別與物件 建立物件實例建立物件實例n在Java語言建立物件是使用new運算子,它可以依照類別的範本來
18、建立物件,傳回指向此物件的參考指標,這個過程稱為實體化(Instantiation),將類別實體化成物件實例,如下所示:joe=new Customer(陳會安,新北巿);n程式碼建立Customer類別的物件,物件變數joe的值不是物件本身,而是參考到此物件的指標。4-2-2 Java的類別與物件的類別與物件存取物件變數與方法存取物件變數與方法n在建立物件後,我們就可以存取物件的變數與呼叫方法,以Customer類別建立的joe物件為例,如下所示:joe.age=37;str+=joe.getLabelData();n上述物件變數joe使用.運算子存取物件變數與呼叫方法,在其他類別只能存取宣
19、告成public修飾子的成員變數和方法,即age成員變數,而不能存取name和address變數(只能在類別宣告內存取)。4-2-3 過載方法與串流呼叫方法過載方法與串流呼叫方法 過載過載n物件是依接收的訊息(Message)來執行不同的方法,換句話說,只需訊息有差異足以讓物件辨識,就算方法名稱相同,也一樣可以讓類別或物件執行正確的方法。n例如:在Counter類別的2個同名方法count(),可以將計數加上參數值,如下所示:public Counter count(double num)public Counter count(int num)n2個方法雖然名稱相同,但是參數的資料型態不同,
20、足以使用資料型態來判斷是2個不同方法。接著是參數個數不同的總和方法sum(),如下所示:int sum(int a,int b)int sum(int a,int b,int c)4-2-3 過載方法與串流呼叫方法過載方法與串流呼叫方法 串流呼叫串流呼叫n因為前述2個count()過載方法的傳回值都是Counter物件,如下所示:public Counter count(double num)count+=num;return this;n方法傳回值是this關鍵字,即Counter物件本身,我們可以直接使用串流呼叫方法(Method Chaining),如同項鍊的一串珠子一般依序呼叫各方法,
21、如下所示:int count=c.count(2).count(3.0).getCount();4-2-4 靜態成員與靜態初始程式區塊靜態成員與靜態初始程式區塊 類別變數和方法類別變數和方法n類別變數和方法是使用static修飾子進行宣告,屬於類別的靜態成員,所有物件都是使用同一份類別變數和呼叫同一個類別方法,例如:Student類別擁有類別變數teacherNo、count和類別方法getStudentCount(),如下所示:class Student public static int teacherNo=500;private static int count;public stati
22、c int getStudentCount()return count;.4-2-4 靜態成員與靜態初始程式區塊靜態成員與靜態初始程式區塊 靜態初始程式區塊靜態初始程式區塊static n在靜態初始程式區塊的程式碼是在類別載入JVM後,進行類別變數初始化之前執行,一般來說,只有當類別需要使用一些非Java函數庫的類別時才會使用,因為只有當類別第一次被使用到時,才會執行靜態初始程式區塊的程式碼,可以避免重複執行這些程式碼,並且將實作細節和外界隔離開,如下所示:public class a static 4-3 類別的繼承類別的繼承 n4-3-1 類別架構-繼承 n4-3-2 實作類別的繼承 4-
23、3 類別的繼承類別的繼承n繼承(Inheritance)是物件導向程式設計的重要觀念,繼承是宣告的類別繼承現存類別的部分或全部的成員資料和方法、新增額外的成員資料和方法或覆寫和隱藏繼承類別的方法或資料。n簡單的說,繼承就是擴充現存類別的功能,可以讓我們不用重頭建立類別宣告,只需找到可用的現成類別,然後繼承它來擴充或修改成符合我們需求的類別。本節Android Studio專案是Ch4_3,內含Vehicle.java和Car.java二個類別檔。4-3-1 類別架構類別架構-繼承繼承1n類別的繼承關係可以讓我們建立類別架構,例如:類別Student是繼承自類別Person,其類別架構如下圖所示
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 XML Java 物件 导向 程式 设计
限制150内