できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀

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

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

Javaの作成の前に

Microsoft PowerPoint ppt

PowerPoint プレゼンテーション

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

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 3 回コレクションと例外処理 テクノロジックアート 瀬嘉秀

PowerPoint プレゼンテーション

GEC-Java

JavaプログラミングⅠ

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - chap10_OOP.ppt

基本情報STEP UP演習Java対策

PowerPoint プレゼンテーション

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

JavaプログラミングⅠ

プログラミング入門1

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

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

2

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

11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デ

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

Javaプログラムの実行手順

JavaプログラミングⅠ

JavaプログラミングⅠ

Prog2_12th

GEC-Java

Microsoft PowerPoint pptx

PowerPoint プレゼンテーション

JavaプログラミングⅠ

JAVA入門

GEC-Java

Java言語 第1回

Microsoft PowerPoint - prog09.ppt

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog09.ppt

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

JavaプログラミングⅠ

スライド 1

Microsoft PowerPoint - lec06 [互換モード]

Prog2_9th

Prog2_9th

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

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

Java知識テスト問題

プログラミング入門1

メソッドのまとめ

PowerPoint プレゼンテーション

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

Prog1_10th

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

ガイダンス

Microsoft Word - C言語研修 C++編 3.doc

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

プログラミング入門1

Microsoft PowerPoint - OOP.pptx

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

レコードとオブジェクト

第2回講義

デジタル表現論・第4回

Microsoft Word - Java3.DOC

Microsoft PowerPoint - HITobject.ppt

PowerPoint プレゼンテーション

: : : TSTank 2

DVIOUT-exer

ガイダンス

JavaプログラミングⅠ

Prog1_6th

今回の内容 グラフとオブジェクト指向プログラミング Java を使う理由 Java の基本 Javaのライブラリ 開発 実行 クラスの再利用 クラス継承 抽象クラス 開発の要点

K227 Java 2

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

デザインパターン第一章「生成《

ガイダンス

HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなど

第二回独習 Java ゼミ 第二章クラスとメソッド 2.1 メソッドの構造 2.2 静的メソッドと静的変数の概要 2.3 インスタンスメソッドとインスタンス変数の概要 2.4 Integerクラス 2006/04/19 神津健太

解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1

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

Microsoft PowerPoint - object.ppt

JAVA とテンプレート

ガイダンス

レコード class Point attr_accessor("x", "y") インスタンス変数の宣言 point.rb

10K

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

Java から見たオブジェクト指向入門 オブジェクト指向 AtoZ セミナー ( 株 ) 豆蔵井上樹

IT プロジェクト

Javaプログラマー早期育成ドリル ~コードリーディング編~ 解答

Javaセキュアコーディングセミナー東京 第2回 数値データの取扱いと入力値の検証 演習解説

第 1 章 Java 言語について ( オブジェクト指向, 変数の扱い方, 繰り返し条件と条件分岐 ) Java 言語の概要とオブジェクト指向, 変数の扱い方, 繰り返し条件と条件分岐について理解し, プログラム作成を行う 1.1 Java 言語の概要 JAVA は Sun Microsystems

Microsoft Word - keisankigairon.ch doc

Prog1_15th

メディプロ1 Javaサーブレット補足資料.ppt

Microsoft PowerPoint - prog08.ppt

Microsoft PowerPoint - 09-object

Microsoft PowerPoint - lec äº™æ‘łã…¢ã…¼ã…›

PowerPoint Presentation

Java講座

人工知能入門

Program Design (プログラム設計)

Transcription:

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀

内容 オブジェクト指向とは オブジェクト指向のしくみ Java 言語とオブジェクト指向 属性と振る舞い クラスとメソッド オブジェクト指向の特徴 演習問題

勉強会の参考書 Java ( アジャイルソフトウェア開発技術シリーズ 基礎編 ) 発売日 2012 年 5 月 10 日 著作 株式会社テクノロジックアート 監修 長瀬嘉秀 編者 浜川剛 山下智也 出版 東京電機大学出版局 ISBN 978-4501550400

オブジェクト指向概要 4

近な例 同じ 乗用車 でも 別々の モノ として存在する これをオブジェクトと呼ぶ 乗用車 鈴木さんの車 佐藤さんの車 5

グループ分け オブジェクトは特徴によってグループ分けできる 乗用車のグループ 鈴木さんの乗用車 佐藤さんの乗用車 トラックのグループ 6 トラック A トラック B

グループの特徴 グループにはそれぞれ特徴がある 乗用車 人を乗せるための自動車 トラック 荷物を載せるための自動車 7

グループの階層化 乗用車 トラックともに自動車である どちらも自動車の特徴を持つ 自動車 乗用車 トラック 8

クラスとは クラスとは! 同じ特徴を持つオブジェクトのグループ! オブジェクトのテンプレート ( 型 ) 乗用車 ( クラス ) 佐藤さんの乗用車 ( オブジェクト ) 9

クラスの例 クラスは共通する特徴を持っているグループ 乗用車クラス 鈴木さんの乗用車 ( オブジェクト ) 佐藤さんの乗用車 ( オブジェクト ) 10

例 : 乗 クラス 乗用車の特徴 四輪車 人を乗せられる 燃料で動く 車体の色 前へ進む 11

クラスの構成要素! クラスは以下の性質を持つ! 属性 クラス ( オブジェクト ) が持つ値 ( 変数 )! 振る舞い クラス ( オブジェクト ) の動作 ( メソッド ) 12

クラスの属性! 例 : 乗用車クラスが持つ属性 排気量 重量 色 搭乗人数 ドア数 乗用車クラス 13

クラスの振る舞い 例 : 乗用車クラスが持つ振る舞い ( メソッド )! 前に進む! 後ろに戻る! 止まる! 右へ曲がる! 左へ曲がる 乗用車クラス!

クラスの属性と振る舞い UML によるクラス構造の記述 乗用車 排気量重量 前に進む後ろに戻る 属性 クラス名 振る舞い 乗用車

演習 1 身近な例でクラスを考えてみなさい 例 : 自動販売機クラス そのクラスにどんな属性と振る舞いがあるか考えてみなさい 例 : 自動販売機クラス 属性商品 投入金額 つり銭 振る舞い商品を出す 投入金額を表示する 16

オブジェクト指向の特徴 抽象化(Abstrac;ons) カプセル化(Encapsula;on) 継承(Inheritance) メッセージング(Message Passing) ポリモーフィズム(Polymorphism) 17

抽象化 クラスによるオブジェクトのテンプレートを作成する 鈴木さんの乗用車 佐藤さんの乗用車 乗用車クラス 18

カプセル化 データと機能の実装を隠ぺいする モジュール化により プログラムコードの保守性を上げる 手続き1 手続き2 + データ カプセル化 オブジェクト手続き1 手続き2 データ 19

継承 ( スーパークラス / サブクラス ) サブクラスはスーパークラスの特徴を受け継ぐ スーパークラス サブクラス サブクラス 20

継承 ( の例 ) 乗用車クラスとトラッククラスは 自動車クラスの特徴を受け継ぐ 自動車 乗用車 トラック 21

継承 自動車 排気量重量 前に動く 22 乗用車 人数 人を乗せる トラック 堆積重量 荷台を上げる

継承 ( 属性 振る舞い ) スーパークラスの属性 振る舞いをサブクラスは継承することができる 自動車属性 排気量 重量振る舞い 前に進む 後ろへ戻る 引き継ぐ 乗用車属性 排気量 重量振る舞い 前に進む 後ろへ戻る 23

メッセージング オブジェクト間のデータ送信 呼び出しなどのやりとりは メッセージによって行われる 受付係オブジェクト メッセージ 口座開設 ( 顧客 ID, 金額 ) 口座オブジェクト 24

ポリモーフィズム 異なるオブジェクトに 同じメッセージを送った場合に そのオブジェクトの特性にあわせた振る舞いを設定できる 25

演習 2 身近な例で継承 ( スーパークラスとサブクラス ) を考えてみなさい スーパークラスにどんな属性と振る舞いがあるか考えてみなさい さらに サブクラスにはどんな特徴があるか考えてみなさい 26

オブジェクト指向のプログラム 27

プログラム 語の関係 ( 系列 ) C Objective-C Simula C++ Java Ada Smalltalk Eiffel Modula Ada-95 Pascal Object Pascal VB-5 Lisp Flavors Clos 28

プログラム 語におけるオブジェクト指向 オブジェクト指向言語 Python SwiL Ruby Smalltalk JAVA C++ など 29

クラスの属性と振る舞い 乗用車 クラス名 排気量重量 前に進む後ろに戻る 属性 振る舞い 乗用車クラス 30

プログラム上のクラスの定義! 乗用車クラスの場合 クラス名 public class Car { 属性の名前 // 排気量 private int enginedisplacement; 属性 // 重量 private int weight; 振る舞いの名前 } public void runforward() { // 前へすすむ } 振る舞い

プログラム上の属性の定義! 属性には 可視性 ( 後述 ) と属性の型 属性名をつける! 必要なら初期値を入れておくことができる 排気量 (enginedisplacement) 属性の場合 private int enginedisplacement; 可視性属性の型 例 : 属性名 private int number; private long amount = 10000; private double rate = 5.25;

プログラム上の振る舞いの定義! 振る舞い ( メソッドとも呼ぶ ) には 可視性 戻り値 メソッド名 引数等を定義する! 戻り値には メソッドから返ってくるデータの型を指定する 返ってくるデータが無い場合は 戻り値に void を指定する! 引数には メソッドに渡すデータの型と名前を定義する 前へ進む (runforward) メソッドの場合 public void runforward () { } 可視性戻り値メソッド名 引数 ( この例では引数無し ) 例 : public int getnumber() { return 10; // メソッドを呼び出した側に10を返す } public void setamount(long amount) { }

Java プログラムを作るために 1. デスクトップ上のコマンドプロンプトを起動させる 2. 作業ディレクトリをマイドキュメントに変更する cd My Documents 3.Java というディレクトリを作成する mkdir Java 4.Java ディレクトリに移動して プログラムを作成する cd Java notepad XXXXX.java (XXXXX は自分で決めたクラス名 ) 5. プログラムをコンパイルする Javac XXXXX.java

演習 3 演習 1 で考えたクラスをプログラムで記述してみよう ( メソッドの内容は System.out.println() で文字を表示するだけで良い ) 例 : public void runforward() { System.out.println( runforward を実行 ); } 注意 :Java の場合クラス名とファイル名を同じにしないとコンパイルエラーになります 例 :Car クラス Car.java ファイルに保存 プログラムをコンパイルしてみよう

オブジェクトの 成とコンストラクタ クラスからオブジェクトを生成するには new を使う オブジェクトを生成する際 コンストラクタが呼ばれる 生成したオブジェクトを インスタンス と呼ぶこともある public class Client { public static void main(string args[]){ // Car クラスのオブジェクトを生成 Car mycar = new Car(); // car オブジェクトの runforward を実行 } } mycar.runforward();

コンストラクタ コンストラクタは オブジェクトが生成される際に呼ばれる コンストラクタは クラス名とおなじ名前で 戻り値を持たない コンストラクタをなにも宣言しなかった場合 デフォルトのコンストラクタ ( 引数無しのコンストラクタ ) が宣言してあるものとして扱われる (JAVA の場合 ) public class Car { } private String carname; public Car(){ carname = " 名無し "; } public Car(String name){ carname = name; } コンストラクタ ( 引数名無し ) コンストラクタ ( 引数名有り )

演習 4 演習 3 で作成したクラスのオブジェクトを生成してみなさい 生成したオブジェクトのメソッドを実行してみなさい

クラスのメンバ クラスの構成要素のことをメンバとも呼ぶ クラスのメンバには 属性 ( 変数 ) 振る舞い ( メソッド ) がある すべてのメンバ可視性を持つ メンバは 静的メンバとインスタンスメンバの二つのタイプに分けられる

クラスメンバの可視性 メンバの可視性とは そのメンバがどこからアクセスできるかを示す 可視性の種類 private そのクラスの中からしかアクセスできない protected サブクラスからアクセスできる public クラスの外側からアクセスできる

静的メンバとインスタンスメンバ インスタンスメンバ オブジェクト ( インスタンス ) を生成しないと使えない 静的メンバ オブジェクトを生成しなくて使える メンバに sta;c を指定する例 : public sta;c int menber; public sta;c int getmenber(){ return 10;} 次のようにクラスから直接実行できる int menber = Car.getMenber();

継承 自動車 排気量重量 前に動く 乗用車 人数 人を乗せる トラック 堆積重量 荷台を上げる

プログラム上の継承 // 自動車クラス public class Vehicle{ // 排気量 private int enginedisplacement; // 重量 private int weight; public boolean runforward() { } } // 前へすすむ // 乗用車クラス public class Car extends Vehicle { } // 人数 private int number; //runforward は書かなくても利用できる Vehicle を継承しているため 継承の定義 (Car は Vehicle を継承している )

演習 5 演習 2 で考えたスーパークラスとサブクラスをプログラムで記述しなさい ( 振る舞いの内容は System.out.println() で文字を表示するだけ良い ) プログラムをコンパイルして 実行しなさい

カプセル化 操作 ( 振る舞い ) を介して private な属性にアクセスする 属性を直接操作しないため クラス内が変化しても呼び出し側に影響しない 自動車 自動車 排気量を取得 排気量を取得 排気量 何か複雑な計算

ポリモーフィズム 同じ操作 ( 振る舞い ) でも オブジェクトのクラスによって異なる動作をする 例 : 再生機 ( テープとビデオ ) 再生機 play () テープ ビデオ play () play ()

ポリモーフィズム // 再生機クラス public class Recoder { public void play() { // 再生する } } // テープクラス public class Tape extends Recoder { public void play() { // オーバーライドして // テープ振る舞いを記述 } }

プログラム上のポリモーフィズム recoder にはテープかビデオどちらかのオブジェクトが入る Recoder recoder; if(recodertype == TAPE){ recoder = new Tape(); } else { } recoder = new Vide(); recoder.play(); テープオブジェクトの場合は テープの play を ビデオオブジェクトの場合はビデオの play を実行する

演習問題 オブジェクト脳の作り方ででてくる社長起立を Java プログラムで作成してください 社長が 部長 主任 担当に 起立 という号令を出します このときに それぞれは 以下のような起立をします 部長 : 部長がだるそうに立ちました 主任 : 主任が素早く立ちました 担当 : 担当は慌てて起立しました プログラムでは 起立は コンソールに表示してください ヒントは 継承とポリモーフィズムを使ってください

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀