Java程式設計初學者之迷失與迷思概念分析 A Study of Misconceptions and Missing Conceptions of Novice Java Programmers

Journal Title
Journal ISSN
Volume Title
本研究旨在探討程式設計初學者於實作Java程式專案時所遭遇之困難,並以之分析學習者對於Java程式語言之語法、語意及物件導向概念的迷失與迷思情形。研究實施採質性研究之一對一診斷性訪談,參與者為台北市某技術學院資管系一年級學生共22名,學生年齡在18至21歲之間。研究者設計了涵蓋不同程式設計概念的9個題目供學生實作,並由訪談者於學生解題過程中全程在旁觀察,且視需要提供逐漸深入之提示,以了解學生在各項程式設計概念的迷失或迷思程度。研究結果發現,學生的主要「迷失」概念包括:(1)無法記住Java某些敘述之語法規定,或不清楚某些敘述的電腦內部運作情形,例如迴圈條件式和方法呼叫之寫法及控制流程;(2)不了解某些物件導向概念,例如繼承(inheritance)、多型(polymorphism)、及方法重載(overloading);(3)雖能說出某些概念的定義,但並不了解該定義之真正意涵,以致無法將其應用於實際解題;(4)無法自行查閱並應用Java標準類別庫的功能;(5)未能釐清各個類別在程式專案整體架構中所扮演的角色;以及(6)無法理解編譯器的錯誤訊息並進行除錯。本研究也整理出初學者容易形成之「迷思」概念,包括︰(1)未能釐清方法(method)的形式參數(formal parameter)與實際參數(actual parameter)之間的異同,以致在寫法上互相混用;(2)對資料型態之認知僅止於整數(int)、布林(boolean)等基本資料型態,不知道類別也是資料型態的一種;(3)誤以為所有類別的建構式皆在專案一開啟時即被呼叫;(4)不了解建構式不同於一般的方法,無須定義回傳值的資料型態;(5)誤以為建構式可被定義為類別的私有(private)成員;(6)誤以為類別的私有(private)方法內不能呼叫外部類別的方法。Java程式設計教師應可針對本研究所整理之迷失及迷思概念,於教學中特別加強講解,以提升學生之學習成效。
The purpose of this study is to investigate the difficulties encountered by novice Java programmers. In particular, it tries to identify typical missing conceptions and misconceptions students may have about Java’s syntax and semantics as well as fundamental concepts of object-oriented programming. One-on-one clinical interviews were conducted with 22 freshmen. The students were observed closely by the researcher as they implemented a well-specified Java project. Whenever an error occurred in a student’s program and s/he did not know how to proceed, the researcher asked him/her a sequence of pre-designed questions and gave suitable hints, ranging from general suggestions to detailed specifics, in order to determine the cause of the impasse. This study revealed that many students: (1) could not recall the correct syntax of certain Java programming constructs or did not understand how they (e.g., for loops, for-each loops, and method invocations) were executed internatlly; (2) had difficulties understading certain object-oriented concepts (e.g., inheritance, polymorphism, and overloading); (3) did not know certain object-oriented concepts well enough to apply them in problem solving; (4) were not familiar with standard Java libraries; (5) were unable to realize how various classes defined in a Java program related and interacted with one another; and (6) were incapable of debugging programming errors based on the error messages given by the compiler. This study also unveiled the following misconceptions harbored by many students: (1) They often confused formal parameters with actual parameters; (2) many failed to recognize that classes were actually user-defined data types that could be used to define variables just like built-in data types such as integer and boolean; (3) some erroneously thought that constructors of all classes defined in a project were invoked automatically when the project was opened; (4) many did not realize that constructors, as a special type of methods, did not require a return type; (5) some defined the constructor(s) of a class as its private member(s) while they should be public members instead; (6) some mistakenly considered that a private method could not invoke methods defined in other classes. It is essential that Java programming instructors pay special attention to help students to rectify the missing conceptions and misconceptions identified above.
Java程式設計, 迷失概念, 迷思概念, 診斷性訪談, Java programming, missing conception, misconception, clinical interview