第1回 Java基本技術講義
よるオブジ クト指向
Javaによるオブジェクト指向
0プログラミング構造
多くの言語は____されたプログラムである
(1年生から学んできたC言語も含めて)
ハ ド動作に近いルール化容易( 年生から学んできたC言語も含めて)
ハード動作に近い ミスを見つけやすい但し プ グ ム自体も大規模になり
と
が重要
但し、プログラム自体も大規模になり、__と___が重要
Windows 95 1500万行、Windows XP 3500万行、Windows Vista 5000万行
型プ グラミングが注目されるようにな た
1
オブジェクト指向プログラム
オブジェクト指向型プログラミングとは?
“動作”を“もの”に関連付けて 個々のプログラムを作成する動作 を もの に関連付けて、個々のプログラムを作成する (例)構造化プログラミング (例)オブジェクト指向プログラミング Sinを計算 Sin式 Degで計算 θで計算 ________ 結果を表示 表示画面 保存ファイル θで計算 数値表示 グラフ表示 結果を保存 保存ファイル 表 Text形式 Bmp形式自律分散・協調動作プログラミングとも考えられる
_________ _____ 2自律分散 協調動作
グラ ング も考えられる
オブジェクト指向プログラム
オブジェクト指向のプログラミング
“もの“(オブジェクト)を組み合わせる ルール「______」 自動車 使っていいところと使って はいけないところを定義 エンジン ハンドル タイヤ = + + “もの“(オブジ クト)を再利用する 「 はいけないところを定義 ブレーキ アクセル + “もの“(オブジェクト)を再利用する ルール「___」 再利用方法と使い方を定義 (混乱が起きないように) 新型車 = 低燃費 エンジン + 従来車の 基本部分 “もの“(オブジェクト)の機能拡張をする ルール「________」 エンジン 基本部分 機能拡張するための抽象 化と拡張ルールを定義 エンジン モータ ハイブ リ ド車 = 空転 再生 リッド車 = 空転可能 + 再生可能オブジェクト指向言語の特徴
オブジェクト指向の
3大要素
1 カプセル化(
)
(カプセル化、継承、ポリモーフィズム)1. カプセル化(_______)
“もの“の特性と動作をまとめて大きな______部品を作り, かつアクセス範囲を限定して部品の独立性を高めるための仕組み かつアクセス範囲を限定して部品の独立性を高めるための仕組み “もの“の特性として変化してはならないものを__して守り、 変化する必要のないものを してプログラミングを容易にする 変化する必要のないものを__してプログラミングを容易にする 4オブジェクト指向言語の特徴
2 継承(
)
オブジェクト指向の3大要素
(カプセル化、継承、ポリモーフィズム)2. 継承(______)
ある___のメソッドや変数などの定義情報を別のクラスに取り込 む仕組み。よく似たクラスを作るときに共通部分を定義した む仕組み。よく似たクラスを作るときに共通部分を定義した___ (これを_______と呼ぶ)を用意し,それを「継承する」と宣 言するだけで,定義情報をそのまま利用できるようにすること。 5オブジェクト指向言語の特徴
3 ポリモ フィズム(
)
オブジェクト指向の
3大要素
(カプセル化、継承、ポリモーフィズム)3. ポリモーフィズム(_______)
日本語では「_________」と訳す。継承を抽象化すること で 概念で“もの”をまとめ 機能を変更することを前提としたプログ で、概念で もの をまとめ、機能を変更することを前提としたプログ ラミング手法を指す。このポリモーフィズムの仕組みは,ソフトウエ アに大きな柔軟性をもたらす 「自動車」ではなく、 「4 輪で走行するもの」と抽 輪で走行するもの」と抽 象化することで、継承先 に「動力」を選択する自 由度を与えることとなる 由度を与えることとなる 6オブジェクト指向
オブジェクト指向型言語の歴史と分類
最初は設計思想として提案された(1970年代) ・最初は設計思想として提案された(1970年代) ・1980年代にMicrosoftがC++を発表したが、難しすぎた・1990年代にSun MicrosystemsがJavaを発表したが、普及はいまいち1990年代にSun MicrosystemsがJavaを発表したが、普及はいまいち ・2000年代にWeb発達+Java JDK無料配布で急激に普及した Smalltalk 1970年代 1980年代 1990年代 2000年代 Ruby, Python Perl C Objective‐C C++ Java C# JavaScript Silverlight
Z80 MS‐DOS Windows3.1 WindowsXP ________
Java言語とオブジェクト指向
Javaの開発経緯とその構造
家電製品の制御用 フトウ アとして開発を開始 (1)家電製品は種類が豊富→“もの“基準のオブジェクト指向 家電製品の制御用ソフトウェアとして開発を開始 調理器具 冷却器具 冷蔵庫 冷凍庫 電圧変換 温度制御 冷却サイクル 消費電力 瞬間冷却 加熱器具 冷凍庫 トースター 霜取り 加熱器具 トースター 電子レンジ タイマ機能 加熱制御 焼き加減 電子レンジ “もの”が持つ機能をまとめることで、_____開発の効率化や、 電磁制御 8 次世代開発におけるプログラム構築の_______が可能。Java言語とオブジェクト指向
Javaの開発経緯とその構造
家電製品の制御用 フトウ アとして開発を開始 (2)使われるCPUが様々 →_______搭載でCPU依存を吸収 家電製品の制御用ソフトウェアとして開発を開始 Java Application コンパイル プログラム作成 バイトコード JavaVM JavaVM Applet Webブラウザ + JavaVM JavaVM 9Java開発環境の準備
自宅でできる
Javaの勉強
・Java 2 Platform Standard Edition Development Kit 5.0 JDK 5.0 with Java EE & J2SE runtime
<開発ツール>
JDK 5.0 with Java EE & J2SE runtime
http://java.sun.com/j2se/1.5.0/ja/download.html
*2009/10から JDK6.0に本格移行
・Eclipse IDE for Java EE Developers (Eclipse 3.3) <統合ソフトウェア> http://www.eclipse.org/downloads/ 10
プログラミングスキル習得の秘訣
・インストール方法などはネット情報を参照に。またネット上
イン
ル方法な はネッ 情報を参照 。またネッ
には困ったときやわからないときに参考になるページがた
くさんあります。サンプルも豊富です。ネットで検索しながら
学ぶ方法を身
けま
う
学ぶ方法を身につけましょう。
・プログラムは眺めていても身につきません。まずはやる気
を出すために、環境を整えましょう。なにか読本やネット講
座を一つ選んで、最後までやりきることが重要です。
・プログラミングは教えてもらって学ぶものではありません。
自分で学び、習得していくものです(他の学業と違う)。
この授業では短期間に習得するための手助けをしますが、
細かいところは省略します。必ず自習をしてください。
参考文献
http://www javaroad jp/index basic htm
http://www.atmarkit.co.jp/im/carc/serial/object02/object02.html http://itpro.nikkeibp.co.jp/article/lecture/20061204/255699/?ST=lecture&P=2 http://www.javaroad.jp/index_basic.htm http://www.javaroad.jp/opensource/js_eclipse1.htm 12
第
2回 java基本技術講義
基本文法
Java基本文法
13Java文法の概要
歴史的に見ても
C言語に近い→進化→便利になっている
C C++ Java C言語とほとんど変わらない基本文法 C言語とほとんど変わらない基本文法 ・変数種類 型 デフォルト値 サイズ 演算子 演算文の簡略 記入例 同様な書き方 += x += y x = x + y 演算子 演算子 記入例 説明 if else文を簡略化した記述方法 記入例ではxがtrue byte 0 8bit short 0 16bit 算術演算子 += x += y x = x + y -= x -= y x = x - y *= x *= y x = x * y / / / ・演算子 ? : x ? y : z if-else文を簡略化した記述方法。記入例ではxがtrue のときyを実行し、xがfalseのときはzを実行 [ ] x[0] 配列関連の記述に使用。記入例ではx配列のインデッが 素を表す ・Java演算子 int 0 32bit long 0 64bit float 0 0 32bit /= x /= y x = x / y %= x %= y x = x % y ビ 演算&= x &= y x = x & y
[ ] x[0] クス番号が0の配列要素を表す。 . x.y オブジェクトの限定名を記述する際に使用。記入例 はxオブジェクト内のyインスタンス変数の参照など と見る とが きる float 0.0 32bit double 0.0 64bit char ¥u0000 16bit
ビット演算子 |= x |= y x = x | y ^= x ^= y x = x ^ y <<= x <<= y x = x << y と見ることができる。 (型) (int)x 値を指定された型に変換する際に使用。記入例は値xをint型に変換することを表す。 ブジ 際 算 14 boolean false 1bit
シフト演算子 >>= x >>= y x = x >> y >>>= x >>>= y x = x >>> y __ ____ オブジェクト・配列を生成する際に使用する演算子。 記入例はxクラスのオブジェクトの生成を表す。
Java文法の概要
C言語とほとんど変わらない基本文法・for文 ・do while文
for (初期化; 条件; 更新) { 文(複数可) while (式) { 文(複数可) ・if文 文(複数可) } 文(複数可) } do { it h文 文(複数可) } while (式); if (式) { 文(複数可) } else { ・switch文 } { 文(複数可) } switch (式) { case 値: 文(複数可); break; 値 文(複数可) case 値: 文(複数可); break; case 値: 文(複数可); break; default: 文(複数可); break; } }
Java文法の概要
C言語とちょっと違う標準入出力 標準出力 System.out.print(“a+b=”+c+”です”); ・標準出力 printf(“a+b=%dです”, c); C言語 Java言語 +でつなげる ・標準入力 . は______ int a; scanf(“%d”, &a); C言語 確かにC言語の&(アドレス演算子,ポインタ) は理解しにくいものですが… みなさんがわからんわからん言うから Java int a; St i t Java言語 みなさんがわからんわからん言うから,Java ではこんなに複雑になってしまった… String str;BufferedReader d = newBufferedReader(newInputStreamReader(System.in)); str = d.readLine(); a =Integer parseInt(str); 16 a = Integer.parseInt(str);
そう!Javaでは____がありません!
Javaの実践
プログラミングは座学ばかりでも仕方がない
…動かそう!
(1)Eclipseの起動 プログラムからEclipseを起動 Workbenchをクリック (2)新規プロジェクトの作成 Workbenchをクリック ファイル-新規-プロジェクトを選択 (3)プロジェクトの設定 ァ 新規 ク を選択 Javaプロジェクトを選択→次へ プロジェクト名:Hello JRE プロジェクト固有→5.0を選択 終了(F)をクリック( ) 17Javaの実践
(4)mainクラスの作成 (4)mainクラスの作成 Helloを右クリックして, 新規→クラス 名前にHelloと入れ 名前にHelloと入れ, 修飾子:public public … mainにチェック 終了(F)をクリック (5)打ち込み 終了( )をクリック 右のように打ち込み (6)実行 右のように打ち込み 実行→実行 →Javaアプリケーションを選択 コンソールに文字が出たら成功 18Javaの実践
練習問題1
S プロジ クトの下に 以下のS T tクラスを作成しなさい import java.io.*; l S T t{ Scanプロジェクトの下に,以下のScanTestクラスを作成しなさい class ScanTest{public static void main(String[] args) { int a,b,wa;
String str; String str;
BufferedReader d = new BufferedReader(new InputStreamReader(System.in)); str = d.readLine();
a = 2; a = 2;
b = Integer.parseInt(str); wa = a+b;
System out print("a+b="+wa); System.out.print( a+b +wa); }
Javaの実践
最初はいろいろ赤字のメッセージ がでるが 気にしないで全てを打ち込む がでるが,気にしないで全てを打ち込む 修正1. d readLine()の×をクリックして d.readLine()の×をクリックして try/catchで囲むを選択 修 修正2. b=Integer….の×をクリックして 変数の初期化を選択 実行 実行→実行 →Javaアプリケーションを選択 コンソールに数字を入れ, 正解が出ますか? 20Javaの実践
練習問題1の解説
* C言語の#includeと同じ import java.io.*;public class ScanTest {
public static void main(String[] args) { int a b wa; C言語の#includeと同じ main文宣言(最初に読まれる) int a, b, wa; String str = null; B ff dR d d B ff dR d ( I tSt R d (S t i )) Stringクラス インスタンス化 BufferdReaderクラスのコピー を”d”として作ります
BufferedReader d = new BufferedReader(new InputStreamReader(System.in)); try { str = d.readLine(); } catch (IOException e) { 例外処理です Javaではプログラムの正常動 作を妨げる 能性 ある部分 } catch (IOException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } 2 作を妨げる可能性のある部分 については必ず例外処理が必 要となる a = 2; b = Integer.parseInt(str); wa = a+b; System.out.println("a+b="+wa); Integerクラス インスタンス化 クラスについては 21 System.out.println( a b wa); } } インスタンス化,クラスについては 次週に説明します
Javaの実践
練習問題
2
以下の指定に基づき プログラムを作成しなさい 以下の指定に基づき,プログラムを作成しなさい プロジェクト名:Search クラス名:MaxMin クラス名:MaxMin 動作:5つの正の整数をキーボードから入力させ,その中の 最小値 最大値をコンソール上に表示しなさい1年 プログラミング基礎の問題です…
最小値,最大値をコンソ ル上に表示しなさい. 22Java文法の補足
文字列
C言語の場合 文字列の宣言は h で行われたが h は数字も扱える C言語の場合,文字列の宣言はcharで行われたが,charは数字も扱える Java言語では文字列専用のCharacter、String、StringBufferが用意されている. 文字関連の関数を集めたもの(クラス) (例)St i の場合 文字関連の関数を集めたもの(クラス) (例)Stringの場合 生成 宣言 クラスとは変数宣言と関連する関数の集合体であり 後ほど勉強するString aaa = "This is an index."; int point = aaa.indexOf("index");
クラスとは変数宣言と関連する関数の集合体であり,後ほど勉強する
Java文法の補足
数値データ
数値デ タは変数と関数(メソ ド)の両方を持 ている 数値データは変数と関数(メソッド)の両方を持っている. 変数型 (例)intの宣言 生成 変数型 宣言 生成 関数例 int i1 = 125;; Integer i2 = 126;Integer i3 = new Integer(127); Integer i4 = Integer.valueOf("128"); 便利にした分, 混乱しやすい… 24
Java文法の補足
配列
CPU内の配列の持ち方はC言語と同じである CPU内の配列の持ち方はC言語と同じである. 配列の記述方法はStringとよく似ている 生成 宣言 int[] intArray; String[] stringArray;double[] doubleArray = new double[10];
最初に初期化する場合は{}でデータを記述する
double[] doubleArray = {1.05d, 1.06d, 1.07d};
25 String[] stringArray = {"Sunday", "Monday", "Tuesday"};
Java文法の補足
配列の参照,代入
C言語と同じように代入 参照が可能 C言語と同じように代入,参照が可能
int intArray[] = new int[10]; intArray[5] = 50; intArray[5] 50; System.out.println(intArray[5]); Java配列は0番目から
2次元配列
表記方法が違うが機能はC言語と同じint[][] int2Array = new int[10][5]; String[][] string2Array
= { {"Sunday", "Monday"}, {"Monday", "Tuesday"} };
26