自由,平等,開源,分享

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            2 Posts :: 61 Stories :: 3 Comments :: 0 Trackbacks

            在一個(gè)面向?qū)ο笙到y(tǒng)中:

              對(duì)象是對(duì)現(xiàn)實(shí)世界中事物的抽象,是 Java 程序的基本封裝單位,是類的實(shí)例;
              類是對(duì)象的抽象,是數(shù)據(jù)和操作的封裝體;
              屬性是事物靜態(tài)特征的抽象,在程序中用數(shù)據(jù)成員加以描述;
              操作是事物動(dòng)態(tài)特征的抽象,在程序中用成員方法來實(shí)現(xiàn)。

            把客觀世界中的事物映射到面向?qū)ο蟮某绦蛟O(shè)計(jì)中就是對(duì)象。
            對(duì)象是面向?qū)ο蟪绦蛟O(shè)計(jì)中用來描述客觀事物的程序單位。
            客觀世界中的許多對(duì)象,無論其屬性還是其行為常常有許多共同性,抽象出這些對(duì)象的共同性便可以構(gòu)成類。
            類是對(duì)象的抽象和歸納,對(duì)象是類的實(shí)例。

          1. 抽象原則

            抽象(Abstraction)就是從被研究對(duì)象中舍棄個(gè)別的、非本質(zhì)的、或與研究主旨無關(guān)的次要特征,而抽取與研究工作有關(guān)的實(shí)質(zhì)性內(nèi)容加以考察,形成對(duì)所研究問題正確的、簡(jiǎn)明扼要的認(rèn)識(shí)。

          1.1 過程抽象

            軟件開發(fā)者可以把任何一個(gè)完成確定功能的操作序列都看作是一個(gè)單一的實(shí)體,盡管它實(shí)際上可能是由一系列更低級(jí)的操作完成的。
            過程抽象可以把復(fù)雜的功能一層層分解為更簡(jiǎn)單的子模塊,這樣開發(fā)者可在不同層次上考慮問題,如在高層上就不必關(guān)心低層的細(xì)節(jié)問題。

            面向過程的程序設(shè)計(jì)采用的是過程抽象方法。

            過程抽象有利于控制、降低整個(gè)程序的復(fù)雜度,但是,這種方法允許在全系統(tǒng)的范圍內(nèi)進(jìn)行功能的描述,本身自由度大,難于規(guī)范化和標(biāo)準(zhǔn)化,不易保證軟件的質(zhì)量,而且操作起來也有一定難度。

          1.2 數(shù)據(jù)抽象

            數(shù)據(jù)抽象把系統(tǒng)中需要處理的數(shù)據(jù)和施加于這些數(shù)據(jù)之上的操作結(jié)合在一起,根據(jù)功能、性質(zhì)、作用等因素抽象成不同的抽象數(shù)據(jù)類型。
            每個(gè)抽象數(shù)據(jù)類型既包含了數(shù)據(jù),也包含了針對(duì)這些數(shù)據(jù)的授權(quán)操作,并限定數(shù)據(jù)的值只能由這些操作來觀察和修改。
            因此,數(shù)據(jù)抽象是相對(duì)于過程抽象更為嚴(yán)格、更為合理的抽象方法。

            面向?qū)ο蟪绦蛟O(shè)計(jì)就是采用數(shù)據(jù)抽象這一方法來構(gòu)建程序中的類和對(duì)象的。
            它強(qiáng)調(diào)把數(shù)據(jù)和操作結(jié)合為一個(gè)不可分的系統(tǒng)單位 - 對(duì)象,對(duì)象的外部只需要知道這個(gè)對(duì)象能做什么,而不必知道它是如何做的。

          2. 對(duì)象

            把客觀世界這一事實(shí)映射到面向?qū)ο蟮某绦蛟O(shè)計(jì)中,則把問題域中的事物抽象成了對(duì)象(Object),事物的靜態(tài)特征(屬性)用一組數(shù)據(jù)來描述,事物的動(dòng)態(tài)特征(行為)則用一組方法來刻畫。

            對(duì)象具有以下特征:

              對(duì)象標(biāo)識(shí):即對(duì)象的名字,是用戶和系統(tǒng)識(shí)別它的唯一標(biāo)志。對(duì)象標(biāo)識(shí)有“外部標(biāo)識(shí)”和“內(nèi)部標(biāo)識(shí)”之分。外部標(biāo)識(shí)供對(duì)象的定義者或使用者用,內(nèi)部標(biāo)識(shí)供系統(tǒng)內(nèi)部唯一地識(shí)別每一個(gè)對(duì)象。在計(jì)算機(jī)世界中,可以把對(duì)象看成計(jì)算機(jī)存儲(chǔ)器中一塊可標(biāo)識(shí)的區(qū)域,它能保存固定或可變數(shù)目的數(shù)據(jù)(或數(shù)據(jù)的集合)。

              屬性:即一組數(shù)據(jù),用來描述對(duì)象的靜態(tài)特征。在 Java 程序中,把這一組數(shù)據(jù)稱為數(shù)據(jù)成員。

              方法:也稱為服務(wù)或操作,它是對(duì)象動(dòng)態(tài)特征(行為)的描述。每一個(gè)方法確定對(duì)象的一種行為或功能。在 Java 程序中稱為成員方法。

            在 Java 程序中,類是創(chuàng)建對(duì)象的模板,對(duì)象是類的實(shí)例,任何一個(gè)對(duì)象都是隸屬于某個(gè)類的。
            Java 程序設(shè)計(jì)是從類的設(shè)計(jì)開始的。

          3. 類

            在面向?qū)ο蟮木幊陶Z言中,類是一個(gè)獨(dú)立的程序單位,是具有相同屬性和方法的一組對(duì)象的集合。
            類的概念使我們能對(duì)屬于該類的全部對(duì)象進(jìn)行統(tǒng)一的描述。

            在定義對(duì)象之前應(yīng)先定義類。

            描述一個(gè)類需要指明下述三個(gè)方面內(nèi)容:

              類標(biāo)識(shí):類的一個(gè)有別于其他類的名字。

              屬性說明:用來描述相同對(duì)象的靜態(tài)特征。

              方法說明:用來描述相同對(duì)象的動(dòng)態(tài)特征。

          4. 類與對(duì)象的關(guān)系

            類給出了屬于該類的全部對(duì)象的抽象定義,而對(duì)象則是符合這種定義的一個(gè)實(shí)體。
            可以把類與對(duì)象之間的關(guān)系看成是抽象與具體的關(guān)系。
            在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象被稱作類的一個(gè)實(shí)例(Instance),而類是對(duì)象的模板(Template)。
            類是多個(gè)實(shí)例的綜合抽象,而實(shí)例又是類的個(gè)體實(shí)物。

            由于對(duì)象是類的實(shí)例,因此在定義對(duì)象之前應(yīng)先定義類。在定義了類之后,才可以在類的基礎(chǔ)上創(chuàng)建對(duì)象。

          5. 定義類的一般格式

            進(jìn)行 Java 程序設(shè)計(jì),實(shí)際上就是定義類的過程。
            一個(gè) Java 源程序文件往往是由許多個(gè)類組成的。

            從用戶的角度看,Java 源程序中的類分為兩種:

              系統(tǒng)定義的類:即 Java 類庫,它是系統(tǒng)定義好的類。Java 語言由語法規(guī)則和類庫兩部分組成,語法規(guī)則確定 Java 程序的書寫規(guī)范;類庫則提供了 Java 程序與運(yùn)行它的系統(tǒng)軟件(Java 虛擬機(jī))之間的接口。

              用戶自定義類:系統(tǒng)定義的類雖然實(shí)現(xiàn)了許多常見的功能,但是用戶程序仍然需要針對(duì)特定問題的特定邏輯來定義自己的類。

            在 Java 程序中,用戶自定義類的一般格式如下:

          class 類名
          {
            數(shù)據(jù)成員
            成員方法
          }

              類的結(jié)構(gòu)是由類說明和類體兩部分組成的。
              類的說明部分由關(guān)鍵字 class 與類名組成,類名的命名遵循 Java 標(biāo)識(shí)符的定義規(guī)則。
              類體是類聲明中花括號(hào)所包括的全部?jī)?nèi)容,它又是由數(shù)據(jù)成員(屬性)和成員方法(方法)兩部分組成。
              數(shù)據(jù)成員描述對(duì)象的屬性;成員方法則刻畫對(duì)象的行為或動(dòng)作,每一個(gè)成員方法確定一個(gè)功能或操作。

          6. Java 類庫

            Java 的類庫是系統(tǒng)提供的已實(shí)現(xiàn)的標(biāo)準(zhǔn)類的集合,是 Java 編程的 API(Application Program Interface),它可以幫助開發(fā)者方便、快捷地開發(fā) Java 程序。
            Java 基礎(chǔ)類庫(JFC)是由 Sun 公司提供的,也有少量則是由其他軟件開發(fā)商以商品形式提供的。

            學(xué)習(xí) Java 語言程序設(shè)計(jì),一是要學(xué)習(xí)其語法規(guī)則中的基本數(shù)據(jù)類型、基本運(yùn)算和基本語句等,這是編寫 Java 程序的基本功;二是要學(xué)習(xí)使用類庫,這是提高編程效率和質(zhì)量的必由之路,甚至從一定程度上來說,能否熟練自如地掌握盡可能多的 Java 類庫,決定了一個(gè) Java 程序員編程能力的高低。

            在 Java 系統(tǒng)中,系統(tǒng)定義好的類根據(jù)實(shí)現(xiàn)的功能不同,可以劃分成不同的集合。每個(gè)集合稱為一個(gè)包,所有包稱為類庫。根據(jù)功能的不同,Java 類庫的每個(gè)包中都有若干個(gè)具有特定功能和相互關(guān)系的類和接口。

            使用類庫中系統(tǒng)定義好的類有三種方式:一是直接使用系統(tǒng)類;二是繼承系統(tǒng)類,在用戶程序里創(chuàng)建系統(tǒng)類的子類;三是創(chuàng)建系統(tǒng)類的對(duì)象。
            無論采用哪種方式,使用系統(tǒng)類的前提條件是這個(gè)系統(tǒng)類應(yīng)該是用戶程序可見的類。為此用戶程序需要用 import 語句引入它所用到的系統(tǒng)類或系統(tǒng)類所在的包。

            類庫包中的程序都是字節(jié)碼形式的程序,利用 import 語句將一個(gè)包引入到程序里,就相當(dāng)于在編譯過程中將該包中的所有系統(tǒng)類的字節(jié)碼加入到用戶的 Java 程序中,這樣用戶的 Java 程序就可以使用這些系統(tǒng)類及其中的各種功能了。

            Java 程序常用的包:

            java.lang 包

              Java 語言的核心類庫,包含了運(yùn)行 Java 程序必不可少的系統(tǒng)類,如基本數(shù)據(jù)類型、基本數(shù)學(xué)函數(shù)、字符串處理、線程、異常處理類等。
              每個(gè) Java 程序運(yùn)行時(shí),系統(tǒng)都會(huì)自動(dòng)地引入 java.lang 包,所以這個(gè)包的加載是缺省的。

            java.io 包

              包含了實(shí)現(xiàn) Java 程序與操作系統(tǒng)、用戶界面以及其他 Java 程序之間進(jìn)行數(shù)據(jù)交換所使用的類,如基本輸入/輸出流、文件輸入/輸出流、過濾輸入/輸出流、管道輸入/輸出流、隨機(jī)輸入/輸出流等。
              凡是需要完成與操作系統(tǒng)有關(guān)的較底層的輸入/輸出操作的 Java 程序,都要用到 java.io 包。

            java.awt 包

              它是 Java 語言用來構(gòu)建圖形用戶界面(GUI)的類庫,包括了許多界面元素和資源。
              java.awt 包主要在三個(gè)方面提供界面設(shè)計(jì)支持:一是低級(jí)繪圖操作;二是圖形界面組件和布局管理;三是界面用戶交互控制和事件響應(yīng)。

            java.awt.event 包

              它是對(duì) JDK 1.0 版本中原有的 Event 類的一個(gè)擴(kuò)充,它使得程序可以用不同的方式來處理不同類型的事件,并使每個(gè)圖形界面的元素本身可以擁有處理它上面事件的能力。

            java.awt.image 包

              用來處理和操作來自于網(wǎng)上的圖片的 Java 工具類庫。

            java.applet 包

              用來實(shí)現(xiàn)運(yùn)行于 Internet 瀏覽器中的 Java Applet 的工具類庫,它僅包含少量幾個(gè)接口和一個(gè)非常有用的類 java.applet.Applet。

            java.net 包

              它是 Java 語言用來實(shí)現(xiàn)網(wǎng)絡(luò)功能的類庫。
              目前已經(jīng)實(shí)現(xiàn)的 Java 網(wǎng)絡(luò)功能主要有:底層網(wǎng)絡(luò)通信;編寫用戶自己的 Telnet、FTP、郵件服務(wù)等實(shí)現(xiàn)網(wǎng)上通信的類;用于訪問 Internet 上資源和進(jìn)行 CGI 網(wǎng)關(guān)調(diào)式的類。
              利用 java.net 包中的類,開發(fā)者可以編寫自己的具有網(wǎng)絡(luò)功能的程序。

            java.rmi 包、java.rmi.registry 包和 java.rmi.server 包

              這三個(gè)包用來實(shí)現(xiàn) RMI(Remote Method Invocation,遠(yuǎn)程方法調(diào)用)功能。
              利用 RMI 功能,用戶程序可以在遠(yuǎn)程計(jì)算機(jī)(服務(wù)器)上創(chuàng)建對(duì)象,并在本地計(jì)算機(jī)(客戶機(jī))上使用這個(gè)對(duì)象。

            java.util 包

              包括了 Java 語言中的一些低級(jí)的實(shí)用工具,如時(shí)間的處理、變長(zhǎng)數(shù)組的處理、棧和哈希(散列)表的處理。

            java.sql 包

              它是實(shí)現(xiàn) JDBC(Java Database Connection)的類庫。
              利用這個(gè)包可以使 Java 程序具有訪問不同種類的數(shù)據(jù)庫的功能。
              只要安裝了合適的驅(qū)動(dòng)程序,同一個(gè) Java 程序不需要修改就可以存取、修改這些不同的數(shù)據(jù)庫中的數(shù)據(jù)。
              JDBC 的這種功能,再加上 Java 程序本身具有的平臺(tái)無關(guān)性,大大拓寬了 Java 程序的應(yīng)用范圍,特別是商業(yè)應(yīng)用的使用領(lǐng)域。

            java.security 包、java.security.acl 包、java.security.interfaces 包

              這三個(gè)包提供更完善的 Java 程序安全性控制和管理,利用它們可以對(duì) Java 程序加密,也可以把特定的 Java Applet 標(biāo)記為“可信賴的”,使它能夠具有與 Java Application 相近的安全權(quán)限。

            java.awt.peer 包

              它是實(shí)現(xiàn) Java 語言跨平臺(tái)特性的手段之一。
              其作用是將不同的平臺(tái)包裹、隱藏起來,使這些平臺(tái)在用戶程序面前呈現(xiàn)基本相同的面貌。

            java.util.zip 包

              用來實(shí)現(xiàn)文件壓縮功能。

            java.awt.datatransfer 包

              提供了處理數(shù)據(jù)傳輸?shù)墓ぞ哳悾缂糍N版、字符串發(fā)送器等。

            java.lang.reflect 包

              提供了用于反射對(duì)象的工具,反射允許程序監(jiān)視一個(gè)正在運(yùn)行的對(duì)象并獲得它的構(gòu)造函數(shù)、方法和屬性。

            java.corba 包、java.corba.orb 包

              這兩個(gè)包將 CORBA(Common Object Request Broker Architecture,一種標(biāo)準(zhǔn)化接口體系)嵌入到 Java 環(huán)境中,使得 Java 程序可以存取、調(diào)用 CORBA 對(duì)象,并與 CORBA 對(duì)象共同工作。
              這樣,Java 程序就可以方便、動(dòng)態(tài)地使用已經(jīng)存在的由 Java 或其他面向?qū)ο笳Z言開發(fā)的部件,簡(jiǎn)化軟件的開發(fā)。

          7. 創(chuàng)建對(duì)象

          7.1 聲明對(duì)象

            聲明對(duì)象就是確定對(duì)象的名稱,并指明該對(duì)象所屬的類。
            聲明格式如下:

          類名 對(duì)象名表;

              類名是指對(duì)象所屬類的名字,它是在聲明類時(shí)定義的;
              對(duì)象名表是指一個(gè)或多個(gè)對(duì)象名,若為多個(gè)對(duì)象名時(shí),用逗號(hào)進(jìn)行分隔。

            聲明對(duì)象的作用是為將來的編譯過程提供必要的信息。

          7.2 建立對(duì)象

            建立對(duì)象,實(shí)際上就是用 Java 提供的 new 關(guān)鍵字為對(duì)象分配存儲(chǔ)空間。
            在聲明對(duì)象時(shí),只確定了對(duì)象的名稱和它所屬的類,并沒有為對(duì)象分配存儲(chǔ)空間,此時(shí)對(duì)象還不是類的實(shí)例。
            只有通過建立對(duì)象這一步,才為對(duì)象分配內(nèi)存,使該對(duì)象成為類的實(shí)例。
            建立對(duì)象的格式如下:

          對(duì)象名=new 構(gòu)造方法();

            也可以在聲明對(duì)象的同時(shí)建立對(duì)象,這稱為創(chuàng)建一個(gè)對(duì)象,其格式如下:

          類名 對(duì)象名=new 構(gòu)造方法();

            關(guān)鍵字 new 的作用是建立對(duì)象,為對(duì)象分配存儲(chǔ)空間。

          7.3 初始化對(duì)象

            初始化對(duì)象是指由一個(gè)類生成對(duì)象時(shí),為這個(gè)對(duì)象確定初始狀態(tài),即為它的數(shù)據(jù)成員賦初始值的過程,當(dāng)然,它主要由一些賦值語句組成。
            由于初始化操作是最常用的操作之一,為簡(jiǎn)化這一過程,Java 還提供了專用的方法來完成它,這個(gè)方法被稱為構(gòu)造方法。

          8 使用對(duì)象

            一個(gè)對(duì)象可以有許多屬性和多個(gè)方法。
            在面向?qū)ο蟮南到y(tǒng)中,一個(gè)對(duì)象的屬性和方法被緊密地結(jié)合成一個(gè)整體,二者是不可分割的,并且限定一個(gè)對(duì)象的屬性值只能由這個(gè)對(duì)象或它的方法來讀取和修改。
            當(dāng)一個(gè)對(duì)象被創(chuàng)建后,這個(gè)對(duì)象就擁有了自己的數(shù)據(jù)成員和成員方法,我們可以通過引用對(duì)象的成員來使用對(duì)象。

            對(duì)象的數(shù)據(jù)成員的引用方式如下:

          對(duì)象名.數(shù)據(jù)成員名;

            對(duì)象的成員方法的引用方式如下:

          對(duì)象名.成員方法名(參數(shù)表);

          9 對(duì)象的初始化與構(gòu)造方法

            構(gòu)造方法是一個(gè)類的方法中方法名與類名相同的類方法。
            每當(dāng)使用 new 關(guān)鍵字創(chuàng)建一個(gè)對(duì)象,為新建對(duì)象開辟了內(nèi)存空間之后,Java 系統(tǒng)將自動(dòng)調(diào)用構(gòu)造方法初始化這個(gè)新建對(duì)象。

            構(gòu)造方法是類的一種特殊方法,它的特殊性主要體現(xiàn)在以下幾個(gè)方面:

              構(gòu)造方法的方法名與類名相同。
              構(gòu)造方法是類的方法,它能夠簡(jiǎn)化對(duì)象數(shù)據(jù)成員的初始化操作。
              不能對(duì)構(gòu)造方法指定類型,它有隱含的返回值,該值由系統(tǒng)內(nèi)部使用。
              構(gòu)造方法一般不能由編程人員顯式地直接調(diào)用,在創(chuàng)建一個(gè)類的對(duì)象的同時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用該類的構(gòu)造方法將新對(duì)象初始化。
              構(gòu)造方法可以重載,即可定義多個(gè)具有不同參數(shù)的構(gòu)造方法。
              構(gòu)造方法可以繼承,即子類可以繼承父類的構(gòu)造方法。
              如果用戶在一個(gè)自定義類中未定義該類的構(gòu)造方法,系統(tǒng)將為這個(gè)類定義一個(gè)缺省的空構(gòu)造方法。這個(gè)空構(gòu)造方法沒有形式參數(shù),也沒有具體語句,不能完成任何操作。但在創(chuàng)建一個(gè)類的新對(duì)象時(shí),系統(tǒng)要調(diào)用該類的構(gòu)造方法將新對(duì)象初始化。

            特殊情況下,構(gòu)造方法中的參數(shù)名可能與數(shù)據(jù)成員名相同,此時(shí),在構(gòu)造方法中可用下面兩種形式之一來區(qū)分?jǐn)?shù)據(jù)成員名與參數(shù)名:

              默認(rèn)法。當(dāng)構(gòu)造方法的參數(shù)名與數(shù)據(jù)成員名相同時(shí),將賦值號(hào)左邊的標(biāo)識(shí)符默認(rèn)為對(duì)象的數(shù)據(jù)成員名,而賦值號(hào)右邊的標(biāo)識(shí)符為參數(shù)。
              使用代表本類對(duì)象的關(guān)鍵字 this 指出數(shù)據(jù)成員名之所在。

          posted on 2008-04-06 13:10 龍震 閱讀(2798) 評(píng)論(0)  編輯  收藏 所屬分類: 概念,術(shù)語,基礎(chǔ),理解
          主站蜘蛛池模板: 启东市| 彩票| 桃源县| SHOW| 德令哈市| 遂溪县| 玛沁县| 花莲市| 洛阳市| 阳东县| 天全县| 墨竹工卡县| 荃湾区| 塘沽区| 庄河市| 明星| 海安县| 新绛县| 阳泉市| 岢岚县| 洛浦县| 离岛区| 鄂托克旗| 体育| 竹山县| 甘南县| 保山市| 抚州市| 南宫市| 名山县| 抚顺市| 广东省| 涞源县| 武平县| 安塞县| 新巴尔虎右旗| 北安市| 新昌县| 江陵县| 花垣县| 崇州市|