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

Microsoft PowerPoint Java基本技術print1.ppt[読み取り専用] [互換モード]

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint Java基本技術print1.ppt[読み取り専用] [互換モード]"

Copied!
14
0
0

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

全文

(1)

第1回 Java基本技術講義

よるオブジ クト指向

Javaによるオブジェクト指向

0

プログラミング構造

多くの言語は____されたプログラムである

(1年生から学んできたC言語も含めて)

ハ ド動作に近いルール化容易

( 年生から学んできたC言語も含めて)

ハード動作に近い ミスを見つけやすい

但し プ グ ム自体も大規模になり

が重要

但し、プログラム自体も大規模になり、__と___が重要

Windows 95 1500万行、Windows XP 3500万行、Windows Vista 5000万行

型プ グラミングが注目されるようにな た

1

(2)

オブジェクト指向プログラム

オブジェクト指向型プログラミングとは?

“動作”を“もの”に関連付けて 個々のプログラムを作成する動作 を もの に関連付けて、個々のプログラムを作成する (例)構造化プログラミング (例)オブジェクト指向プログラミング Sinを計算 Sin式 Degで計算 θで計算 ________ 結果を表示 表示画面 保存ファイル θで計算 数値表示 グラフ表示 結果を保存 保存ファイル 表 Text形式 Bmp形式

自律分散・協調動作プログラミングとも考えられる

_________ _____ 2

自律分散 協調動作

グラ ング も考えられる

オブジェクト指向プログラム

オブジェクト指向のプログラミング

“もの“(オブジェクト)を組み合わせる ルール「______」 自動車 使っていいところと使って はいけないところを定義 エンジン ハンドル タイヤ = + + “もの“(オブジ クト)を再利用する 「 はいけないところを定義 ブレーキ アクセル + “もの“(オブジェクト)を再利用する ルール「___」 再利用方法と使い方を定義 (混乱が起きないように) 新型車 = 低燃費 エンジン + 従来車の 基本部分 “もの“(オブジェクト)の機能拡張をする ルール「________」 エンジン 基本部分 機能拡張するための抽象 化と拡張ルールを定義 エンジン モータ ハイブ リ ド車 = 空転 再生 リッド車 = 空転可能 + 再生可能

(3)

オブジェクト指向言語の特徴

オブジェクト指向の

3大要素

1 カプセル化(

(カプセル化、継承、ポリモーフィズム)

1. カプセル化(_______)

“もの“の特性と動作をまとめて大きな______部品を作り, かつアクセス範囲を限定して部品の独立性を高めるための仕組み かつアクセス範囲を限定して部品の独立性を高めるための仕組み “もの“の特性として変化してはならないものを__して守り、 変化する必要のないものを してプログラミングを容易にする 変化する必要のないものを__してプログラミングを容易にする 4

オブジェクト指向言語の特徴

2 継承(

オブジェクト指向の3大要素

(カプセル化、継承、ポリモーフィズム)

2. 継承(______)

ある___のメソッドや変数などの定義情報を別のクラスに取り込 む仕組み。よく似たクラスを作るときに共通部分を定義した む仕組み。よく似たクラスを作るときに共通部分を定義した___ (これを_______と呼ぶ)を用意し,それを「継承する」と宣 言するだけで,定義情報をそのまま利用できるようにすること。 5

(4)

オブジェクト指向言語の特徴

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 ________

(5)

Java言語とオブジェクト指向

Javaの開発経緯とその構造

家電製品の制御用 フトウ アとして開発を開始 (1)家電製品は種類が豊富→“もの“基準のオブジェクト指向 家電製品の制御用ソフトウェアとして開発を開始 調理器具 冷却器具 冷蔵庫 冷凍庫 電圧変換 温度制御 冷却サイクル 消費電力 瞬間冷却 加熱器具 冷凍庫 トースター 霜取り 加熱器具 トースター 電子レンジ タイマ機能 加熱制御 焼き加減 電子レンジ “もの”が持つ機能をまとめることで、_____開発の効率化や、 電磁制御 8 次世代開発におけるプログラム構築の_______が可能。

Java言語とオブジェクト指向

Javaの開発経緯とその構造

家電製品の制御用 フトウ アとして開発を開始 (2)使われるCPUが様々 →_______搭載でCPU依存を吸収 家電製品の制御用ソフトウェアとして開発を開始 Java Application コンパイル プログラム作成 バイトコード JavaVM JavaVM Applet Webブラウザ + JavaVM JavaVM 9

(6)

Java開発環境の準備

自宅でできる

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

プログラミングスキル習得の秘訣

・インストール方法などはネット情報を参照に。またネット上

イン

ル方法な はネッ 情報を参照 。またネッ

には困ったときやわからないときに参考になるページがた

くさんあります。サンプルも豊富です。ネットで検索しながら

学ぶ方法を身

けま

学ぶ方法を身につけましょう。

・プログラムは眺めていても身につきません。まずはやる気

を出すために、環境を整えましょう。なにか読本やネット講

座を一つ選んで、最後までやりきることが重要です。

・プログラミングは教えてもらって学ぶものではありません。

自分で学び、習得していくものです(他の学業と違う)。

この授業では短期間に習得するための手助けをしますが、

細かいところは省略します。必ず自習をしてください。

(7)

参考文献

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基本文法

13

(8)

Java文法の概要

歴史的に見ても

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; } }

(9)

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)をクリック( ) 17

(10)

Javaの実践

(4)mainクラスの作成 (4)mainクラスの作成 Helloを右クリックして, 新規→クラス 名前にHelloと入れ 名前にHelloと入れ, 修飾子:public public … mainにチェック 終了(F)をクリック (5)打ち込み 終了( )をクリック 右のように打ち込み (6)実行 右のように打ち込み 実行→実行 →Javaアプリケーションを選択 コンソールに文字が出たら成功 18

Javaの実践

練習問題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); }

(11)

Javaの実践

最初はいろいろ赤字のメッセージ がでるが 気にしないで全てを打ち込む がでるが,気にしないで全てを打ち込む 修正1. d readLine()の×をクリックして d.readLine()の×をクリックして try/catchで囲むを選択 修 修正2. b=Integer….の×をクリックして 変数の初期化を選択 実行 実行→実行 →Javaアプリケーションを選択 コンソールに数字を入れ, 正解が出ますか? 20

Javaの実践

練習問題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); } } インスタンス化,クラスについては 次週に説明します

(12)

Javaの実践

練習問題

2

以下の指定に基づき プログラムを作成しなさい 以下の指定に基づき,プログラムを作成しなさい プロジェクト名:Search クラス名:MaxMin クラス名:MaxMin 動作:5つの正の整数をキーボードから入力させ,その中の 最小値 最大値をコンソール上に表示しなさい

1年 プログラミング基礎の問題です…

最小値,最大値をコンソ ル上に表示しなさい. 22

Java文法の補足

文字列

C言語の場合 文字列の宣言は h で行われたが h は数字も扱える C言語の場合,文字列の宣言はcharで行われたが,charは数字も扱える Java言語では文字列専用のCharacter、String、StringBufferが用意されている. 文字関連の関数を集めたもの(クラス) (例)St i の場合 文字関連の関数を集めたもの(クラス) (例)Stringの場合 生成 宣言 クラスとは変数宣言と関連する関数の集合体であり 後ほど勉強する

String aaa = "This is an index."; int point = aaa.indexOf("index");

クラスとは変数宣言と関連する関数の集合体であり,後ほど勉強する

(13)

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"};

(14)

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

Java文法のまとめ

Java基本文法を学んで…利点は

・C言語とほとんど変わらない基本文法 ・C言語で使用者が苦手とした部分を改善(ポインタの排除)C言語で使用者が苦手とした部分を改善(ポインタの排除) ・C言語で使用者が間違いやすい部分を改善(文字列)

Java基本文法を学んで…欠点は

・ポインタなどを回避しているので複雑な表現 ・クラスってちょっと不気味(直感的ではないという点)

Javaが簡単・便利だと考えられ,いろんな本やwebで取り上げら

れているが,決して簡単ではない.むしろ,

C言語より奥が深い…

参照

関連したドキュメント

Ando, “High-speed atomic force microscopy shows dynamic molecular processes in photoactivated bacteriorhodopsin.,” Nat. Ando, “Structural Changes in Bacteriorhodopsin in Response

Ando, “High-speed atomic force microscopy shows dynamic molecular processes in photoactivated bacteriorhodopsin.,” Nat. Ando, “Structural Changes in Bacteriorhodopsin in Response

医学部附属病院は1月10日,医療事故防止に 関する研修会の一環として,東京電力株式会社

主として、自己の居住の用に供する住宅の建築の用に供する目的で行う開発行為以外の開

このため、都は2021年度に「都政とICTをつなぎ、課題解決を 図る人材」として新たに ICT職

国の5カ年計画である「第11次交通安全基本計画」の目標値は、令和7年までに死者数を2千人以下、重傷者数を2万2千人

充電器内のAC系統部と高電圧部を共通設計,車両とのイ

開発途上国の保健人材を対象に、日本の経験を活用し、専門家やジョイセフのプロジェクト経 験者等を講師として、母子保健を含む