応用プロジェクト後半 第2回 (12/7) 担当:橋本先生

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
Applet 岡部 祐典 鈴木 敬幸.
第4回 iPhoneアプリ開発勉強会 Objective-C 基礎講座 -クラス- 鷲見政明.
Ex8. Search for Vacuum Problem(2)
WebサービスII (第10回) 2007年11月28日 植田龍男.
Mavenによる プロジェクト管理 近畿大学理工学部 情報学科3年  小野実.
Servlet J2EE I 第8回 /
アルゴリズムとデータ構造1 2007年6月12日
Iアプリプログラミング その1  鳥居秀徳.
アルゴリズムとプログラミング (Algorithms and Programming)
ネットワークプログラミング論 平成27年10月12日 森田 彦.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
卒研:データベースチーム 第4回 DOMを使った処理
アルゴリズムとプログラミング (Algorithms and Programming)
社会人学習講座 「Javaプログラミング概論」
Bridge Pattern
オブジェクト指向入門.
ネットワークプログラミング論 平成28年10月17日 森田 彦.
応用プロジェクト後半 第2回(11/26) 担当:奥田教授
RMI ソフトウェア特論 第6回 /
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
JAVA入門後期⑩ 情報処理試験例題解説.
アルゴリズムとプログラミング (Algorithms and Programming)
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
応用プロジェクト後半 第3回 (12/15) 担当:奥田先生
第6回 2007年6月1日 応用Java (Java/XML).
第11週:super/subクラス、継承性、メソッド再定義
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
Javaプログラムの変更を支援する 影響波及解析システム
応用プロジェクト後半 第2回(12/11) 担当:奥田教授
応用プロジェクト後半 第2回(12/5) 担当:奥田教授
Java8について 2014/03/07.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
応用プロジェクト後半 第2回 (12/1) 担当:橋本先生
応用プロジェクト後半 第3回 (12/3) 担当:奥田教授
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
応用プロジェクト後半 第3回 (12/14) 担当:奥田先生
50年後の未来を予測する -新技術の普及過程モデリング-
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
C#プログラミング実習 第3回.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
応用プロジェクト後半 第5回 (1/5) 担当:奥田・橋本
JSPの基本 J2EE I (データベース論) 第8回 /
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
基礎プログラミング Eclipse のインストール
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
応用プロジェクト後半 第5回 (12/17) 担当:奥田教授
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
プログラム理解のための 付加注釈 DocumentTag の提案
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
Presentation transcript:

応用プロジェクト後半 第2回 (12/7) 担当:橋本先生 徳永メモ H28年度版の手順から無駄を省いて大幅に簡略化しているので、もし問題が起きたらH28年度版を参照すること。 応用プロジェクト後半 第2回 (12/7) 担当:橋本先生

今後の予定 第1回(11/30) 環境構築 第2回(12/7) サンプル実行 第3回(12/14) サンプル実行 第1回(11/30) 環境構築 第2回(12/7) サンプル実行 第3回(12/14) サンプル実行 サンプル読解(長い)・最終テーマ案 第4回(12/21) SAGSの操作 データ探しの課題 第5回(1/11) 探したデータでSim. 第6回(1/16) 発表会 最終レポート 数枚。

課題について 日本における自動車の普及予測(燃料電池自動車、ハ イブリッド車、ガソリン車、ディーゼル車、電気自動車) MADSで実現しようとするとき、自分なりのシミュレーショ ンシナリオを考えて、その際どんなデータ(水素ステー ションの設置数、環境政策の推移など)が必要なのかに ついて考察

本日の内容 ※今回と次回は基本的にmanualに従うだけで終わっ てしまう SampleSimulation 1 ~ 5 を実行 資料 (下記ページからmanual2.doc) http://www.multi.k.u-tokyo.ac.jp/lectures/pukiwiki/index.php ※今回と次回は基本的にmanualに従うだけで終わっ てしまう

詳しく知りたい人 mads-○×.jar/ sags-○×.jarファイルを解凍してeclipse 等で見てみると継承関係とかオーバーライド関係とか、 どのクラスのどのメソッドを使ってるのかわかりますよ mads-○×.jarに関しては,わざわざ解凍しなくても, eclipseの設定で,「ソース添付」と「Javadocロケーション」 を設定すると簡単に読めるようになる

Eclipseの英語版をインストールした方へ Pleiades プラグインを導入すれば日本語化できます http://mergedoc.osdn.jp/

コンパイラ準拠レベル Eclipseのバージョンによって1.5と表示されたり、5.0と表 示されたりしている それ以上のバージョンの場合は基本的に上位互換なの で変更しなくても動くはずである Collectionを用いているため コマンドプロンプト/eclipseでバージョンは合わせる セキュリティ的には昔のバージョンの保持は脆弱性に繋 がるので基本的に消しておいた方がいい

作業 Manual1.docに倣い、Sample1~5を実行 読解の課題もあるので簡単にプログラムの解説もします SAGS,Eclipse起動 Tutorialからサンプルをコピペ Javaアプリケーションの実行設定を新たに作成(メイン・ 引数・クラスパス) ※プログラム作成者は、1つのプロジェクトにつき1つのプログラムを作成することを推奨しているが、面倒なうえにプロジェクト一覧がごちゃごちゃするで、1つのプロジェクト内に複数プログラムを作成する手順を載せる。問題が出た場合は28年度資料を見てください。

Sags起動の必要性 中核となるプログラムは これらによってsagsと通信を行うため この2つを理解すればとても良い Mads/core/ASimulationAgent.java Mads/core/AServiceAgent.java これらによってsagsと通信を行うため この2つを理解すればとても良い

SAGS起動 これが起動されていることを確認する

ソースをコピペ 前回作成したプロジェクト“SampleSimulation”を展開し, srcの上で右クリック→new→class クラス名“Sample2_ServiceFunctions”とする http://www.multi.k.u- tokyo.ac.jp/mads/tutorials/Sample2_ServiceFunctions.html このページからソースをコピペして貼り付ける

サンプルごとに実行構成を作成 実行の構成 (実行構成はコピペ可能。ただしプロジェクト名やクラス 名などはちゃんと書きかえること) サンプルごとにこれらを毎回作成する必要がある。 (実行構成はコピペ可能。ただしプロジェクト名やクラス 名などはちゃんと書きかえること)

実行および構成

実行構成のコピペ 前回作成した実行構成Sample1を右クリック→複製

main Name: Sample2 Project: SampleSimulation Main class: Jade.Boot

引数 プログラムの引数欄 VM引数欄 -Xms128m -Xmx512m -container sample:Sample2_ServiceFunctions VM引数欄 -Xms128m -Xmx512m

クラスパス(確認だけ) 前回ちゃんとビルド・パス設定から、ユーザーライブラ リー“Mads”を設定できていたら、クラスパスタブのユー ザーエントリーはこのようになっているはず

SampleSimulationについて システムとしてはかなり親切で,各メソッド等に丁寧にコ メント(英語)がついているので,それを読めば何をして いるのかわかる システム開発のコーディング規約によってはコメントを残すと 怒られる 中身について触りだけ説明する

SampleSimulation1 これらは何者か? public class Sample1_HelloWorld extends ASimulationAgent { public void doWork(){ System.out.println("Hello world !!! \n My first simulation"); }

ASimulationAgent - madsで中核を担うクラス public abstract class ASimulationAgent extends Agent{ 抽象クラスASimulationAgentはJADEのAgentクラスを継承している (参考:JavaAgentDEvelopmentFramework) public abstract void doWork();   抽象メソッドdoWork()は定義・呼び出し方だけ決めてある。中身は空っぽ。 …抽象メソッドは必ずオーバーライドしなければならない 実行用クラス。Thread実行にはrun()メソッドが中で必要 class WorkThread extends java.lang.Thread{ public void run(){ doWork(); } 継承とは?…サブクラスはスーパークラスの変数定義やメソッドなどを受け継ぐ。 抽象クラスASimulationAgent…具体的な記述を行わずに共通部分だけ設計して、詳細は各々のサンプルで

SampleSimulation1 抽象メソッドdoWork()をオーバーライドし,Hello Worldを 出力させている オーバーライドとは… オーバーライドとはスーパークラスにおいて定義されているインスタン スメソッドを、サブクラス内で再定義することを言います。スーパークラ スのメソッドを変更することはできないが、サブクラスに特化した機能を 付与する必要がある場合などに使用します。 (参考:Javaの道,http://www.javaroad.jp/java_class8.htm,2013/12/4閲覧)

SampleSimulation2 ServiceFunction sf1 = new ServiceFunction(); ServiceFunction sf2 = new ServiceFunction(2000, 30); 型 変数名 を指定してインスタンス作成 コンストラクタは異なる引数をとれる (型を選択して右クリック→Open Declarationで中身確認) sf1.setBase(2000); sf1.setRange(50); 時刻2000,範囲50とセットする Javaオブジェクト指向でよくあるセッター

SampleSimulation2 for (int time = 2000; time <= 2050; time++) sf1.setValue(time, 100); 100を𝑡∈[2000,2050]でセット for (int time = sf2.getBase(); time <= sf2.getBase() + sf2.getRange(); time++) sf2.setValue(time, time); 時刻timeにデータtimeをセットする

データ出力/プロット System.out.println("\n -- printing sf2, using getValue()"); for (int time = sf2.getBase(); time <= sf2.getBase() + sf2.getRange(); time++) System.out.println(time + " -> " + sf2.getValue(time)); System.out.println("\n -- printing sf1, using print(), for the whole time range"); sf1.print(); System.out.println("\n -- printing sf2, using print(), between 2010 and 2020"); sf2.print(2010, 2020); System.out.println("\n -- printing sf2 in the short form"); System.out.println(sf2); sf2.plot("Y axis title", "sf2 for the whole time range"); sf2.plot(2010, 2020, "Y axis title", "sf2 between 2010 and 2020");

データ出力/プロット ServiceFunction sfSum = sf1.plus(sf2); System.out.println("\n -- printing sfSum = sf1 + sf2"); sfSum.print(); sf1.minus(sf1).plot("Value", "Difference between sf1 and sf1"); System.out.println("\nThe minimum of sf2 is : " + sf2.min()); System.out.println("The maximum of sf2 is : " + sf2.max()); System.out.println("The mean of sf2 is :" + sf2.mean()); System.out.println("The maximum of sf2 is reached in : " + sf2.tmax()); System.out.println("The minimum of sf2 is reached in : " + sf2.tmin()); System.out.println("The function sf2 reaches 2015 for the first time in : " + sf2.firstTimeIn(2000, 2015)); sf2.saveToFile("c:\\sf2.txt");

その他のSampleSimulation これらも同様に解釈していけば大丈夫