IT プロジェクト

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

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

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

PowerPoint プレゼンテーション

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

教材ドットコムオリジナル教材 0から始めるiアフ リ リファレンス i アプリ簡易リファレンス ver i アプリ Java 独自のメソッド (1)iアプリの命令を使えるようにする import com.nttdocomo.ui.*; (2) 乱数を使う import java.u

< F2D B838A835882CC8CF68EAE2E6A7464>

デジタル表現論・第4回

10K

DVIOUT-exer

Javaプログラムの実行手順

Java講座

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

Cir


:30 12:00 I. I V II. III. IV. ( a d) V. VI : A ActionListener aa addactionlistener AE ActionEvent K KeyListener ak addkeyliste

< F2D834F838C A815B A CC>

Program Design (プログラム設計)

Java演習(4) -- 変数と型 --

Microsoft PowerPoint ppt

GEC-Java

Microsoft PowerPoint - lec06 [互換モード]

手書認識 グラフ描画 Step2-2 手書認識 : 認識結果を PaintPanel で描画する < 属性付き文字列 AttributedString> 標準出力では分かりにくいうえに認識結果を使えないので 認識するごとに PaintPanel に文字を描画することにする ここで 数式はただの文字列

PowerPoint Presentation

スライド 1

Thread

基本情報STEP UP演習Java対策

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

6 p.1 6 Java GUI GUI paintcomponent GUI mouseclicked, keypressed, actionperformed mouseclicked paintcomponent thread, 1 GUI 6.0.2, mutlithread C

Microsoft PowerPoint - chap10_OOP.ppt

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

プログラミング入門1

2016 年度 JAVA 講座第六週目 目次 パッケージ... 2 パッケージの作成... 2 パッケージの使用方法... 3 異なるパッケージ同名クラスの宣言... 4 パッケージの側面から見たアクセス修飾子... 4 ラッパークラス... 5 ラッパークラス利用法:キャスト... 5 ラッパーク

226

JavaプログラミングⅠ

ガイダンス

PowerPoint プレゼンテーション

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

Microsoft Word - A05_AndroidプログラミングJUMP_画面800×1280

< F2D8EA CE909482CC92EA82852E6A7464>

デジタル表現論・第6回

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

r2.dvi

メソッドのまとめ

Microsoft PowerPoint - prog03.ppt

< F2D92DE82E8914B82CC977088D32E6A7464>

2 static final int DO NOTHING ON CLOSE static final int HIDE ON CLOSE static final int DISPOSE ON CLOSE static final int EXIT ON CLOSE void setvisible

JavaプログラミングⅠ

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

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

PowerPoint プレゼンテーション

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

ガイダンス

PowerPoint プレゼンテーション

シミュレーションの簡単な例 GUI 無しのシミュレーションを作る GUI を作る パラメタを設定するデモンストレーションをする 2 オブジェクト指向プログラミング特論

ガイダンス

< F2D82B682E182F182AF82F12E6A7464>

のようにする 上の例では GeneralPath を new するときに コンストラクタに何も指定していないが 直線を表す Line, 四角形を表す Rectangle などを引数に与えてもよい 矢印を作成するメソッドの引数矢印を表す GeneralPath を生成するために getarrowpat

< F2D F B834E2E6A7464>

I. java.awt.rectangle java.lang.math random Java TM API java.awt Rectangle Rectangle (x,y)... public int x Rectangle X public int y Rectangle Y public

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

Javaの作成の前に

GUIプログラムⅣ

JAVA入門

JavaプログラミングⅠ

Week 1 理解度確認クイズ解答 解説 問題 1 (4 2 点 =8 点 ) 以下の各問いに答えよ 問題 bit 版の Windows8.1 に Java をインストールする時 必要なパッケージはどれか 但し Java のコンパイルができる環境をインストールするものとする 1. jdk

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

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

Prog1_10th

< F2D825282CC947B909482CC A815B83682E6A>

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

JAVA とテンプレート

Prog1_15th

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

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

Prog2_9th

Microsoft PowerPoint ppt

< F2D B825082CC96E291E82E6A7464>

文字列操作と正規表現

目的 泡立ち法を例に Comparableインターフェイスの実装 抽象クラスの利用 型パラメタの利用 比較 入替 の回数を計測

Microsoft PowerPoint - OOP.pptx

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

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

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

JavaプログラミングⅠ

< F2D82518CC282CC D2E6A7464>

ガイダンス

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

情報処理Ⅰ

10K pdf

第1章 ビジュアルプログラミング入門

2

JavaプログラミングⅠ

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

ガイダンス

Prog2_11th

<4D F736F F F696E74202D AC C8899E D834F E >

PowerPoint プレゼンテーション

JavaプログラミングⅠ

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

Transcription:

オブジェクト指向設計による卓球 ゲームの試作 (2) 劉少英 情報科学部コンピュータ科学科 Email:sliu@hosei.ac.jp ホームページ : http://cis.k.hosei.ac.jp/~sliu/

講義内容 1. 卓球ボールをテーブルの上に移動させる 2. 関連しているクラスにメソッドを加える 3. プログラムの文書化技術

1. 卓球ボールをテーブルの上に 移動させる 8 9

8 9

8 9

8 9

8 9

8 9

8 9

既存のクラスに適切なメソッドを加える 卓球ボール卓球テーブル

2. 関連しているクラスにメソッドを加える 1. 卓球ボールクラス : package exe1; import java.awt.*; public class Ball { private int radius; /* ボールの半径 */ private Color color; /* ボールの色 */ private int x; /* ボールの x 座標 */ private int y; /* ボールの y 座標 */

/* 二つのコンストラクタ */ public Ball() { public Ball(int radius, Color color, int x, int y) { this.radius = radius; this.color = color; this.x = x; this.y = y;

/* ほかのメソッド */ /*get メソッド */ public Color getcolor() { return this.color; public int getradius() { return this.radius;

public int getx() { return this.x; public int gety() { return this.y;

/*set メソッド */ public void setradius(int radius) { this.radius = radius; public void setcolor(color color) { this.color = color;

public void setx(int x) { this.x = x; public void sety(int y) { this.y = y;

public void move(int x1, int y1, int x2, int y2) { 卓球ボールを (x1, y1) の点から (x2, y2) の点へ移動させる

5. 卓球ゲームクラス package exe1; import java.awt.borderlayout; import java.awt.color; import java.awt.dimension; import java.awt.font; import java.awt.fontmetrics; import java.awt.graphics; import java.awt.image.bufferedimage; import javax.swing.*;

public class Game extends JFrame { private static final long serialversionuid = 1L; private Ball myball; /* the ball instance in the frame */ private Table mytable; /* the table instance in the frame */ private ScoreDisplay myscoredisplay = new ScoreDisplay(); private MainCanvas mycanvas; /* the canvas instance in the frame */

public Game() { (1) 全てのオブジェクトの描画のために必要なデータを入力する ; 例えば String input1 = JOptionPane.showInputDialog(this, "please set the radius of the ball:"); int ballradius = Integer.parseInt(input1); (2) 必要なオブジェクトを生成する ; 例えば myball = new Ball(ballRadius, ballcolor, ballx, bally);

(3) 全てのオブジェクトをカンバスに描画する. import java.awt.borderlayout; import java.awt.color; import java.awt.dimension; import java.awt.font; import java.awt.fontmetrics; import java.awt.graphics; import java.awt.image.bufferedimage; new Thread(this).start();

public void run() { while (true) { SwingUtilities.invokeLater(new Runnable() { public void run() { mycanvas.repaint(); ); myball.move(x1, y1, x2, y2); try { Thread.sleep(100); catch (InterruptedException e) {

private class MainCanvas extends JComponent {

3. プログラムの文書化技術 (1) データ変数の役割を文書化 (2) 命令文の機能を文書化 (3) クラスのメソッドの機能の文書化 静的なコード検査 システム要求仕様 変換 作成されたプログラム 正しいか? ( 自己確認 ) コードの読み

3.1 データ変数の役割を文書化 (1) 変数の名前の解釈 (2) 変数を使う目的 (3) 変数の型を選択理由 (4) 変数の初期値が変数の宣言のところに定義されていない場合 その変数の初期値を定義 (5) 変数の不変性質 (6) 配列型の変数の最大要素数とその意味

(1) 変数の名前の解釈 事例 : String stu_no; //stu_no = student_number

(2) 変数を使う目的 事例 : String stu_no; //stu_no = student_number // 学生番号を表示

(3) 変数の型を選択理由 事例 : String stu_no; //stu_no = student_number // 学生番号を表示 // 学生番号は 数字と文字の並び

(4) 変数の初期値が変数の宣言のとこ ろに定義されていない場合 その変数の 初期値を定義 事例 : String stu_no; //stu_no = student_number // 学生番号を表示 // 学生番号は 数字と文字の並び // 初期値は 空文字列

(5) 変数の不変性質 事例 : String stu_no; //stu_no = student_number // 学生番号を表示 // 学生番号は 数字と文字の並び // 初期値は 空文字列 // 学生番号は いつも7 桁の文字列

(6) 配列型の変数の最大要素数と 事例 : その意味 int groupa[]; //groupaの最大要素数は 30 //30は groupaが表した学生 // グループの学生数

3.2 命令文の機能を文書化 (1) 命令文の目的 (2) 命令文の機能 (3) 条件文の条件の意味 (4)while( forなど ) 文の継続変数

(1) 命令文の目的 事例 : average = total_score / number; // クラスの平均成績を求める

(2) 命令文の機能 事例 : average = total_score / number; // クラスの平均成績は クラスの総成績 //total_scoreをクラスの人数 numberで割って // 得た結果である

(3) 条件文の条件の意味 事例 : if (stu.score >= 60) qualified = qualified + 1; // 条件 : 学生 stuの成績 scoreは 60 点以上である // 機能 : 条件が満たせば 合格人数 qualifiedに1を // 増加する

(4)while 文の継続変数 事例 : while (number < class.total) { if (stu.score >= 60) qualified = qualified + 1; number++; //number は 継続変数である // 条件 : 学生の人数は クラスの総人数より小さい // 機能 : 継続条件が満たせば 学生人数 number に 1 を増加 // する もし学生 stu の成績 score は 60 点以上であれば 合格 // 学生数 qualified に 1 を増加する

3.3 クラスのメソッドの機能の文書化 クラスのメソッドは 次の通りである 返す値の型メソッド名 (parameters) { アルゴリズム

事例 : double Average(int total_score, int number) { return total_score / number;

事例 : // 機能 : 学生の総成績 total_scoreの平均値を // 求める double Average(int total_score, int number) // 事前条件 :numberは 0でない { return total_score / number;

事例 : // 機能 : 整数 xの平方根をインスタンス変数 total // に加える double Add_Sqrt(int x) // 事前条件 :xは 正整数または0である { return Math.sqrt(x) + total;

事例 : int Search(int j, int a[]) { int i = 0; while (i < a.length) { if (a[i] = j) return i; return -1;

事例 : // 機能 : 入力整数 j は 入力配列 a にあるかどうかを // 検索する int Search(int j, int a[]) // 事前条件 : true ( つまり j と a に付加制限がない ) { int i = 0; while (i < a.length) { if (a[i] = j) return i; return -1;