- トップページ
- 特集PC技術
- Java言語入門 ~C言語を学んだ君へ~
- [第12回]演習問題Ⅱ
Java言語入門 ~C言語を学んだ君へ~
[第12回]演習問題Ⅱ
第7~第11回で学習した内容をメインに演習問題を解いてもらいます。
もしわからない場合には、前のページに戻り必要な情報を調べてください。調べるのも勉強の1つです。
演習問題Ⅱ
以下の指示に従ってプログラムを作成しなさい。
なお、ファイル名は「Ex12_01.java」とし、すべて1つのファイルで作成する。
プログラムを作成するにあたっての注意点
1.プログラムで使うインタフェースは上の画像の通りである。
「print()メソッド」はメンバ変数の「Size」を表示すること
「copy()メソッド」、「scan()メソッド」の処理は自由である。
2. Printerクラスを作成
Printerクラスのデータは以下の通りである。
Printインタフェースを実装
メンバ変数 : public String Size;
コンストラクタ: Sizeを引数として受け取り、Sizeを初期化
3.MultiPrinterクラスを作成
MutliPrinterクラスのデータは以下の通りとする。
Copy、Scannerインタフェースを実装
Printerクラスを継承
4.main()メソッドの処理の順番は以下の通りとする
1.MultiPrinterをインスタンス化、引数として"A4"を渡す。
2.print()メソッドを実行
3.copy()メソッドを実行
4.scan()メソッドを実行
第1問解答
第1問解説
第12回の問題はオブジェクト指向編で学習してきた内容の総まとめ問題です。
クラス、継承、インタフェースを使ったプログラムでした。
指示してあったインタフェースを元にプログラムを作成していきます。
上の画像は指示してあったインタフェースの後に記述しました。
それでは解説していきます。
Printerクラスの作成
Printerクラスを作成するときにインタフェースPrintを実装します。
インタフェースを実装するときには
implements インタフェース名
です。メンバ変数は「public String Size」と指示があるのでそのまま使います。
コンストラクタでは、引数Sizeを受取り、Sizeを初期化するので、
thisキーワードを使って仮引数とメンバ変数を区別して初期化します。
また、指示にあるprint()メソッドでSizeを表示する必要があります。
System.out.println(Size);
と行います。ここでは分かりやすいように「印刷します」をつけました。
インタフェースを実行した時にインタフェースに記述されているメソッドは必ず書かなければなりません。
MultiPrinterクラスの作成
Printerクラスを継承し、Copy,Scannerインタフェースを実装します。
Javaでは、クラスの継承は1つしかできませんが、インタフェースはいくつでも実行することができます。
継承するときの記述方法は、
class クラス名 extends クラス名
でした。copy()、scan()メソッドは共に処理の記述のルールがないので自由に記述します。
コンストラクタがPrinterで準備してあるので、MultiPrinterクラスのコンストラクタで
superキーワードを使い呼び出します。
main()メソッド
main()メソッドでは指示通り順番に作成していきます。 まずは、MultiPrinterをインスタンス化する必要があります。
インスタンス化の方法は、
クラス名 インスタンス名 = new コンストラクタ(引数・・・);
です。
インスタンス化の時に指示でA4を引数とあるので("A4")として渡しています。
次に各メソッドを実行します。各メソッドの実行方法は、
インスタンス名.メソッド名()
でした。ここでは、インスタンス名をMPと作成していますので、 MP.print();、MP.copy()、MP.scan();と実行します。
コメント
YUKIO7
はじめまして、
このファイルと同じ文を書いたのですが、
class MultiPrinter extends Printer implements Copy,Scanner
この文の「MultiPrinter」のとこと
class Printer implements Print
この文の「Printer」のところが赤線が出てきてエラーが出てしまいます。
そこで、ふと思い出したのですが
class名とファイル名を一緒にしないといけないということです、。
そうするとひとつのファイルに複数クラスを持つことは不可能なのでは??
よくわかりません。。。助けてください
2010年12月13日 02:58
特集PC技術メンバー
お問い合わせありがとうございます。
ほぷしぃ特集PC技術メンバーです。
> そこで、ふと思い出したのですが
> class名とファイル名を一緒にしないといけないということです、。
> そうするとひとつのファイルに複数クラスを持つことは不可能なのでは??
とのことですが、おおむねご理解して頂いていると思います。
私は、エラーが発生している原因は以下の通りだと考えます。
「ファイル名が、main()メソッドを持つclass名をファイル名にしていない」
※main()メソッドはプログラムが最初に実行するメソッドのことです。
【解説】
第1問解答例を例に説明しますと
main()メソッドを持つclass名は、"EX12_01.java"なので、
ファイル名を"EX12_01.java"にして下さい。
ほぷしぃの第3回 Javaを使ってみよう [6] Javaプログラムの解説で、
public class ファイル名と記載すると説明してありますが
こちらの説明不足で申し訳ありませんでした。
また何かありましたらコメントをよろしくお願いします。
以上です。
2010年12月13日 10:27
コメントの投稿
トラックバックURL
http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1098