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

専門演習

N/A
N/A
Protected

Academic year: 2021

シェア "専門演習"

Copied!
22
0
0

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

全文

(1)

専門演習 B (木5)

(2)

Java   の復習

• 

以下のキーワードで分からないものがある場 合は「プログラミング基礎」の資料で要復習!

 

– 

変数、型

 

– 

条件分岐、繰り返し

  – 

関数(メソッド)

 

– 

クラス、オブジェクト

  – 

配列(

array

(3)

題材:心理学実験っぽいアプリ

1. src.zip  

をダウンロード

  2.

解凍

 

3. Eclipse  

 Java

プロジェクトを作成

 

4. src  

フォルダに 

src.zip  

の中身をコピー

  5.

実行

(4)

状態遷移図

状態(ノード)

遷移(エッジ)

(5)

状態遷移図の作り方

• 

可能な状態をすべて書きだす

 

• 

各状態で可能な行動をすべて書きだす

 

(矢印の元)

 

• 

各行動の結果の遷移先をつなぐ

 

(矢印の先)

 

(6)

サンプルアプリの状態遷移図

ボタン

ボタン

ボタン 時間経過

時間経過

時間経過

(7)

状態遷移図からの実装

 

(復習:

Scratch

の場合)

1.  

クリック

コントローラ

 

(ステージのスクリプト)

2.  

クリックイベント通知

3.  

状態遷移を決定

 

(変数

status

を変更)

4.  

状態変更を通知

5.  

状態(変数

status

 

に合わせて表示を変更

(8)

状態遷移図からの実装

 

Java

の場合)

• 

現在の状態を表す変数

 state  

MainFrame.java  

を参照)

 

• 

各状態に対応するクラスがコントロール

 

– Ini@alState  

– CountDownState   – ShowNumberState   – InputAnswerState   – ResultState  

(9)

実装(つづき)

• 

ボタンが押されたとき

 or  

時間経過したとき

  gotoNextState  

が実行される (

MainFrame

 

1. gotoNextState  

1.

現在の

 State  

が、次の

 State  

を返す

 

2. setState  

を実行する

 

2. setState  

1.

現在の状態に合わせて、各部品を更新する

  2.

必要に応じてタイマーをセットする

 

(10)

interface

• 

必要な関数の一覧を決めておく機能

 

• 

例:今回、状態を表すクラスにほしい機能

 

– 

次の状態を教えてくれる機能

 

– 

各部品の状態を教えてくれる機能

  – 

など

 

• 

~

State  

クラスは

 interface  State  

を実装

 

1. implements  State  

と宣言

  2.

すべてのメソッドを実装

 

(11)

interface   (他の例)

•  Ac@onListener  

– ac@onPerformed  

というメソッド1つの

 interface  

•  buOon.addAc@onListener  

– 

ボタンを押したときに 

ac@onPerformed  

を実行し てくれるように登録する

 

• 

今回は「無名クラス」を作っている

 

(12)

無名(匿名)クラス

• 

1つしかオブジェクトを作らない簡単なクラス

を作るときに、その場でちょちょっと作る機能

(13)

Timer

•  Timer  /  TimerTask  

 BuOon  /  Ac@onListener  

と似たような関係

 

– 

指定した時間が経ったら~する

  – 

ボタンが押されたら~する

 

•  TimerTask  

 interface  

ではない

 

– abstract  class  TimerTask   – 

継承してクラスを作る

 

(14)

継承

• 

親クラスを継承した子クラスは、

 

親クラスの機能を全部受け継ぐ

 

• 

子クラスに独自の機能を追加できる

 

• 

例: 

MainFrame  extends  JFrame  

(15)

デザインパターン

• 

「こういうプログラムはこう書くときれいに書け る」という定石のようなもの

 

• 

今回の状態遷移のパターンは

 

State  

デザインパターン」などと呼ばれる

(16)

課題(どちらか1つ)

• 

短期記憶アプリの機能追加

 

– [

必須

]  

正解か不正解かの判定をして表示する

  – [

必須

]  

実験結果をファイルに保存する

 

– [

オプション

]  

桁数を変更できるようにする

 

• 

他の実験

 

– 

反応時間の測定(表示されたのが○○だったら キーを押すけど違ったら押さない

 etc.

 

– 

結果のファイル保存機能は必須

 

(17)

提出方法

• 

すべての

 ~.java  

をまとめた

 zip  

ファイルを

 

課題提出システムから提出

 

(授業の

HP

からリンクあり)

(18)

ヒント:どんな component があるか

•  A  Visual  Guide  to  Swing  Components  

– hOp://download.oracle.com/javase/tutorial/ui/

features/compWin.html  

– How  to  use  …  

にリンクされている

 

(19)

ヒント:ファイルに保存

• 

プログラミング基礎 「入出力ストリーム」

 

hOp://www2.kobe-­‐u.ac.jp/~tnishida/course/

2011/Programming/index.htm  

• 

どこに保存プログラムを入れるかは悩み所

 

– 

保存ボタンがある

 State  

を作る?

 or  

いつの間に か保存する?

 

– 

どこかの 

getNextState  

の中に入れてしまう?

 

– interface  State  

を拡張して、

MainFrame  

で保存?

 

(20)

ヒント:桁数の変更

• 

スライダーとかスピナーを追加する

(21)

ヒント:キーを押すのに反応する

•  addKeyListener(KeyListener)  

•  KeyListener  

 interface

(22)

ヒント:時間の測定

•  System.currentTimeMillis  

メソッドを使う

 

•  1000

ミリ秒 = 

1

参照

関連したドキュメント

  BCI は脳から得られる情報を利用して,思考によりコ

目的 これから重機を導入して自伐型林業 を始めていく方を対象に、基本的な 重機操作から作業道を開設して行け

耐震性及び津波対策 作業性を確保するうえで必要な耐震機能を有するとともに,津波の遡上高さを

子どもたちは、全5回のプログラムで学習したこと を思い出しながら、 「昔の人は霧ヶ峰に何をしにきてい

それで、最後、これはちょっと希望的観念というか、私の意見なんですけども、女性

「 SEED (しーど)きょうと」を立ち上げました。立ち上げ後より、 「きょうと摂食障害家 族教室」を開始し、平成

私たちは主に 2019

モノづくり,特に機械を設計して製作するためには時