Java和面向?qū)ο蟾攀?ppt_第1頁(yè)
Java和面向?qū)ο蟾攀?ppt_第2頁(yè)
Java和面向?qū)ο蟾攀?ppt_第3頁(yè)
Java和面向?qū)ο蟾攀?ppt_第4頁(yè)
Java和面向?qū)ο蟾攀?ppt_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一講 Java和面向?qū)ο蟾攀?時(shí)間:2015年9月,電子信息工程學(xué)院 姜斌 教材:第一章(前三節(jié)),知識(shí)要點(diǎn),本講著重介紹Java語(yǔ)言中的背景知識(shí)和基本概念。 具體涉及: 本章將簡(jiǎn)要介紹軟件開(kāi)發(fā)方法的變革 面向?qū)ο蟪绦蛟O(shè)計(jì)中的基本概念 介紹Java語(yǔ)言的特點(diǎn)及開(kāi)發(fā)Java程序的基本步驟等 介紹Java語(yǔ)言特點(diǎn)、與C/C+的主要差異、Java程序執(zhí)行過(guò)程、Java運(yùn)行環(huán)境及開(kāi)發(fā)工具等基本知識(shí)。,內(nèi)容概述,一、 面向?qū)ο筌浖_(kāi)發(fā)方法概述 二、 面向?qū)ο蟮幕靖拍?三、 Java語(yǔ)言概述 四、 Java主要相關(guān)技術(shù) 本章小結(jié) 思考與練習(xí),課程前序掌握或了解的概念,軟件(Software) 軟件工程

2、(Software Engineering) 計(jì)算機(jī)程序語(yǔ)言(Programming Language) 信息(Information)和數(shù)據(jù)(Data) 計(jì)算機(jī)系統(tǒng)(Computer System) 數(shù)據(jù)庫(kù)系統(tǒng)(Database System),一 面向?qū)ο筌浖_(kāi)發(fā)方法概述,60年代至80年代,早期傳統(tǒng)的開(kāi)發(fā)方法,軟件開(kāi)發(fā)方法是面向過(guò)程進(jìn)行開(kāi)發(fā)的;因此統(tǒng)稱為面向過(guò)程的開(kāi)發(fā)方法 代表語(yǔ)言:有Fortran, Pascal, C語(yǔ)言等 軟件生產(chǎn)率低 軟件重用程度低 軟件維護(hù)艱辛 軟件非用戶所需,1傳統(tǒng)軟件開(kāi)發(fā)方法存在的問(wèn)題,特點(diǎn):分析出解決問(wèn)題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用

3、的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了。 事例:五子棋 1、開(kāi)始游戲,2、黑子先走, 3、繪制畫(huà)面,4、判斷輸贏, 5、輪到白子,6、繪制畫(huà)面, 7、判斷輸贏,8、返回步驟2, 9、輸出最后結(jié)果。 每一步都要走,這就是過(guò)程; 然而用戶需求的是可能變化的,因此這種變化對(duì)基于過(guò)程的設(shè)計(jì)來(lái)說(shuō)是災(zāi)難 。,2. 面向過(guò)程方法問(wèn)題的歸因,3. 面向?qū)ο蠓椒ㄌ攸c(diǎn),特點(diǎn):面向?qū)ο笫前褬?gòu)成問(wèn)題事務(wù)分解成各個(gè)對(duì)象,建立對(duì)象的目的不是為了完成一個(gè)步驟,而是為了描敘某個(gè)事物在整個(gè)過(guò)程中的屬性和行為。 而面向?qū)ο蟮脑O(shè)計(jì)則是從另外的思路來(lái)解決問(wèn)題。對(duì)象有玩家(Player),棋盤(pán)系統(tǒng)(Chess),規(guī)則系統(tǒng)(GameRule)

4、整個(gè)五子棋可以分為: 1、黑白雙方,這兩方的行為是一模一樣的,行為有下棋,悔棋等 2、棋盤(pán)系統(tǒng),負(fù)責(zé)繪制畫(huà)面, 3、規(guī)則系統(tǒng),負(fù)責(zé)判定諸如執(zhí)先手、犯規(guī)、輸贏等。,4. 面向?qū)ο蠓椒ㄌ攸c(diǎn),面向?qū)ο蠓椒ǎ∣bject-oriented),以對(duì)象代表問(wèn)題解的中心環(huán)節(jié),力求符合人們的思維習(xí)慣,采用“對(duì)象+消息”的程序設(shè)計(jì)模式 發(fā)展時(shí)間:90年代,發(fā)展和流行 代表語(yǔ)言: Java, C+, C#, VB.NET 地位:面向?qū)ο罂胺Q是軟件發(fā)展取得的里程碑式的偉大成就。 包括部分:面向?qū)ο蠓治龊驮O(shè)計(jì)(OOAD),面向?qū)ο缶幋a(OOP),面向?qū)ο鬁y(cè)試(OOT),5. 面向?qū)ο蠓椒ǖ闹饕獌?yōu)點(diǎn),符合人們通常的思維

5、方式,采用“對(duì)象+消息”方式,易理解性 降低或分解問(wèn)題的難度和復(fù)雜性,可重用性好 日趨成熟,標(biāo)準(zhǔn)化,體系化, 標(biāo)準(zhǔn)性 主流開(kāi)發(fā)方法,可維護(hù)性好,6.面向?qū)ο蟮能浖_(kāi)發(fā)生命周期,開(kāi)發(fā)一個(gè)軟件系統(tǒng)需要有多個(gè)環(huán)節(jié)的,整個(gè)構(gòu)成一個(gè)生命周期(SDLC) 例子:瀑布式 作用:可有效和高效地進(jìn)行軟件開(kāi)發(fā)工作的組織,課件附有流行的一種生命周期過(guò)程,附2:一種典型面向?qū)ο筌浖_(kāi)發(fā)過(guò)程,二、 面向?qū)ο蟮幕靖拍?簡(jiǎn)而言之: 面向?qū)ο笕仡?對(duì)象+消息 面向?qū)ο笕筇匦?封裝性(encapsulation) 繼承性(inheritance) 多態(tài)性 (polymorphism),1. 面向?qū)ο蟮幕靖拍?2. 面

6、向?qū)ο笕?類(class) 類描述對(duì)象的“基本原型”,是描述性的類別或模板,即對(duì)一組對(duì)象的抽象。它定義一組對(duì)象所能擁有的靜態(tài)特征和動(dòng)態(tài)行為在java中分別被稱為屬性(Attribute)和方法(Method),用以說(shuō)明該組對(duì)象的能力與性質(zhì),被編譯后的類存在于class文件中。 例如,小汽車car可以被抽象成類,它描述了所有小汽車的性質(zhì),包括汽車的品牌、型號(hào)、顏色、車門(mén)數(shù)、速度,即屬性;還包括動(dòng)態(tài)行為操作,如啟動(dòng)、駕駛、加速、剎車等等,即方法。 別稱:屬性有時(shí)在某種語(yǔ)境下也被稱為字段(fields)或變量(variables) 方法有時(shí)在某種語(yǔ)境下被稱為行為(behaviors),一些程序員

7、或中文資料中還誤稱為(函數(shù))。,對(duì)象(object) 對(duì)象就是現(xiàn)實(shí)世界中某個(gè)具體的物理實(shí)體在計(jì)算機(jī)中的映射和體現(xiàn)。所以一個(gè)對(duì)象把屬性和行為密封成一個(gè)整體,通過(guò)一個(gè)類作為模板可以建立多個(gè)對(duì)象,建立后的對(duì)象實(shí)例存在于內(nèi)存中 例如:以Car汽車類為模板,可以創(chuàng)建hammerCar , toyotaCar對(duì)象;這兩個(gè)對(duì)象的是獨(dú)立的個(gè)體,具有各自屬性和相應(yīng)方法。,new,new,萬(wàn)物皆對(duì)象!,Memory,消息(message) 對(duì)象之間進(jìn)行通信的一種構(gòu)造叫做消息,消息傳遞是對(duì)象與其外部世界相互關(guān)聯(lián)的唯一途徑。對(duì)象可以向其他對(duì)象發(fā)出消息以請(qǐng)求服務(wù),也可以響應(yīng)其他對(duì)象傳來(lái)的消息。,轎車A.駕駛(),轎車A

8、.停止(),3. 面向?qū)ο蟮娜筇匦?所謂封裝又稱為信息隱蔽(Information Hiding),是面向?qū)ο蟮幕咎卣?。封裝的目的在于將使用者與設(shè)計(jì)者分離,使用者不必知道操作實(shí)現(xiàn)的細(xì)節(jié),只需用設(shè)計(jì)者提供的消息來(lái)訪問(wèn)對(duì)象。,信息隱藏的特點(diǎn): 1. 在屬性值訪問(wèn)上,一般屬性是私有的,提供服務(wù)的方法是公有的。 2. 內(nèi)部實(shí)現(xiàn)受保護(hù),提供的功能具體實(shí)現(xiàn),實(shí)現(xiàn)細(xì)節(jié)不能夠在對(duì)象外訪問(wèn),有時(shí)也稱為內(nèi)部方法。,3. 面向?qū)ο蟮娜筇匦?繼承是面向?qū)ο笳Z(yǔ)言中的一種重要機(jī)制,該機(jī)制自動(dòng)地為一個(gè)類提供來(lái)自另一個(gè)類的操作和屬性,這樣程序員只需在新類中定義已有類中沒(méi)有的屬性與(或)操作來(lái)建立新類。 多態(tài)性是指一個(gè)名

9、字具有多種語(yǔ)義,即指同一消息為不同對(duì)象所接受時(shí),可以導(dǎo)致不同的操作。 除遺傳關(guān)系外,現(xiàn)實(shí)世界中還普遍存在著部分整體關(guān)系。例如,飛機(jī)可由發(fā)動(dòng)機(jī)、機(jī)身、機(jī)械控制系統(tǒng)、電子控制系統(tǒng)等構(gòu)成。聚集關(guān)系 注意Java不支持多父繼承。,三、 Java語(yǔ)言概述,1. 什么是java語(yǔ)言 2JDK三種平臺(tái) 3發(fā)展歷史 4語(yǔ)言特點(diǎn) ,1. 什么是Java*(頁(yè)1),JAVA是Sun公司開(kāi)發(fā)(該公司已經(jīng)于2009年被甲骨文公司收購(gòu))的一種面對(duì)對(duì)象的語(yǔ)言技術(shù),通過(guò)它用戶可以快速開(kāi)發(fā)跨平臺(tái)的、高效安全的單機(jī)或網(wǎng)絡(luò)應(yīng)用程序。,2Java 語(yǔ)言三種平臺(tái)簡(jiǎn)介(頁(yè)3),Java要實(shí)現(xiàn)“一次寫(xiě)成,多處運(yùn)行”,就必須提供多個(gè)平臺(tái)

10、J2SE-java 2 standard edition 標(biāo)準(zhǔn)版,提供了標(biāo)準(zhǔn)的SDK開(kāi)發(fā)平臺(tái)(也稱為JDK),可開(kāi)發(fā)低端java用于小型 J2MEjava 2 micro edition 微型版, 用于java的移動(dòng)應(yīng)用開(kāi)發(fā),適應(yīng)于目前比較流行的嵌入式開(kāi)發(fā) J2EEjava 2 enterprise edition 企業(yè)版,用于構(gòu)建企業(yè)級(jí)的服務(wù)應(yīng)用,J2EE平臺(tái)包括J2SE平臺(tái),并附加了企業(yè)級(jí)開(kāi)發(fā)的類庫(kù)。,3Java 語(yǔ)言的發(fā)展歷史(頁(yè)1),1991: James Gosling,Bill Joy等人一起從事Green Project中、 產(chǎn)生新的語(yǔ)言O(shè)ak, 1994下半年: WWW迅速發(fā)展

11、,得到Sun公司的支持,通過(guò)Oak開(kāi)發(fā)的HotJava瀏覽器得到關(guān)注;隨后Oak改名Java。 1995: Java作為SUN公司開(kāi)發(fā)工具產(chǎn)品,正式發(fā)布 最早是1.0,Java語(yǔ)言自1995年問(wèn)世以來(lái)不斷發(fā)展,開(kāi)發(fā)平臺(tái)的版本已經(jīng)從早先的JDK 1.0發(fā)展到JDK 1.2.0,到當(dāng)前廣泛應(yīng)用的JDK 1.5.0,以及SUN最后開(kāi)發(fā)的JDK 1.6.0 。Java語(yǔ)言的每一個(gè)版本的推出,都是對(duì)自身不足的克服和完善。它日益成為網(wǎng)絡(luò)應(yīng)用的一支強(qiáng)有力的技術(shù)力量。(注意從Java1.5后,Java的版本又分成內(nèi)部版本和外部版本,例如:1.5.0也稱為5.0版,1.7.0也稱為7.0) 具有大改變的版本(內(nèi)

12、部版本) 1.1 1.2 1.5.0 1.7.0,3Java 語(yǔ)言版本發(fā)展,3Java 語(yǔ)言版本發(fā)展,注意:2011年,由于Oracle收購(gòu)了Sun公司,7.0和其他早期版本JDK,JRE下載 都在Oracle的官網(wǎng)上,網(wǎng)站如下: ,Java(SUN)和.NET(M$)所屬系列語(yǔ)言是開(kāi)發(fā)兩大陣營(yíng)。 在目前流行的B/S開(kāi)發(fā)中,Java和.NET兩種開(kāi)發(fā)環(huán)境是兩大陣營(yíng)體系;而Java比后者具有更顯著的可移植性,跨平臺(tái)性,而且很多java項(xiàng)目往往是基于自由組織開(kāi)發(fā)(GNU)協(xié)議的免費(fèi)項(xiàng)目,可以自由地被用戶項(xiàng)目所引用。,4Java 語(yǔ)言的應(yīng)用前景,5. Java語(yǔ)言的特點(diǎn)(P 2),簡(jiǎn)單性 面向?qū)ο?

13、分布式處理 健壯性 結(jié)構(gòu)中立 安全性,系統(tǒng)精簡(jiǎn),但功能齊備。 風(fēng)格類似于C+,對(duì)C+程序員而言非常容易掌握。 Java摒棄了C+中容易引發(fā)程序錯(cuò)誤的地方,如指針操作和內(nèi)存管理; 提供豐富的類庫(kù)。,完全是面向?qū)ο蟮模恢С诸愃艭語(yǔ)言那樣的面向過(guò)程的程序設(shè)計(jì)技術(shù)。,支持TCP/IP協(xié)議。Java應(yīng)用程序可通過(guò)一個(gè)特定的URL來(lái)打開(kāi)并訪問(wèn)對(duì)象,就像訪問(wèn)本地文件系統(tǒng)那樣簡(jiǎn)單。,提供面向?qū)ο蟮漠惓L幚頇C(jī)制,在編譯時(shí)能對(duì)Null指針檢測(cè)、數(shù)組邊界檢測(cè)、異常出口字節(jié)代碼校驗(yàn)等。 自動(dòng)垃圾收集來(lái)進(jìn)行內(nèi)存管理。,將源程序編譯成一種結(jié)構(gòu)中立的中間文件格式。只要有Java運(yùn)行系統(tǒng)的機(jī)器都能執(zhí)行這種中間代碼。,Ja

14、va語(yǔ)言提供的安全。 編譯器提供的安全。 字節(jié)碼校驗(yàn)。,5.Java語(yǔ)言的特點(diǎn),可移植性 解釋性 高性能 多線程 動(dòng)態(tài),Java應(yīng)用程序可以在配備了Java解釋器和運(yùn)行環(huán)境的任何計(jì)算機(jī)系統(tǒng)上運(yùn)行,而與體系結(jié)構(gòu)無(wú)關(guān)。,Java編譯器將java源文件生成類文件.class,類文件可通過(guò)java命令解釋執(zhí)行,將Java字節(jié)碼轉(zhuǎn)換為機(jī)器碼。,JIT編譯器??梢蕴岣?Java 代碼的執(zhí)行速度。,內(nèi)置多線程功能,使得在一個(gè)程序里可同時(shí)執(zhí)行多個(gè)小任務(wù)。帶來(lái)的好處是更好的交互性和實(shí)時(shí)控制性。,允許程序動(dòng)態(tài)地裝入運(yùn)行過(guò)程中所需要的類,這是C+語(yǔ)言進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)所無(wú)法實(shí)現(xiàn)的。,Java虛擬機(jī)(JVM) 軟件

15、虛擬的計(jì)算機(jī), SUN公司提供各個(gè)操作系統(tǒng)上的Java虛擬機(jī) Java服務(wù)器端技術(shù) - JSP/Servlet等技術(shù)為代表的服務(wù)器,5.Java 特點(diǎn)引申,6. Java程序的執(zhí)行過(guò)程,首先在某個(gè)操作系統(tǒng)下用編輯器編寫(xiě)代碼,保存源代碼(.java),然后對(duì)編寫(xiě)的代碼進(jìn)行編譯產(chǎn)生字節(jié)碼文件(.class) 編譯后的程序其執(zhí)行過(guò)程為: 載入:Java的類載入器負(fù)責(zé)把程序中的所有字節(jié)碼文件都加載到內(nèi)存中。這些被裝入內(nèi)存的字節(jié)碼文件可以保持在硬盤(pán)的當(dāng)前目錄下; 代碼校驗(yàn):字節(jié)碼全部載入內(nèi)存后,Java的代碼校驗(yàn)器開(kāi)始檢查這些字節(jié)碼的合法性; 解釋執(zhí)行:通過(guò)了代碼校驗(yàn)的二進(jìn)制字節(jié)碼程序被交給解釋器逐句的

16、解釋并運(yùn)行。,圖1. Java程序運(yùn)行過(guò)程和編譯型程序運(yùn)行過(guò)程對(duì)比,字節(jié)碼程序,二進(jìn)制,運(yùn)行,二進(jìn)制,二進(jìn)制,Linux平臺(tái),圖2. Java虛擬機(jī)和跨平臺(tái)解釋運(yùn)行,Unix平臺(tái),Windows平臺(tái),解釋器,JVM(虛擬機(jī)),Java在基本類庫(kù)中,提供了大量的類以滿足網(wǎng)絡(luò)化、多線程、面向?qū)ο笙到y(tǒng)的需要,類庫(kù)包含有類包,例如:類包有:java.lang, java.io, , java.awt, java.util等等。,7豐富的類庫(kù)(P 4),對(duì)于變量聲明、參數(shù)傳遞、操作符、流控制等,Java使用了和C、C+相同的傳統(tǒng),使得熟悉C、C+的程序員能很方便地進(jìn)行編程。同時(shí),Java為了實(shí)現(xiàn)其簡(jiǎn)單、

17、魯棒、安全等特性,也摒棄了C和C+中許多不合理的內(nèi)容,例如多父繼承,運(yùn)算符重載。,8. Java和C、C+,實(shí)踐:第一個(gè)Java程序,像一個(gè)Baby在世界發(fā)出第一聲叫聲一樣; 我們一起做一個(gè)Java程序HelloWORLD; 對(duì)它進(jìn)行編輯,編譯,解釋運(yùn)行工作,看看虛擬機(jī)的工作過(guò)程;,I am Cindy,1 month old,創(chuàng)建簡(jiǎn)單的Java程序,代碼分析,行1為注釋。 行2定義了用戶自定義類HelloWorld。 行2和行6的花括號(hào)對(duì)定義了代碼塊,其中的代碼為類HelloWorld的實(shí)現(xiàn)。 行3定義了類HelloWorld的一個(gè)成員,即名為main的方法。main()方法是使用stati

18、c修飾符聲明的靜態(tài)方法,將作為程序的入口點(diǎn)。 行3和行5的花括號(hào)對(duì)定義了代碼塊,其中的代碼為main()方法的實(shí)現(xiàn)。 行4通過(guò)調(diào)用System.out.println(Hello World!),在控制臺(tái)上輸出字符串:Hello World!。,編譯和運(yùn)行結(jié)果,javac HelloWorld.java 產(chǎn)生一個(gè)名HelloWorld.class的文件,即字節(jié)碼的類文件 運(yùn)行應(yīng)用程序 java HelloWorld 輸出結(jié)果: Hello World!,四、 Java語(yǔ)言相關(guān)重要概念,1.Java的應(yīng)用程序類型(P 3),它適于: 跨平臺(tái)/多平臺(tái)的應(yīng)用程序 基于Web的分布式網(wǎng)絡(luò)應(yīng)用程序(B/S) 基于GUI的應(yīng)用程序 企業(yè)級(jí)應(yīng)用程序 多線程應(yīng)用程序 關(guān)鍵任務(wù)的(數(shù)據(jù)庫(kù))應(yīng)用程序 分布式網(wǎng)絡(luò)應(yīng)用程序 手機(jī)移動(dòng)應(yīng)用程序 隨著技術(shù)發(fā)展,Java和其他語(yǔ)言各有新技術(shù)納入到體系,2.Java核心概念,1). JDK (Java Development Kit) (P 5) 即java開(kāi)發(fā)環(huán)境。JDK是Sun公司開(kāi)發(fā)的一個(gè)免費(fèi)的Java開(kāi)發(fā)工具集,提供了Java開(kāi)發(fā)、運(yùn)行和測(cè)試一體的環(huán)境,它包含完整的JRE 2). JRE (Java Runtime Environment) (P 4) 即Java運(yùn)行環(huán)境。JRE只是Java的運(yùn)行環(huán)境

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論