GEC-Java

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

GEC-Java

GEC-Java

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

PowerPoint プレゼンテーション

JavaプログラミングⅠ

GEC-Java

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

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

Microsoft PowerPoint - chap10_OOP.ppt

Microsoft PowerPoint - prog03.ppt

ガイダンス

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

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Prog1_6th

GEC-Java

Java言語 第1回

PowerPoint プレゼンテーション

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

Javaの作成の前に

Microsoft PowerPoint - handout07.ppt [互換モード]

PowerPoint プレゼンテーション

GEC-Java

GEC-Java

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

Microsoft PowerPoint - prog04.ppt

プログラミング入門1

Microsoft PowerPoint - prog09.ppt

Microsoft PowerPoint - prog09.ppt

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

プログラミング入門1

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

JavaプログラミングⅠ

メソッドのまとめ

Javaプログラムの実行手順

デジタル表現論・第6回

JAVA入門

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

JavaプログラミングⅠ

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

Microsoft PowerPoint pptx

演算増幅器

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

Microsoft PowerPoint ppt

ガイダンス

Prog2_12th

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

Prog2_9th

- 2 Copyright (C) All Rights Reserved.

Prog1_10th

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

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

PowerPoint プレゼンテーション

レコードとオブジェクト

Java講座

JavaプログラミングⅠ

プログラミング入門1

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

ガイダンス

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

Prog1_15th

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

スライド 1

プログラミングA

スライド 1

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

JavaプログラミングⅠ

Program Design (プログラム設計)

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

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

情報実習Ⅱ

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

プログラミング入門1

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

ガイダンス

Prog1_2nd

プログラミング基礎

JavaプログラミングⅠ

Java知識テスト問題

デジタル表現論・第4回

JavaプログラミングⅠ

JAVA入門

2

JAVA とテンプレート

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

JAVA入門

Week 1 理解度確認クイズ解答 解説 問題 1 (4 2 点 =8 点 ) 以下の各問いに答えよ 問題 bit 版の Windows8.1 に Java をインストールする時 必要なパッケージはどれか 但し Java のコンパイルができる環境をインストールするものとする 1. jdk

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

プログラミング入門1

文字列操作と正規表現

基本情報STEP UP演習Java対策

ハピタス のコピー.pages

Copyright 2008 All Rights Reserved 2

相続支払い対策ポイント

150423HC相続資産圧縮対策のポイント

IT プロジェクト

マークアップ言語

Microsoft Word - problem3.doc

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

Transcription:

プログラミング初級 (Java) 第 11 回オブジェクト指向って? 白銀純子 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 1

第 11 回の内容 プログラミングの種類 オブジェクト指向とは? Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 2

プログラミングの種類 関数型言語 手続き型言語 オブジェクト指向言語 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 3

関数型言語 数学的な関数のみをもとにして記述するプログラミング言語 一度変数に値が与えられれば その変数の値は変化しない 計算結果を引数とする 関数呼び出しのみで計算を行う プログラミング言語 : Lisp, Schemeなど Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 4

手続き型言語 記述された命令を上から順に実行していくプログラミング言語 処理の結果に応じて変数の値が変化 プログラミング言語 : C 言語, BASIC, Pascalなど Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 5

オブジェクト指向言語 もの と もの との関係に重点を置いて記述するプログラミング言語 ある もの に対して それが持つ情報と その もの が行う作業を記述する ある もの と別の もの とのコミュニケーションを記述することで プログラムを動作させる プログラミング言語 : SmallTalk, C++, C# など Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 6

Java は? オブジェクト指向言語 これまでの言語にはない 完全なオブジェクト指向を実現した言語 Write Once, Run Anywhere ( 一度記述すればどこでも動作する ) がキャッチコピー 一度記述すれば OS 等の環境が異なるコンピュータでもプログラムは動作する 他のプログラミング言語では OS 等が違うとコンパイル 実行ができないこともある Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 7

オブジェクト指向の基礎 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 8

クラスとオブジェクト (1) オブジェクト指向 : もの を中心してソフトウェアを構築する考え方 もの : オブジェクト ( インスタンスとも ) 1つ1つの具体的な実物 名前を示されたとき これ とそのものを特定できるもの もの の分類 : クラス 実物を分類したカテゴリ ( 実物の総称のような概念 ) 名前を示されたとき その概念にあてはまるものがいくつか存在するもの オブジェクト と インスタンス は厳密にはちがうもの Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 9

クラスって (1)? Java は クラス というものを基本にして動作 クラス : Java プログラムを動作させるための基本単位 XX の処理をするためのクラス XX のデータを定義するためのクラス etc. これまで書いてきた Java プログラム それぞれの役割を持ったクラスをたくさん作り お互いに連携させることで Java のプログラムは動作 今回のクラス Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 10

クラスって (2)? public class クラス名 { でクラスの名前を指定 Java では 原則として クラス名 は 拡張子なし (.java なし ) のファイル名にする クラス名とファイル名は全く違うものにすることもできるが 原則として同じものにする コンパイルすると クラス名.class という名前のファイルができる Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 11

データを定義するためのクラス 異なる種類の情報をひとまとめにして扱うためのもの 一種のデータ型 ( ただし int や double と違い 内部で色々な情報を持っている ) 高校の生徒 1 人分の情報 String name, address, tel; int studentnumber, english, math, language, science, society; これだけの情報を持った クラス を作る Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 12

クラス は情報の集合体 プログラムで扱うデータについて 何がひとまとまりかを定義したもの 高校の生徒はどんな情報を持つ? 住所, 氏名, 電話番号, 所属クラス, 試験の成績, etc. 図書館の本はどんな情報を持つ? タイトル, 著者, 出版社, 出版年, ID, etc. これでひとまとまり と定義 ただし! クラス は 具体的なデータは持たない 早稲田太郎さんの試験の成績は? 図書館の蔵書 ID 0001 の本のタイトルは? 具体的なデータを持つのは オブジェクト Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 13

オブジェクト って? クラス とは 別の考え方をすれば それぞれの人や物が どういう種類の情報を持っているか を表すもの Student クラス ( 高校の生徒がどういう情報を持っているか ) 出席番号 1 番の生徒 ( クラス A) 出席番号 2 番の生徒 ( クラス A)... 出席番号 1 番の生徒 ( クラス B) 出席番号 2 番の生徒 ( クラス B) 住所 や 氏名 などの情報の持ち主 = オブジェクト オブジェクト : 実際に具体的な情報を持っている人や物 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 14

クラスとオブジェクト (1) クラス 実物を分類したカテゴリ ( 実物の総称のような概念 ) 名前を示されたとき その概念にあてはまるものがいくつか存在するもの オブジェクト 1 つ 1 つの具体的な実物 人や物を 持っている情報によって分類したもの Ex. 早稲田大学の学生 名前を示されたとき これ とそのものを特定できるもの クラス の分類に当てはまる 具体的な人や物 Ex. 早稲田大学の学生の早稲田太郎さん Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 15

クラスとオブジェクト (2) 図書館蔵書 ID 0001: 児玉公信著 : UML モデリングの本質, 日経 BP 社 実物の本 = オブジェクト 図書館蔵書 ID 0002: マーチン ファウラー著, 羽生田栄一監訳 : UML モデリングのエッセンス, 翔泳社 本 というカテゴリ ( クラス ) に分類 学籍番号 1X16Y001: 早稲田太郎 学籍番号 1X16Y002: 戸山花子 実物の学生 = オブジェクト 学生 というカテゴリ ( クラス ) に分類 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 16

クラスとオブジェクト (3) クラス : 同じ属性と操作を持つオブジェクトの集合 属性 ( フィールド ): オブジェクトが持つ情報 ( データ ) 操作 ( 振る舞い, メソッド ): オブジェクトが担当する処理 クラスの例 本 タイトル著者 データを見せる貸し出し処理をする返却処理をする 学生 学籍番号住所成績 授業に出席するレポートを書く 犬 名前飼い主 遊ぶ寝るえさを食べる クラス名属性 ( フィールド ) 操作 ( メソッド ) Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 17

クラスとオブジェクト (4) 1 つのクラスに複数のオブジェクトを所属させることができる クラス : 実物を分類したカテゴリのようなもののため オブジェクト同士は それぞれのクラスに定義された操作 ( 処理 ) を呼び出す 操作 ( 処理 ) の呼び出しを メッセージ と呼ぶ メッセージを組み合わせてオブジェクト同士がコミュニケーションすることでプログラム全体が成り立つ Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 18

属性 操作 メッセージ ( 例 ) あなた ( 本 ) を貸して とお願いする ( 処理を呼び出す ) メッセージ 本 利用者 クラス 持っているデータ タイトル著者出版社 担当する処理 自分のデータを見せる貸し出し処理をする返却処理をする 属性 ( フィールド ) 操作 ( 振る舞い, メソッド ) Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 19

プログラムでのクラスとオブジェクト Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 20

プログラムでしなければならないこと 1. クラスを定義する それぞれの もの について 内容を定義する どのような名前か? どのような情報 ( 属性 ) を持っているか? どのような操作 ( メソッド ) を持っているか? 2. オブジェクトを作る クラスに所属する個々のオブジェクトの情報の入れ物を作成 3. オブジェクトにデータを設定する 2. で作ったオブジェクトに 具体的なデータを設定 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 21

原則 データを定義するためのクラス (Java ファイル ) を 1 つ作成 処理のクラスとは別に作成 処理をするためのクラス (Java ファイル ) を 1 つ作成 データ定義のクラスとは別に作成 処理のクラスの中で データ定義のクラスのオブジェクトを作成 処理のクラスの中に オブジェクトを使って 様々な処理を記述 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 22

1. クラスの定義のしかた これまでと同じ 1 ファイル 1 クラス オブジェクトが持つデータ ( フィールド ) を変数として宣言 どのメソッドにも含まれない場所で宣言 オブジェクトが担当する処理 ( メソッド ) を定義 import java.io.*; import java.lang.*; クラス名フィールドの宣言 public class Student { String address, name, tel; int studentnumber, english, math, language; メソッドの定義 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 23

static キーワード フィールドの変数に static というキーワードをつけて宣言することがある Ex1. static String schoolname; Ex2. static int classnumber; static なしのフィールド ( インスタンス変数 ) オブジェクトごとに値が異なるフィールドを表現するために利用 Ex. 1 人 1 人の生徒の住所や電話番号 試験の成績など static つきのフィールド ( クラス変数 ) どのオブジェクトも値が同じであるフィールドを表現するために利用 Ex. 学校の名前など Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 24

プログラムでしなければならないこと 1. クラスを定義する それぞれの もの について 内容を定義する どのような名前か? どのような情報 ( 属性 ) を持っているか? どのような操作 ( メソッド ) を持っているか? 2. オブジェクトを作る クラスに所属する個々のオブジェクトの情報の入れ物を作成 3. オブジェクトにデータを設定する 2. で作ったオブジェクトに 具体的なデータを設定 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 25

2. オブジェクトの作り方 new クラス名 () でオブジェクトを作成し変数に代入 この作成 代入処理は 1. のクラスとは別のクラスのメソッド内で行う public class StudentManage { public static void main(string[] args) { Student info;... info = new Student(); オブジェクトの作成と変数への代入 Student クラスの変数 ( オブジェクト名 ) を宣言 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 26

オブジェクトを作る とは? 具体的な情報が何も設定されていない 情報の入れ物を作る というイメージ オブジェクト作成 new Student() オブジェクト作成 出席番号 1 番の生徒 address: studentnumber: english: math: language: 出席番号 2 番の生徒 address: studentnumber: english: math: language: 具体的な値は何もなし Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 27

オブジェクト が複数ある場合 高校の生徒 : 何人も存在 StudentManage.java public class StudentManage { public static void main(string[] args) { Student info;... info = new Student(); これだと 1 人分の情報だけ オブジェクトを配列または ArrayList にする Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 28

複数のオブジェクトの扱い ~ 配列 ~(1) オブジェクト : プログラムでの表記は変数と同じ = これまでの int や String と同様に配列の宣言が可能 public class StudentManage { public static void main(string[] args) { Student[] info = new Student[30];... info[0] = new Student(); info[1] = new Student();... Student クラスのオブジェクトを 30 個分宣言 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 29

複数のオブジェクトの扱い ~ 配列 ~(2) これまでと同様 オブジェクト名 [ 添え字 ] = new クラス名 (); で作成 配列で扱う個々のオブジェクトの作成を忘れないこと public class StudentManage { public static void main(string[] args) { Student[] info = new Student[30];... info[0] = new Student(); info[1] = new Student();... オブジェクトを 1 つ 1 つ作成 (for 文や while 文でまとめて作成しても OK) Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 30

[ ] と ( ) の違いに注意! [ ]: 配列を表す Student info[ ] = new Student[30]; 変数 info を Student クラスの 30 個の要素を持つ配列として宣言 Student info = new Student( ); 変数 info を Student クラスの変数として宣言し オブジェクトを代入 new Student... と書いていても 意味が全く違うので注意! オブジェクトを配列にするときは 配列としての宣言と 各要素へのオブジェクトの代入が必要 Student[ ] info = new Student[30]; // info を 30 個の要素を持つ配列として宣言 info[0] = new Student( ); // info[0] にオブジェクトを代入 info[1] = new Student( ); // info[1] にオブジェクトを代入... Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 31

複数のオブジェクトの扱い ~ArrayList~(1) オブジェクト : ArrayList で扱うことも可能 public class StudentManage { public static void main(string[] args) { ArrayList<Student> studentlist = new ArrayList<Student>();... Student info = new Student(); studentlist.add(info);... Student クラスのオブジェクトを登録するための ArrayList の宣言 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 32

複数のオブジェクトの扱い ~ArrayList~(2) 1 つ 1 つオブジェクトを作成し ArrayList に登録 public class StudentManage { public static void main(string[] args) { ArrayList<Student> studentlist = new ArrayList<Student>();... Student info = new Student(); studentlist.add(info);... オブジェクトを 1 つ 1 つ作成 (for 文や while 文でまとめて作成しても OK) Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 33

プログラムでしなければならないこと 1. クラスを定義する それぞれの もの について 内容を定義する どのような名前か? どのような情報 ( 属性 ) を持っているか? どのような操作 ( メソッド ) を持っているか? 2. オブジェクトを作る クラスに所属する個々のオブジェクトの情報の入れ物を作成 3. オブジェクトにデータを設定する 2. で作ったオブジェクトに 具体的なデータを設定 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 34

オブジェクトの利用 ( 値の代入と参照 )(1) オブジェクトの作成後 フィールドに値を代入可能 オブジェクト名. フィールド名 で普通の変数と同様に扱う new として オブジェクトを作成したクラスのメソッド内で オブジェクト名. フィールド名 という変数を利用できる public class StudentManage { public static void main(string[] args) { Student info;... info = new Student(); info.address="1-6-1, Nishi-Waseda..."; info.studentnumber=1; info.english=80; フィールドに値を代入 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 35

オブジェクトの利用 ( 値の代入と参照 )(2) オブジェクト名. フィールド名 で フィールド名 として使えるのは 1. で定義したクラスのフィールドの変数 オブジェクト名. フィールド名 で オブジェクト の (.) フィールド名 という意味 Student.java public class Student { String address, name, tel; int studentnumber, english, math, language; StudentManage.java public class StudentManage { public static void main(string[] args) { Student info;... info = new Student(); info.address="1-6-1, Nishi-Waseda..."; info.studentnumber=1; info.english=80; Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 36

オブジェクトの配列化 ~ 代入 ~(1) オブジェクト名 [ 添え字 ]. フィールド名 で 通常の変数と同様に扱う public class StudentManage { public static void main(string[] args) {... info[0].address="1-6-1, Nishi-Waseda..."; info[0].studentnumber=1; info[0].english=80;... オブジェクトのフィールドに 1 つ 1 つ値を代入 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 37

オブジェクトの配列化 ~ 代入 ~(2) 配列の要素. フィールド名 で 個々のオブジェクトの情報を表現 出席番号 1 番の生徒 (info[0]) 住所 : info[0].address 出席番号 : info[0].studentnumber 英語の得点 : info[0].english 数学の得点 : info[0].math 国語の得点 : info[0].language 出席番号 2 番の生徒 (info[1]) 住所 : info[1].address 出席番号 : info[1].studentnumber 英語の得点 : info[1].english 数学の得点 : info[1].math 国語の得点 : info[1].language 処理クラスの中で変数として利用 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 38

オブジェクトの配列化 ~ 代入 ~(3) フィールドに値を入れることにより 各オブジェクトの固有のデータが設定 public class StudentManage { public static void main(string[] args) {... info[0].address="1-6-1, Nishi-Waseda..."; info[0].studentnumber=1; info[0].english=80;... info[1].address="1-104, Totsukacho..."; info[1].studentnumber=2; info[1].english=93; 出席番号 1 番の生徒 address: 1-6-1, Nishi-Waseda... studentnumber: 1 english: 80 math: language: 出席番号 2 番の生徒 address: 1-104, Totsukacho... studentnumber: 2 english: 93 math: language: Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 39

オブジェクトの配列化 ~ 利用 ~ オブジェクトを配列にしたときも 添え字の考え方はこれまでと全く同じ 添え字は0から数え始める 0~[ 宣言した数 -1] の番号の添え字を利用できる..., -3, -2, -1 や [ 宣言した数 ], [ 宣言した数 +1], [ 宣言した数 +2],... は使えない 高校の生徒などの場合 添え字と出席番号を対応させると扱いやすい Ex. 出席番号 1 番の生徒は添え字 0, 出席番号 2 番の生徒は添え字 1,... Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 40

クラスと配列のオブジェクトのイメージ クラス作成 ~ フィールドへの値の代入は 個人情報の入力シートの作成をして シートに入力するまでの流れのイメージ クラス作成 : 個人情報の入力シートの作成 オブジェクトの変数 ( 配列 ) 宣言 : コピー機に用紙をセット オブジェクトの作成 ( 配列 ): コピー機で個人情報の入力シートをコピー フィールドに値を代入 : 1 人 1 人がシートに記入 クラス作成 ( 入力シート作成 ) 用紙をセット 入力シートをコピー 入力シートに記入 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 41

オブジェクトの ArrayList 化 ~ 代入 ~ オブジェクトのフィールドに値を設定後 ArrayList に登録 ArrayList に登録後 フィールドに値を設定するのはややこしいので注意! public class StudentManage { public static void main(string[] args) {... info.address="1-6-1, Nishi-Waseda..."; info.studentnumber=1; info.english=80; studentlist.add(info);... オブジェクトのフィールドに 1 つ 1 つ値を代入し ArrayList に登録 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 42

オブジェクトの ArrayList 化 ~ 利用 ~ get や size などのメソッドはこれまでと同様に利用可能 ArrayList ならではの for 文の書き方も利用可能 int i; Student st; for (i = 0; i < studentlist.size(); i = i + 1) { st = studentlist.get(i); 処理内容 ( st.studentnumber の形の変数も利用可能 ) 同じ処理 for (Student st: studentlist) { 処理内容 ( st.studentnumber の形の変数も利用可能 ) Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 43

NullPointerException オブジェクト指向プログラミングでよく見る例外 オブジェクトを作成せずに オブジェクトのフィールドを使おうとしているときの例外 コピー前の用紙 ( 白紙 ) の入力欄を使おうとしているイメージ public class StudentManage { public static void main(string[] args) { Student[] info = new Student[30]; info[0].address="2-6-1, Suginamiku..."; info[0].studentnumber=1; info[0].english=80;... info[0] = new Student(); が必要 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 44

コンパイルと実行 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 60

コンパイルと実行のしかた コンパイル javac の後に ファイル名をスペースでつなげて複数のファイルをコンパイル % javac StudentManage.java Student.java または * でそのフォルダに保存されているJavaファイルすべてをコンパイル 実行 プログラムに関係ないJavaファイルもコンパイルされる 関係ないJavaファイルにコンパイルエラーがあれば コンパイルが完了しないので注意 % javac *.java java の後に public static void main が書かれているファイル名 ( 拡張子なし ) を書く % java StudentManage Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 61