Javaプログラミング.

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
コンパイラ 2011年10月17日
プログラミング言語としてのR 情報知能学科 白井 英俊.
プログラミング基礎I(再) 山元進.
アルゴリズムとデータ構造1 2007年6月12日
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
地理情報システム論 第3回 コンピュータシステムおける データ表現(1)
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
オブジェクト指向プログラミング(2) OOPの三大要素 「クラス」「ポリモーフィズム」「継承」
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
アルゴリズムとデータ構造 2011年6月13日
アルゴリズムとプログラミング (Algorithms and Programming)
プログラムはなぜ動くのか.
コンパイラ 2012年10月15日
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
ソフトウェア工学 知能情報学部 新田直也.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング言語入門 手続き型言語としてのJava
アルゴリズムとプログラミング (Algorithms and Programming)
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
第7回独習Javaゼミ セクション 1~4 発表者 直江 宗紀.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
プログラミング言語入門.
アルゴリズムとプログラミング (Algorithms and Programming)
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
もっと詳しくArrayクラスについて調べるには → キーワード検索
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
コンパイラ 2011年10月20日
C言語 はじめに 2016年 吉田研究室.
アルゴリズムとプログラミング (Algorithms and Programming)
地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
C#プログラミング実習 第3回.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
アルゴリズムとデータ構造 2012年6月11日
アルゴリズムとプログラミング (Algorithms and Programming)
アルゴリズムとデータ構造1 2009年6月15日
第5回 プログラミングⅡ 第5回
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
情報処理Ⅱ 第7回 2004年11月16日(火).
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
情報処理Ⅱ 2005年10月28日(金).
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
コンパイラ 2012年10月11日
アルゴリズムとデータ構造 2010年6月17日
ソフトウェア工学 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
情報処理Ⅱ 第2回 2004年10月12日(火).
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
情報処理Ⅱ 2005年11月25日(金).
情報処理Ⅱ 小テスト 2005年2月1日(火).
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
Presentation transcript:

Javaプログラミング

第1章 Javaの概要 1995年 SunMicrosystems社が開発 家電製品用組み込み言語として開発。 第1章 Javaの概要 1995年 SunMicrosystems社が開発 家電製品用組み込み言語として開発。 インターネット用アプリケーションの開発に適したオブジェクト指向のプログラム言語。 OSの実行環境に関係なく動作可能。 不特定多数の機器で動く。

1-1 Javaプログラム コンピュータは命令をCPUが解釈して実行。 CPUが理解できるプログラムは機械語(マシン語) 1-1 Javaプログラム コンピュータは命令をCPUが解釈して実行。 CPUが理解できるプログラムは機械語(マシン語) プログラム言語を機械語に翻訳することをコンパイルと呼びます。 Javaプログラムの種類 プログラムの種類 説明 アプリケーション 単体で動作するプログラム。 アプレット サーバからダウンロードし、ブラウザ上で動作するプログラム。 サーブレット サーバで動作し、実行結果だけをクライアントのブラウザに渡すプログラム。 JSP(Java Server Pages) HTML上にJavaプログラムを記述し、サーバで実行。

Javaプログラムの種類 アプリケーション プログラム 実行 アプレット ダウンロード プログラム サーバ 実行

サーブレット プログラム 実行結果 実行

Javaアプリケーションの作成・実行 ソースコードの作成 (テキストエディタ) ②ソースコードのコンパイル (コンパイラ) ③バイトコードの実行 (Javaインタプリタ)

1-2 JavaコンパイラとJavaインタプリタ 1-2 JavaコンパイラとJavaインタプリタ ①Javaコンパイラ 作成したプログラムから機械語を生成する。 文法を厳しくチェック。 ②Javaインタプリタ バイトコードを1行ずつ解釈、実行するソフトウェア。

ソースコード(Sample.java) Javaコンパイラ(javac) バイトコード(Sample.class)  class Samle { Public static void main(Stirng args[]) { int x=10, y=20, z=30 System.out.printle(x+y+z); } Javaコンパイラ(javac) バイトコード(Sample.class) CA FE 00 3E AB ・・・・・・・・・・・・・・・・・・・・・・・・・・ Javaインタプリタ(=JVM) バイトコードを1行ずつ実行

1-3 Javaの実行環境 通常のプログラム →OSに対応したプログラムを作成 Java →Java仮想マシン(JVM:Java Virtual Machine)という環境を準備し、OSに依存しない実行環境を提供。(JVMは各OS専用に作られている。)

JVM プログラム Macintosh PC プログラム WINDOWS PC プログラム 通常のプログラムとJavaプログラム ①通常のプログラム プログラム Macintosh PC プログラム WINDOWS PC Macintosh用にプログラムを書き換える必要がある。 ②Javaプログラム プログラム JVMがOSの違いを吸収し、異なるOSでも実行可能。 JVM WINDOWS PC Macintosh PC

1-4 Javaの開発環境 開発ツール (JVM、コンパイラ、など) クラスライブラリ

1-5 その他のJavaの特徴 クラスベースのオブジェクト指向言語 強力な型チェック機能 マルチスレッド環境に対応 セキュリティ機能の強化 1-5 その他のJavaの特徴 クラスベースのオブジェクト指向言語 強力な型チェック機能 マルチスレッド環境に対応 セキュリティ機能の強化 多言語の組み込みが可能 メモリ管理の実行

第2章 Javaの言語仕様 Javaの構成はクラスと呼ばれる機能のかたまり。 Javaプログラミングはクラスを作成すること。 第2章 Javaの言語仕様 Javaの構成はクラスと呼ばれる機能のかたまり。 Javaプログラミングはクラスを作成すること。 クラスには処理(メソッド)とデータ(フィールド)が含まれる。

2-1 Javaの文法 コメント (1)プログラムの構成(MyClass.java) フィールドの定義 クラスの定義 /* MyClass 2-1 Javaの文法 (1)プログラムの構成(MyClass.java) /* MyClass クラスの定義の例 */ public class MyClass{ static String message; public static void main(String(String[] args){ //フィールドに文字列を挿入する message = “Hello!”; System.out.println(messge); } コメント クラスの定義 フィールドの定義 メソッドの定義

①コメント プログラム中に記述する注釈 ②クラス 一つの結果を求める処理の集まり フィールド、メソッド、コンストラクタ ③フィールド 整数や文字などのデータを格納するデータ項目 ④メソッド プログラムで実行される一連の振舞い ⑤メソッドの呼び出し メソッドを呼び出す

(3)変数と定数 ①変数・・・何らかの値を格納するための入れ物 変数の宣言 例 int number ; →変数numberの準備。 String message →文字列変数messageの準備。 値の代入 例 number=10 →変数numberに10を格納。 message=“Hello”: →変数messageに”Hello”を格納。 宣言と同時に値を代入する方法 例 int number =10; →変数numberを準備し10を格納。 char moji =‘a’; →1文字を格納する変数mojiを準備 ‘a’を格納。

(3)変数と定数 ②定数・・・格納されている値が変更されない変数 定数の宣言方法 例 final int week =7 ; →7という値を表す定数weekの準備 定数であることを示すキーワード

(4)プログラムの表記 ①名前(識別名)   変数名、メソッド名、クラス名、インタフェース名、ラベル名 ネーミングのルール 1文字目は英字、$、_以外の文字は使用できない。 2文字目以降には数字も使用できる。 名前の長さに制限はない。 大文字と小文字の区別がある。 予約語 Javaで予約されているキーワードは変数名、クラス名などに使用できない。

2-2 データ型 型はデータの種類を表すキーワード 基本データ型と参照データ型があります。

(1)基本データ型 Javaがあらかじめ定義した型のこと。 扱う値の大きさなどにより、様々な型がある。 (2)参照データ型 データをオブジェクトとして扱う型。 文字列型、配置型、クラス型。 既存で用意されているクラス、ユーザが定義したクラス を変数として扱える。 (3)文字列型 Stringクラスで扱う。 java.langパッケージで定義される。

(4)基本データ型と参照データ型の違い アドレスと領域の確保のされ方が違う。 基本データ型・・・固定長で変数名に対応したアドレスの 位置から実データが格納される。 参照データ型・・・固定長ではないため、文字列や配列の 値が格納されている領域の先頭アドレ スを格納。

αα Xに対応した アドレス 基本データ型 参照データ型 Int X = 18; String aa = “ABCD”; 内容 アドレス X 00000000 内容 アドレス X 00010010 αα ‘C’ 内容 アドレス aa ‘A’ ‘B’ ‘D’ Xに対応した アドレス 32ビット (固定長) Aaに対応した アドレス 文字列の先頭 アドレスが格納

(5)基本データ型の型変換 右辺のデータ型が左辺の型よりも変数の扱う数の範囲 が大きい場合。キャスト演算子を用いる。 ①明示的な型変換 左辺のデータ型<右辺のデータ型 例 double型のyをintの記述でキャストを行う。 a=(int)y;

(6)リテラル    変数に格納される値、数字や文字など、見れば解る   データのこと。    リテラルはデータ型によって記述方法が決まる。 整数リテラル (10進数 8進数 16進数 long型)  浮動小数点数リテラル (通常の実数 double型) 真偽リテラル (真 偽) 文字リテラル (1文字 エスケープシーケンス ) 文字列リテラル 

(7)演算子 ①算術演算子 加減乗除などを行う演算子。 (7)演算子 ①算術演算子 加減乗除などを行う演算子。 種類 記号 記述例 備考 加算 + a=b+c; 減算 - a=b-c; 乗算 * a=b * c; 除算 / a=b/c; 剰余算 % a=b%c 結果の代入先と被演算数が等しい場合、簡略化できる。 種類 記号 簡略化する前の記述 簡略化した記述 加算 += a=a+b; a+=b; 減算 -= a=a-b; a-=b; 乗算 *= a=a*b; a*=b; 除算 /= a=a/b; a/=b; 剰余算 %= a=a%b; a%=b;

++ -- (7)演算子 ②インクリメント演算子 インクリメント演算子・・・+1の計算 デクリメント演算子・・・・-1の計算 インクリメント 種類 記号 配置法 記述例 備考 インクリメント ++ 後置型 a++ 変数を用いた処理の実行後、変数+1を行う。 前置型 ++a 変数+1の計算後、変数を用いた処理を行う。 デクリメント -- a-- 変数を用いた処理の実行後、変数-1を行う。 --a 変数-1の計算後、変数を用いた処理を行う。        

*後置型と前置型の計算順序 後置型 b=5; a=b++; → bをaに代入した後、bに+1をする。 計算結果(a=5 ,b=6) (7)演算子   ②インクリメント演算子     インクリメント演算子・・・+1の計算     デクリメント演算子・・・・-1の計算 *後置型と前置型の計算順序   後置型 b=5;         a=b++;   → bをaに代入した後、bに+1をする。   計算結果(a=5 ,b=6)        

*後置型と前置型の計算順序 前置型 b=5; a=++b; → bに+1をした後、bをaに代入する。 計算結果(a=6 ,b=6) (7)演算子   ②インクリメント演算子     インクリメント演算子・・・+1の計算     デクリメント演算子・・・・-1の計算 *後置型と前置型の計算順序   前置型 b=5;         a=++b;   → bに+1をした後、bをaに代入する。   計算結果(a=6 ,b=6)        

== != < <= > >= (7)演算子 ③比較演算子 大小関係などを調べる演算子。 等しい a==b 等しくない a!=b より小さい 種類 記号 記述例 備考 等しい == a==b 両辺の値が等しいときtrueを返す。 等しくない != a!=b 両辺の値が等しくないときtrueを返す。 より小さい < a<b 左辺が右辺より小さいときtrueを返す。 以下 <= a<=b 左辺が右辺より小さいか、両辺が等しいときtrueを返す。 より大きい > a>b 左辺が右辺より大きいときtrueを返す。 以上 >= a>=b 左辺が右辺より大きいか、両辺が等しいときtrueを返す。        

&& || ! (7)演算子 ④比較演算子 複数の条件を結び、true、falseを返す。 論理積 a && b 論理和 a||b 論理否定 種類 記号 記述例 備考 論理積 && a && b aかつbのどちらもtrueの場合にtrueを返す。 論理和 || a||b aまたはbの両方、もしくは一方がtrueの場合にtrueを返す。 論理否定 ! !a aがtrueの場合falseを、falseの場合、trueを返す。        

(7)演算子 ⑤ビット演算子 計算に用いるデータを0と1の並びと考え、同じ位置の ビットを対象に行ったり、データ全体を左または右方向に シフトする演算子。 種類 記号 記述例 備考 AND演算 & a & b 同位置のビットが共に1の場合、結果を1にする。 OR演算 | a|b 同位置のビットが共に1もしくはいずれか1の場合、結果を1にする。 XOR演算 ^ a^b 同位置のビットが異なる値の場合、結果を1にする。 NOT演算 ~ ~a ビットが1の場合は0、0の場合は1にする。 左シフト << a<<2 右辺の値だけビット列全体を左にずらす。(空いたところには0を格納)        

2-3 配列 (1)配列の宣言 配列・・・同形式のデータを複数集め、一括 して扱うための参照データ型。 Javaでは、配列型変数の宣言、 配列の生成という手順を踏む。

2-3 配列 (1)配列の宣言 配列の宣言方法 データ型[] 配列名; データ型 配列名[]; 配列の生成方法 2-3 配列 (1)配列の宣言 配列の宣言方法 データ型[] 配列名; データ型 配列名[]; 配列名として利用可能な入れ物の準備。 (現時点では、配列の領域は確保されない。 配列の生成方法 配列名 = new データ型[要素数]; 要素数分の配列領域の確保 *この2つの段階を経て配列の宣言と、生成が行われる。

2-3 配列 a [0] [1] [2] [3] [4] (1)配列の宣言 記述例 int[] a; a = new int[5]; 2-3 配列 (1)配列の宣言 記述例  int[] a;  a = new int[5]; 要素数5の配列aの準備 a [0] [1] [2] [3] [4]

2-3 配列 int a[] = new int[5]; (1)配列の宣言 記述例 int[] a = new int[5]; 2-3 配列 (1)配列の宣言 2段階の操作をまとめる場合。 データ型[] 配列名= new データ型[要素数]; データ型 配列名[]= new データ型[要素数]; 記述例    int[] a = new int[5];   int a[] = new int[5];

2-3 配列 3 6 9 12 15 a [0] [1] [2] [3] [4] (1)配列の宣言 記述例 2-3 配列 (1)配列の宣言 領域の確保と同時に値の代入を行うこともできる。 データ型[] 配列名={代入値1,代入値2,…}; データ型 配列名[]={代入値1,代入値2,…}; 記述例    int[] a = {3,6,9,12,15}; 3 6 9 12 15 a [0] [1] [2] [3] [4]

2-3 配列 (1)配列の宣言 配列の特徴 配列の要素番号は0から始まる。 配列の要素数は「配列名.length」で求められる。 実行結果 2-3 配列 (1)配列の宣言 配列の特徴 配列の要素番号は0から始まる。 配列の要素数は「配列名.length」で求められる。 記述例    int[] a = new int[5];   System.out.println(”配列aの要素数は”+a.length); 実行結果     配列aの要素数は5

2-3 配列 a [0] [1] [2] [3] (2)2次元配列の宣言 2次元配列の宣言、生成方法。 記述例 2-3 配列 (2)2次元配列の宣言 2次元配列の宣言、生成方法。  データ型[] []  配列名=new データ型[行の要素数] [列の要素数]; データ型 配列名[] [] =new データ型[行の要素数] [列の要素数]; 記述例    int[] []  a =new int[2][4]; 2行4列の2次元配列aの準備 a [0] [1] [2] [3]

2-3 配列 a 2 4 6 8 3 9 12 10 15 [0] [1] [2] [3] [4] (2)2次元配列の宣言 記述例 2-3 配列 (2)2次元配列の宣言 宣言と同時に値を代入する方法 データ型[] []  配列名={{1行目に代入する値列},{2行目に代入する値列},…}; 記述例  int[] []  a ={2,4,6,8,10}; {3,6,9,12,15} a [0] [1] [2] [3] 2 4 6 8 3 9 12 10 15 [4]

2-4 制御構造 制御構造   プログラミング言語の実行の流れ。 順次制御 分岐制御 繰り返し制御

2-4 制御構造 false true (1)if文 2つある経路のいずれかを選択する制御構造 条件式 trueの時の実行文 2-4 制御構造 (1)if文   2つある経路のいずれかを選択する制御構造 条件式 trueの時の実行文 falseの時の実行文 false true

2-4 制御構造 if文の書式 (1)if文 if(条件式){ 条件式(ブール値) が真の場合に実行する処理; }else{ 2-4 制御構造 (1)if文  if文の書式 if(条件式){  条件式(ブール値) が真の場合に実行する処理; }else{  条件式(ブール値) が偽の場合に実行する処理; }  else以降は条件式が偽の場合に実行する処理が無いときは省略できる。  処理が一文の場合{}は省略できる。

2-4 制御構造 true false (1)if文(複数の条件分岐の場合) 2-4 制御構造 (1)if文(複数の条件分岐の場合)  複数の条件のどれに当てはまるかによって、違う処理を行いたい時は、if文を組み合わせて使う。 条件式 trueの時の実行文 falseの時の実行文 false true

2-4 制御構造 if文の書式(複数条件) (1)if文(複数の条件分岐の場合) if(条件式){ 条件式1が真の場合に実行する処理; 2-4 制御構造 (1)if文(複数の条件分岐の場合) if文の書式(複数条件) if(条件式){  条件式1が真の場合に実行する処理; }else if(条件式2){  条件式2が真の場合に実行する処理; }else  条件式1,2が共に偽の場合に実行する処理; }  3つ以上条件を組み合わせて利用できる。その場合、 else if(条件式)をさらに組み合わせる。

2-4 制御構造 true false (1)if文(ネスト構造) 制御のなかにさらに制御文を含める場合。 条件式 条件式1がfalse 2-4 制御構造 (1)if文(ネスト構造) 制御のなかにさらに制御文を含める場合。 条件式 条件式1,2共に trueの時の実行文 条件式1がfalse の時の実行文 false true 条件式がtrue 条件式2がfalse

2-4 制御構造 if文の書式(ネスト構造) (1)if文(ネスト構造) if(条件式1){ if(条件式2){ 2-4 制御構造 (1)if文(ネスト構造) if文の書式(ネスト構造) if(条件式1){  if(条件式2){   条件式1,2共に真の場合に実行する処理;  }else{   条件式1が真、条件式2が偽の場合に実行する処理;  } }else{    条件式1が偽の場合に実行する処理; }

2-4 制御構造 (2)swich文 true false 2-4 制御構造 (2)swich文  2つ以上存在する経路の中から任意の1つの経路を選択する場合に用いる制御構造。(等しい条件による選択) 判定対象==値1 値1の時の実行文 defaultの時の実行文 false true 判定対象==値2 値2の時の実行文

2-4 制御構造 swich文の書式 (2)swich文 swich(式){ case 定数式1: 処理; case 定数式2: 2-4 制御構造 (2)swich文 swich文の書式 swich(式){  case 定数式1:    処理;  case 定数式2:  default:  }

2-4 制御構造 false true (3)for文 継続条件式がtrueの間、指定した処理を繰り返す制御構造。 初期設定式 実行する処理 2-4 制御構造 (3)for文 継続条件式がtrueの間、指定した処理を繰り返す制御構造。 継続条件式 初期設定式 false true 実行する処理 再設定式

2-4 制御構造 (3)for文 for文の書式  for(初期設定式;継続条件式;再設定式){    処理  }

2-4 制御構造 (4)while文 継続条件式がtrueの間、指定した処理を繰り返す前判定の制御構造。1回も処理を行わないこともある。 継続条件式 false true 繰り返し実行する処理

2-4 制御構造 (4)while文 while文の書式  while(継続条件式){    処理;  }

2-4 制御構造 (4)do・・・while文 継続条件式がtrueの間、指定した処理を繰り返す後判定の制御構造。最低1回は処理を行う。 継続条件式 false true 繰り返し実行する処理

2-4 制御構造 (4)do・・・while文 do・・・while文の書式  do{    処理;  }while(継続条件式);

2-4 制御構造 (5)continue文 for、while、do・・・while文においてその後の処理をスキップさせ、再び繰り返しのはじめから実行させる。(ラベルありとなしがある。)

2-4 制御構造 false true false (5)continue文 continue の実行 cnt++ cntの出力 2-4 制御構造 (5)continue文 false cnt<=10 true cnt++ cnt %2==1 cntの出力 false continue の実行

2-4 制御構造 continue文の書式 (5)continue文 ラベルなしの場合 continue; ラベルありの場合 ラベル: 2-4 制御構造 (5)continue文 continue文の書式 ラベルなしの場合   continue; ラベルありの場合   ラベル:   制御文{    continue ラベル;   }

2-4 制御構造 (6)break文 for、swich、while、do・・・while文において処理を終了させることができる。 (ラベルありとなしがある。)

2-4 制御構造 true false (6)break文 break の実行 cntの出力 cnt++ cnt>=10 2-4 制御構造 (6)break文 while(true) true cntの出力 cnt>=10 cnt++ false break の実行

2-4 制御構造 break文の書式 (6)break文 ラベルなしの場合 break; ラベルありの場合 ラベル: 制御文{ 2-4 制御構造 (6)break文 break文の書式 ラベルなしの場合   break; ラベルありの場合   ラベル:   制御文{    break ラベル;   }

2-4 制御構造 return文の書式 (7)return文 メソッドやコンストラクタなどの中で制御を呼出し元に戻すことができる。 2-4 制御構造 (7)return文 メソッドやコンストラクタなどの中で制御を呼出し元に戻すことができる。 return文の書式  return;  return 式;

第3章 クラス Javaプログラムはオブジェクトの集合体。 オブジェクトは、クラスと呼ばれる型を定義し生成。 第3章 クラス Javaプログラムはオブジェクトの集合体。 オブジェクトは、クラスと呼ばれる型を定義し生成。 クラスはオブジェクトの設計図のようなもの。

3-1 クラスとオブジェクト (1)オブジェクト指向とは 機能ごとにグループ分けを行うことで、データ(フィールド)とそれを処理する方法(メソッド)を記述したプログラムコードを独立させ、それぞれを繰り返し利用できるようにしたもの。 複数のフィールドとそのメソッドをオブジェクトという一つのかたまりで取りまとめ、それらを組み合わせてプログラムを作成する。

3-1 クラスとオブジェクト (2)クラスとは  クラスは、オブジェクトの設計図に該当し、フィールド、メソッド、コンストラクタの3つの要素からなる。  ①フィールド(属性)    オブジェクトの状態を格納。  ②メソッド(振舞い)    オブジェクトを操作する方法。  ③コンストラクタ    オブジェクトを生成(インスタンス化)する際の初期化手続。

クラスの定義 (2)クラスとは [修飾子] class クラス名{ フィールドの定義 コンストラクタの定義 メソッドの定義 }  [修飾子] class クラス名{     フィールドの定義     コンストラクタの定義     メソッドの定義  } クラス定義の終わり [修飾子]には、final、public、もしくは省略することができる。

車 (2)クラスとは クラスの構成 フィールド定義 名前 距離 コンストラクタ定義 車(名前、距離) メソッド名 メソッド定義 クラス名 文字列型 数値型 名前 距離 フィールド名 コンストラクタ定義 車(名前、距離) メソッド名 メソッド定義 発信 走行 前進 後退

3-1 クラスとオブジェクト オブジェクトとは 図1 自分を取り巻くオブジェクト 3-1 クラスとオブジェクト オブジェクトとは 図1 自分を取り巻くオブジェクト http://www.atmarkit.co.jp/im/carc/special/fiveoo/01.html

3-1 クラスとオブジェクト 複数のオブジェクトが集まって1つの仕事をする 図2 自律分散協調モデル 3-1 クラスとオブジェクト 複数のオブジェクトが集まって1つの仕事をする 図2 自律分散協調モデル http://www.atmarkit.co.jp/im/carc/special/fiveoo/01.html

3-1 クラスとオブジェクト カプセル化 図3 オブジェクトは情報と責務を持つ 3-1 クラスとオブジェクト カプセル化 図3 オブジェクトは情報と責務を持つ http://www.atmarkit.co.jp/im/carc/special/fiveoo/01.html

図4 クラス(抽象概念)とインスタンス(具体例) 3-1 クラスとオブジェクト クラス化とインスタンス 同じ種類のオブジェクトをまとめて考えると便利 図4 クラス(抽象概念)とインスタンス(具体例) http://www.atmarkit.co.jp/im/carc/special/fiveoo/01.html

3-1 クラスとオブジェクト オブジェクトの分類と分解 図5 分類と分解 3-1 クラスとオブジェクト オブジェクトの分類と分解 図5 分類と分解 http://www.atmarkit.co.jp/im/carc/special/fiveoo/01.html

3-2 オブジェクトの生成 クラス型変数の宣言方法 [修飾子]クラス名 変数名; オブジェクトの宣言方法 変数名=new クラス名(); 3-2 オブジェクトの生成 クラス自身は実体を持たない。 別のクラス内で生成する必要がある。 クラス型変数の宣言方法  [修飾子]クラス名 変数名;    記述例 Car obj; オブジェクトの宣言方法  変数名=new クラス名();    記述例 obj=new Car(); 同時に宣言する場合    Car obj=new Car();

3-2 オブジェクトの生成 name name obj new 代入 distance distance ワゴン 0 Carクラスの実体 3-2 オブジェクトの生成 new演算子で、初めてインスタンス化される。 クラスを定義した段階では、実体が存在しない。 インスタンス化したオブジェクトの参照(場所)を変数objへ代入する。 name ワゴン 0 departure() distance Carクラスの実体 departure() name distance Carクラス obj 代入 new

3-3 フィールドとメソッド フィールドやメソッドの利用方法 オブジェクト名.フィールド名 オブジェクト名.メソッド名(引数,...) 3-3 フィールドとメソッド オブジェクト内のフィールドやメソッドを利用するには 「.(ドット)」演算子を利用し、オブジェクト名と変数名またはメソッド名を指定する。 フィールドやメソッドの利用方法  オブジェクト名.フィールド名  オブジェクト名.メソッド名(引数,...)

3-3 フィールドとメソッド (1)クラス内の変数表現 変数にはフィールドとして定義されるものと、メソッドの内部だけで利用されるものがある。 3-3 フィールドとメソッド (1)クラス内の変数表現 変数にはフィールドとして定義されるものと、メソッドの内部だけで利用されるものがある。 フィールドとして定義される変数→インスタンス変数、クラス変数。 メソッドの内部だけで利用される変数→ローカル変数、引数。

3-3 フィールドとメソッド (2)クラス内のメソッド表現 メソッドは実行する処理。 3-3 フィールドとメソッド (2)クラス内のメソッド表現 メソッドは実行する処理。 メソッドにはインスタンスメソッドとクラスメソッドがある。 インスタンスメソッドはオブジェクトに関連づけられている。 クラスメソッドはクラスに関連づけられている。 クラスメソッドでインスタンス変数やインスタンスメソッドを使用するとコンパイルエラーになる。

3-3 フィールドとメソッド (3)メソッドの引数 引数を使って呼出元からメソッド内に値を渡し、その値に応じた処理を行う。

3-3 フィールドとメソッド (3)メソッドの戻り値 メソッドの呼出元から情報をもらうだけでなく、メソッドの呼出元に値を返すこと。 3-3 フィールドとメソッド (3)メソッドの戻り値 メソッドの呼出元から情報をもらうだけでなく、メソッドの呼出元に値を返すこと。 メソッドのブロック中にreturn文を使って、呼出元に値を返す。

3-4 メソッドのオーバーロード 引数の型や個数、戻り値の型が異なる同じ名前のメソッドを定義することで、引数の型や個数を調べ一致するメソッドを選び実行する。(してくれる。)

3-5 コンストラクタ (1)オブジェクトを生成すると同時に値を設定したり、実行すべき処理がある場合には、コンストラクタを使う。 3-5 コンストラクタ (1)オブジェクトを生成すると同時に値を設定したり、実行すべき処理がある場合には、コンストラクタを使う。 コンストラクタの宣言方法  class クラス名{    修飾子 コンストラクタ名(引数){       コンストラクタで実行する処理;    }    ・・・  } クラス名と同じ名前

3-5 コンストラクタ コンストラクタの規則 クラス名と同じ名前を持つメソッドである。 引数を省略することができる。 3-5 コンストラクタ コンストラクタの規則 クラス名と同じ名前を持つメソッドである。 引数を省略することができる。 オーバーロードすることができる。 戻り値を持たない。 コンストラクタの記述を省略できる。 

3-5 コンストラクタ (2)デフォルトコンストラクタ コンストラクタはオブジェクトを生成すると必ず呼ばれる。 3-5 コンストラクタ (2)デフォルトコンストラクタ コンストラクタはオブジェクトを生成すると必ず呼ばれる。 コンストラクタを記述せずにクラスの定義を行うと、Javaが自動的にデフォルトコンストラクタを用意してくれる。

3-6 アクセス修飾子 クラスおよびメソッド、フィールドにアクセス修飾子をつけることにより、そのオブジェクトに対するアクセスを制御することができます。 アクセス修飾子を用いることによりカプセル化を実現する。 カプセル化とはオブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、オブジェクトの実際の型を隠蔽したりすることをいう。

3-6 アクセス修飾子 (1)カプセル化のメリット オブジェクトの独立性 オブジェクトの信頼性 オブジェクトの保守性 3-6 アクセス修飾子 (1)カプセル化のメリット オブジェクトの独立性 オブジェクトの信頼性 オブジェクトの保守性 (2)クラスへのアクセス クラスの定義時に修飾子をつけない場合、同じパッケージからのみのアクセスとなる。 (3)メソッドとフィールドへのアクセス メソッドやフィールドへのアクセスもクラスと同様に、アクセス制御を行える。

3-6 アクセス修飾子 修飾子 アクセス範囲 public すべての場所からアクセス可能。 private 3-6 アクセス修飾子 修飾子 アクセス範囲 public すべての場所からアクセス可能。 private フィールド、メソッドが定義されたクラス内のみアクセス可能。 protected フィールド、メソッドが定義されたクラス内、そのクラスのサブクラス、そのクラスと同じパッケージ内のクラスからアクセス可能。 無指定 フィールド、メソッドが定義されたクラス内、そのクラスと同じパッケージ内のクラスからアクセス可能。

第4章 クラスと継承 Javaはオブジェクト指向に基づいているため、継承(インヘリタンス)の機能をサポートしている。 第4章 クラスと継承 Javaはオブジェクト指向に基づいているため、継承(インヘリタンス)の機能をサポートしている。 継承とは、既存のクラスを元に新しいクラスを作成する仕組みである。 新しいクラスには、既存のクラスの変数やメソッドが受け継がれ、さらに独自の機能を追加することができる。

4-1 継承とは (1)スーパークラスとサブクラス 継承を行い、新しいクラスを作成することを派生という。 4-1 継承とは (1)スーパークラスとサブクラス 継承を行い、新しいクラスを作成することを派生という。 派生時に使用される既存のクラスを「スーパークラス」といい、新しく作成されるクラスを「サブクラス」という。 継承機能のメリット→ソフトウェアの再利用性が高くなること 共通部分をスーパークラスにまとめ、異なる部分をサブクラスとして定義すれば、開発効率が上がる。

既存のクラスを元に、新しいクラスを作成(派生) 4-1 継承とは 継承の仕組み 新しく作成されるクラス (サブクラス) 機能A 機能B スーパークラスから機能を受け継ぐ 既存のクラスを元に、新しいクラスを作成(派生) 機能A 既存のクラス (スーパークラス)

4-1 継承とは (2)サブクラスの派生 Javaでは、1つのスーパークラスから派生させる単一継承。 スーパークラスの定義方法 4-1 継承とは (2)サブクラスの派生 Javaでは、1つのスーパークラスから派生させる単一継承。 スーパークラスの定義方法  class スーパークラス名{    クラス定義  } サブクラスの定義方法 class サブクラス名 extendsスーパークラス名{    クラス定義  }

4-2 メソッドのオーバーライド スーパークラスで定義されているメソッドと全く同じ名前・同じ引数の型と個数を持つメソッドを、サブクラス内で再定義すること。 オーバーライドとは「上書き」という意味。

4-2 メソッドのオーバーライド (1)this と super this→自分自身のオブジェクトを表す。 4-2 メソッドのオーバーライド (1)this と super this→自分自身のオブジェクトを表す。 super→スーパークラスのオブジェクトを表す。  class XY{    int tate, yoko;    XY(int tate, int yoko){      this.tate = tate;      this.yoko = yoko;    }  }

4-3 修飾子 クラス、変数、メソッドなどに付けてアクセスを制御したり、特性を示す。

4-3 修飾子 ①クラスに付けられる修飾子 修飾子 説明 public 4-3 修飾子 ①クラスに付けられる修飾子 修飾子 説明 public 他のクラスからimportの指定により、アクセスされることを可能にする。 abstract 抽象メソッドを持つクラスにする。 staticメソッドをもてない。 インスタンス化できない。 他のクラスのスーパークラスとして使用される。 final サブクラスを派生させないようにする。 無指定 同一パッケージ内からのみアクセス可能にする。

4-3 修飾子 ②フィールドに付けられる修飾子 修飾子 説明 final 値の変更を行うことができないようにする。 static 4-3 修飾子 ②フィールドに付けられる修飾子 修飾子 説明 final 値の変更を行うことができないようにする。 static クラス変数にする。(インスタンス化なしで使用可) アクセス修飾子 アクセスを制御する。

4-3 修飾子 ③メソッドに付けられる修飾子 修飾子 説明 abstract 値の変更を行うことができないようにする。 final 4-3 修飾子 ③メソッドに付けられる修飾子 修飾子 説明 abstract 値の変更を行うことができないようにする。 final クラス変数にする。(インスタンス化なしで使用可) static アクセスを制御する。 synchronized メソッドの同期を行う。 アクセス修飾子

4-4 アクセス制御と変数のスコープ クラス内に定義されたフィールドは、インスタンス化されたオブジェクトを通して、「オブジェクト名.フィールド名」または「オブジェクト名.メソッド名」でアクセスすることができる。 オブジェクト指向では、オブジェクトが持つデータを隠蔽し、そのデータにアクセスできる方法を制限する。

4-4 アクセス制御と変数のスコープ (1)フィールドとメソッドの修飾子 4-4 アクセス制御と変数のスコープ (1)フィールドとメソッドの修飾子 他のオブジェクトから、フィールドやメソッドに対して、アクセスを制限する方法があり、これをカプセル化という。

4-4 アクセス制御と変数のスコープ カプセル化 クラスYのオブジェクト クラスXの オブジェクト クラスXの オブジェクト フィールド 4-4 アクセス制御と変数のスコープ カプセル化 フィールド メソッド クラスYのオブジェクト クラスXの オブジェクト クラスXの オブジェクト

4-4 アクセス制御と変数のスコープ (2)変数の適用範囲 4-4 アクセス制御と変数のスコープ (2)変数の適用範囲 様々なレベルで変数が宣言されている場合、変数の参照がどのようのに行われるかを理解する必要がある。 指定された変数が参照される範囲をスコープという。 変数の探索順序 ①変数参照が行われたブロック ②同じメソッド内のブロック ③メソッドが属するクラス名 ④スーパークラス内

4-4 アクセス制御と変数のスコープ 変数の探索順序 4 3 2 1 class スーパークラス名{ 変数宣言; } 4-4 アクセス制御と変数のスコープ 変数の探索順序 class スーパークラス名{     変数宣言; } class サブクラス名 extends スーパークラス名{     void メソッド名(){         変数宣言;         {          変数宣言;         }     } 4 3 2 1

4-5 抽象クラスと抽象メソッド 抽象メソッド →性質としては共通であっても、実装する処理内容すべてがサブクラスで一緒とは限らない場合、本体を持たないメソッドを定義する方法。 例 円と正方形の周囲長の計算の場合。   計算の性質は同じでも、計算の方法が違う。 この場合、スーパークラスとして図形を定義し、抽象メソッドとしてメソッド名だけの定義を行う。  実際の処理は、サブクラスでオーバーライドして定義する。  抽象メソッドを持つクラスを抽象クラスという。 

4-6 インタフェース Javaでは二つ以上の抽象クラスは継承できない。 4-6 インタフェース Javaでは二つ以上の抽象クラスは継承できない。 この問題を解決するために、インタフェースという抽象クラスによく似た機能を提供する。

4-6 インタフェース (1)インタフェース いくつかの本体のないメソッド定義と定数をまとめたもの。 クラスではない。 4-6 インタフェース (1)インタフェース いくつかの本体のないメソッド定義と定数をまとめたもの。 クラスではない。 変数を宣言することはできない。 定義されたメソッドは、すべて「abstract」となる。 定義したインタフェースを他のクラスが利用する場合、そのクラスの中で「implements インタフェース名」と指定する。

第5章 Javaのクラスライブラリ 関連するクラスとインタフェースをグループにしてまとめたものをクラスライブラリという。 第5章 Javaのクラスライブラリ 関連するクラスとインタフェースをグループにしてまとめたものをクラスライブラリという。 クラスライブラリのことをパッケージという。 パッケージには多くの便利なメソッドが定義されているため、行いたい処理に応じて、必要なメソッドを呼び出すことで、簡単にプログラミングできる。

5-1 パッケージ (1)パッケージの種類 パッケージ 内容 java.applet アプレットの作成に必要なクラスやインタフェースを提供 5-1 パッケージ (1)パッケージの種類 パッケージ 内容 java.applet アプレットの作成に必要なクラスやインタフェースを提供 java.awt GUI、グラフィックスと画像の処理に必要なクラスやインタフェースを提供 javax.swing GUIを作成するためのSwingの基本機能となるクラスやインタフェースを提供 java.awt.image イメージデータを処理するためのクラスやインタフェースを提供 java.io 入出力に必要なクラスやインタフェースを提供 java.lang Javaプログラミングにおいて基本となるクラスやインタフェースを提供 java.net ネットワーク処理に関するクラスやインタフェースを提供 java.util コレクション、イベントモデル、日時機能、国際化などプログラミングに便利なユーティリティクラスやインタフェースを提供