• 検索結果がありません。

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
17
0
0

読み込み中.... (全文を見る)

全文

(1)

1章 Java 言語について

(オブジェクト指向,変数の扱い方,繰り返し条件と条件分岐)

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

1.1 Java 言語の概要

JAVA は Sun Microsystems が開発したプログラミング言語であり,たとえば,一般ユーザが使う アプリケーションを始めとして,ネットワークを介したコミュニケーションツールやWeb ブラウザで扱 う動的なコンテンツ作成など幅広く普及している。特徴的な点と歴史を下記にまとめる。 (1) マルチプラットホーム マルチプラットホーム(multi-platform)とは,ブログラミングが特定 OS に依存せず,複数の OS に対応していること。本来,プログラム実行は OS に依存する。Windows 用に開発したプ ログラムは WindowsOS 上のみで動作する。 JAVA はマルチプラットホームの実現により, Windows 用に開発したプログラムを,Windows 上だけでなく,Macintosh,Unix,Linux 上な ど,OS 環境に依存せずに動作されることができる。

(2) メモリ管理の容易性

メモリ管理とは,メモリの確保や開放を行うための操作であり,C/C++言語ではプログラマが メモリ管理するためのソースコードを記述するため,複雑になり,バグを発生させる要因にな ることがあるが,Java では JavaVM(Virtual Machine)がメモリ管理を行うため,バグ発生要因 を減少させることができる。

(3) オブジェクト指向

オブジェクト指向とは,オブジェクトという処理単位を用いて問題を解決する手法。オブジェク トは属性,振る舞い,識別子のアイテムを持ち,ソフトウェアの開発と保守の複雑さを改善し,

(2)

マルチプラットフォームの概略を次図に示す。 また,Java のバージョンとその歴史の変遷を次表に示す。 バージョン 概要 JDK1.0 (1996 年 1 月 23 日) 最初のバージョン JDK1.1 (1997 年 2 月 19 日) いくつかの重要な機能の追加 J2SE1.2 (1998 年 12 月 8 日) コードネームPlayground このバージョンから呼称がJAVA2 に変更され, J2SE5.0 までこの呼称が使われる。 J2SE1.3 (2000 年 5 月 8 日) コードネームKestrel J2SE1.4 (2002 年 2 月 6 日) コードネーム Merlin J2SE5.0 (2004 年 9 月 30 日) コードネームTiger JAVA SE 6 (2006 年 12 月 11 日) コードネームMustang JSR270 の元で開発され,JAVA SE 6 においては, Sun は命名方針を変更して”J2SE”から JAVA SE に変更 し,バージョン番号から”.0”の部分を廃止している。 JAVA SE 7 (2011 年 7 月 28 日) コードネーム Dolphin 2006 年から開発が始まった。 JAVA SE 8 (2014 年 3 月 18 日) 約10 年ぶりに言語仕様を改訂 JAVA SE 9 (2016 年頃?)

(3)

1.2 プログラムの書式 プログラム(ソースコード)の書式について,ソースコードを例として各記述の概略を色分けして 説明する。 Java は大文字・小文字を区別して処理を行うため, クラス・メソッド・変数の大文字・小文字の記述ミスに注意すること。 //Bxxxxxx 広大太郎

public class HelloWorldTest{

public static void main(String[] args){

System.out.println("Hello,World!"); } } 部位 呼称 概略 黒字 コメント コメント内容はプログラムとしては反映されない。 コード記述者や詳細などを書き込む際使用。 【使用例】 // コメント (スラッシュ2 つ): 単一行コメントの場合 /* コメント */ (スラッシュ・アスタリスクの組み合わせ): 複数行コメントの場合 赤字 終端文字 ; 半角セミコロン 文の最後に必ず配置する。 青字 クラス ソースコードに必ず一つある。 実行内容をブロックや文で記述する。 (後段で説明する。)

(4)

1.2.1 識別子と予約語

プログラミング言語があらかじめ定めている言葉を予約語(キーワード)と呼び,任意に決める ことができる変数名,オブジェクト名,メソッド名などの識別子に予約語を用いることはできない。

下記に予約語例を示す。

break case catch continue default delete do else finally for function if in instanceof new return switch this throw try typeof var void while with false true null abstact boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile

(5)

1.3 文字連結と改行 文字列を結合表示する方法,改行のコマンド発行について検討する。 (1) 文字列結合演算子 文字列を含む式の中の+演算子は文字列連結演算子として機能する。 例えば,”Hello”+”javascript”は”Hellojavascript”として扱われる。 演算子の代表例を下記に示す(各演算子の詳細は後段で説明する)。 演算子類別 記述例 算術演算子 + - * / % ++ -- 関係演算子 < <= == => > != 論理演算子 && || ! 代入演算子 = ビット演算子 << >> >>> & | ^ (2) 改行コード テキストファイル中で改行を意味する文字コードであり,文字列内に¥n で示される。 例えば,”world! ¥n!”+”Good”とした場合,”world!”の後に改行されて”Good”が出力される。

(6)

1.4 オブジェクト指向とクラス,メソッドの定義 Java はオブジェクト指向言語となっており,「オブジェクト」という処理単位を用いて構成される。 オブジェクトはクラス,メソッド,変数から構成されている。 オブジェクトの構成とソースコード書式を下記に示す。 オブジェクトの概念は難しいため,本段階では簡略的に説明する。 1.4.1 クラス定義 クラスとはオブジェクトの属性(変数で表現)や振る舞い(メソッドで表現)を定義したもの。クラス 機能を使うためには,インスタンスを生成する。インスタンスとは,クラスを元に生成されたオブジ ェクトを示す。 概念を例として,下図のような車の構成を例に示すと,Car クラスは,属性(変数: 車名,価格, 燃費,ガソリン量,総走行距離,…)と振る舞い(メソッド: メーター表示,給油,走行,…)を基に, 複数のCar インスタンスを生成することができる。

(7)

クラス定義にはクラス修飾子,class ステートメント,クラス名を順に記述する。属性(変数で表現) や振る舞い(メソッドで表現)は括弧{}内に記述する。クラス修飾子には下記がある。 クラス修飾子 機能 public すべてのクラスから呼び出し可能 abstract インスタンス生成を制限 final サブクラス作成を制限 また,クラス定義の書式は下記のようになる。 クラス修飾子 class クラス名{ 属性属性(変数で表現) 振る舞い(メソッドで表現) } 1.4.2 インスタンスの生成 インスタンスを生成するにはクラス名,インスタンス名,new 演算子,コンストラクタ名順に記述 する。new 演算子はインスタンス生成のための演算子であり, クラス名 = コンストラクタ名 となる。 クラス名 インスタンス名 = new コンストラクタ(引数 0, 引数 1, …); 例:

(8)

1.4.3 メンバ変数 メンバ変数とは,オブジェクトの属性を示す変数であり,インスタンス変数,クラス変数の2 種類 がある。 メンバ変数 機能 インスタンス変数 クラスから生成されたインスタンス個々に割り当てられた変数 クラス変数 クラスから生成されたすべてのインスタンスに共通する変数 例えば,下図のような車クラスから生成した車インスタンスを例に考えると,車クラスには車体 色変数,車輪数変数があり,車輪数変数はすべてのインスタンスで共通であるため,クラス変数と して宣言され,車体色変数は車体ごとに異なるため,インスタンス変数として宣言される。 車クラス 車クラス 属性:車体色・車輪数 振る舞い:走行 車インスタンス 車体色:インスタンス変数 車輪数:クラス変数

(9)

メンバ変数の宣言方法は,アクセス修飾子,static 修飾子,データ型修飾子,変数名を順に記述 する。アクセス修飾子は他クラスからのアクセス権を制御するために用いる。アクセス修飾子を指 定しない場合,変数を宣言したクラスを含むパッケージ内からのみ参照できる。 static 修飾子は,インスタンス変数,クラス変数を区別するために用いられ,各変数により宣言, 呼び出し方法が異なる。アクセス修飾子の種類と機能を下表に示す。 アクセス修飾子 機能 public すべてのクラスから変数宣言したクラスの変数に参照可能 protected 変数を宣言したクラスの含まれるパッケージとすべてのサブクラスから 参照可能 private 変数を宣言したクラスからのに参照可能 また,インスタンス変数とクラス変数の宣言・呼び出し方法は,それぞれ下表の通りである。 イン ス タ ン ス 変 数 宣言方法 アクセス修飾子 データ型修飾子 変数名 呼び出し方法 インスタンス名.変数名 例: Sample クラスからインスタンス object を生成し, Sample クラス インスタンス変数 flag を呼び出す

Sample object = new Sample(); object.flag; クラ ス 変 数 宣言方法 アクセス修飾子static データ型修飾子 変数名 呼び出し方法 クラス名.変数名 例: クラス変数 flag を Sample クラスから直接呼び出す Sample.flag

(10)

1.4.4 メソッド定義

メソッドには,インスタンスメソッド,クラスメソッドの 2 種類があり,クラスメソッドはクラスから生 成されたすべてのインスタンスに対する処理を行い,static 修飾子を用いて宣言される。インスタン スメソッドはクラスから生成された個々のインスタンスに対する処理を行い,static 修飾子を用いず に宣言される(public static void main(String[] args)はこれにあたる)。

メソッド定義の書式は次の通りである。 アクセス修飾子 static 戻り値データ型 メソッド名(引数データ型 引数名){ メソッド処理 return 式; } なお,戻り値とは,メソッド呼び出し元に処理結果を返す値であり,戻り値があり/なしの場合で 定義・処理記述方法が異なる。 戻り値条件 戻り値データ型 戻り値がない場合 void 戻り値がある場合 戻り値データ型 メソッド処理にreturn 文を記述 引数とは,メソッドを呼び出す場合に渡す値であり,インスタンスや基本データ型を指定できる。 複数の引数を渡す場合は引数と引数の間にはコンマ(,)を使用する。 インスタンスメソッドとクラスメソッドの宣言・呼び出し書式は,それぞれ次項の表の通りである。

(11)

イン ス タ ン ス メ ソ ッ ド 宣言方法 アクセス修飾子 戻り値データ型 メソッド名(引数データ型 引数名){ メソッド処理 return 式; } 呼び出し方法 インスタンス名.メソッド名(引数)

例: Sample クラスからインスタンス object を生成し,Sample クラスの インスタンスメソッドprocess を呼び出す

Sample object = new Sample(); object.process; クラ ス メ ソ ッ ド 宣言方法 アクセス修飾子 static 戻り値データ型 メソッド名(引数データ型 引数名){ メソッド処理 return 式; } 呼び出し方法 クラス名.メソッド名(引数) 例: process メソッドを Sample クラスから直接呼び出す Sample.process(); 1.4.5 コンストラクタ定義 コンストラクタ定義には”アクセス修飾子”と”コンストラクタ名”順に記述する。 コンストラクタ名はクラス名と一致させる必要がある。 アクセス修飾子 コンストラクタ名(引数データ型 引数名){ コンストラクタ処理; }

(12)

1.5 変数の宣言

プログラムはデータを保存するための領域を確保する必要があり,この領域を変数と呼び,基 本型の変数定義と種別を下記に示す。

種類 データ型 サイズ 範囲

論理型 boolean 1bit trueかfalse (論理値)

文字型 char 16bit (2byte) Unicode 文字データ (16 ビット文字コード)

整数型 byte 8bit (1byte) -128~127 (8 ビット整数)

整数型 int 16bit (2byte) -32768~32167 単長整数

整数型 short 32bit (4byte) -2147483648~2147483647 (整数:約±21 億 4 千 7 百万)

整数型 long 64bit (8byte)

9223372036854775808

~ 9223372036854775807 倍長整数

±922 京

※京:兆の上の単位 浮動小数点型 float 32bit (4byte) 有効桁7 桁

浮動小数点型 double 64bit (8byte) 有効桁16 桁

上記の基本型の変数とは別に,よく使用する変数型として,変数で文字列を扱う場合の String 型があり,Java のクラスに分類される。String 型は,ダブルクウォーテーション(”)で囲む。

String 型は非常に頻繁に使用されるため,省略した記述でクラスのオブジェクトを生成すること (String city = ”Tokyo”;)が許可されている(基本型変数と同様の宣言文)。

(13)

1.6 繰り返し処理と条件分岐 プログラム制御は上から下に実行される順次実行,条件分岐,繰り返し処理の3 つですべての 制御構造(アルゴリズム)を記述することができる。 Java で利用される制御文の代表例として”繰り返し処理”と”条件分岐”がある。下記に各処理の 概略を示す。 繰り返し処理 条件が成立する間,ブロック内を繰り返し実行する処理 for ループ for 文は回数をカウントしながら繰り返して同じ処理を行うための処 理 カウントには変数が使用される。 【書式】 for(カウンタ初期値代入;繰り返し条件;回数カウント式){ 文; // 繰り返し処理を行う文 }

while ループ while 文は for 文と同様の機能を持つ 繰り返す条件が繰り返し回数とは限らず, 条件成立する間,繰り返しを行うことができる。 (回数が不明の場合にも処理ができる:論理条件(false/true)を使用) 【書式】 while (条件){ 文; // 繰り返し実行する処理 }

do-while ループ do-while 文は while 文と機能は同様

繰り返し条件を最初に行う(前判断)のがwhile 文に対し, do-while 文は最後に行う(後判断)。 (do-while 文は条件が不成立の場合でも 1 回ブロック内の処理を行う。) 【書式】 do { 文; // 繰り返し処理

(14)

条件分岐 条件が成立・不成立により処理を選択する。 if 文 成立すれば文1 を実行し,文 2 に進む。 不成立であれば文2 に進む(文 1 は実行しない)。 【書式】 if(条件 1){ 文1; } 文2; if-else 文 成立すれば文1 を実行し,文 3 に進む(文 2 は実行しない)。 不成立であれば文2 に進む(文 1 は実行しない)。 【書式】 if(条件 1){ 文1; }else{ 文2; } 文3;

(15)

条件分岐 条件が成立・不成立により処理を選択する。 if-else if-else 文 条件1 が成立すれば文 1 を実行し,文 4 に進む(文 2・文 3 は実行しない)。 条件1 が不成立であれば条件 2 判断に移動する。 条件2 が成立すれば文 2 を実行し,文 4 に進む(文 1・文 3 は実行しない)。 条件2 が不成立であれば else に移動して 文3 を実行し,文 4 に進む(文 1・文 2 は実行しない)。 【書式】 if(条件 1){ 文1; }else if(条件 2){ 文2; }else{ 文3; } 文4;

(16)

条件分岐 条件が成立・不成立により処理を選択する。 switch 文 変数:値の場合で処理を分岐したい場合, if-else 文処理以外に switch 文による処理がある。 処理条件の場合により使い分けを行う。 変数が値1 と等しいとき, 文1 を実行して進む(文 2/文 3 は実行しない)。 変数が値2 と等しいとき, 文2 を実行して進む(文 1/文 3 は実行しない)。 変数が値1 または値2と等しくないとき, 文3 を実行して進む(文 1/文 2 は実行しない)。 【書式】 switch(変数){ case 値 1: 文1; break; case 値 2: 文2; break; default: 文3; }

(17)

1.6.1 算術演算子と論理演算子 条件分岐の条件を表す方法として算術演算子や論理演算子がある。 下記に各演算子の使用例を示す。 算術演算子 表記 概要 > A > B A が B より大きいとき,成立 >= A >= B A が B 以上のとき,成立 < A < B A が B 未満のとき,成立 <= A <= B A が B 以下のとき,成立 == A == B A と B が等しいとき,成立 != A != B A と B が等しくないとき,成立 論理演算子 表記 概要 && A&&B 条件A が成立し かつ 条件B が成立する ならば || A||B 条件A が成立するか または 条件A が成立するか ならば ! !A 条件A が成立しないとき

参照

関連したドキュメント

今回の調査に限って言うと、日本手話、手話言語学基礎・専門、手話言語条例、手話 通訳士 養成プ ログ ラム 、合理 的配慮 とし ての 手話通 訳、こ れら

・条例第 37 条・第 62 条において、軽微なものなど規則で定める変更については、届出が不要とされ、その具 体的な要件が規則に定められている(規則第

いてもらう権利﹂に関するものである︒また︑多数意見は本件の争点を歪曲した︒というのは︑第一に︑多数意見は

前掲 11‑1 表に候補者への言及行数の全言及行数に対する割合 ( 1 0 0 分 率)が掲載されている。

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から

卒論の 使用言語 選考要件. 志望者への

卒論の 使用言語 選考要件

2会社は, 条件を変更のうえ保険契約を締結したと染とめられる場合には,