版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
面向?qū)ο蠡A(chǔ)2023/2/5面向?qū)ο髥栴}求解的提出面向機(jī)器的程序:為特定的硬件系統(tǒng)專門設(shè)計(jì)。效率高但可讀性和可移植性差。面向過程的程序:用計(jì)算機(jī)能理解的邏輯來描述和表達(dá)待解決的問題及具體的解決過程。其核心是數(shù)據(jù)結(jié)構(gòu)+算法。如C,F(xiàn)ORTRAN等??梢跃_完備地描述具體的求解過程但無法清楚表述含多個(gè)相互關(guān)聯(lián)的過程的復(fù)雜系統(tǒng)。面向?qū)ο蟮某绦颍河糜?jì)算機(jī)邏輯來描述系統(tǒng)本身,包括系統(tǒng)組成、系統(tǒng)各種可能狀態(tài)、系統(tǒng)中可能產(chǎn)生的各種過程及過程引起的系統(tǒng)狀態(tài)切換。其核心是對(duì)象+消息。如:Smalltalk、Lisp,Clascal,ObjectPascal,C++、Java2什么是對(duì)象3MethodsVariable
圖顯示了對(duì)象的變量組成了圓心部分。方法處在變量的四周并且在程序中從其它對(duì)象隱藏了對(duì)象的核心。用保護(hù)方法的方法來包裝對(duì)象的變量稱為封裝。這個(gè)對(duì)象圖就是對(duì)象理想的表示法,也是面向?qū)ο笙到y(tǒng)設(shè)計(jì)者努力的最后目標(biāo).然而這并不是全部的內(nèi)容。通常,出于某種現(xiàn)實(shí)的理由,對(duì)象可能暴露它的一些變量或者隱藏一些方法。什么是對(duì)象
在JAVA中訪問變量和方法可以轉(zhuǎn)換為控制訪問類的成員函數(shù)。封裝相關(guān)的變量和方法到一個(gè)簡(jiǎn)潔的軟件集是一個(gè)簡(jiǎn)單而且強(qiáng)有力的方法,它為軟件開發(fā)者提供了兩個(gè)主要好處:模塊性:對(duì)象的源代碼可以獨(dú)立于其它的對(duì)象源代碼來進(jìn)行編寫和維護(hù)。同樣,對(duì)象可以很容易地在系統(tǒng)中傳遞。你可以將你的對(duì)象給其它的對(duì)象,它仍然可以正常工作。信息隱藏:一個(gè)對(duì)象如果有一個(gè)公共的界面,那么其它的對(duì)象就可以與之進(jìn)行通訊。這個(gè)對(duì)象可以維護(hù)私人的信息和方法,它可以在任何時(shí)候被改變而不影響依耐于它的其它對(duì)象。.4什么是消息.5
單一的一個(gè)對(duì)象通常不是很有用的。相反,一個(gè)對(duì)象通常是一個(gè)包含了許多其它對(duì)象的更大的程序或者應(yīng)用程序。通過這些對(duì)象的交互作用,程序員可以獲得高階的功能以及更為復(fù)雜的行為.軟件對(duì)象與其它對(duì)象進(jìn)行交互與通訊是利用發(fā)送給其它對(duì)象來實(shí)現(xiàn)的。當(dāng)對(duì)象A想對(duì)象B來執(zhí)行一個(gè)B中的方法,對(duì)象A就會(huì)消息給對(duì)象B。如圖所示
對(duì)象—現(xiàn)實(shí)生活中對(duì)象:一個(gè)人、一個(gè)物、一件事等
對(duì)象是認(rèn)識(shí)世界的基本單元。整個(gè)世界由形形色色的對(duì)象構(gòu)成。對(duì)象是現(xiàn)實(shí)世界中的一個(gè)實(shí)體,其特性是:每一個(gè)對(duì)象必須有一個(gè)名字以區(qū)別其它對(duì)象;用屬性(或狀態(tài))來描述它的某些特征;有一組操作,每一個(gè)操作決定對(duì)象的一種行為。.6.7舉例(2)
教師李志宇是一個(gè)對(duì)象:對(duì)象名:李志宇對(duì)象的屬性:
年齡:28
性別:男學(xué)歷:博士職稱:教授專業(yè):計(jì)算機(jī)科學(xué)理論對(duì)象的操作:
說自己的年齡說自己的專業(yè)講課研究對(duì)象的關(guān)系包含:對(duì)象A是對(duì)象B的屬性時(shí),稱對(duì)象B包含對(duì)象A。如顯象管對(duì)象和電視機(jī)對(duì)象。內(nèi)存空間上,被包含的對(duì)象將被保存在包含它的對(duì)象內(nèi)部。繼承:對(duì)象A是對(duì)象B的特例時(shí),稱對(duì)象A繼承了對(duì)象B。如電視機(jī)對(duì)象和彩色電視機(jī)對(duì)象。關(guān)聯(lián):對(duì)象A的引用是對(duì)象B的屬性時(shí),稱對(duì)象A和對(duì)象B之間是關(guān)聯(lián)關(guān)系。如電視機(jī)對(duì)象和廠商對(duì)象。.8優(yōu)點(diǎn).9
封裝性
對(duì)象的封裝性徹底消除了傳統(tǒng)結(jié)構(gòu)方法中數(shù)據(jù)與操作分離所帶來的種種問題,降低了維護(hù)數(shù)據(jù)與操作之間的相容性的負(fù)擔(dān)。而且把對(duì)象的私有數(shù)據(jù)和公共數(shù)據(jù)分離開,保護(hù)了私有數(shù)據(jù),減少了模塊間可能產(chǎn)生的干擾,達(dá)到降低程序復(fù)雜性、提高可控性的目的,提高了程序的可重用性和可維護(hù)性。優(yōu)點(diǎn).10
封裝性
自治性
對(duì)象作為獨(dú)立的整體具有良好的自治性,即它可以通過自身定義的操作來管理自己。一個(gè)對(duì)象的操作可以完成兩類功能:一是修改自身的狀態(tài);二是向外界發(fā)布消息。當(dāng)一個(gè)對(duì)象要想影響其他對(duì)象時(shí),需要調(diào)用那個(gè)對(duì)象的方法,而不是直接去改變那個(gè)對(duì)象。對(duì)象的這種自治性能夠使得所有修改對(duì)象的操作都可以以對(duì)象自身所具有的一種行為的形式存在于對(duì)象整體之中,從而維護(hù)了對(duì)象的完整性,有利于對(duì)象在不同環(huán)境下的重用、擴(kuò)充和維護(hù)。優(yōu)點(diǎn).11
封裝性自治性
安全性
對(duì)象具有通過一定的接口和相應(yīng)的消息機(jī)制與外界相聯(lián)系的特性,并與對(duì)象的封裝性結(jié)合在一起,較好地實(shí)現(xiàn)了信息隱藏。這樣使得對(duì)象成為一只使用方便的“黑匣子”,其中隱藏了私有數(shù)據(jù)和內(nèi)部運(yùn)行機(jī)制。使用對(duì)象時(shí)只需要了解其接口提供的功能和操作,而不必了解對(duì)象內(nèi)部的數(shù)據(jù)描述和具體的功能實(shí)現(xiàn)。優(yōu)點(diǎn)12
封裝性自治性安全性
擴(kuò)展性
繼承是面向?qū)ο蟮牧硪粋€(gè)重要特性,通過繼承可以很方便地實(shí)現(xiàn)應(yīng)用的擴(kuò)展和已有代碼的重復(fù)使用,在保證質(zhì)量的前提下提高開發(fā)效率,也使得面向?qū)ο蟮拈_發(fā)方法與軟件工程的一個(gè)新方法——快速原型法能夠很好地結(jié)合在一起,形成一種更有效、更實(shí)用的軟件開發(fā)技術(shù)。面向過程的程序設(shè)計(jì)將問題分解成若干個(gè)成為模塊的功能塊根據(jù)模塊功能設(shè)計(jì)一系列用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)編寫一些過程(函數(shù))對(duì)數(shù)據(jù)進(jìn)行操作(算法)將這些過程組成程序核心:功能的分解.13舉例(1):設(shè)計(jì)一個(gè)銀行系統(tǒng)。該系統(tǒng)允許顧客開設(shè)不同類型的銀行帳戶,其中包括現(xiàn)金帳戶,支票帳戶和貸款帳戶,同時(shí)允許顧客存款,取款和轉(zhuǎn)帳。14.15分解模塊:存款----MakeDeposit取款----WithDraw轉(zhuǎn)帳----Transfer
2.建立數(shù)據(jù)結(jié)構(gòu):structaccount{charname;unsignedlongaccountID;floatbalance;floatinterestYTD;characcountType};3.編寫實(shí)現(xiàn)過程的程序4.組成系統(tǒng)面向過程程序設(shè)計(jì)的缺陷.16程序員和顧客的關(guān)注點(diǎn)分離數(shù)據(jù)結(jié)構(gòu)與過程分離
顧客關(guān)心的是他的帳戶還剩多少錢,利息多少,錢在銀行是否安全,而對(duì)存錢,取錢等過程不感興趣.
程序員關(guān)心的是如何編寫存款,取款代碼,如何在一建立的數(shù)據(jù)機(jī)構(gòu)中填寫數(shù)據(jù)并管理數(shù)據(jù),而對(duì)具體的數(shù)據(jù)不感興趣.面向過程程序設(shè)計(jì)的缺陷.17程序員和顧客的關(guān)注點(diǎn)分離軟件系統(tǒng)中顧客與他們的銀行帳號(hào)分離數(shù)據(jù)結(jié)構(gòu)與過程分離
顧客與自己的帳號(hào)聯(lián)系并不緊密,系統(tǒng)中顧客只不過是一串字符或數(shù)字,而帳號(hào)只不過是一個(gè)整數(shù),因而不考慮誰擁有這個(gè)帳號(hào),帳號(hào)里的內(nèi)容是什么等,這與實(shí)際情況不符.面向過程程序設(shè)計(jì)的缺陷.18程序員和顧客的關(guān)注點(diǎn)分離軟件系統(tǒng)中顧客與他們的銀行帳號(hào)分離數(shù)據(jù)安全性差數(shù)據(jù)結(jié)構(gòu)與過程分離
程序員可以方便地修改帳目,因?yàn)閷?duì)他來說只不過是修改數(shù)據(jù)結(jié)構(gòu)中的數(shù)字.面向過程程序設(shè)計(jì)的缺陷.19程序員和顧客的關(guān)注點(diǎn)分離軟件系統(tǒng)中顧客與他們的銀行帳號(hào)分離數(shù)據(jù)安全性差要求變化時(shí),軟件維護(hù)開銷大數(shù)據(jù)結(jié)構(gòu)與過程分離
對(duì)每種帳戶類型,程序處理的方式不會(huì)完全相同.如果新增加一種帳戶類型,必須重新編寫程序代碼.面向?qū)ο蟮某绦蛟O(shè)計(jì).20與面向過程的程序設(shè)計(jì)的不同點(diǎn):重點(diǎn)是數(shù)據(jù)而不是過程數(shù)據(jù)和定義在它上面的操作構(gòu)成一個(gè)整體數(shù)據(jù)本身不能被外部程序和過程直接存取
面向?qū)ο蟮某绦蛟O(shè)計(jì)是一種新的程序設(shè)計(jì)范型.面向?qū)ο蟮某绦虻闹饕Y(jié)構(gòu)特點(diǎn)是:一、程序一般由類的定義和類的使用兩部分組成,在主程序中定義各對(duì)象并規(guī)定它們之間傳遞消息的規(guī)律;二、程序中的一切操作都是通過向?qū)ο蟀l(fā)送消息來實(shí)現(xiàn)的,對(duì)象接到消息后,啟動(dòng)有關(guān)方法完成相應(yīng)的操作。什么是類類實(shí)際上是對(duì)某種類型的對(duì)象定義變量和方法的原型。
在現(xiàn)實(shí)世界中,你經(jīng)??吹较嗤愋偷脑S多對(duì)象。比如,你的自行車只是現(xiàn)實(shí)世界中許多自行車的其中一輛。使用面向?qū)ο蠹夹g(shù),我們可以說你的自行車是自行車對(duì)象類的一個(gè)實(shí)例。通常,自行車有一些狀態(tài)(當(dāng)前檔位、兩個(gè)輪子等等)以及行為(改變檔位、剎車等等)。但是,每輛自行車的狀態(tài)都是獨(dú)立的并且跟其它自行車不同。當(dāng)廠家制造自行車的時(shí)候,廠商利用了自行車共有的特性來根據(jù)相同的藍(lán)圖制造許多自行車。如果制造一輛自行車就要產(chǎn)生一個(gè)新藍(lán)圖,那效率就太低了.21什么是類.22
在面向?qū)ο筌浖?,同樣地,可以讓相同種類地許多對(duì)象來共有一些特性,比如矩形、雇員記錄、視頻夾等等。就象自行車制造商人,你可以利用相同種類的對(duì)象是相似的事實(shí)并且你可以為這些對(duì)象創(chuàng)建一個(gè)藍(lán)圖。對(duì)對(duì)象的軟件藍(lán)圖叫做類。自行車的類需要定義一些實(shí)例變量來包括當(dāng)前檔位、當(dāng)前速度等等。這個(gè)類將為實(shí)例方法定義和提供實(shí)施方法,它允許騎車者改變檔位、剎車以及改變腳踏板的節(jié)奏,如圖所示:對(duì)象和類一個(gè)對(duì)象是由描述其屬性的數(shù)據(jù)和定義在其上面的一組操作組成的實(shí)體,是數(shù)據(jù)單元和過程單元的組合體;類是對(duì)一組對(duì)象的抽象,這組對(duì)象具有相同的屬性結(jié)構(gòu)和操作行為,在對(duì)象所屬的類中要說明這些結(jié)構(gòu)和行為。類也可以看作是一種新的數(shù)據(jù)類型。一個(gè)對(duì)象是類的一個(gè)實(shí)例。有了類,才可以創(chuàng)建對(duì)象。類不能是它們描述的對(duì)象本身,類是同一種對(duì)象的集合的抽象,即,同一類對(duì)象的變量和方法的原型。
.23.24classBankAccount{ privatefloatbalance; privatefloatintetestYTD; privatestringowner; privateintaccount_number; public voidMakeDeposit(floatamount); public floatWithDraw(floatamount); public booleanTransfer(BankAccountto,floatamount);}
實(shí)例成員和類成員
實(shí)例變量和實(shí)例方法是實(shí)例(對(duì)象)中的成員,類變量和類方法是類中的成員。實(shí)例變量與類變量每次創(chuàng)建一個(gè)類的對(duì)象的時(shí)候,系統(tǒng)為它創(chuàng)建了類的每一個(gè)實(shí)例變量的副本。我們就可以從對(duì)象中訪問該實(shí)例變量。類變量跟實(shí)例變量是不一樣的,不管為一個(gè)類創(chuàng)建了多少個(gè)對(duì)象,系統(tǒng)只為每個(gè)類變量分配一次存儲(chǔ)空間。系統(tǒng)為類變量分配的內(nèi)存是在它第一次調(diào)用類的時(shí)候完成的。所有的對(duì)象共享了類變量的相同副本??梢酝ㄟ^對(duì)象或者通過類本身來訪問類變量。.25實(shí)例成員和類成員
實(shí)例變量和實(shí)例方法是實(shí)例(對(duì)象)中的成員,類變量和類方法是類中的成員。實(shí)例方法與類方法實(shí)例方法對(duì)當(dāng)前對(duì)象的實(shí)例變量進(jìn)行操作,而且可以訪問類變量。而類方法只可以操作類變量,不能訪問定義在類中的實(shí)例變量,除非它們創(chuàng)建一個(gè)新的對(duì)象并通過對(duì)象來訪問它們。同樣,類方法可以在類中被調(diào)用,并不一定必須建立一個(gè)實(shí)例來調(diào)用一個(gè)類方法。.26三個(gè)重要的概念繼承抽象與封裝多態(tài).27繼承在面向?qū)ο蟮募夹g(shù)中,繼承是與傳統(tǒng)方法不同的一個(gè)最具特色的方法。它是面向?qū)ο蟮某绦蛑袃蓚€(gè)類之間的一種關(guān)系,即一個(gè)類可以從另一個(gè)類(即它的父類)繼承狀態(tài)和行為。被繼承的類也可稱為超類(父類),繼承父類的類稱為子類。繼承為組織和構(gòu)造軟件程序提供了一個(gè)強(qiáng)大而自然的機(jī)理。.28.29自行車的父類與子類關(guān)系
繼承.30
一個(gè)父類可以同時(shí)擁有多個(gè)子類,這時(shí)這個(gè)父類實(shí)際上是所有子類的公共變量和方法的集合,每一個(gè)子類從父類中繼承了狀態(tài)。例如,山地自行車、賽車以及雙人自行車共享了這些狀態(tài):雙輪、腳踏、速度等。同樣,每一個(gè)子類繼承了父類的方法,山地自行車、賽車以及雙人自行車共享這些行為:剎車、改變腳踏速度等等。然而,子類可以不受到父類提供的狀態(tài)和行為的限制。除了從父類繼承而來的變量和方法之外,子類可以增加自己的變量和方法。比如,雙人自行車有兩個(gè)座位,這是它的父類沒有的。
繼承繼承子類也可以改變繼承來的變量和方法,也即可以重載繼承的方法,并且為這些方法提供特殊執(zhí)行方法。比如,如果有一個(gè)山地自行車有額外的齒輪設(shè)置,就可以重載設(shè)置齒輪方法來使騎車者可以使用這些新的齒輪。
此外,類是逐級(jí)繼承的,繼承的層次不能限制,繼承樹或者類的分級(jí)結(jié)構(gòu)可以很深。.31抽象與封裝面向?qū)ο蟮能浖_發(fā)方法的主要特點(diǎn)之一,就是采用了數(shù)據(jù)抽象的方法來構(gòu)建程序的類、對(duì)象和方法。數(shù)據(jù)抽象是把系統(tǒng)中需要處理的數(shù)據(jù)和在這些數(shù)據(jù)上的操作結(jié)合一起,根據(jù)功能、性質(zhì)和用途等因素抽象成不同的抽象數(shù)據(jù)類型,每個(gè)抽象數(shù)據(jù)類型既包含了數(shù)據(jù),又包含了針對(duì)的這些數(shù)據(jù)的授權(quán)操作。.32抽象抽象與封裝將數(shù)據(jù)結(jié)構(gòu)和作用于數(shù)據(jù)結(jié)構(gòu)上的操作組成一個(gè)實(shí)體,數(shù)據(jù)的表示方式和對(duì)數(shù)據(jù)的操作細(xì)節(jié)被隱藏起來,用戶通過操作接口對(duì)數(shù)據(jù)進(jìn)行操作。對(duì)于用戶來說,只知道如何通過操作接口對(duì)該數(shù)據(jù)進(jìn)行操作,而不知道是如何做的,也不知道數(shù)據(jù)是如何表示的,這就是數(shù)據(jù)的封裝。封裝是一個(gè)與抽象密切相關(guān)的重要特性。抽象和封裝是互補(bǔ)的,好的抽象有利于封裝,封裝的實(shí)體則幫助維護(hù)抽象的完整性。.33封裝多態(tài)性在面向?qū)ο蟪绦蛟O(shè)計(jì)中,多態(tài)性又是一個(gè)重要特性。面向系統(tǒng)的多態(tài)性是指不同的對(duì)象收到相同的消息時(shí)產(chǎn)生多種不同的行為方式。多態(tài)的實(shí)現(xiàn)是由消息的接收者確定一個(gè)消息應(yīng)如何解釋,而不是由消息的發(fā)送者確定,消息的發(fā)送者只需知道另外的實(shí)例可以執(zhí)行一種特定操作即可,這一特性對(duì)于可擴(kuò)充系統(tǒng)的開發(fā)是特別有用的工具。按這種方法可開發(fā)出易于維護(hù)、可塑性好的系統(tǒng)。例如,如果希望加一個(gè)對(duì)象到類中,這種維護(hù)只涉及到新對(duì)象,而不涉及給它發(fā)送消息的對(duì)象。.34面向?qū)ο蟪绦蛟O(shè)計(jì)的語言支持對(duì)象的概念(包括對(duì)象所有的特性,如封裝等)要求對(duì)象屬于類提供繼承機(jī)制.35JAVA語言
C++,Dephi,Perl,ObjectC等面向?qū)ο蟮某绦蛟O(shè)計(jì)語言實(shí)際上是一種混合型語言,是過程式語言加面向?qū)ο蟮臄U(kuò)展。支持對(duì)象的使用,但同時(shí)也支持過程式編程。編程者可能有意無意使用一些過程式編程的特征。JAVA是純面向?qū)ο蟮木幊陶Z言。有助于理解面向?qū)ο蟮母拍睢?36何謂JAVASun公司“JAVA白皮書”中對(duì)JAVA的定義:Java,Asimple,object-oriented,distributed,interpreted,robust,secure,architecture-neutral,portable,high-performance,multi-threaded,anddynamiclanguage.
即,Java是一種簡(jiǎn)單、面向?qū)ο蟆⒎植际?、解釋型、健壯、安全、體系結(jié)構(gòu)中立、可移植、高性能、多線程和動(dòng)態(tài)的語言。.37Oak—JAVA原型的問世1991年,由Sun公司的PatrickNawghton,JameGosling以及MikeSheridan等人組成的開發(fā)小組,開始了代號(hào)為“Green”的項(xiàng)目的研制。Green項(xiàng)目的目標(biāo)是要研制一種開發(fā)家用電器的邏輯控制系統(tǒng),以實(shí)現(xiàn)對(duì)家用電器的集成控制。在考慮這個(gè)產(chǎn)品時(shí),Gosling決定自行開發(fā)一種新的語言,并把該語言命名為“Oak”。但是,這個(gè)技術(shù)上非常成功的產(chǎn)品,當(dāng)時(shí)并未獲得商業(yè)上的成功。
.38與WWW的結(jié)合由于Internet的迅猛發(fā)展,WWW以極快的速度風(fēng)靡全球。Green項(xiàng)目小組發(fā)現(xiàn)他們的新型編程語言O(shè)ak比較適合于Internet程序的編寫,于是他們結(jié)合WWW的需要,對(duì)Oak進(jìn)行改進(jìn)和完善,并獲得了極大的成功。1995年1月,Oak被更名為Java。這個(gè)名字的產(chǎn)生,既不是根據(jù)語言本身的特色來命名,也不是由幾個(gè)英文單詞的首字母拼成,更不是由人名或典故而來,而是來自于印度尼西亞有一個(gè)盛產(chǎn)咖啡的島嶼,中文名叫爪哇,意為世人端上一杯熱咖啡。許多程序設(shè)計(jì)師從所鐘愛的熱騰騰的香濃咖啡中得到的靈感,因而熱騰騰的香濃咖啡也就成為Java語言的標(biāo)志。.39InternetPlay—改變JAVA命運(yùn)的策略Sun公司創(chuàng)始人之一的BillJoy改變了JAVA的命運(yùn).他認(rèn)為Internet加上當(dāng)時(shí)正越來越受人歡迎的WWW肯定可以挽救技術(shù)上本來就很成功的JAVA語言.這種挽救不僅僅是技術(shù)上的結(jié)合,它還有另一層含義,就是“InternetPlay”----一種依靠讓用戶免費(fèi)使用來占領(lǐng)市場(chǎng)份額的策略.于是,他力排眾議,促成JAVA在Internet上免費(fèi)發(fā)布..40JAVA的廣泛應(yīng)用1995年5月23日J(rèn)ava正式公布,以后人們對(duì)Java的興趣和重視證明了這項(xiàng)技術(shù)將是主宰網(wǎng)絡(luò)計(jì)算的未來:1995年一些著名的公司都紛紛購(gòu)買語言使用權(quán),如:IBM,Microsoft,Netscape,Novell,Apple,DEC,SGI等;1996年Java應(yīng)用軟件紛紛問世,贏得軟件工業(yè)界的廣泛支持。1997年Java技術(shù)用于網(wǎng)絡(luò)計(jì)算,從界業(yè)的事實(shí)標(biāo)準(zhǔn)走向法律標(biāo)準(zhǔn)。.41JAVA語言的特色1.簡(jiǎn)單性語言的設(shè)計(jì)者盡量把語言的構(gòu)造規(guī)模變小,通過提供最基本的方法來完成指定的任務(wù),使用者只需要理解一些基本概念,就可以編出合適的應(yīng)用程序。Java取消了許多語言中十分繁瑣和難以理解的內(nèi)容,例如C++的指針、運(yùn)算符重載、類的多繼承等,并且通過實(shí)現(xiàn)自動(dòng)垃圾收集,大大減化了程序設(shè)計(jì)者的內(nèi)存管理工作。Java的外觀上讓大多數(shù)程序員感到很熟悉,便于學(xué)習(xí)。同時(shí)Java的編譯器也很小,便于在各種機(jī)型上實(shí)現(xiàn)。.42JAVA語言的特色2.面向?qū)ο竺嫦驅(qū)ο笫荍ava最重要的特性。它不支持類似C語言那樣的面向過程的程序設(shè)計(jì)技術(shù)。語言的任何方面都是基于消息或基于對(duì)象的;所有數(shù)據(jù)類型,無論簡(jiǎn)單還是復(fù)雜,均為對(duì)象類。.43JAVA語言的特色3.分布性分布式包括數(shù)據(jù)分布和操作分布。數(shù)據(jù)分布是指數(shù)據(jù)可以分散存放于網(wǎng)絡(luò)上的不同主機(jī),操作分布則指把計(jì)算分散由不同主機(jī)處理。JAVA支持WWW客戶機(jī)/服務(wù)器計(jì)算模式,因此它可以支持這兩種分布性。利用Java來開發(fā)分布式的網(wǎng)絡(luò)程序是Java的一個(gè)主要應(yīng)用之一。.44JAVA語言的特色4.健壯性和安全性Java采取了3個(gè)措施:不支持指針類型,一切對(duì)內(nèi)存的訪問都必須通過對(duì)象的實(shí)例來實(shí)現(xiàn)。這樣能夠防止他人使用欺騙手段訪問對(duì)象的私有成員,也能夠避免指針操作中容易產(chǎn)生的錯(cuò)誤。提供數(shù)組下標(biāo)的檢查機(jī)制,從而使黑客們無法構(gòu)造出類似C所支持的那種指針。提供了自動(dòng)內(nèi)存管理機(jī)制,即自動(dòng)的內(nèi)存垃圾搜集程序。此外,Java有多個(gè)階層的互鎖保護(hù)措施,能有效地防止病毒侵入和蓄意的破壞行為。.45JAVA語言的特色5.體系結(jié)構(gòu)中立
Java編譯器能夠產(chǎn)生一種與計(jì)算機(jī)體系結(jié)構(gòu)無關(guān)的字節(jié)指令(bytecode),只要安裝了Java虛擬機(jī),Java就可以在相應(yīng)的處理機(jī)上執(zhí)行。.46JAVA語言的特色6.可移植性Java具有與平臺(tái)無關(guān)的特性。不僅開發(fā)的源代碼可以移植,甚至經(jīng)過編譯后形成的二進(jìn)制代碼也同樣可以移植。任何一臺(tái)機(jī)器,只要配備了JAVA解釋器,就可以運(yùn)行JAVA二進(jìn)制代碼。JAVA采用的是國(guó)際標(biāo)準(zhǔn)(IEEE)的數(shù)據(jù)類型。JAVA的數(shù)據(jù)類型在任何機(jī)器上都是一致的,不支持特定于具體硬件的數(shù)據(jù)類型。.47JAVA語言的特色7.解釋型語言
Java解釋能直接在任何機(jī)器上執(zhí)行Java字節(jié)碼,字節(jié)碼本身帶有許多編譯信息,使得連接過程更加簡(jiǎn)單。.48JAVA語言的特色8.高效性JAVA提供了對(duì)多線程的支持。首先,它的環(huán)境本身是多線程的,它可以利用系統(tǒng)的空閑時(shí)間來執(zhí)行諸如必要的垃圾清楚和一般性的系統(tǒng)維護(hù)等操作。其次,它還提供多線程的語言級(jí)支持,使的程序員能方便地寫出多線程應(yīng)用程序,提高程序的執(zhí)行效率。Java的字節(jié)碼能夠迅速地轉(zhuǎn)換成機(jī)器碼,從而可以充分地利用硬件平臺(tái)資源,得到較高的整體性能。.49JAVA語言的特色9.多線程機(jī)制
Java具有多線程機(jī)制,這使得應(yīng)用程序能夠并行地執(zhí)行。它的同步機(jī)制也保證了對(duì)共享數(shù)據(jù)的共享操作,而且線程具有優(yōu)先級(jí)的機(jī)制,有助于分別使用不同線程完成特定行為,也提高了交互的實(shí)時(shí)響應(yīng)能力。.50JAVA語言的特色10.動(dòng)態(tài)性Java具有“滯后聯(lián)編”機(jī)制。JAVA語言的所有類是在運(yùn)行過程中動(dòng)態(tài)裝載的。因此,可以在分布式環(huán)境中動(dòng)態(tài)地維護(hù)應(yīng)用程序及其類庫之間的一致性。這樣,即使類庫升級(jí)后,相應(yīng)的應(yīng)用程序也不必重新編譯,也一樣利用升級(jí)后類庫的新增功能。.51JAVA語言的特色.52JAVA語言的特色.53建立JAVA開發(fā)環(huán)境(1)下載JAVA開發(fā)工具集JDK
網(wǎng)址:
/downloads/index.html.7建立JAVA開發(fā)環(huán)境(2)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 銷售部門年度工作總結(jié)
- 科技公司專利代理協(xié)議(3篇)
- 數(shù)學(xué)主題演講5分鐘(34篇)
- 技術(shù)工程師崗位職責(zé)(33篇)
- 工程技術(shù)員個(gè)人年度工作總結(jié)范文
- 2024年鋁鍛壓材項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 茶文化與茶藝鑒賞 教案 項(xiàng)目三 明茶禮-茶藝禮儀
- 智慧視覺AR交互裝置技術(shù)要求征求意見稿
- 上海市市轄區(qū)(2024年-2025年小學(xué)五年級(jí)語文)統(tǒng)編版質(zhì)量測(cè)試(上學(xué)期)試卷及答案
- 深圳2020-2024年中考英語真題專題06 閱讀匹配(原卷版)
- GB/T 41365-2022中藥材種子(種苗)白術(shù)
- GB/T 18371-2001連續(xù)玻璃纖維紗
- GB/T 12527-2008額定電壓1 kV及以下架空絕緣電纜
- 一級(jí)建造師考試題庫及答案(全國(guó)通用)
- 竣工工程銷項(xiàng)工作計(jì)劃表
- 公司社會(huì)責(zé)任管理制度
- 高速公路施工全流程標(biāo)準(zhǔn)化手冊(cè)
- 2022屆北京市東城區(qū)高三語文一模語文試卷講評(píng)課件
- 通力電梯技能培訓(xùn)教材系列:《KCE控制系統(tǒng)課程》
- 模板-偵查階段第二次會(huì)見筆錄
- 2023年惠州仲愷城市發(fā)展集團(tuán)有限公司招聘筆試題庫及答案解析
評(píng)論
0/150
提交評(píng)論