230 likes | 369 Views
3 年生前期ゼミナール ( 独習 JAVA). 第 1 章 Java の基礎. 背景. Sun Microsystems 社の開発チームによって 1991 年に作成 開発環境で多種多様なハードウェア / ソフトウェアが使用されていたため、プラットフォームに依存しない言語である必要があった 明確で徹底したオブジェクト指向プログラミングへのアプローチによりソフトウェアの再利用と保守がとても簡単になっている. バイトコードと Java Virtual Machine (JVM). オブジェクト コード. ソースコード. プログラム. ソースコード
E N D
3年生前期ゼミナール (独習JAVA) 第1章 Javaの基礎
背景 SunMicrosystems社の開発チームによって1991年に作成 開発環境で多種多様なハードウェア/ソフトウェアが使用されていたため、プラットフォームに依存しない言語である必要があった 明確で徹底したオブジェクト指向プログラミングへのアプローチによりソフトウェアの再利用と保守がとても簡単になっている
バイトコードとJava Virtual Machine (JVM) オブジェクト コード ソースコード プログラム • ソースコード • プログラムのテキスト版 • 人間に読みやすい形式 • オブジェクトコード • プログラムの実行可能な形態 • 特定のCPU専用であり異なるプラットフォームでは実行できない
バイトコードとJava Virtual Machine (JVM) プログラム コンパイル後の クラスファイル バイトコード Java Virtual Machine CPU コンパイル時にバイトコードを含める JVMはバイトコードを解釈しプラットフォーム非依存の環境を実現
アプリケーションとアプレット • Javaによって作成できるプログラムはアプリケーションとアプレットの2種類 • アプリケーション -- JVMによって直接実行可能 • アプレット-- Webブラウザが必要 • アプレットビューを使用しアプレットを実行することも可能 • Java 2 Platform Standard Edition Development Kit (JDK)に含まれておりテストなどに使用
オブジェクト指向プログラミングの3つの原則オブジェクト指向プログラミングの3つの原則 • オブジェクト指向プログラミングの基盤を説明する際の3つの機能 • カプセル化 • 継承 • ポリモーフィズム
カプセル化 • データとデータを操作するコードを関連付けるメカニズム • カプセル化の利点 • データの形式を簡単に変更できる • 機密情報へのアクセスが楽になる • 複数のスレッドからのデータアクセスの同期化が簡単になる
継承 Object ・サブクラスDはクラスAを継承 ・クラスAはクラスDの スーパークラス A B C D E F G あるクラスを特化することにより他のクラスを定義するメカニズム すでに定義されている構造体や動作を元に別のクラスを定義できる ⇒ ソフトウェアの再利用
ポリモーフィズム 地域情報を調べる 雨の地域を調べる 携帯電波の範囲を調べる クラスA クラスB クラスC getArea() getArea() getArea() 「1つのインターフェイス、複数の実装」と表現されるメカニズム 呼び出しているメソッドが一見同じなのに処理結果が変わる
Javaクラスライブラリ さまざまな種類のクラスライブラリが定義
Java 2 Platform Standard Edition Development Kit 5.0 (JDK) アプリケーションやアプレットを作成し実行するために必要なものが含まれた開発環境 現在の最新バージョンはJDK 6.0
はじめてのJavaアプリケーション class Example1 { public static void main (String args[]) { System.out.println(“This is the output from Example1”); } } >Javac Example1.java This is the output from Example1 プログラム例 実行例
変数と代入 名前の付いたメモリ位置で値を格納できる Javaの8つの基本データ型
変数と代入 class Example2 { public static void main (String args[]) { inti = 50; System.out.println(“The value of i is ” + i); } } >Javac Example2.java The value of i is 50 プログラム例 実行例
文字列とキャラクタ String s = “abcde” + “ef \” ghi \” “ ; • 一連のキャラクタを二重引用符(“)で囲むことで定義 • 二重引用符の前に\をつけることで文字列の内部に二重引用符を含むことができる • 文字列を連結させるには+演算子で連結 • 例
算術演算子と式 式とは演算子とオペランドを組み合わせたもの
式における型変換 inti; float f; i= 10 f = 23.25f System.out.println(i * f); 型の異なるデータを1つの式で組み合わせて使うことができる 式の最終結果には最も大きい型が使用される 17
代入における型変換 intb; inti = 258; b = (byte)i; System.out.println(i * f); 代入ステートメントで右辺と左辺の型が異なる場合、左辺の型に変換される 左辺の型が右辺の型より小さい場合は(type)valueを使用
コメント • ソースコード内に書き込むメモ • 単一行コメント • 「//」ではじまり行末尾までコメントとして解釈 • 複数行コメント • 「/*」ではじまり、「*/」で終わり • ドキュメンテーションコメント • 「/**」という3文字ではじまり、「*/」という2文字で終わり
1次元配列 type varName[]; varName = new type[size]; type varName[] = new type[size]; • 共通の名前を使用してアクセスすることが可能な、同じ型を持つ一連の変数 • 1次元配列の宣言 • 1次元配列の領域割り当て • 1次元配列の宣言と領域割り当て
1次元配列 varName.length; type varName[] = {e0, … , en}; intia[] = new int[10] ia[0] ia[1] ia[2] ia[3] ia[4] ia[5] ia[6] ia[7] ia[8] ia[9] • 1次元配列の要素取得 • 1次元配列の初期化 • 例
多次元配列 intib[][] = new int[2][2]; ib[0][0] ib[0][1] ib[1][0] ib[1][1] 配列の配列として実装 個々にインデックスを配置することでアクセス可能
Javaキーワード • Java言語のキーワードは変数名またはメソッド名として使用できない • Abstract, boolean, etc......