JavaプログラミングⅠ

Similar documents
JavaプログラミングⅠ

JavaプログラミングⅠ

JavaプログラミングⅠ

JavaプログラミングⅠ

JavaプログラミングⅠ

JavaプログラミングⅠ

JAVA入門

Microsoft PowerPoint ppt

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

Prog1_6th

プログラミング基礎I(再)

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

基本情報STEP UP演習Java対策

Javaプログラムの実行手順

解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1

Microsoft PowerPoint - chap10_OOP.ppt

HCI プログラミング 10 回目テキストフィールドとキーイベント 今日の講義で学ぶ内容 テキストフィールドの利用 キーイベントの処理 テキストフィールドの利用 1 テキストフィールドを配置してみましょう テキストフィールドを用いることにより 数値や文字列などのデータ入力が可能になります ソースファ

PowerPoint プレゼンテーション

メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Prog2_9th

PowerPoint プレゼンテーション

2

デジタル表現論・第6回

Prog1_10th

JavaプログラミングⅠ

GEC-Java

問題1 以下に示すプログラムは、次の処理をするプログラムである

プログラミング入門1

Microsoft PowerPoint - lec06 [互換モード]

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

問題1 以下に示すプログラムは、次の処理をするプログラムである

スライド 1

DVIOUT-exer

HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなど

Microsoft PowerPoint - prog04.ppt

2

Microsoft PowerPoint - prog09.ppt

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

Prog1_15th

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

** 平成 16 年度 FE 午後問題 Java** 示現塾プロジェクトマネージャ テクニカルエンジニア ( ネットワーク ) など各種セミナーを開催中!! 開催日 受講料 カリキュラム等 詳しくは 今すぐアクセス!! 平成 16

Microsoft PowerPoint - prog09.ppt

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

デジタル表現論・第4回

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

2004/11/23 オブジェクト指向プログラミング - モデル図とシーケンス図の表現方法 - オブジェクト指向プログラミング (OOP:ObjectOrientedPrograming) オブジェクト指向プログラミング言語 (OOPL) Java,C++,Delphi(Pascal),Visual

11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デ

Microsoft PowerPoint - prog08.ppt

Prog2_10th

スライド 1

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

JavaプログラミングⅠ

Java講座

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

オブジェクト指向プログラミング・同演習 5月21日演習課題

PowerPoint プレゼンテーション

Java言語 第1回

//// Assignment4_1.java // // 課題 1: 長方形の面積 /////////////////

108 頁通過テスト 2. の本文 111 頁紹介文 136 頁練習 5-1 プログラム 136 頁練習 5-1 問 2 末尾に句点追加 158 頁練習問題文 161 頁練習 2-2 コメント文 166 頁練習 3-1 問 1 クラス名を挿入 178 頁通過テスト 3 文字 s を削除 180 頁コ

PowerPoint Presentation

2

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある インターネットアドレス

プログラムの基本構成

10K pdf

ガイダンス

2

Microsoft Word - CompA-Ex doc

JAVA とテンプレート

プログラミングA

Microsoft Word - keisankigairon.ch doc

ガイダンス

第二回独習 Java ゼミ 第二章クラスとメソッド 2.1 メソッドの構造 2.2 静的メソッドと静的変数の概要 2.3 インスタンスメソッドとインスタンス変数の概要 2.4 Integerクラス 2006/04/19 神津健太

PowerPoint プレゼンテーション

GEC-Java

基礎計算機演習 実習課題No6

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀

Prog2_11th

ガイダンス

Sort-of-List-Map(A)

ウィンドウの構成ウィンドウはタイトルバーとウィンドウ枠からなります タイトルバーには最小化 / 最大化ボタンや閉じるボタンがあります また ウィンドウはクライアント領域をもちます クライアント領域にはボタンなど GUI 部品が配置されます GUI 部品配置 ( レイアウト ) ウィンドウ ( ステー

試験問題に記載されている会社名又は製品名は, それぞれ各社の商標又は登録商標です なお, 試験問題では, 及び TM を明記していません

微分方程式 モデリングとシミュレーション

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

JavaプログラミングⅠ

Java (7) Lesson = (1) 1 m 3 /s m 2 5 m 2 4 m 2 1 m 3 m 1 m 0.5 m 3 /ms 0.3 m 3 /ms 0.6 m 3 /ms 1 1 3

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

Assignment_.java 0 Assignment_.java 課題 : 台形の面積 / class Assignment_ public static void main(string[] args) throws IOException キーボード準備 int top, bottom,

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

Slide 1

Microsoft PowerPoint - class2-OperatorOverLoad.pptx

Javaによるアルゴリズムとデータ構造

ガイダンス

Transcription:

Java プログラミング Ⅱ 8 回目抽象クラスとインタフェース課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) 抽象クラスのオブジェクトは生成できる (2) 抽象メソッドとはメソッドの本体が未定義のメソッドである (3) 抽象メソッドをメンバーにもつクラスは抽象クラスである (4) 抽象クラスを拡張してすべての抽象メソッドをオーバーライドすれば サブクラスのオブジェクトを生成できる (5) インタフェースの実装は implements により行う (6) インタフェースを実装してすべての抽象メソッドをオーバーライドすれば そのクラスのオブジェクトを生成できる (7) インタフェースは多重継承を実現する方法の 1 つである (8) インタフェースは 拡張によりサブインタフェースを作ることができ このとき拡張元をスーパーインタフェースという 難易度 課題 1 パソコンの CPU マウス メモリなどの PC 部品を管理するクラスを PC 部品ごとに宣言しなさい 各自 2 つ以上の PC 部品を選び 次に示すインタフェース Module を実装してください クラスのメンバーは各自にお任せします 下にハードディスクの例を示します PC 部品を管理するインタフェースとクラス //// Module インタフェース ( この宣言には手を加えないこと ) interface Module{ // PC 部品のカテゴリ名を文字列として返します "CPU"," マウス " など String getcategory(); // PC 部品の情報を表示します CPU では製造者 速度など void showinfor(); // ハードディスククラス ( 例 ) class HardDrive implements Module{ // インタフェースの実装 private String name; private int capacity; HardDrive(String n, int c){ name=n; capacity=c; public String getcategory(){ return "HardDrive"; public void showinfor(){ System.out.println(name+", "+capacity+"gb"); ここにマウス Mouse やメモリ Memory などの各自 PC 部品クラスを宣言してください

難易度 課題 2 下に示すように main() メソッドでインタフェース Module 型の配列を作成しなさい 課題 1 で宣言した各自 2 つ以上の PC 部品クラスのオブジェクトを生成し 配列要素に格納しなさい 次に for 文が実行されたとき 各クラスにおいてオーバーライドをされたメソッド getcategory() と showinfor() が順次実行されることを確認しなさい ソースファイル名 Assignment8_2.java (main() メソッドがあるクラス名と同じにします ) ここへ Module インタフェースと各 PC 部品のクラスの宣言をコピーします class Assignment8_2{ public static void main(string[] args){ // 配列の作成とデータ設定 // 配列変数はインタフェース Module 型を用いる Module[] modules=new Module[3]; modules[0]=new HardDrive("Seagate HDD",750); modules[1]= ここで各自 PC 部品のクラスのオブジェクトを生成しなさい modules[2]= // 配列要素の一覧表示 for(int i=0;i<modules.length;i++){ System.out.println(modules[i].getCategory()); modules[i].showinfor(); 実行例 HardDrive Seagate HDD, 750GB

難易度 課題 3 インタフェース Module がもつ抽象メソッドは利用者が作成するサブクラスで必ずオーバーライドされます この性質を利用して インタフェース Module がもつ抽象メソッドを用いたコードを予め作成することができます 次はインタフェース Module を実装するクラスを処理する Manager クラスです 課題 2 の main() メソッド内で Module 型の配列に格納されている各 PC 部品のクラスのオブジェクトの一覧を Manager クラスのクラスメソッドを用いて表示できることを確認しなさい Manager クラスの宣言はコピーして下さい インタフェース Module を実装するクラスを管理する Manager クラスの宣言 // Module インタフェースを実装するクラスを処理する Manager クラス //( この宣言には手を加えないこと ) final class Manager{ // 使用法 Manager.listModules(Module[]); // 引数インタフェース Module 型の配列変数 // 戻値無し // 機能配列中の各 PC 部品の一覧出力 public static void listmodules(module[] m){ System.out.println("[ パーツ一覧 / パーツ数 "+m.length+" 個 ]"); for(int i=0;i<m.length;i++){ System.out.println("+------------"); System.out.println(" Parts no."+i); System.out.println("Category "+m[i].getcategory()); m[i].showinfor(); System.out.println(); // 使用法 Manager.selectedModules(Module[], String); // 引数インタフェース Module 型の配列変数, カテゴリ名 // 戻値無し // 機能配列中のカテゴリが一致する PC 部品の一覧 public static void selectedmodules(module[] m, String target){ System.out.println("[ 選択パーツ一覧 /"+target+"]"); for(int i=0,j=0;i<m.length;i++){ if(m[i].getcategory()==target){ System.out.println("+------------"); System.out.println(" Parts no."+j++); System.out.println("Category "+m[i].getcategory()); m[i].showinfor(); System.out.println(); // 使用法 Manager.countModules(Module[], String); // 引数インタフェース Module 型の配列変数, カテゴリ名 // 戻値カテゴリに一致する PC 部品の個数 // 機能配列中のカテゴリが一致する PC 部品の数を出力 public static int countmodules(module[] m, String target){ int cnt=0; for(int i=0;i<m.length;i++) if(m[i].getcategory()==target)cnt++; return cnt;

ソースファイル名 Assignment8_3.java (main() メソッドがあるクラス名と同じにします ) ここへ Module インタフェースと各 PC 部品のクラスの宣言をコピーします ここへ Manager クラスの宣言をコピーします class Assignment8_3{ public static void main(string[] args){ // 配列の作成とデータ設定 // 配列変数はインタフェース Module 型を用いる Module[] modules=new Module[3]; modules[0]=new HardDrive("Seagate HDD",750); modules[1]= ここで各自 PC 部品のクラスのオブジェクトを生成しなさい modules[2]= // PC 部品一覧 Manager.listModules(modules); // ハードディスクのみの一覧と個数 Manager.selectedModules(modules,modules[0].getCategory()); int cnt=manager.countmodules(modules,modules[0].getcategory()); System.out.println(" 個数 "+cnt); 実行例 [ パーツ一覧 / パーツ数 3 個 ] +------------ Parts no.0 Category HardDrive Seagate HDD, 750GB [ 選択パーツ一覧 /HardDrive] +------------ Parts no.0 Category HardDrive Seagate HDD, 750GB

難易度 課題 4 演算子を管理する Operation インタフェースは次の抽象メソッドを持ちます 1. 演算子のオペランドの数を返す抽象メソッド 2. 演算子のオペランドを設定する抽象メソッド 3. 設定したオペランドを用いた式 ( 質問 ) を生成し 生成した式を返す抽象メソッド 4. 設定したオペランドを用いた式を計算し 結果を返す抽象メソッド Operation インタフェースの宣言 // Operation インタフェース ( この宣言には手を加えないこと ) interface Operation{ int getnumofoperands(); // オペランドの数を返します void setoperands(double[] values); // オペランドを設定します String getexpression(); // 設定したオペランドで式を生成します double getanswer(); // 設定したオペランドで式の結果を返します (1) Operation インタフェースを実装した各自オリジナルの演算子クラスを宣言しなさい 以下のコードに距離演算子クラスと加算演算子クラスの例を示します Operation インタフェースを実装したクラス群 // 距離演算子クラス ( 演算子インタフェース実装例 1) class Distance implements Operation{ private double x1, y1, x2, y2; public int getnumofoperands(){ return(4); public void setoperands(double[] values){ x1=values[0]; y1=values[1]; x2=values[2]; y2=values[3]; public String getexpression(){ return(" 座標 ("+x1+","+y1+") と座標 ("+x2+","+y2+") 間の距離?"); public double getanswer(){ return(math.sqrt(math.pow(x1-x2,2)+math.pow(y1-y2,2))); // 加算演算子クラス ( 演算子インタフェース実装例 2) class Addition implements Operation{ private double n1, n2; public int getnumofoperands(){ return(2); public void setoperands(double[] values){ n1=values[0]; n2=values[1]; public String getexpression(){ return(n1+"+"+n2+"?"); public double getanswer(){ return(n1+n2); ここに各自の 演算子クラスを宣言してください例えば 引算クラスでは 2 つの値がオペランドでその差が演算結果です 円面積クラスでは 1 つの値 ( 半径 ) がオペランドで πr^2 が演算結果です

(2) クラス PrintQuestion は Operation インタフェースを実装するクラスのオブジェクトを用いて問題と解答を表示する機能を持ちます 以下の実行例に示すように このクラスのクラスメソッド void prtwithrand(operation op) を用いて各自の演算子クラスの問題を画面に出力しなさい ソースファイル名 Assignment8_4.java (main() メソッドがあるクラス名と同じにします ) ここへ Operation インタフェースと各演算子クラスの宣言をコピーします //////////////////////////////////////////////////// // 問題生成クラス ( この宣言には手を加えないこと ) final class PrintQuestion{ // 演算子インタフェースを実装したクラスのオブジェクト用い // 乱数でオペランドを与えながら問題を作成します public static void prtwithrand(operation op){ double[] values=new double[op.getnumofoperands()]; for(int i=0;i<values.length;i++) values[i]=(int)(math.random()*10); op.setoperands(values); System.out.println("Q."+op.getExpression()); System.out.println("A."+op.getAnswer()); // 演算子インタフェースを実装したクラスのオブジェクト用い // 与えられたオペランドで問題を作成します public static void prtwithvalues(operation op, double[] values){ op.setoperands(values); System.out.println("Q."+op.getExpression()); System.out.println("A."+op.getAnswer()); class Assignment8_4{ public static void main(string[] args){ Distance dis=new Distance(); Addition add=new Addition(); ここで各自の演算子クラスのオブジェクトを生成してください PrintQuestion.prtWithRand(dis); PrintQuestion.prtWithRand(add); ここで各自の演算子の問題を生成してください 実行例 Q. 座標 (6.0,1.0) と座標 (6.0,2.0) 間の距離? A.1.0 Q.6.0+9.0? A.15.0