亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        剖析面向對象技術對Java語言教學的指導作用

        2008-12-31 00:00:00
        計算機教育 2008年16期

        文章編號:1672-5913(2008)16-0131-03

        摘要:本文從編程結構理解、知識點梳理和類庫分析等方面出發(fā),剖析了OO設計策略、設計原則和設計模式對Java語言教學的指導作用,并指出立足于這些OO技術講解Java的語言機制,將有助于教學目標的明確和教學效果的提高。

        關鍵詞:面向對象;Java;教學設計策略;設計原則;設計模式

        中圖分類號:G642

        文獻標識碼:A

        1引言

        20世紀90年代以來,面向對象(Object Oriented,OO)技術已成為軟件開發(fā)領域的主流技術。在這一背景下誕生的Java語言,不僅語言機制大量體現(xiàn)出面向對象的編程思想,而且類庫設計也運用了許多面向對象研究領域的新成果,并因此而逐步成為學習OO技術的首選編程語言。在教學過程中,如果能從OO技術的角度分析講解Java的語言機制,則相當于找到了打開Java語言寶庫的鑰匙,往往會取得事半功倍的教學效果。在此,筆者想結合近年來的教學實踐,剖析一下OO技術對Java語言教學的指導作用。

        2從OO設計策略的角度加深對Java基本編程結構的理解

        在目前的Java語言教學中,普遍重視對類的講解,而對接口的學習卻明顯不足。從面向對象設計(OOD)的層面看,接口的重要性絲毫不亞于類,兩者都是Java語言提供的基本編程結構。本文首先從文獻[1]概括的抽象、分離、組合和概化這四個OO設計策略出發(fā),分析這兩種基本編程結構的本質,加深對它們的理解。

        在四個策略中,抽象是OO的核心策略,它是簡化問題分析的一種有效手段。分離將外界可觀察到的行為與實現(xiàn)這種行為用到的手段或機制相區(qū)分,即將“做什么”和“如何做”相區(qū)分。軟件系統(tǒng)中,分離表現(xiàn)為將軟件的對外界面與內部實現(xiàn)加以分開,它有利于簡化外部對軟件的使用,也有利于軟件實現(xiàn)的可插入性,體現(xiàn)了對外方便性和對內靈活性的統(tǒng)一。

        抽象和分離共同作用的結果產生了Java語言的兩種基本編程結構——類和接口。類是對一組具有共同屬性和行為的對象的抽象結果,而接口則是對一組行為特征的抽象描述。區(qū)別在于類只提供了軟件界面與實現(xiàn)的部分分離,軟件界面與實現(xiàn)仍處于同一個結構之中;而接口則提供了軟件界面與實現(xiàn)的徹底分離,接口作為獨立存在的軟件界面描述了行為特征,而行為實現(xiàn)則交由實現(xiàn)該接口的類去完成。

        上述兩個設計策略在單一的類或接口中即可體現(xiàn),而組合和概化策略則涉及到多個類或接口。文獻[1]中的組合策略相當于UML中的“關聯(lián)”關系,指的是多個簡單的類或接口通過關聯(lián),可以形成規(guī)模和復雜度更高的系統(tǒng)。關聯(lián)有兩種特殊的表現(xiàn)形式:聚集(aggregation)和合成(composition),都可用于表達整體—部分關系。

        概化,又稱泛化,用來確定一組軟件實體(類、模塊、方法等)之間通用的或共同的要素。文獻[1]給出了概化的三種形式:層次性、多態(tài)性和設計模式。層次性即概化/特化層次,處于這種層次中的多個類或接口之間就是繼承關系。多態(tài)性用來捕獲方法上的共性,通過動態(tài)綁定機制,多態(tài)性允許以統(tǒng)一一致的方式操作不同類的對象。設計模式提供了對經(jīng)常遇到的設計問題的一種通用解決方案,描述了解決方案中涉及的多個類或接口及其相互關系。

        四種OO設計策略與Java的兩種基本編程結構的關系如圖1所示。

        教學過程中,學生普遍重視對語法細節(jié)的學習,而常常忽視對Java程序結構的整體把握。通過對這兩種基本編程結構的學習和理解,有助于增強學生編程的宏觀意識,進而為隨后的語法學習打下良好基礎。

        3以OO設計策略為主線,有序串講Java的OOP知識點

        Java語言教學中涉及到很多OOP的概念和知識點,初學者面對這些看似雜亂無序、簡單堆砌的語言現(xiàn)象常常感到學無章法,難以理解和掌握。筆者通過實踐發(fā)現(xiàn),以OO設計策略為主線,圍繞基本編程結構,可以將主要的OOP知識點有機貫穿起來形成有序的知識結構,不僅有利于教師理清教學思路,更能幫助學生準確把握知識點間的內在聯(lián)系。

        圖2反映了基于四種OO設計策略對與類相關的知識點進行歸納組織的情況,簡要說明如下:

        類的構成體現(xiàn)了抽象策略的作用結果:類是一組具有共同屬性和行為的對象的抽象,對象的屬性和行為分別被抽象為類的數(shù)據(jù)成員和方法成員。描述數(shù)據(jù)成員的要素之一是數(shù)據(jù)類型,Java中的數(shù)據(jù)類型可分為基本類型和引用類型,而后者體現(xiàn)了多個類(或接口)間的關聯(lián)關系。數(shù)據(jù)成員依據(jù)其被共享的范圍,分為類成員變量和實例成員變量:類成員變量為該類的所有對象所共享,而實例成員變量則在每個對象中獨立存在。類成員變量的初始化需要利用靜態(tài)初始化器,而實例成員變量的初始化則需要在對象創(chuàng)建時調用構造器來完成。類的方法成員可以重載,this常用于方法的重載定義中(構造器雖不屬于方法成員,但同樣允許重載和使用this)。方法成員在描述對象行為時,需要順序、選擇和循環(huán)三種基本控制結構,而處理異常的try-catch-finally語句塊則可看作是一種特殊的控制結構。

        分離策略主要體現(xiàn)于類成員的訪問控制,特別是公有成員和私有成員上。公有成員提供了類的完全外部可見性,是類對外提供服務的軟件界面,而私有成員則將實現(xiàn)細節(jié)嚴格封裝在類的內部,不能被外界所訪問。訪問控制中涉及到的受保護成員,主要在具有繼承關系的類層次中發(fā)揮作用,因此可以納入概化策略的作用范疇。

        Java構造的軟件系統(tǒng)通常由多個類或接口組合而成,而為多個類或接口間提供相互關聯(lián)的正是Java的引用類型。所有八種基本數(shù)據(jù)類型之外的其他類型都是引用類型,數(shù)組、字符串、I/O流就是三種常見的引用類型。教學過程中應明確引用類型變量與基本類型變量、以及與被引用對象的區(qū)別,比較操作引用類型變量與被引用對象的方法的不同。

        繼承和多態(tài)是OOP中的兩個重要概念,都可歸為概化策略的范疇。類似于生物學的遺傳,繼承提供了父子類之間的相似性,以支持代碼級的軟件重用。與公有成員提供完全的外部可見性不同,受保護成員提供了具有繼承關系的類層次上的可見性。覆蓋是在繼承基礎上賦予了子類對父類的變異特性:允許子類對繼承自父類的公有和受保護成員方法重新定義,以產生有別于父類的行為特征。實現(xiàn)方法的覆蓋時,常使用super關鍵字,而最終方法和最終類則有助于防止覆蓋行為的不恰當發(fā)生。多態(tài)體現(xiàn)了軟件世界行為實現(xiàn)的多樣性,其實現(xiàn)需要依托于繼承[2],即利用繼承形成的層次關系,把具有通用功能的行為聲明為抽象方法放在高層,而在較低層次覆蓋抽象方法實現(xiàn)具體的行為定義,則程序運行時通過動態(tài)綁定,低層上生成的對象能夠對通用行為做出不同的響應,產生多態(tài)的效果。包含抽象方法的類就是抽象類。

        接口可以看作是一種特殊的抽象類,但Java將接口單獨作為一種基本編程結構更有助于提高接口的抽象和分離級別:接口的定義與實現(xiàn)完全分離,定義中只允許包含常量和抽象方法,其實現(xiàn)由類通過覆蓋抽象方法來完成。與類的單一繼承不同,Java中接口允許多繼承。與接口相關的主要知識點結構如圖3所示。

        對相關的類和接口的組織涉及到包,可以缺省類中成員的訪問控制屬性使該成員具有包可見性。通過package語句創(chuàng)建好包后,需要利用import語句將包中的類或接口導入才能使用。

        以OO設計策略為主線,圍繞基本編程結構,通過對上述主要知識點的梳理可以加深對Java語言的OOP機制的深入理解,有助于取得事半功倍的教學效果。

        4 立足OO設計原則和設計模式,深入考查Java的OOD思想

        在學時允許的情況下,可以適當挖掘教學內容的深度,立足于OO設計原則和設計模式,考查Java類庫和各種OOP語法機制背后隱藏的設計思想,有意識引導教學層面由OOP向OOD過渡,為學生今后從事實際的系統(tǒng)設計打下堅實的基礎。

        OOD要解決的核心問題是在支持一個軟件系統(tǒng)可維護性的同時,提高系統(tǒng)的可復用性[3]??删S護性復用是以設計原則和設計模式為基礎的,前者是保證可維護性復用的具有普遍性、共同的思想原則,后者則是設計原則在具體問題中的運用和體現(xiàn)。

        文獻[3]給出的設計原則有:開-閉原則(OCP)、里氏代換原則(LSP)、依賴倒置原則(DIP)、接口隔離原則、合成/聚合原則(CARP)和迪米特法則(LoD)。其中開-閉原則是其他原則的目標,而其他原則是實現(xiàn)開-閉原則的手段。

        理解OOD原則,有助于更好運用Java的OOP機制實現(xiàn)軟件設計。下面結合示例對此做一簡要分析。

        文獻[4]給出了一個應用開-閉原則的例子。Hp類、Epson類、Canon類分別表示不同類型的打印機,Output類與這3個類都有關聯(lián)。軟件運行時,要求Output類能根據(jù)當前與系統(tǒng)相連的打印機類型而分別使用不同類中的print()方法。圖4是一種不好的設計,將Output類與具體類直接關聯(lián)的后果是Output類中會出現(xiàn)復雜的if...else(或switch…case)結構來判斷現(xiàn)有的打印機類型。如果系統(tǒng)將來增加了一種新型打印機,比如Legend打印機,那么必須要修改Output類,因此該設計不具有擴展性。

        開-閉原則指出:一個軟件實體應當對擴展開放,對修改關閉。一種滿足開-閉原則的設計如圖5所示。該設計引入了接口Printer,其中包含一個抽象方法print()。Output類只與Printer接口關聯(lián)(聲明了一個類型為Printer的變量p),而所有具體的打印機類均要求實現(xiàn)Printer接口?,F(xiàn)在Output類中不再需要復雜的分支結構去判斷相連的打印機類型了,輸出時只要使用p.print()方法即可,簡化了Output類的編寫。更為重要的是,當系統(tǒng)增加新型的Legend打印機時,只要讓Legend類實現(xiàn)Printer接口,而根本無須修改Output類即可達到擴展的目的。因此現(xiàn)在的設計很好地體現(xiàn)了開-閉原則的要求。

        圖5的設計也有助于理解依賴倒置原則:軟件系統(tǒng)的設計要依賴于抽象(接口或抽象類),而不要依賴于實現(xiàn)(具體類)。Java中的接口和抽象類,正是支持這一原則的語言機制。按照該原則要求,應當使用Java的接口和抽象類而不是具體類進行變量、形參、方法返回值的類型聲明以及數(shù)據(jù)類型的轉換。并且由于接口具有比抽象類更好的抽象特性,因此理想情況是優(yōu)先使用接口來聲明類型的層次結構的起點。這樣使得軟件系統(tǒng)在靈活性、可擴展性和可插入性方面得到保證。

        設計模式是OO領域近年來最重要的研究進展。GoF概括的二十三種設計模式分為創(chuàng)建模式、結構模式和行為模式三大類[5]。Java的類庫設計很多都應用了這些設計模式的研究成果。例如,Java I/O流中的過濾器流(FilterInputStream、FilterOutputStream、FilterReader和FilterWriter)是裝飾(Decorator)模式的一種典型應用,而InputStreamReader、OutputStreamWriter由于實現(xiàn)了byte流到char流的轉換,因而屬于適配器(Adapter)模式。再如,Java 1.1版本以后的事件處理機制依賴于建立在觀察者(Observer)模式基礎上的委托事件模型,Swing庫的組織體現(xiàn)出合成(Composite)模式,JDBC API應用了門面(Facade)模式,等等。

        因此,以Java語言為載體學習一些基本的設計模式,不僅有利于加深對Java類庫設計的理解,更能體會到設計模式對軟件復用的巨大威力和無窮魅力。

        5結束語

        Java語言教學的目標不僅僅是教會學生基本語法,更重要的是以Java語言為載體培養(yǎng)學生面向對象的思維方式和對問題的建模能力。因此立足于OO技術,用OO設計策略、設計原則和設計模式來指導Java語言教學,符合這一目標的要求,將有利于促進Java語言教學向著更高的水平邁進。

        參考文獻

        [1] Dennis Kafura. Java面向對象程序設計教程[M]. 北京:機械工業(yè)出版社, 2003:1-33.

        [2] 葉乃文, 喻國寶. 面向對象程序設計[M]. 北京:清華大學出版社, 2004:145.

        [3] 閆宏. Java與模式[M]. 北京:電子工業(yè)出版社,2002:33-40.

        [4] 王少鋒. 面向對象技術UML教程[M]. 北京:清華大學出版社, 2004:65-66.

        [5] 周曉聰, 李文軍, 李師賢. 面向對象程序設計與Java語言[M]. 北京:機械工業(yè)出版社, 2004:408-411.

        Analysis of the Guiding Role of Object-Oriented Technology to Java Language Teaching

        Bi Ye

        (Department of Computer Science and Technology, Huaihai Institute of Technology, Jiangsu Lianyungang , 222005, China)

        Abstratct: From the aspects of understanding the programming structures, arranging the knowledge points and parsing the Java class library, this paper analyses the guiding role of the OO design strategies design principles and design patterns to Java language teaching and then points out that teaching the Java language mechanism based on these OO technologies will make the teaching goal clear and the teaching effect enhanced.

        Key Words: Object Oriented; Design Strategy; Design Principle; Design Pattern; Java Teaching

        日韩精品人妻少妇一区二区| 精品人妻伦九区久久aaa片69| 国产精品调教| 精品系列无码一区二区三区| 日韩av一区二区蜜桃| 国产精品久久久久久久久绿色| 真人直播 免费视频| 久久中文字幕久久久久| 亚洲一区二区视频免费看| 伊人久久大香线蕉av不变影院| av一区二区三区人妻少妇| 久久精品中文字幕极品| 亚洲中文字幕乱码在线视频| 午夜秒播久久精品麻豆| 成人免费看片又大又黄| 国产精品自产拍在线观看免费| 69精品人妻一区二区| 亚洲黄色天堂网站在线观看禁18| av一区二区三区人妻少妇 | 中文字幕人妻少妇引诱隔壁| 91精品福利一区二区| 亚洲色图在线视频观看| 漂亮人妻被强了完整版| 午夜无码国产理论在线| 在线观看亚洲精品国产| 久久精品人妻一区二三区| 无码一区二区三区中文字幕| 日本动态120秒免费| 亚洲成av人片在线天堂无| 国产亚洲精品97在线视频一| 色一情一乱一乱一区99av| 91精品91| 国产精品又湿又黄九九九久久嫩草 | 最新精品国偷自产在线| 91天堂素人精品系列全集亚洲| 亚洲一区二区三区av天堂| 国产精品永久在线观看| 亚洲国产高清在线观看视频| 秋霞国产av一区二区三区| 极品尤物人妻堕落沉沦| 国产人妻久久精品二区三区|