摘要:面向對象分析與設計,涉及的內容新、實踐性強。文章著眼于高等職業院校,分析了課程體系、教學目標,以類模型圖為例,闡述了抽象-實現-建模的三步教學法。
關鍵詞:教學方法;面向對象分析與設計;統一建模語言;課程體系;教學目標
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2008)34-1939-02
Discussion on the Method of Teaching OOAD in Vocational Colleges
JI Fei
(Software Institute,Nanjing College of Information Technology,Nanjing 210000,China)
Abstract: OOAD covers some new and practical contents. Based on the analysis of the curriculum and the instructional objectives in vocational colleges, we expatiate on abstraction-implementation-modeling teaching method with class diagram.
Key words: teaching method; OOAD; UML; curriculum; instructional objectives
1 引言
目前,高等院校(包括高職院校)在計算機相關專業都開設了“面向對象分析與設計”這門課程。課程涉及的內容新、實踐性強,目前仍在不斷發展、不斷完善;對于學生,只有理解相關概念、技術、方法,而不是死記硬背,才能學以致用,才能在以后的實際工作中跟上技術發展的步伐。所以,探索一種新的、行之有效的教學方法是完成教學任務、達到教學目標的關鍵。這里,我們著眼于高職院校,來探討“面向對象分析與設計”這門課程的教學方法。
2 課程體系與教學目標
高等職業教育屬于技術應用型教育,以培養高技能的實用型、應用性人才為目標,這一目標在專業設置、課程體系、教學大綱中逐步得到明確、落實。
在計算機相關專業的課程體系中,“面向對象分析與設計”是一門專業課程,開設于“程序設計基礎”等專業基礎課程之后;目前,絕大多數學校的“程序設計基礎”課程以C++、Java、C#等作為教學語言。所以,學生在學習“面向對象分析與設計”之前,已經能夠在編程語言級別上認識“面向對象”,這是學生認知的基礎,因而也就是我們展開教學的基礎。
在教學大綱中,“面向對象分析與設計”的教學目標包括:①理解面向對象的概念、思想、方法;②理解軟件建模的意義、方法、步驟;③具有閱讀、理解軟件模型圖的能力;④具有使用軟件建模工具繪制軟件模型圖的能力。
3 教學方法
馬克思主義的認識論告訴我們:認識是一個由“實踐到認識”再由“認識到實踐”的不斷反復、提高的過程。綜合學生的認知基礎和課程的教學目標,我們通過“抽象-實現-建模”這三個步驟來展開各個知識點的教學:①抽象(實踐到認識):分析現實世界中的事物,抽取、講解與知識點有關的概念、思想、方法等,以加深學生的理解,防止死記硬背;②實現(認識到實踐):通過程序代碼,來分析這些知識點對應著實際編程過程中的哪些工作,升華學生對知識點的理解;③建模(反復、提高):引入UML的模型圖和和圖形符號,講述模型圖的作用,同時演示、講解建模工具的使用。
下面,我們通過類、繼承、關聯這些概念的簡化教學過程來演示這一方法。
3.1 類的教學
[抽象] 張三是一個學生,李四是一個學生,學校有許多學生。為了指定一個具體的學生,我們必須指定其學號、姓名、班級、系部等信息。這些信息用來描述學生的特征,以便將不同的學生區分開來;同時學生也有行為,如:報到注冊、考試、借書、請假,等等。可見,學生是具有相同特征、行為的群體,為了方便,我們給定一個包含共同特征、共同行為的描述框架,通過指定這個框架中的特征,就能明確指定群體中的一員。這個描述框架是群體共同特征及行為的抽象,我們稱之為類,這個類取名為“學生”。對于教師,又是另外一個群體,我們需要另一個框架來描述,即“教師”類。可見類是一組具有相同特征和行為事物的抽象描述,類有三個要素:名稱、一組特征、一組行為。
[實現] 在編程語言中,類是一個自定義的數據類型,C++使用“class”來標識這種定義。在C++語言中,前述的三個要素分別是類名稱、成員變量、成員函數,考慮到信息隱藏的需要,需要控制對成員變量、成員函數的訪問。例如:
class Student //定義一個類
{
private:
String no;//學號
String name;//姓名
……
public:
void register();//報到注冊
void borrow(String bookID); //借書
……
};
[建模]在實際的軟件項目中,需求明確之后,并不是直接編程,而是將構思的軟件系統畫在圖紙上,以便討論、推敲、修改,完了之后才是編程,這樣可以避免一時的倉促或疏忽,導致返工,浪費工時。在圖紙上構建軟件系統,就是系統分析和設計,在這里,就是繪制系統的類圖。UML使用一個上下分成三個部分的矩形來表示,上面是類名稱,中間是成員變量,下面是成員函數,如下圖所視。這樣,我們就可以根據類圖來編寫代碼,反之,也可以根據代碼來構建類圖。
在Rational Rose中,用屬性(attribute)來表示成員變量,用操作(operation)來表示成員函數(由于篇幅關系,這里略去具體的操作,在實際教學中,可以采用講練結合的一體化教學方法)。
3.2 繼承的教學
[抽象] 有一些學生是黨員,需要入黨介紹人、入黨時間、交黨費這樣的一些不同于其他學生的特征和行為,即具有黨員這樣的特殊性,怎樣來描述這一群體的學生呢?從哲學的角度來講,學生黨員是學生,不僅具有黨員這個特殊性,而且具有學生這個一般性。這樣,我們可以在原來描述框架的基礎上,添加有關黨員的一些描述信息,就可以得到一個適合于學生黨員的、新的描述框架。這種一般與特殊的關系,我們使用繼承來表示:
繼承是讓某個類型的對象具有其它類的特征和行為。通過繼承,可以使類的實例擁有另一個類的特征和行為。
[實現]在編程語言中,一個類(子類)從另一個類(父類)繼承成員變量或函數,就是在父類的基礎上再定義一個新類(子類),在其中添加自己所特有的成員變量或函數。在C++中,學生黨員類可以如下定義(這里的CPStudent不僅具有自己的成員,而且還包含了Student中的成員):
class CPStudent: public Student//定義一個子類
{
private:
String introducer;//介紹人
……
public:
void payDues(Double amount);//交黨費
……
};
[建模]UML使用一個帶空心箭頭的實線來表示繼承,由子類指向父類。在Rational Rose 中繼承使用泛化(generalization)關系表示。上述CPStudent和Student的關系表示如圖2所示。
3.3 關聯的教學
[抽象] 學生的圖書證,是一類事物,可以通過編號、發放日期、有效期等信息來描述,另外上面還包含了學生的信息,以確定學生的身份。這里,圖書證和學生存在一種關系,這種關系是關聯。
一類事物其特征信息可能是另一類事物,我們說這兩類事物之間存在關聯。
[實現]在編程語言中,關聯關系表示:一個類的屬性其類型是另一個類。在C++中,上述圖書證和學生的關聯在代碼上實現如下:
class LibraryCard //圖書證類
{
private:
String code;//編號
Student stu;//持證學生
……
};
[建模] UML使用一個帶箭頭的實線來表示關聯,由包含類指向被包含的類。這里,不再需要在圖中給LibraryCard添加stu屬性,這個stu屬性蘊涵在關聯關系中。上述LibraryCard和Student的關系表示如圖3所示。
4 小結
本文從高等職業教育的性質、目標出發,分析了計算機相關專業的課程體系、“面向對象分析與設計”課程的教學目標,以類模型圖為例,闡述了“抽象-實現-建模”的三步教學法,這種教學方法是馬克思主義認識論的一個具體應用。教學實踐表明,該方法能夠活躍課堂的氣氛、啟發學生的思維,教學效果達到了教學目標的要求,符合高等職業教育對人才培養目標的要求。
參考文獻:
[1] 盧紅學.對我國高等職業教育人才培養目標的再認識[J].荊門職業技術學院學報,2007(4).
[2] Boggs W,Boggs M.UML與Rational Rose 2002 從入門到精通[M].邱仲潘,譯.北京:電子工業出版社,2002.
[3] 國剛,周峰,孫更新.UML與Rational Rose 2003 軟件工程 統一建模原理與實踐教程[M].北京:電子工業出版社,2008.
[4]上海市高校《馬克思主義哲學基本原理》編寫組.馬克思主義哲學基本原理[M].上海:上海人民出版社,1980.