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

Similar documents
Microsoft PowerPoint ppt

ALG ppt

untitled

Microsoft PowerPoint - chap10_OOP.ppt

文字列操作と正規表現

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

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

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

PowerPoint プレゼンテーション

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

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

問題1 以下に示すプログラムは、次の処理をするプログラムである

10K

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

JAVA とテンプレート

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

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

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

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

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

Javaの作成の前に

JavaプログラミングⅠ

GEC-Java

JavaプログラミングⅠ

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

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

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

PowerPoint プレゼンテーション

第2回講義

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - prog09.ppt

とても使いやすい Boost の serialization

Microsoft PowerPoint - prog09.ppt

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

第1章 ビジュアルプログラミング入門

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint - OOP.pptx

Java講座

人工知能入門

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

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

Java言語 第1回

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

GUIプログラムⅣ

JAVA入門

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

K227 Java 2

アルゴリズムとデータ構造1

GEC-Java

プログラミング入門1

JUnit 概要 2015/4/16 版今泉俊幸 2015 bbreak Systems 1

プログラミング入門1

JAVA入門

GEC-Java

Microsoft PowerPoint pptx

PowerPoint Presentation

JavaプログラミングⅠ

2

V8.1新規機能紹介記事

** 平成 16 年度 FE 午後問題 Java** 示現塾プロジェクトマネージャ テクニカルエンジニア ( ネットワーク ) など各種セミナーを開催中!! 開催日 受講料 カリキュラム等 詳しくは 今すぐアクセス!! 平成 16

Microsoft Word - NonGenList.doc

Javaプログラムの実行手順

メソッドのまとめ

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

新・明解Java入門

Vector Vector Vector Vector() Vector(int n) n Vector(int n,int delta) n delta


PowerPoint Presentation

PowerPoint プレゼンテーション

Prog1_10th

問題1 以下に示すプログラムは、次の処理をするプログラムである

Prog2_12th

JavaプログラミングⅠ

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

IronPython による柔軟なゲーム開発 筑波大学 AmusementCreators

JavaプログラミングⅠ

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

Java知識テスト問題

基礎計算機演習 実習課題No6

Microsoft Word - NonGenTree.doc

グラフの探索 JAVA での実装

科学的モデリング 2 回 継承 2 無断転載 & 無断配布を禁じます 第 2 回 : 科学的モデリング 継承 2 継承される特性( プロパティ ) 第 2 回の話題 継承は何を継承するのか? 今回のコラムの話題は 継承される特性 ( プロパティ ) についてです そもそもサブクラスはスーパークラスか

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

Program Design (プログラム設計)

情報処理Ⅰ

Microsoft Word - keisankigairon.ch doc

Microsoft PowerPoint - prog08.ppt

基本情報STEP UP演習Java対策

Prog2_9th

プログラミング入門1

DVIOUT-exer

PowerPoint プレゼンテーション

JavaプログラミングⅠ

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

プログラミングA

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

: : : TSTank 2

Microsoft PowerPoint - kougi11.ppt

Programming-C-3.key

Transcription:

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

趣旨 M Java を通してオブジェクト指向に対する理解をより深め 次のステップへの足がかりとなるようにする 2000.10.20 オブジェクト指向 AtoZ 2

対象 M オブジェクト指向をこれから始めたい方 M Javaをもっと使いこなしたい方 M 必要な知識 Java の言語仕様 UML 2000.10.20 オブジェクト指向 AtoZ 3

Agenda M この先何が必要か M オブジェクト指向最初の一歩 M Javaに隠されたフレームワーク M まとめ 2000.10.20 オブジェクト指向 AtoZ 4

この先何が必要か M Java を使いこなしたい M いいソフトウエアを作りたい オブジェクト指向の知識が必須 M オブジェクト指向はいいソフトウエアを作るための技術のひとつ M Java にはオブジェクト指向の技術が詰まっている 2000.10.20 オブジェクト指向 AtoZ 5

どんなオブジェクト指向の知識が必要か M オブジェクト指向 M フレームワーク M パターン M コンポーネント M 分散オブジェクト M etc... 2000.10.20 オブジェクト指向 AtoZ 6

オブジェクト指向の基本概念 M オブジェクト M クラス M クラスとインスタンス M オブジェクト指向で作られたソフトウエア M フレームワーク 2000.10.20 オブジェクト指向 AtoZ 7

オブジェクト M 自分専用の属性と操作を持つ M 他のオブジェクトや外界からのメッセージに反応して動く オブジェクト 色を変える ( 黄色 ) を実行して 色を変える ( 色 ) 緑黄 場所を変える ( 場所 ) 2000.10.20 オブジェクト指向 AtoZ 8

クラス M オブジェクトの設計図 属性とメソッドの定義が書いてあるもの クラス楕円 { // 属性色塗りつぶす色 ; 幅と高さサイズ ;... // メソッド色を変える ( 色指定色 ) { 塗りつぶす色 = 指定色 ; 塗りつぶす (); }... } 2000.10.20 オブジェクト指向 AtoZ 9

クラスとインスタンス M インスタンス = クラスから作られたオブジェクト M クラスに書かれた仕様に基づいてオブジェクトを生成することをインスタンシエーションという 楕円楕円オブジェクト楕円オブジェクトオブジェクト楕円クラス 2000.10.20 オブジェクト指向 AtoZ 10

オブジェクト指向で作られたソフトウエア M オブジェクト指向で作られたソフトウエアは オブジェクト という単位で構成されている M この オブジェクト がお互いにメッセージをやり取りすることでソフトウエアが実現される オブジェクト ソフトウエア 2000.10.20 オブジェクト指向 AtoZ 11

フレームワーク M オブジェクト指向でソフトウエアを作る際の様々なノウハウ ( 部品の組合わせ方や 業務フロー ) を再利用可能な形で提供したもの M 半完成品なので 利用時には利用方法に合わせて実現化する フレームワーク フレームワークを使った完成品 2000.10.20 オブジェクト指向 AtoZ 12

オブジェクト指向最初の一歩

最初の一歩 オブジェクトを作る! 2000.10.20 オブジェクト指向 AtoZ 14

Java = OOP? M Java では自分でオブジェクト ( クラス ) を作らなくても ソフトウエアの作成は可能 class AddressBook { int maxaddress = 100; int currentindex = 0; String name[] = new String[maxAddress]; String address[] = new String[maxAddress]; String tel[] = new String[maxAddress];... public void add(string val1, String val2, String val3) { name[currentindex] = val1; address[currentindex] = val2; tel[currentindex] = val3; currentindex++; }... } 2000.10.20 オブジェクト指向 AtoZ 15

オブジェクトを作るとは? M オブジェクトを作る とは ソフトウエアを構成するクラスを自身で定義し ソフトウエアを組み上げていくこと import java.util.*; class AddressBook { Vector addresses = new Vector();... public void add(person aperson) { addresses.add(aperson); }... } class Person { String name; String address; String tel;... } 2000.10.20 オブジェクト指向 AtoZ 16

オブジェクトを作るメリット M ソフトウエアの構造が理解しやすくなる オブジェクト という より抽象度の高い単位でソフトウエアを見ることができる M オブジェクト指向の技術を利用しやすくなる 分散 永続化 再利用 2000.10.20 オブジェクト指向 AtoZ 17

オブジェクトの作り方 M ソフトウエアをオブジェクトの集合として捉える 機能とデータの集合からオブジェクトの集合へ M それぞれのオブジェクトに役割を与え オブジェクト同士の協力関係を考える M 余談 : このために オブジェクト指向設計 が存在する 2000.10.20 オブジェクト指向 AtoZ 18

オブジェクトを作るときの注意点 M オブジェクトに沢山の役割を持たせない オブジェクトの役割は 1 つ! M オブジェクトが協力し合うことが大事 1 つのオブジェクトが頑張る形 オブジェクトが協力しあうような役割分担 2000.10.20 オブジェクト指向 AtoZ 19

役割分担の例 true ジョッキ以外にもお皿や鍋があったとすると 左のモデルは 全ての判断を人が行わないといけない 右のモデルは オブジェクトに聞いて周るだけでいい 2000.10.20 オブジェクト指向 AtoZ 20

次の一歩 オブジェクトを作らない! 2000.10.20 オブジェクト指向 AtoZ 21

オブジェクトを作らないとは? M 車輪の再発明 の回避 プログラマはなんでも自分で作ってしまう ( 作りたがる ) 傾向がある M 再発明したものは 既存のものよりも質が落ちることが多い既存のものがしてきたことと同じ失敗を繰り返すテストによる信頼性確認が必要 2000.10.20 オブジェクト指向 AtoZ 22

作ってしまいがちなクラス M オブジェクトの集合 ( コンテナクラス ) 配列で実装しがち M ソート M 日付 カレンダー 日付とその計算方法に関するクラス M フォーマッタ 表示形式を整えるためのクラス 2000.10.20 オブジェクト指向 AtoZ 23

再利用という視点 M Javaではクラスライブラリで再利用可能な部品を 提供している コンテナクラス Vector, Hashtable ソート Arrays.sort() 日付 カレンダー Date, Calendar フォーマッタ DateFormat, MessageFormat M 既に有るものは作らない という考え方が大切 M 近年 様々な粒度の再利用部品が提供されること で プログラミングスタイルが変化しつつある 2000.10.20 オブジェクト指向 AtoZ 24

プログラミングスタイルの変化 Ⅰ M 従来は大部分のコードをプログラマが作成し 小さな再利用部品を利用していた 2000.10.20 オブジェクト指向 AtoZ 25

プログラミングスタイルの変化 Ⅱ M プログラマはライブラリから必要な部品を探し それらを組合わせ 足りない部分を作るという開発スタイルに変化しつつある 2000.10.20 オブジェクト指向 AtoZ 26

オブジェクト指向最初の一歩 : まとめ M オブジェクトを作ろう! これから作るものをオブジェクトの集合として考えるオブジェクトを作ることで オブジェクト指向のメリットを享受 M オブジェクトは作らないようにしよう! 再利用の視点 2000.10.20 オブジェクト指向 AtoZ 27

Java に隠されたフレームワーク

Java をより活用するためには M Javaの提供するクラスライブラリとそこで提供される仕組みについて理解する必要がある M 自身の作ったオブジェクトがクラスライブラリ側からどのように利用されるかを知る 2000.10.20 オブジェクト指向 AtoZ 29

Java のオブジェクト M Javaでは 全てのオブジェクトがObjectクラスを継承したクラスとなる M 自分で作成したオブジェクトも例外ではない Person Object 実装時のクラス Person コンパイル後のクラス 2000.10.20 オブジェクト指向 AtoZ 30

Object クラスの継承は何を意味するか? M Javaクラスライブラリでは全てのオブジェクトに適用可能な仕掛け ( フレームワーク ) が提供されている M Objectクラスを継承しているということはこの仕組みに取り込まれているということになる Vector Vector elements * elements * Object Object Person クラスライブラリの構造 利用時の構造 2000.10.20 オブジェクト指向 AtoZ 31

ライブラリ側から見ると M どのようなクラスから利用されるか分からない M Object クラス という形でクラスライブラリを利用するクラスを抽象化して扱っている 2000.10.20 オブジェクト指向 AtoZ 32

クラスライブラリの修得 M Java クラスライブラリの持つフレームワークを理解すれば より Java クラスライブラリを有効に活用することができる M 余談 :Java クラスライブラリを知ること Java 開発者の設計意図を知ること 2000.10.20 オブジェクト指向 AtoZ 33

Java に隠されたフレームワーク M どんなフレームワークに取り込まれているかは Object クラス (java.lang.object) を見るとわかる Object equals(object) fianlize() tostring() Object クラスに用意されている Java クラスライブラリのフレームワークで利用される代表的なメソッド 2000.10.20 オブジェクト指向 AtoZ 34

定義 : ホットスポットとフローズンスポット M フローズンスポット フレームワーク内の変更されない部分 M ホットスポット フレームワーク内の変更可能な部分フレームワークに柔軟性を与える Objectクラスに用意されているtoString() や equals() はホットスポット HotSpotとは別もの 2000.10.20 オブジェクト指向 AtoZ 35

Java に隠されたフレームワークの紹介 M tostring() 文字列化が必要なフレームワークで使用されるメソッド M equals() オブジェクトの比較が必要なフレームワークで使用されるメソッド 2000.10.20 オブジェクト指向 AtoZ 36

tostring() M オブジェクトを文字列化したいところで使われる M System.out.println(anObject) 等 public static String valueof(object obj) { return (obj == null)? "null" : obj.tostring(); } 2000.10.20 オブジェクト指向 AtoZ 37

tostring() を設定すると M 以下のテストプログラムを考える class Test { public static void main(string argv[]) { Person aperson = new Person( 井上樹, 横浜市, "045-***-****"); System.out.println(aPerson); } } 2000.10.20 オブジェクト指向 AtoZ 38

tostring() 設定前 M 以下の Person クラスでテストプログラムを実行する class Person { String name; String address; String tel; } public Person(String nam, String add, String phone) { name = nam; address = add; tel = phone; } 実行結果 > java Test Person@60deb39c 2000.10.20 オブジェクト指向 AtoZ 39

tostring() 設定後 M 以下の Person クラスでテストプログラムを実行する class Person { // 以下のメソッドを追加 public String tostring() { return name + " " + address + " 在住 tel:" + tel; } } 実行結果 > java Test 井上樹横浜市在住 tel:045-***-**** 2000.10.20 オブジェクト指向 AtoZ 40

equals() M オブジェクトが同じかどうか比較するところで使われる M Vector の indexof() 等 public synchronized int indexof(object elem, int index) { if (elem == null) {... } else { for (int i = index ; i < elementcount ; i++) if (elem.equals(elementdata[i])) return i; } return -1; } 2000.10.20 オブジェクト指向 AtoZ 41

オブジェクトが 同じ とは? M 質問 私の時計.equals( 彼の時計 ) を実行したら true が返ってきました なにが 同じ だったのでしょう? 2000.10.20 オブジェクト指向 AtoZ 42

同じ とはの答え M 例 時間 メーカー 色 形 インスタンス M 同じ の概念は場面によって異なる M それを定義するのが equals() M デフォルトでは同一インスタンスかどうかを比較 2000.10.20 オブジェクト指向 AtoZ 43

equals() を設定すると class Test { public static void main(string argv[]) { Vector addresses = new Vector(); Person aperson = new Person(" 井上樹 ", " 横浜市 ", "045-***-****"); addresses.add(aperson); } } Person query = new Person(" 井上樹 ", "", "045-***-****"); int resultindex = addresses.indexof(query); System.out.println(" 検索結果 :"); if (resultindex >= 0) { Person resultperson = (Person)addresses.elementAt(resultIndex); System.out.println(resultPerson); } else { System.out.println(" 見つかりませんでした "); } 2000.10.20 オブジェクト指向 AtoZ 44

equals() 設定前 M 先ほどの tostring() 設定後の Person クラスでテストプログラムを実行する 実行結果 > java Test 検索結果 : 見つかりませんでした 2000.10.20 オブジェクト指向 AtoZ 45

equals() 設定後 M 以下の Person クラスでテストプログラムを実行する class Person { public String getname() { return name; } public String getaddress() { return address; } public String gettel() { return tel; } public boolean equals(object obj) { Person person = (Person)obj; if (name.equals(person.getname()) && } } tel.equals(person.gettel())) { return true; } else { return false; } 実行結果 > java Test 検索結果 : 井上樹横浜市在住 tel:045-***-**** 2000.10.20 オブジェクト指向 AtoZ 46

tostring() や equals() を定義する意味 M tostring() やequals() を再定義することで Javaの提供するフレームワークに自身の作ったオブジェクトを適用することができる M 新規コードを書く量を減らすことができる 例 :equals() を定義すれば 検索ルーチンを書かなくても良い 2000.10.20 オブジェクト指向 AtoZ 47

Java に隠されたフレームワーク : まとめ Ⅰ M Javaでオブジェクトを作ると 自動的にJava の提供するフレームワークへの適用が可能になる M フレームワークから利用されるメソッド (tostring() やequals()) を再定義することで フレームワークをより活用できるようになる 2000.10.20 オブジェクト指向 AtoZ 48

Java に隠されたフレームワーク : まとめ Ⅱ M Objectクラス以外にもフレームワークを利用するためのクラスは沢山隠されている M クラスライブラリを知ることが Java 活用の第一歩 M クラスライブラリ修得のコツ 1つのクラスに注目するのではなく 関連しあう複数のクラスで何が実現されるかに注目ホットスポットとフローズンスポットを見極める 2000.10.20 オブジェクト指向 AtoZ 49

まとめ

オブジェクトを作ろう! M オブジェクトを作ることで初めて オブジェクト指向を元にした様々な技術を利用することができる M ただ 既に存在するオブジェクトは再利用すること 2000.10.20 オブジェクト指向 AtoZ 51

フレームワークを利用しよう! M Javaのクラスライブラリでは様々なフレーワークを提供している M それらのフレームワークを利用することが Java オブジェクト指向修得への道 2000.10.20 オブジェクト指向 AtoZ 52

これからのステップ M 分析からオブジェクト指向を使えば もっと有効にオブジェクト指向を活用できる M フレームワークを作ってみよう クラスライブラリに無いものは自分で作り 作ったものを再利用可能なようにまた クラスライブラリに追加していく部品が増えてくれば 開発者はより本質的な部分に注力できる自分のノウハウをフレームワークとして蓄積 2000.10.20 オブジェクト指向 AtoZ 53