• 検索結果がありません。

オブジェクト指向プログラミング教育のためのProcessingを用いた教材開発

N/A
N/A
Protected

Academic year: 2021

シェア "オブジェクト指向プログラミング教育のためのProcessingを用いた教材開発"

Copied!
4
0
0

読み込み中.... (全文を見る)

全文

(1)

- 51 -

オブジェクト指向プログラミング教育のための 3URFHVVLQJ を用いた教材開発

岩佐英彦

Development of teaching materials using Processing for Object Oriented 

Programming Education

Hidehiko Iwasa

*

This paper describes a new approach to teach object-oriented programming methodologies for 3rd and 4th grade

students in information and control system course of KINDAI technical college. To teach object-oriented methodologies, it is important to let student understand a concept of object-oriented, but it is relatively difficult because Java, a popular object-oriented programming language, is lack of ability to visualize objects earned from a class as drawings. In this paper, I introduce our approach to use Processing, a Java-based programming language that facilitates drawings, to let student understand concept of object-oriented. I also introduce some examples of program, that help student understand object-oriented techniques in step by step manner.

Keyword Object-oriented programming, Java, Processing, class, inheritance, and polymorphism

1.背景と目的

 本校*制御情報コースでは、平成 30 年度より本科 3 年生4 年生における必修科目であるプログラミング言語 I、 II で学習するプログラミング言語を、従来の C 言語から Java 言語へと変更した。その第一の理由は、ソフトウェア 産業界におけるプログラミング言語のシェアは Java 言語 が他の言語を圧倒していることにある。第二の理由として は、C 言語ではオブジェクト指向プログラミングを実践す ることが困難であるのに対して、Java 言語はオブジェクト 指向プログラミング言語であり、カプセル化、継承、ポリ モーフィズムといったオブジェクト指向プログラミング のための多くの概念を、プログラミングを通じて自然に学 ぶことができる点にある。Ruby や Python のような比較的 新しいプログラミング言語の大半はオブジェクト指向言 語であり、これから産業界で活躍できる IT 技術者の育成 を考えた場合、Java 言語を学ぶメリットは大きいと考える。  オブジェクト指向言語を学習する際には、クラスとオブ ジェクト、継承、ポリモーフィズムについて理解すること が非常に重要となる。そしてこの概念を理解した上で、オ ブジェクト指向設計に基づいたソフトウェア開発を行う ことによって、はじめて複数のプログラマによる大規模な 開発を行いながら、再利用性と保守性の高さを兼ね備えた ソフトウェアを生産していくことが可能となる。  このようにオブジェクト指向はソフトウェア開発のた めに必ず習得しておかなければならない概念であるが、一 方で、プログラミング言語の初学者にとってオブジェクト 指向を理解することは容易なことではない。オブジェクト 指向理解の鍵となる「クラスとオブジェクトの関係」を理 解するためには、「クラスとは設計図のようなものであり、 オブジェクトとは設計図に基づいて実際に作りだされた モノだと思えばよい」という感覚を身に着けることが大切 である。しかし、Java 言語によるプログラミングの初期段 階においては、画面に表示できるのが数字や文字などのテ キスト情報に限られるため、その範囲でプログラムをさせ ながら、上述の感覚を身に着けさせることには限界がある。  そこで本校の制御情報コースでは、Java 言語をベースと した言語であるProcessing を活用し、オブジェクト指向の 概念を学生たちが理解するための一助となるような教材 の開発を行っている。Processing は文法がほぼ Java 言語と 近畿大学工業高等専門学校 総合システム工学科 制御情報コース

(2)

- 52 -

同一でありながら、四角形、三角形、円などの図形を描画 させることが非常に簡単な言語であり、CG やアートの分 野において普及が進んでいる。 本稿では、制御情報コース4 年生の必修科目であるプロ グラミング言語II におけるクラスとオブジェクト、継承、 ポリモーフィズムの理解のための教材を具体的に示し、そ の有効性を検証する。

2.本教材がカバーするオブジェクト指向の概念

と従来教材の課題

2.1 オブジェクトとクラス  オブジェクト指向プログラミングにおいては、実行され るプログラムにおいて、特定のデータや処理をグループ化 して独立した単位となるオブジェクトと、そのオブジェク トを生成する際の設計図の役割を果たすクラスについて 理解することが重要である。  Java 言語を用いたオブジェクトとクラスのプログラム の例として、サイコロというクラスから具体的な二つの異 なるサイコロをオブジェクトとして生成するプログラム が用いられる。サイコロというクラスには、「サイコロに は1から6の整数値を保持するための変数(データ)と、 1から6の整数値をランダムに求めるメソッド(処理)が 備わっている」ことが記述されていて、このクラスから2 つのサイコロがオブジェクトとして生成されると、それぞ れのサイコロの目が独立してランダムに決定される。  この例を本校の4 年生に対して、オブジェクト指向プロ グラミングの導入部分で提示した場合、過半数の学生は興 味を示さない。その主な理由の一つは、最終的に画面に表 示されるのが2つのサイコロの目を表す数字に過ぎない 点にある。 ではサイコロの数を 100 個に増やせばよいかというと むしろ逆効果である。この程度のことであれば、わざわざ クラスを作成してオブジェクトを生成するプログラムを 書かなくても、for 文を使ってランダムな数字を 100 回生 成させるほうが合理的であると考える学生が多いためか、 あまりメリットを感じてもらえないので、教材開発におい ては、簡単なプログラムの例を用いつつも、学生が具体的 にイメージを持ちやすく、なおかつオブジェクトやクラス を使用するメリットを感じられる題材が必要となる。 2.2 継承 継承とは、2つのクラス間に親子関係を定義することを 認めることによって、親クラスを継承した子クラスから生 成されたオブジェクトは、自動的に、親クラスの有するデ ータや処理を有することができるというオブジェクト指 向の概念である。Java 言語においては継承の機能が実現さ れており、大規模なソフトウェア開発においては必要不可 欠な機能となっている。 一方で、初学者が例題として用いるようなプログラムに おいて、継承の機能のメリットを実感させることが難しく 学習上の課題である。 2.3 ポリモーフィズム ポリモーフィズムはオブジェクト指向に含まれる諸概 念のなかで最も理解するのが難しいといわれており、オブ ジェクト指向プログラミング習得における一つの関所の ような存在である。 ポリモーフィズムとは、一つの親クラスが複数の子クラ スを有する場合において、プログラムが実行されるまでは あるオブジェクトがどの子クラスのオブジェクトとして 生成されるかが決まっていないような場合に威力を発揮 するテクニックである。 まず、各子クラスで独自に実行したいメソッド(処理) を、親クラスのメソッドをオーバーライドする形で定義す る。そして、オブジェクトが生成された後に、そのオブジ ェクトの親クラスのメソッドを呼び出したにもかかわら ず、そのオブジェクトがどの子クラスのインスタンスであ るかに応じて、実行されるメソッドが自動的に切り替えら れるのがポリモーフィズムである。 このように、ポリモーフィズムとはif 文や switch 文の ような分岐型の制御構造を一切使用することなく、オブジ ェクトが生成された文脈に応じて実行されるメソッドを 変更できる仕組みであるということができるが、オブジェ クト、クラス、継承などの諸概念の直感的な理解ができて いない学生に対して、ポリモーフィズムの概念を伝えるこ とは非常に困難なのが現状である。 2.4 本学習教材がカバーしない概念 オブジェクト、クラス、継承、ポリモーフィズム以外の オブジェクト指向の概念として重要なものにカプセル化 (データ隠蔽)がある。データ隠蔽は、大規模なソフトウ ェア開発において、各オブジェクトが管理しているデータ へのアクセスをゲッター、セッターと呼ばれるメソッドに 限定することによって、意図しないデータ変更を防いだり、 データ型やデータ構造の仕様変更に伴うクラスの変化に 対する外部プログラムの保守性を高めたりするために必 要な機能であるが、他の概念と比較して理解がしやすく、 Java 言語のみを用いた学習でも十分に習得が可能なため に本学習教材の範囲には含めない。

3.3URFHVVLQJ を用いたオブジェクト指向学習の

ための教材開発

3.1 教材開発の基本コンセプト 3URFHVVLQJ は -DYD 言語をベースとしたプログラミング 言語であり、一部の例外的な部分を除いて、ほとんど -DYD

(3)

- 53 -

言 語 と 同 じ 文 法 で 記 述 す る こ と が で き る 。 一 方 で 、 3URFHVVLQJ には -DYD 言語の初学者には困難な図形の描画 を非常に簡単に行うことができる。例えば、円を描画した ければ、ellipse(x, y, w, h);のように、円の中心 座標(x, y)と円の幅 w と高さ h を指定すれば円が描かれ る。 この 3URFHVVLQJ の図形描画機能を活用することによっ て、画面内を動き回る円や四角形のような具体的に視認で きるオブジェクトの設計図をクラスで定義し、それらの図 形を描画するためのパラメータ(座標やサイズなどのデー タ)を変更しながら多数のオブジェクトを生成することに よって、オブジェクト指向概念の理解と、オブジェクト指 向技術を利用するメリットを感じさせることを基本コン セプトとする。 3.2 クラスとオブジェクト 3URFHVVLQJ で簡単に描画できる円と矩形を用いて、 &LUFOH クラスと 5HFW クラスの  種類を定義した。それぞ れには、円の中心、矩形の左上の角を表す座標と、サイズ がパラメータとして与えられている。また、定義された平 面内で壁面に当たると反発して動き続ける処理を PRYH と いう名前のメソッドを用いて作成した。3URFHVVLQJを用 いて実際に作成された  つのクラスを図1に示す。図中で は、&LUFOH クラスに関するプログラムの部分を水色、5HFW クラスに関する部分をピンク色、2つのクラスに共通する 部分を黄色で示している。 3.2 継承  図  に示した &LUFOH クラスと 5HFW クラスのプログラム を見比べると、座標やサイズといった変数は共通化できる ことが容易にわかる。また、PRYH メソッドについても、 図形の移動に関するプログラムは同一であり、異なるのは 図形が壁に当たって向きを変える部分であることがわか る。  そこで、&LUFOH と 5HFW の親クラスとして 6KDSH クラス を定義し、&LUFOH と 5HFW では 6KDSH クラスを親クラス VXSHU として継承することによって、2つのクラスの重 複部分を一か所に集約する。これによって、例えば図形を 動かすアルゴリズムを変更する場合には親クラスのプロ グラムだけを修正すればよく、オブジェクト指向のメリッ トの一つである保守性、拡張性が高まることを学生に容易 に理解させることが可能となる。継承の機能を用いて図  のプログラムを書き換えたものを図  に示す。 3.3 ポリモーフィズム  図2のプログラムを見ると、PRYHメソッドの呼び出し の際に、各オブジェクトが &LUFOH クラスか 5HFW クラスか によって個別に呼び出しが行われていることがわかる。本 プログラムのようにあらかじめ作成されるオブジェクト の子クラスがわかっている場合にはこれで問題ないが、も し生成されるオブジェクトのクラスが実行時まで不明の 場合には、このような実装をすることはできず、オブジェ クトのクラスを何らかの形で管理する必要がある。  ポリモーフィズムを用いると、そのようなオブジェクト の所属クラスの管理を行うことなく、親クラスのメソッド として PRYH を呼び出すだけで、各オブジェクトが属して いる子クラスの PRYH メソッドを呼び出すことが可能とな る。ポリモーフィズムの技法を用いて図  のプログラムを 書き換えたものを図  に示す。また、図 、図 、図  の プログラムが実行された際の画面例を図  に示す。3つの プログラムは全く同じように動作する。  図 :クラスの継承関係 

4.考察

 本稿では、3URFHVVLQJ という図形等を容易に描画する ことができる -DYD 言語の言語仕様に基づいたプログラミ ング言語を利用することによって、-DYD 言語だけでは比 較的困難であったオブジェクト指向に関する諸概念を、本 校の学生たちにとってもわかりやすく学習させるための 教材について述べた。  第  章において示した通り、3URFHVVLQJ を用いて「円」 や「矩形」のような目に見える形でオブジェクトを生成し、 それらのパラメータの共通化や、メソッドの呼び出しの共 通化というわかりやすい課題を提示しながら学習を進め ることによって、-DYD 言語だけでは理解が困難であった 継承やポリモーフィズムのような概念が、自然と理解でき るようになることを示した。  今後は、3URFHVVLQJ の  次元 &* 作成の機能などを活用 して、学生にとってさらに魅力的な教材開発を行っていく 予定である。

(4)

- 54 -

 図 :クラスを使用したプログラムの例   図 :継承を使用したプログラムの例   図 :ポリモーフィズム 多態性 を用いたプログラムの例  図5:3つのプログラムの実行画面 

参考文献

1) 岩佐英彦、Processing を用いたオブジェクト指向プログ ラミング授業の実践、平成30 年度全国高等学校情報処理 教育研究会全国大会(ポスター発表)、2018 年 8 月

参照

関連したドキュメント

昨年度2科目で始まった自然科学研究科博士前期課程のMOT

ところが,ろう教育の大きな目標は,聴覚口話

平成 30 年度は児童センターの設立 30 周年という節目であった。 4 月の児―センまつり

3 ⻑は、内部統 制の目的を達成 するにあたり、適 切な人事管理及 び教育研修を行 っているか。. 3−1

● 生徒のキリスト教に関する理解の向上を目的とした活動を今年度も引き続き

 履修できる科目は、所属学部で開講する、教育職員免許状取得のために必要な『教科及び

 履修できる科目は、所属学部で開講する、教育職員免許状取得のために必要な『教科及び

● 生徒のキリスト教に関する理解の向上を目的とした活動を今年度も引き続き