熊威
摘 ?要 ?針對(duì)高職學(xué)院Java編程基礎(chǔ)課程教學(xué)過程中,學(xué)生對(duì)類和對(duì)象難以理解的現(xiàn)狀,利用類比和對(duì)比的方式引出面向?qū)ο蟮乃枷?,以表格工具引出類和?duì)象的概念和思維方式,同時(shí)將類和對(duì)象的思維方式引入文學(xué)領(lǐng)域,用寫詩的過程幫助學(xué)生訓(xùn)練類和對(duì)象的思維。通過上述教學(xué)設(shè)計(jì),增強(qiáng)學(xué)生學(xué)習(xí)興趣,簡化復(fù)雜的思維邏輯,最終達(dá)到提升課程教學(xué)效果的目的。
關(guān)鍵詞 ?Java;面向?qū)ο?;類和?duì)象;教學(xué)設(shè)計(jì)
中圖分類號(hào):G712 ? ?文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1671-489X(2023)05-0082-04
0 ?引言
面向?qū)ο笫荍ava編程基礎(chǔ)課程的核心思想,而類和對(duì)象是面向?qū)ο笤O(shè)計(jì)中兩個(gè)最基本的概念,但是學(xué)生在完全沒有接觸過面向?qū)ο笏季S的情況下,理解類和對(duì)象非常困難。特別是高職學(xué)院學(xué)生,因?yàn)槠浠A(chǔ)和學(xué)習(xí)能力相對(duì)較差,如果使用傳統(tǒng)的教學(xué)方法,學(xué)生很難理解,必須結(jié)合真實(shí)的事物和場(chǎng)景,幫助學(xué)生逐步構(gòu)建面向?qū)ο蟮乃季S,再建立類和對(duì)象的思想。
1 ?類和對(duì)象的教學(xué)設(shè)計(jì)
要理解類和對(duì)象,要先有面向?qū)ο蟮乃枷?,同時(shí)為了鞏固類和對(duì)象的思維,還需不斷進(jìn)行實(shí)踐練習(xí)。筆者根據(jù)高職學(xué)生的實(shí)際情況,進(jìn)行如下的教學(xué)設(shè)計(jì)。
1.1 ?構(gòu)建面向?qū)ο蟮乃季S
結(jié)合學(xué)生的實(shí)際情況,在學(xué)習(xí)Java編程基礎(chǔ)課程之前,學(xué)生已學(xué)習(xí)過C語言編程基礎(chǔ),可以以此為切入點(diǎn),讓學(xué)生通過回顧C(jī)語言編程基礎(chǔ)學(xué)習(xí)中代碼的實(shí)現(xiàn)過程理解面向過程,然后通過類比和對(duì)比過程,讓學(xué)生形象地認(rèn)識(shí)面向?qū)ο蟆?/p>
1.1.1 ?通過類比認(rèn)識(shí)面向過程
面向過程思維解決的是如何按照步驟實(shí)現(xiàn)目標(biāo)任務(wù),同時(shí)該過程適合簡單的不需要過多協(xié)作的場(chǎng)景,重點(diǎn)關(guān)注如何執(zhí)行。以使用電腦觀看視頻為例,具體步驟為:接通電源→打開電腦開關(guān)→打開視頻文件→觀看視頻。該過程是一步步解決觀看視頻問題的步驟,整個(gè)流程相對(duì)簡單,無需協(xié)作。
1.1.2 ?通過對(duì)比和類比認(rèn)識(shí)面向?qū)ο?/p>
基于對(duì)面向過程的理解,通過對(duì)比引出面向?qū)ο蠼鉀Q的是相對(duì)復(fù)雜、需要相互協(xié)作完成的問題。以生產(chǎn)電腦為例類比面向?qū)ο笏季S,一臺(tái)電腦是由很多部件組成的,如顯示屏、CPU、主板、內(nèi)存、鍵盤等,每一個(gè)部件又都有各自的生產(chǎn)步驟,并且不同部件之間需要有標(biāo)準(zhǔn)的兼容方式。作為電腦生產(chǎn)企業(yè),可以找不同部件的生產(chǎn)廠家完成不同部件的生產(chǎn),只需制定不同部件之間兼容方式,而不用關(guān)注各個(gè)部件各自的生產(chǎn)步驟,最終根據(jù)整體設(shè)計(jì)進(jìn)行組裝即可完成電腦的生產(chǎn)。
1.1.3 ?面向過程與面向?qū)ο蟮膮^(qū)別和聯(lián)系
面向過程是一種“步驟思維”,重點(diǎn)關(guān)注解決問題的具體步驟,主要用于解決相對(duì)簡單的問題,而面向?qū)ο笫且环N“設(shè)計(jì)思維”,重點(diǎn)關(guān)注解決問題的設(shè)計(jì)和協(xié)作過程,主要用于解決相對(duì)復(fù)雜的問題。面向?qū)ο笈c面向過程是密不可分的,從宏觀上看,解決問題需要通過面向?qū)ο笏季S進(jìn)行整體設(shè)計(jì);而從微觀上看,各個(gè)細(xì)節(jié)仍然需要通過面向過程思維按步驟實(shí)現(xiàn)。例如,電腦制造過程中,整體結(jié)構(gòu)設(shè)計(jì)和部件之間的兼容關(guān)系,需要通過面向?qū)ο蟮乃季S進(jìn)行設(shè)計(jì),而各個(gè)部件的具體制造過程則需要通過面向過程的思維進(jìn)行實(shí)現(xiàn)。
1.2 ?理解類和對(duì)象
在理解面向?qū)ο笏季S方式的基礎(chǔ)上,為了做到讓程序?qū)κ挛锏拿枋雠c事物在現(xiàn)實(shí)中的形態(tài)保持一致,提出類和對(duì)象的概念。在Java程序中,類和對(duì)象是最基本、最重要的單元,類可以表示某類事物基本特征的抽象,而對(duì)象則表示具體的事物。為了讓學(xué)生直觀地理解類和對(duì)象,筆者引入了表格進(jìn)行類比。在現(xiàn)實(shí)的生活場(chǎng)景中,表格無處不在,我們?cè)谒伎己吞幚韱栴}時(shí),都會(huì)使用表格工具,表格工具實(shí)際上就是一種典型的面向?qū)ο笏季S工具[1]。以表1所示的學(xué)生信息表為例。
1.2.1 ?表格與類的成員變量
通過表格可以方便地統(tǒng)計(jì)所有學(xué)生的信息,將表中的列稱之為字段,除“上課流程”外,每一個(gè)字段都是學(xué)生的一個(gè)基本屬性,將這些字段的組合當(dāng)作一個(gè)整體(稱之為表頭),就可以表示學(xué)生基本特征的抽象,這正好可以詮釋類的概念。圖1的上半部分為表頭與類的成員變量的對(duì)應(yīng)關(guān)系,從中可以看出學(xué)生信息表的表頭和學(xué)生信息類的結(jié)構(gòu)完全一樣,表頭的每個(gè)字段都對(duì)應(yīng)類的一個(gè)成員變量。
1.2.2 ?表格與類的成員方法
每位學(xué)生除了基本的屬性外,還都會(huì)有一些相同的動(dòng)作,例如學(xué)生都要上課,而上課過程中也會(huì)有一些固定的動(dòng)作:進(jìn)教室→交手機(jī)→聽講→回答問題→完成作業(yè)。在表1中,“上課流程”可以體現(xiàn)該動(dòng)作,由于學(xué)生的上課流程都是相同的動(dòng)作,所以可以通過合并單元格的形式來統(tǒng)一表示。同時(shí)該過程也可以在類中進(jìn)行定義,其定義方式如圖1的下半部分所示。
1.2.3 ?表格與類的對(duì)象
除開表頭,表體的每一行表示一個(gè)具體的學(xué)生信息,這也正好詮釋了對(duì)象的概念。將表體的每一行和對(duì)象進(jìn)行類比。圖2為表體與類的對(duì)象的對(duì)應(yīng)關(guān)系,從中可以看出學(xué)生信息表表體的每一行和學(xué)生信息類的每一個(gè)對(duì)象一一對(duì)應(yīng)。通過圖2所示的對(duì)應(yīng)關(guān)系,對(duì)象中并沒有體現(xiàn)上課流程的信息,這是因?yàn)樯险n流程是每一個(gè)對(duì)象都相同的標(biāo)準(zhǔn)過程,可以直接在類中體現(xiàn),不需要在每一個(gè)對(duì)象中來體現(xiàn)。只有那些不同對(duì)象之間存在差異的屬性,才需要在對(duì)象中體現(xiàn)。
1.2.4 ?表格中字段的約束
類在對(duì)事物基本特征進(jìn)行抽象的同時(shí),還可以對(duì)各個(gè)屬性進(jìn)行約束,例如對(duì)學(xué)生信息表的各個(gè)字段的約束如表2所示,通過表格中詳細(xì)條件可以發(fā)現(xiàn),除了可以對(duì)單個(gè)字段進(jìn)行約束,還可以對(duì)多個(gè)字段進(jìn)行聯(lián)合約束。這些約束在類的封裝時(shí),可以通過構(gòu)造方法或者Set方法來實(shí)現(xiàn)。
1.2.5 ?類和對(duì)象思維流程總結(jié)
根據(jù)前面的分析過程,類和對(duì)象的思維流程總結(jié)為如下幾個(gè)步驟:
1)根據(jù)對(duì)實(shí)際場(chǎng)景分析,概括出場(chǎng)景中屬性;
2)分析這些屬性,哪些是不同對(duì)象存在差異的(定義為實(shí)物),哪些是所有對(duì)象都需要參與完成的(定義為虛物)。
3)列出各個(gè)屬性可以取的值;
4)列出對(duì)所有屬性的約束條件;
5)根據(jù)約束調(diào)整屬性的取值組合。
1.3 ?類和對(duì)象思維訓(xùn)練
為了幫助學(xué)生鞏固類和對(duì)象的思維,學(xué)生還需要進(jìn)行相應(yīng)的思維訓(xùn)練。類和對(duì)象的思維是一種邏輯思維流程,因此其不僅能解決理工科問題,同樣也能解決文學(xué)問題,如作一首詩,也可以通過類和對(duì)象的思維來解決,將使用類和對(duì)象的思維流程來還原古詩《黃鶴樓送孟浩然之廣陵》的創(chuàng)作過程。
1.3.1 ?概括場(chǎng)景中的屬性
首先,了解一下作者當(dāng)時(shí)所處的場(chǎng)景:農(nóng)歷三月,作者李白和好友孟浩然在武昌相見,幾天之后孟浩然要坐船離開武昌,沿著長江向東去往廣陵。因?yàn)槔畎缀兔虾迫桓星樯詈?,李白前往江邊的黃鶴樓送行,望著孟浩然所乘坐的船只漸漸遠(yuǎn)去,心中依依不舍。根據(jù)場(chǎng)景描述,整理出如下一些屬性:
時(shí)間:農(nóng)歷三月
地點(diǎn):出發(fā)地點(diǎn)(武昌)、到達(dá)地點(diǎn)(廣陵)
人物:李白(作者)、孟浩然
環(huán)境:黃鶴樓、長江、船、天空
事件:送別
情懷:依依不舍、友情深厚
1.3.2 ?更新屬性的虛實(shí)性
在所有列出的屬性中,時(shí)間、地點(diǎn)、任務(wù)、環(huán)境和事件等對(duì)應(yīng)的屬性是屬于客觀存在的,不同對(duì)象基于這些屬性的取值是存在差異的,所以這些屬性是實(shí)物屬性,可以類比為類中的成員變量。而情懷對(duì)應(yīng)的屬性,是作者在所處的場(chǎng)景之下的有感而發(fā),可以說是所有其他屬性共同作業(yè)的結(jié)果,所以將其定義為虛物屬性,可以類比為類中的成員方法。
1.3.3 ?列出屬性可取的值
各個(gè)屬性的別稱和雅稱即為該屬性可取的值,如表3所示。表中不同的屬性值可以理解為表格中的表頭,或者是類中的成員變量,而各個(gè)屬性的別稱則可以理解為表頭中不同字段的取值,或者是成員的取值。將各個(gè)屬性各取一個(gè)值進(jìn)行組合,即為表體的一行,或者是類的一個(gè)對(duì)象,而每一個(gè)對(duì)象都是要作的詩的一個(gè)版本,于是得到第一個(gè)版本:
農(nóng)歷三月,好友孟浩然就要離開武昌了。
我在黃鶴樓上目送他沿江而下前往廣陵。
望著遠(yuǎn)去的船只慢慢變小,直到消失在視野中。
愿江水帶著祝福,護(hù)送好友順利到達(dá)目的地。
1.3.4 ?分析屬性的取值約束
創(chuàng)作的V0.1版本和最終作品還有很大的差距,但是已經(jīng)基本可以概括詩的場(chǎng)景了,我們將通過屬性的取值約束來對(duì)V0.1版本進(jìn)行優(yōu)化。《黃鶴樓送孟浩然之廣陵》原作屬于七言絕句,而七言絕句的結(jié)構(gòu)有如下一些約束:
1)全詩包含四句;
2)每句包含七個(gè)字;
3)滿足平仄格式要求。
1.3.5 ?根據(jù)約束調(diào)整屬性的取值組合
基于“四句”和“七字”的要求,我們可以在各個(gè)屬性取值中進(jìn)行替換和組合,優(yōu)化后的版本:
朋友將別武昌城,陽春三月往廣陵。
船只漸行終不見,但愿江水護(hù)君達(dá)。
基于平仄格式要求,同時(shí)詩人憑借其強(qiáng)大的文字和韻律功底,字斟句酌,得到了流傳千古的版本:
故人西辭黃鶴樓,煙花三月下?lián)P州。
孤帆遠(yuǎn)影碧空盡,唯見長江天際流。
2 ?結(jié)束語
教學(xué)效果的評(píng)價(jià)核心在于學(xué)生的學(xué)習(xí)效果和學(xué)習(xí)目標(biāo)的完成情況,該教學(xué)設(shè)計(jì)從學(xué)習(xí)目標(biāo)出發(fā),通過學(xué)生生活中的實(shí)際場(chǎng)景案例,讓學(xué)生形象地理解了面向過程與面向?qū)ο蟮膮^(qū)別和聯(lián)系。通過與常用表格工具的類比,讓學(xué)生理解類和對(duì)象的思維流程。同時(shí),在枯燥的理工科思維流程中,引入文學(xué)場(chǎng)景進(jìn)行思維訓(xùn)練,不僅提升了學(xué)生的課程參與效果,還可以幫助學(xué)生靈活應(yīng)用所學(xué)知識(shí),以最大限度幫助學(xué)生實(shí)現(xiàn)多維度的學(xué)習(xí)目標(biāo)[4]。當(dāng)然,該方法在實(shí)際教學(xué)過程中,仍然有許多需要改進(jìn)的地方,筆者會(huì)根據(jù)學(xué)生的反饋和其他教師的研討來繼續(xù)優(yōu)化教學(xué)設(shè)計(jì)。
3 ?參考文獻(xiàn)
[1] 教你用表格思想,來理解Java中類與對(duì)象的區(qū)別[EB/
OL].(2020-07-18)[2021-09-18].https://www.bilibili.
com/video/BV14C4y1b74m.
[2] 農(nóng)歷月份別稱[J].農(nóng)家之友,2003(8):51.
[3] 楊青芝.論古代文學(xué)作品的細(xì)讀和精講:以《黃鶴樓送
孟浩然之廣陵》為個(gè)案[J].邯鄲學(xué)院學(xué)報(bào),2018,28(1):
108-112.
[4] 孔祥蕾.重視反饋的逆向教學(xué)設(shè)計(jì):以質(zhì)譜課程的教學(xué)
為例[J].化學(xué)教育(中英文),2021,42(20):26-29.