先週は、生徒さんに「今までJavaを勉強してきて、理解できなかったことをリストアップしなさい」という宿題を出すことに。
すると、みんな共通して「this」を挙げてきました。
はわかるけど、
が、なんのことなのかさっぱり・・・。ということのようです。
アレアレ?おやおや?・・もうちょっと探りをいれてみることに。
前の授業では、こんなプログラムをサラッと書いてのけていますが、osaru326さんからのコメントにもあったとおり、私にも、このプログラムを理解するのはむずかしい!
そこでこちらからは、こんなことを質問してみました。
thisの問題も然り、結局は何が理解できていないのか、だんだんわかってきました。
変数 や this や クラス名は、実体を「指す」もの = 参照
生徒さんは、この基本中の基本が体得できてないんですね。
プログラムを書くときに一番大切なことは、
を、瞬時に判断できること。だと私は思います。
こんな絵を描いてみました。
この絵を描いたら、生徒さんは、thisを含めて、教科書にのってるソースコードがスーッと理解できるようになったそうです。
Javaが登場以来、「ポインタやメモリ管理が不要な言語」なんていって、そのあたりの勉強をおろそかにしがち。確かに楽にはなったのですが、なくなったわけではありません。ココは、解るまでくりかえし学習が必要なところです。
「参照・実体」という言葉がもつ語感も良くないのかもしれませんね。概念的というかなんというか・・。本当は、すこぶる物理的なモノなのに(なにかをゴマカシてる感じもしますw)。
こういう基本的なところを、根掘り葉掘り、みっちり復習しました。まずは基本を固めないと、「プログラミングは面白い」とは感じられないのかもしれませんね。これをきっかけに、少しでもJavaの授業が楽しくなることを期待してます。
※javaの教科書からアプレットは外そうよ。と、本気で思います。
今日でJavaの特訓は終わり。来週から本格的にUMLの授業に入る予定です。