SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
インタフェース
Java 入門
13年5月2日木曜日
ポイント
1. オブジェクトの操作に対する振る舞いを
規定するもの
2. メソッドの呼び出しを変えること無く,
振る舞いを変更することが可能
3. 利用者はインタフェースを実現する具体
的なクラスを意識しないでOK
13年5月2日木曜日
1.振る舞いの規定
13年5月2日木曜日
学校名
学科
学年
学籍番号
氏名
性別
•登校する
•授業を受ける
•宿題をする
例:学生オブジェクト
属性 振る舞い
13年5月2日木曜日
interface
// 学生オブジェクトの振る舞いを規定する
public interface StudentBehavior {
// 登校する
	 void goToSchool();
// 授業を受ける
	 void takeLesson(String name);
// 宿題をする
	 void doHomeWork();
}
実装({コード})のない抽象メソッドを記述
13年5月2日木曜日
2.実装
• インタフェースは振る舞いの規定だけを行
なっているので、振る舞いを「実現」す
るクラスを実装しなくてはいけない
• インタフェースを実装するクラスは,イン
タフェースのメソッドをオーバライドしな
くてはならない
(必ず,実装を記述し無くてはならない)
13年5月2日木曜日
public class GoodStudentBehavior implements StudentBehavior {
	 public void goToSchool() {
	 	 System.out.println("始業30分前に着きました。");
	 }
	 public void takeLesson(String name) {
	 	 System.out.println(name +"の授業の内容をノートにまとめました。" );
	 }
	 @Override
	 public void doHomeWork() {
	 	 System.out.println(" 宿題を終わらせました。");
	 }
}
GoodStudentBehavior
13年5月2日木曜日
BadStudentBehavior
public class BadStudentBehavior implements StudentBehavior {
	 public void goToSchool() {
	 	 System.out.println("遅刻して2限目に着きました。");
	 }
	 public void takeLesson(String name) {
	 	 System.out.println(name +"の授業中ずっと寝てました。" );
	 }
	 @Override
	 public void doHomeWork() {
	 	 System.out.println(" ネットゲームを始めました。");
	 }
}
13年5月2日木曜日
SimpleStudent
public class SimpleStudent {
	
	 StudentBehavior behavior;
	 SimpleStudent(StudentBehavior sb){
	 	 this.behavior = sb;
	 }
}
変数の型がインタフェースであることに注意!!
13年5月2日木曜日
3.振る舞いの変更
13年5月2日木曜日
Student
public class Student {
	 StudentBehavior behavior;
	 private String name;
	 Student(String name ,StudentBehavior sb){
	 	 this.name = name;
	 	 this.behavior = sb;
	 }
	 public void takeLesson(String name){
	 	 System.out.print(this.name + "は");
	 	 behavior.takeLesson(name);
	 }
	 public void changeBehavior(StudentBehavior studentBehavior) {
	 	 System.out.println("n" + this.name + "は心を入れ替えました。");
	 	 this.behavior = studentBehavior;
	 }
:
:
}
インタフェース
を実装している
クラスのオブジェクト
は区別なくセット可能
Studentクラスは
Interfaceを実装している
クラスを意識しない
13年5月2日木曜日
public class School {
	 public static void main(String[] args) {
	 	
	 	 Student tone = new Student("利根",new BadStudentBehavior());
	 	 // 出力「利根はシステム開発演習Iの授業中ずっと寝てました。」
	 	 tone.takeLesson("システム開発演習I");
// 心を入れ替えるメソッド	 	
	 	 tone.changeBehavior(new GoodStudentBehavior());
	 	
// 出力「利根はシステム開発演習Iの授業の内容をノートにまとめました。」
	 	 tone.takeLesson("システム開発演習I");
	 }
}
同じ振る舞いで違う動作
13年5月2日木曜日
http://www.y-adagio.com/public/standards/tr_javalang/9.doc.htm
参考URL
13年5月2日木曜日

Mais conteúdo relacionado

Destaque (9)

Sygnalizacja
SygnalizacjaSygnalizacja
Sygnalizacja
 
データーベース - SELECT文入門
 データーベース - SELECT文入門 データーベース - SELECT文入門
データーベース - SELECT文入門
 
授業資料 - ファイルシステム
授業資料 - ファイルシステム授業資料 - ファイルシステム
授業資料 - ファイルシステム
 
OS: 論理ファイル管理 - ディレクトリについて
OS: 論理ファイル管理 - ディレクトリについてOS: 論理ファイル管理 - ディレクトリについて
OS: 論理ファイル管理 - ディレクトリについて
 
ファイルとレコード
ファイルとレコードファイルとレコード
ファイルとレコード
 
ファイルアクセス方式 - オペレーティングシステム
ファイルアクセス方式 - オペレーティングシステムファイルアクセス方式 - オペレーティングシステム
ファイルアクセス方式 - オペレーティングシステム
 
コンピュータシステムの構成とか
コンピュータシステムの構成とかコンピュータシステムの構成とか
コンピュータシステムの構成とか
 
オブジェクト指向プログラミングの考え方
オブジェクト指向プログラミングの考え方オブジェクト指向プログラミングの考え方
オブジェクト指向プログラミングの考え方
 
SQL入門 - GROUP BYとHAVING -
SQL入門 - GROUP BYとHAVING -SQL入門 - GROUP BYとHAVING -
SQL入門 - GROUP BYとHAVING -
 

Mais de 金沢工業高等専門学校

H27・11月28日 金沢高専・グローバル情報学科 入試説明会
H27・11月28日 金沢高専・グローバル情報学科 入試説明会H27・11月28日 金沢高専・グローバル情報学科 入試説明会
H27・11月28日 金沢高専・グローバル情報学科 入試説明会金沢工業高等専門学校
 
金沢高専・新入生へのメッセージ「これからの5年間をどう過ごしますか」
金沢高専・新入生へのメッセージ「これからの5年間をどう過ごしますか」金沢高専・新入生へのメッセージ「これからの5年間をどう過ごしますか」
金沢高専・新入生へのメッセージ「これからの5年間をどう過ごしますか」金沢工業高等専門学校
 
本格的なプログラミングが学べる学校・金沢高専
本格的なプログラミングが学べる学校・金沢高専本格的なプログラミングが学べる学校・金沢高専
本格的なプログラミングが学べる学校・金沢高専金沢工業高等専門学校
 
Scratchをつかってプログラムの流れを説明(抜粋)
Scratchをつかってプログラムの流れを説明(抜粋)Scratchをつかってプログラムの流れを説明(抜粋)
Scratchをつかってプログラムの流れを説明(抜粋)金沢工業高等専門学校
 

Mais de 金沢工業高等専門学校 (9)

H27・11月28日 金沢高専・グローバル情報学科 入試説明会
H27・11月28日 金沢高専・グローバル情報学科 入試説明会H27・11月28日 金沢高専・グローバル情報学科 入試説明会
H27・11月28日 金沢高専・グローバル情報学科 入試説明会
 
金沢高専・新入生へのメッセージ「これからの5年間をどう過ごしますか」
金沢高専・新入生へのメッセージ「これからの5年間をどう過ごしますか」金沢高専・新入生へのメッセージ「これからの5年間をどう過ごしますか」
金沢高専・新入生へのメッセージ「これからの5年間をどう過ごしますか」
 
本格的なプログラミングが学べる学校・金沢高専
本格的なプログラミングが学べる学校・金沢高専本格的なプログラミングが学べる学校・金沢高専
本格的なプログラミングが学べる学校・金沢高専
 
モデリングとクラス図
モデリングとクラス図モデリングとクラス図
モデリングとクラス図
 
Scratchをつかってプログラムの流れを説明(抜粋)
Scratchをつかってプログラムの流れを説明(抜粋)Scratchをつかってプログラムの流れを説明(抜粋)
Scratchをつかってプログラムの流れを説明(抜粋)
 
参照型 - Java入門
参照型 - Java入門参照型 - Java入門
参照型 - Java入門
 
型変換と優先順位 - Java入門
型変換と優先順位 - Java入門型変換と優先順位 - Java入門
型変換と優先順位 - Java入門
 
情報処理 - CUI 入力のポイント
情報処理 - CUI 入力のポイント情報処理 - CUI 入力のポイント
情報処理 - CUI 入力のポイント
 
看護分野におけるネット活用
看護分野におけるネット活用看護分野におけるネット活用
看護分野におけるネット活用
 

インタフェース - Java入門