プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.

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 回 構造化指向からオブジェクト指向へ.
ソフトウェア工学 理工学部 情報システム工学科 新田直也. 演習問題 1 の解答例  入庫処理の DFD 酒屋の在庫問題の DFD( 入庫処理 ) 更新情報 在庫ファイル 更新処理 倉庫係 在庫不足リスト 在庫ファイル 出庫指示書 新規出庫 判定 出庫指示書 作成処理 出庫依頼 積荷票.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
社会人学習講座 「Javaプログラミング概論」
アルゴリズムとプログラミング (Algorithms and Programming)
Javaのための暗黙的に型定義される構造体
ソフトウェア工学 知能情報学部 新田直也.
Javaでゲーム  山本拓弥.
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
社会人学習講座 「Javaプログラミング概論」
JavaBeans とJSP データベース論 第5回.
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
UMLとは           032234 田邊祐司.
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
プログラミング演習3 第2回 GUIの復習.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
JAVA入門後期⑦ JAVAのSwingの基本構造
その他の図 Chapter 7.
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア制作論 平成30年12月5日.
プログラミング演習3 第2回 GUIの復習.
11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
ソースコード縮退による ソースコード理解 神谷年洋 科学技術振興事業団 さきがけ研究21 オブジェクト指向シンポジウム2003.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
UMLモデルを対象とした リファクタリング候補検出の試み
ソフトウェア制作論 平成30年11月21日.
オブジェクト指向言語論 第十四回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
UMLの概要とオブジェクト指向の基本概念
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
Javaによる Webアプリケーション入門 第4回
ソフトウェア制作論 平成30年11月28日.
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 理工学部 情報システム工学科 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
Presentation transcript:

プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也

インタフェースと抽象クラス インタフェース: メンバ変数を持たないクラスの一種.メソッドはすべて抽象メソッドで,抽象クラス同様,インスタンス化できない. 実装: 各クラスは,継承ではなく実装(implements)を用いてインタフェースを利用する.Javaでは複数のクラスを同時に継承すること(多重継承)は許されていないが,複数のインタフェースを同時に実装することは許されている. 抽象クラスとの違い: 抽象クラス → クラスの未完成品,汎化されたクラス インタフェース → 会話するための約束事,付加的な機能

インタフェースの使用例 マウスイベントの監視インタフェース public interface KeyListener extends EventListener { public void keyTyped(KeyEvent e); public void keyPressed(KeyEvent e); public void keyReleased(KeyEvent e); } abstract class MyKeyListner implements KeyListener { : public void keyTyped(KeyEvent e) { // キーがタイプされたときの実際の処理

UML UML(Unified Modeling Language) ソフトウェアモデルの図的表記法 主に実装前の分析,設計に用いる ’97,OMG(Object Management Group)により標準化 オブジェクト指向開発における世界的潮流 10種類の図(ダイアグラム)からなる 構造図 クラス図,オブジェクト図,パッケージ図 振る舞い図 ユースケース図,シーケンス図,コラボレーション図,ステートチャート図,アクティビティ図 実装図 コンポーネント図,配置図

クラス図 クラスやインタフェース間の関係を記述する. インタフェース 関連 実装 クラス 多重度 継承 クラス名 メンバ変数 メソッド

JavaAPI(1) パッケージ: 複数のクラスをまとめたもの. インポート: パッケージの利用.プログラム先頭で以下のように指定する. (Cの#include文のようなもの) import パッケージ名.クラス名; import パッケージ名.*; import java.awt.*;             : public class GraphicWindow extends Frame { : public void paint(Graphics g) {

JavaAPI(2) JavaAPI: 標準で配布されるパッケージ.主にOSとの仲立ちを行う. Java.langパッケージ: System, String, Mathクラスなど,java.langパッケージに含まれる基本クラスは,インポートしなくても使える. System.out.println(“Hello World!!”); AWTパッケージ(java.awt): GUIを提供しているパッケージ.プラットフォームによって動作が異なる. Swingパッケージ(javax.swing): AWTを拡張したパッケージ.動作がプラットフォームに依存せずかつ軽量.(軽量コンポーネント)

AWT/Swing(1) 以下の3種類のGUI部品を用いる. トップレベル・コンポーネント(コンテナ) 中間コンポーネント(コンテナ) 他の部品を追加できるが他の部品に含まれないもの. 中間コンポーネント(コンテナ) 他の部品に含まれ,他の部品を追加できるもの. アトミック・コンポーネント 他の部品を追加できないもの. トップレベル コンポーネント 中間コンポーネント アトミックコンポーネント

AWT/Swing(2) コンポーネントのクラス階層. アトミックコンポーネント トップレベル コンポーネント

AWT/Swing(3) リスナインタフェース 各コンポーネント毎に追加され,そのコンポーネントで発生するイベント(マウスクリックなど)を監視する. 各コンポーネントでイベントが発生したときに,イベントの種類に応じたメソッドが呼ばれる. 実際のイベント処理は,リスナインタフェースを実装した 各具象クラス(ユーザが自由に定義する)に記述する.

Swingを用いたゲームプログラミング

テトリスの開発 Swingを使用 開発期間:9時間40分 コード行数:903行 http://silverbullet.is.konan-u.ac.jp/ lectures/ProgrammingLanguage/tetris.html

テトリスの設計(1) 画面の構成物にどのようなものがあるか? Block: FallingBlocks: PiledBlocks:

テトリスの設計(2) 構成物を適切に分類する Model Movable PiledBlocks FallingBlocks

テトリスの設計(2)

講義で話せなかったこと プログラム理論: コンパイラやインタプリタの内部処理: 他のプログラミングパラダイム: 型理論 意味論 計算モデル コンパイラやインタプリタの内部処理: 最適化 構文解析 ガベージコレクション 他のプログラミングパラダイム: 関数型プログラミング(特にLisp) アスペクト指向 開発手法:(後期のソフトウェア工学で…) デザインパターン リファクタリング

参考文献,URL Java Eclipse UML: デザインパターン: フレームワーク: http://java.sun.com/j2se/1.4.2/ja/download.html Eclipse http://www.eclipse.org/ UML: http://www.uml.org/ デザインパターン: E.Gamma, R.Helm, R.Johnson, J.Vlissides著,本位田真一, 吉田和樹 訳:「オブジェクト指向における再利用のための デザインパターン 改訂版」, ソフトバンクパブリッシング. フレームワーク: R.Johnson, 中村宏明, 中山裕子,吉田和樹著: 「パターンとフレームワーク」, 共立出版 ソフトウェアテクノロジーシリーズ1.

講義を終えるに当たって… 日本のソフトウェア産業 2000年の日本のソフトウェアの輸出額は輸入額の100分の1程度. 1995~2000年の間の カスタムソフトの輸入の伸びは約8倍(32%). 輸入元は米国89%, 欧州7%と続く. 中国,インドへのオフショアリングの増加. 「ソフトウェア輸出入統計調査」 電子情報技術産業協会(2003)

ソフトウェア産業の未来 ソフトウェアの高度化,大規模化 世界の潮流を読むこと!! コンポーネント指向 ダウンサイジング ビジネスモデリング ハードウェア アプリケーション 高級言語 OS フレームワーク ミドルウェア コンポーネント指向 ダウンサイジング ハードウェア アプリケーション 高級言語 OS ハードウェア アプリケーション 低級言語 OS アプリケーション ビジネスモデリング アジャイル ハードウェア SOA オープンソース 世界の潮流を読むこと!!