GEC-Java

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

GEC-Java

GEC-Java

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

Javaプログラムの実行手順

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

PowerPoint プレゼンテーション

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

Prog1_6th

Microsoft PowerPoint ppt

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - chap10_OOP.ppt

JavaプログラミングⅠ

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

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

Prog1_10th

Microsoft PowerPoint - prog04.ppt

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

Javaの作成の前に

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

プログラミング入門1

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

GEC-Java

GEC-Java

JavaプログラミングⅠ

プログラミング入門1

JavaプログラミングⅠ

PowerPoint プレゼンテーション

プログラミング入門1

情報処理Ⅰ

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

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

ガイダンス

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

Microsoft PowerPoint - ruby_instruction.ppt

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

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

メソッドのまとめ

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

ガイダンス

Microsoft PowerPoint - prog09.ppt

Microsoft PowerPoint - prog09.ppt

プログラミング入門1

ガイダンス

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

デジタル表現論・第4回

JavaプログラミングⅠ

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

基本情報STEP UP演習Java対策

ガイダンス

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

JavaプログラミングⅠ

プログラミング入門1

K227 Java 2

DVIOUT-exer

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

JavaプログラミングⅠ

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

Prog2_12th

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

JAVA入門

スライド 1

Program Design (プログラム設計)

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

PowerPoint プレゼンテーション

IT プロジェクト

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

Prog1_15th

JavaプログラミングⅠ

PowerPoint プレゼンテーション

Prog2_9th

演算増幅器

Java言語 第1回

JavaプログラミングⅠ

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

プログラミングA

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

Prog1_2nd

デジタル表現論・第6回

JavaプログラミングⅠ

Prog2_9th

Microsoft PowerPoint - prog08.ppt

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

文字列操作と正規表現

Java講座

Microsoft PowerPoint - lec06 [互換モード]

Make the Future Java FY13 PPT Template

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

Microsoft Word - no13.docx


Microsoft Word - problem3.doc

メソッドのまとめ

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

Slide 1

2

12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある インターネットアドレス

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

PowerPoint プレゼンテーション

PowerPoint Presentation

Transcription:

プログラミング初級 (Java) 第 12 回メッセージのやりとり 白銀純子 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 1

第 12 回の内容 メッセージのやりとり Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 2

メソッドの作り方 使い方 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 35

メソッド プログラム中で行われる処理の手順をまとめたもの 複数の処理をまとめて 1つの名前を付けたもの オブジェクトがプログラム内で担当する処理をまとめたもの メソッド名 引数 戻り値 ( 返り値 ) という構成 メソッド名 : メソッドの名前 引数 : メソッドに渡す情報 ( 計算等の処理の材料にするデータ ) 処理の材料にするデータのみ 引数として定義 戻り値 ( 返り値 ): メソッドの内容を実行したときの処理結果 多くの場合 戻り値を変数に代入して利用する 変数名 = メソッド で 変数に戻り値が代入される Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 36

メソッドのイメージ 引数 引数 メソッドに対して与えるデータ 引数 メソッド ごにょごにょ... メソッドの処理結果 戻り値 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 37

メソッド ( 例 )(1) Integer.parseInt(str) メソッド名 : Integer.parseInt 引数 : str(string 型 ) 戻り値 : str をint 型に変換したデータ 戻り値をint 型の変数に代入して利用する num = Integer.parseInt(str) で 変数 num に 文字列をint 型のデータに変換したものが代入される String 型のデータ Integer.parseInt ごにょごにょ... 与えられた引数を int 型に変換した結果 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 38

メソッド ( 例 )(2) str.substring(m, n) メソッド名 : substring 引数 : m(int 型 ) と n(int 型 ) 戻り値 : str のm 番目からn 番目までの文字で作った部分文字列 戻り値をString 型の変数に代入して利用する substr = str.substring(m, n) で 変数 substr に strの部分文字列が代入される 部分文字列のインデックス (from) 部分文字列のインデックス (to) substring ごにょごにょ... from と to のインデックスから作られた部分文字列 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 39

メソッドを作る ( メソッドの定義 )(1) 今回定義するのは ごにょごにょ... の部分 メソッドを作るときのお約束 static キーワードは メソッドの目的によってつけない場合とつける場合あり public static 戻り値のデータ型メソッド名 ( 引数 ) { メソッドでの処理内容 return 処理結果 ; Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 40

アクセス修飾子 Java は 様々なクラスを連携させて動作するもの アクセス修飾子 : クラス同士を連携させたときに 他のクラスから利用できるか否かを示すもの public: 他のクラスから利用可能 今回は 他のクラスから利用するので とりあえず public で OK protected: 限られた範囲で 他のクラスから利用可能 private: 他のクラスからは利用不可 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 41

static のあるなし (1) static がついているメソッド ( クラスメソッド ) クラス名. メソッド の形式で呼び出し可能 ( オブジェクト名. メソッド の形式でも可能 ) static つきのメソッド内部で 同じクラスで定義されているメソッドを呼び出すときは そのメソッドにも static が必要 main メソッドから呼び出すときは static がついている必要 メソッドを定義しているクラスのインスタンス変数を利用することは不可能 ( クラス変数は利用可能 ) オブジェクトによって処理結果の変わらないメソッドは static をつけて良い ( つけないメソッドにしても良い ) Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 42

static のあるなし (2) static がついていないメソッド ( インスタンスメソッド ) 必ず オブジェクト名. メソッド の形式で呼び出し ( クラス名. メソッド の形式では呼び出し不可能 ) static なしのメソッド内部で 同じクラスで定義されているメソッドを呼び出すときは そのメソッドは static はついていても ついていなくても良い static なしのメソッド内部で 同じクラスで定義されているフィールドは インスタンス変数 クラス変数とも利用可能 オブジェクトによって処理結果の変わるメソッド ( 同じクラスで定義されている static なしのフィールドを処理に使うなど ) は 必ず static なし Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 43

メソッドの定義 クラスに関連づけるメソッドとオブジェクトに関連づけるメソッドの 2 種類 クラスに関連づけるメソッドの定義のテンプレート public static 戻り値のデータ型メソッド名 ( 引数 ) { メソッドでの処理内容 return 処理結果 ; オブジェクトに関連づけるメソッドの定義のテンプレート public 戻り値のデータ型メソッド名 ( 引数 ) { メソッドでの処理内容 return 処理結果 ; 違い : static キーワードがついているかいないか Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 44

メソッドを作る ( メソッドの定義 )(2) 今回定義するのは ごにょごにょ... の部分 戻り値は 1 つだけ public static 戻り値のデータ型メソッド名 ( 引数 ) { メソッドでの処理内容 return 処理結果 ; Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 45

メソッドを作る ( メソッドの定義 )(3) メソッドの名前 ( 名前の付け方は クラス名や変数名と同じ ) public static 戻り値のデータ型メソッド名 ( 引数 ) { メソッドでの処理内容 return 処理結果 ; Java の命名規則としては... 先頭の単語は動詞にする 複数の単語を連結するときは 先頭の単語はすべて小文字 2 つ目以降の単語は先頭の文字のみ大文字 あとは小文字 変数と同じ Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 46

メソッドを作る ( メソッドの定義 )(4) 引数のデータ型引数の変数名 と書く 引数はいくつあっても良い (, で区切る) データ型はそれぞれ異なってもかまわない public static 戻り値のデータ型メソッド名 ( 引数 ) { メソッドでの処理内容 return 処理結果 ; Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 47

引数の定義の注意 引数の定義は 一見変数宣言のよう 実際 メソッド内で使う変数の宣言とも言える but 通常の変数宣言とは違う! 必ず データ型変数名 のセットで書かなければならない public int sum(int num1, int num2, int num3) { int result; result = num1 + num2 + num3; return result; public int sum(int num1, num2, num3) { int result; result = num1 + num2 + num3; return result; Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 48

メソッドを作る ( メソッドの定義 )(5) 処理内容は何を書いても良い (if, for, while,...) public static 戻り値のデータ型メソッド名 ( 引数 ) { メソッドでの処理内容 return 処理結果 ; 処理内容 の部分では 引数 で定義した変数を変数として利用できる public int sum(int num1, int num2) { int result; result = num1 + num2; return result; Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 49

メソッドを作る ( メソッドの定義 )(6) 処理結果 を出すという意味 ( 変数名 = メソッド名 ( 引数 ) と書くと 変数名 の中に処理結果が代入される ) この文でメソッドの内容が終わる ( この後には文を書かないこと ) 処理結果のデータ型と戻り値のデータ型は同じもの public static 戻り値のデータ型メソッド名 ( 引数 ) { メソッドでの処理内容 return 処理結果 ; Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 50

return 文 戻り値のデータ型と return 文で返すデータ型は同じでなくてはならない public int sum(int num1, int num2) { int result; result = num1 + num2; return result; データ型が同じ public String sum(int num1, int num2) { int result; result = num1 + num2; return result; 違うデータ型 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 51

メソッドの作成例 処理結果を double 型で出す 引数の定義 引数に与えられた3つの数の平均を求めるメソッド public double average( int num1, int num2, int num3 ) { double result; result = (double) (num1 + num2 + num3) / 3; return result; 処理内容 return で 結果を出す という意味 ( return の後に書く処理結果のデータ型は 戻り値のデータ型と同じにすること ) Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 52

メソッドを作る場所 フィールドの変数宣言の下に作る 上に作っても良い 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. 53

メソッドの作成例 public class Sample { String name, address; int english, math, language; public double average(int num1, int num2, int num3) { double result; result = (double) (num1 + num2 + num3) / 3; return result; Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 54

メッセージのやり取り Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 55

メッセージ メッセージ = あるクラスで定義されたメソッドを呼び出すこと オブジェクト名. メソッド ( または クラス名. メソッド ) の形式で呼び出し ただし メソッドを定義している同じクラス内で呼び出すときは オブジェクト名やクラス名は省略 Ex1. str.substring(m, n) String クラスに定義されている substring というメソッドを呼び出し (str は String クラスのオブジェクト = String 型の変数 ) Ex2. Integer.parseInt(str) Integer クラスに定義されている parseint というメソッドを呼び出し (str は String クラスのオブジェクト = String 型の変数 ) Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 56

メッセージのやり取りをするには 1. 各クラスでメソッドを定義する 2. オブジェクト同士でメソッドを呼び出しあう Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 57

オブジェクト同士でのメソッドの呼び出し あるクラス ( 名前 : ClassA) で定義されているメソッドを... 別のクラスから呼び出す場合 メソッドがインスタンスメソッドの場合 : ClassA のオブジェクト名. メソッド メソッドがクラスメソッドの場合 : ClassA. メソッド 同じクラス (ClassA) から呼び出す場合 : オブジェクト名. や クラス名. は不要 メソッド名 + 引数のみで OK Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 58

メソッドの定義とメッセージでの処理の流れ ( 例 )(1) ProductManages.java // 割引率と税率を設定して 商品の金額計算 public class ProductManage { public static void main(string[] args) { int amount; Product pro = new Product(); // 割引率 : 0.2 (2 割引 ) amount = pro.calcamount(0.2, 0.08); Product.java // 商品の値段管理 public class Product { int price; メソッドの定義 // 商品の金額計算 (discount: 割引率, tax: 税率 ) public int calcamount(double discount, double tax) { double doubleamount; int intamount; doubleamount = (double) price * (1 - discount) * (1 + tax); intamount = (int) doubleamount; return intamount; Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 59

メソッドの定義とメッセージでの処理の流れ ( 例 )(2) ProductManages.java // 割引率と税率を設定して 商品の金額計算 public class ProductManage { public static void main(string[] args) { int amount; Product pro = new Product(); // 割引率 : 0.2 (2 割引 ) amount = pro.calcamount(0.2, 0.08); Product.java // 商品の値段管理 public class Product { int price; calcamountというメソッドを呼び出す 引数には具体的な値または変数を書く ( 引数の順番は メソッドを作ったときの順番と同じに ) // 商品の金額計算 (discount: 割引率, tax: 税率 ) public int calcamount(double discount, double tax) { double doubleamount; int intamount; doubleamount = (double) price * (1 - discount) * (1 + tax); intamount = (int) doubleamount; return intamount; Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 60

メソッドの定義とメッセージでの処理の流れ ( 例 )(3) ProductManages.java // 割引率と税率を設定して 商品の金額計算 public class ProductManage { public static void main(string[] args) { int amount; Product pro = new Product(); // 割引率 : 0.2 (2 割引 ) amount = pro.calcamount(0.2, 0.08); Product.java // 商品の値段管理 public class Product { int price; // 商品の金額計算 (discount: 割引率, tax: 税率 ) public int calcamount(double discount, double tax) { double doubleamount; int intamount; doubleamount = (double) price * (1 - discount) * (1 + tax); intamount = (int) doubleamount; return intamount; 処理の流れ 1. mainメソッドで calcamountメソッドの引数に0.2と0.08を指定する 2. 0.2と0.08というデータがcalcAmountメソッドの引数の変数 discount と tax にそれぞれ代入される 3. calcamountメソッド内で引数の値を使って計算され 変数 intamountに結果が代入される 4. calcamountメソッドの変数 intamountの値がmainメソッドの変数 amountに代入される Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 61

メソッドの呼び出し ( 例 )(1) public class Student { String address, name, tel; int studentnumber, english, math, language; static String schoolname = " 早稲田高校 "; public class StudentManage { public static void main(string[] args) { Student[] info = new Student[50]; String scname; public void setenglish(int score) { english = score; public static String getschoolname() { return schoolname;... 略... info[0] = new Student(); info[0].setenglish(80); scname = Student.getSchoolName();... 略... クラス変数は 宣言と同時に値を代入して OK Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 62

メソッドの呼び出し ( 例 )(2) インスタンスメソッドの定義 public class Student { String address, name, tel; int studentnumber, english, math, language; static String schoolname = " 早稲田高校 "; public class StudentManage { public static void main(string[] args) { Student[] info = new Student[50]; String scname; public void setenglish(int score) { english = score; public static String getschoolname() { return schoolname;... 略... info[0] = new Student(); info[0].setenglish(80); scname = Student.getSchoolName();... 略... インスタンスメソッドの呼び出し Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 63

メソッドの呼び出し ( 例 )(3) クラスメソッドの定義 public class Student { String address, name, tel; int studentnumber, english, math, language; static String schoolname = " 早稲田高校 "; public class StudentManage { public static void main(string[] args) { Student[] info = new Student[50]; String scname; public void setenglish(int score) { english = score; public static String getschoolname() { return schoolname;... 略... info[0] = new Student(); info[0].setenglish(80); scname = Student.getSchoolName();... 略... クラスメソッドの呼び出し Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 64

クラスの役割分担 (1) データ定義のクラスは ある 1 人の人またはある 1 つのものが どういうデータを持ち プログラム内でどのような役割を担当するか を表すもの どのクラスにどういうメソッドを定義するか? は クラスの役割を考える必要 Ex. 学内英語力コンテストに A 組代表として参加する人を選ぶため 英語の得点 85 点以上の生徒を出力したい public class StudentManage { public static void main(string[] args) { Student st = new Student(); st.searchover85(); 1 人の生徒 ( 例えば早稲田太郎さん ) が A 組の人全員の英語の得点を調べる処理 早稲田太郎さんは A 組の人全員の得点を知っている 普通はありえない! public class Student { String name; int english[]; public void searchover85() { int i; for(i = 0; i < 30; i = i + 1) { if (english[i] >= 85) { System.out.println(name + " さん : " + english[i] + " 点 "); Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 65

クラスの役割分担 処理のクラスは データ定義のクラスのあらゆるオブジェクトに対する様々な処理をするクラス Ex. 学内英語力コンテストに A 組代表として参加する人を選ぶため 英語の得点 85 点以上の生徒を出力したい public class StudentManage { public static void main(string[] args) { Student st[] = new Student[30];... 略... int i; for(i = 0; i < 30; i = i + 1) { if (sti[i].english >= 85) { System.out.println(st[i].name + " さん : " + st[i].english + " 点 "); public class Student { String name; int english; データ定義のクラス 処理クラスが どの処理を担当するのが自然か? を考えよう! 処理クラスは 先生や成績管理システムのイメージ Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 66

メソッド ~ 引数の扱い ~ Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 67

引数が配列の場合 ( メソッドの定義 ) 引数の定義の部分を 引数のデータ型 [] 引数の変数名 または 引数のデータ型引数の変数名 [] のように書く public int add(int[] num) {... return result; または public int add(int num[]) {... return result; Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 68

引数が配列の場合 ( メソッドの使用 ) 引数の定義の部分に配列変数をそのまま入れる public class Calculate { public int add(int[] num) {... return result; public void main(string[] args) { int[] number = new int[100]; int sum; sum = add(number); 添え字なども必要なく 配列変数の名前のみ Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 69

引数がない場合 引数の定義の部分に何も書かず メソッドの利用時の引数も何も書かない public class Calculate { public int add() {... return result; public void main(string[] args) { int sum; sum = add(); Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 70

戻り値が配列の場合 戻り値の定義の部分を 戻り値のデータ型 [] のように書く public class Calculate { public int[] add(int n) { int[] result = new int[100];... return result; public void main(string[] args) { int[] sum; int num; sum = add(num); Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 71

戻り値がない場合 戻り値の定義の部分を void と書く メソッドの最後の return 文も不要 public class Calculate { public void add(int n) {... public void main(string[] args) { int num; add(num); Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 72

メソッド ~ 変数の有効領域 ~ Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 73

変数の扱い (1) 変数は どこで宣言したかによって使える場所が違う 宣言したブロック内でしか使えない public class Sample { { に対応する までの領域 ( メソッドに限らず if 文や for 文の { でも同じ ) public int calculate(int num) { public String getname() { ブロック Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 74

変数の扱い (2) public class Sample { public static void main(string[] args) { int result; (1) String str; int num; if (num > 0) { int result; String str; (2) ブロック A ブロック B 広いブロックの変数は そのブロックに含まれる狭いブロックでも使える (1) の変数 ( ブロックAの変数 ) はブロックBでも使えるので (2) の変数宣言はコンパイルエラー Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 75

変数の扱い (3) public class Sample { public int calculate(int num) { int result; String str; public String getname() { 変数は 宣言したブロック内でしか使えない result, str は public String getname() { の中では使えない Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 76

変数の扱い (4) public class Sample { public int calculate(int num) { int result; String str; public String getname() { int result; String str; (1) (2) 変数は 宣言したブロック内でしか使えない (1) の変数と (2) の変数は違う変数として扱われる Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 77

コンストラクタ Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 78

特殊なメソッド ~ コンストラクタ ~(1) コンストラクタ : オブジェクトを作成すると同時に実行される特殊なメソッド 通常のメソッドとの違い 名前が必ずクラス名と同じ 戻り値のデータ型の定義なし 戻り値を返すためのreturn 文はなし static キーワードをつけることは不可 通常のメソッドと同じもの 引数を定義 ( なくても良い ) 処理内容の記述方法は同じ Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 79

特殊なメソッド ~ コンストラクタ ~(2) 定義方法 : public クラス名 ( 引数のリスト ) {... 引数のリストはなくてもよい { から の間に オブジェクトを作成すると同時に実行される処理内容を記述する オブジェクトを作成するとき new クラス名 () ; とするのは コンストラクタを呼び出している ということ コンストラクタでよく処理するもの フィールドの値の設定 GUI を扱うクラスの場合 GUI のウィンドウの作成処理 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 80

コンストラクタの例 クラスの定義 public class Student { String number, circle; int score; public Student(String n, int s, String c) { number = n; score = s; circle = c; オブジェクト作成例 Student member; member = new Student("1X17Y1001", 80, " オーケストラ "); Student member; member = new Student(); member.number = "1X17Y1001"; member.score = 80; member.circle = " オーケストラ " コンストラクタ 同じ意味 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 81

第 3 回課題 Course N@vi でアクセス可能 授業終了が近いので早めに... Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 84

次回 3 限 : 通常授業 出席課題は 第 3 回課題の作成 4 限 : 第 3 回課題の質問受け付け 出席課題なし Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 85