DVIOUT-oolin

Size: px
Start display at page:

Download "DVIOUT-oolin"

Transcription

1 オブジェクト指向 操作対象の理解と言語の効率性 プログラム理論と言語 Part2-1-1 関連したデータの塊を1つの もの として認識 (1) クラス= もの と もの に付随した操作系 (2) クラスのことはクラス内部で処理ブラックボックス化し 外部仕様を明確化 部品としての再利用 安全性 (3) もの と処理の独立性を高め処理も部品化操作そのものでなく 操作の型情報のみで処理を記述 コードの抽象化 再利用 役割 機能と もの を分離し独立性を高める (4) 複雑さに対処するために階層として体系化 修正 追加 利用 ( 特にライブラリ ユーティリティ ) 人の対象理解 言語的表現と合致する特に個別事例に依存しない抽象表現 言語の効率性 1

2 JAVA はオブジェクト指向言語か? その気になれば オブジェクト指向でプログラムが書ける一般に長くなるが 可読性 安全性 再利用性は高まるそうでないプログラムも書ける 体系的でない ものも多い簡単な場合はそれでもすむが 複雑になると 修正 拡張 再利用が困難プログラムを書くという観点からは オブジェクト指向は処理対象と処理を体系化するための作法であり オブジェクト指向言語はそのための言語的装置 (*) (*) 本講義において Java を題材にする理由 : 1. オブジェクト指向の主要な概念は全て Java で説明できること 2. プログラム言語において重要な型概念を十分に講述できること 3. 様々な場所で実際に良く使われている言語であること 4. CS 実験等をとおして C 言語の理解が進みつつあることを考慮し C と構文的に近いオブジェクト指向言語であること ポインタについて : Java: 実際は ポインタのお化け状態 ポインタを駆使するプログラミングは一般に難しい Java: 比較的に安全にかつ容易に実現本講義 : 上記の事情をある程度説明する 2

3 はじめにオブジェクトありき まず処理において如何なるオブジェクトが必要かを考える対象の分析 理解 その理解を言語的に顕在化させるプロセス もの の定義書としてのクラス もの に付随したメソッド( 演算 基本操作 ) 群 メソッドを持つ もの として体系的に扱うその後に メソッドにより もの を操作 処理する手続きオブジェクト指向言語 =オブジェクト定義 操作言語では もの とは何か? 哲学論議はここではしない計算機の中での出来事 メモリ上の構造物として表現 翻訳される もの 3

4 配列 : プログラミングにおいて不可欠な もの これも立派なオブジェクト int[] a; a = new int[3]; データの集まり {a[0], a[1], a[2] を1つの配列として纏めて扱う new int[3] : 配列領域を割当 生成配列は要素から構成され 添字を与え要素へアクセス特に a は領域全体の名前 ( 参照 ) 領域を生成する仕掛け一般のオブジェクト : フィールド名を持つ要素からなり添字の代わりにフィールド名 ( 変数 ) で要素にアクセス特定のデータ領域を占有し 領域全体はオブジェクト参照変数で参照領域生成は コンストラクタ で行う 4

5 3 角形は 3 つの点からなる : まず 点 を定義 定義は対応するクラスの記述で与えられる class Point { // フィールド変数 double x, y, weight; // コンストラクタ ( 生成方法 ) Point(double x, double y, double w) { this.x=x; this.y=y; weight=w; // インスタンスメソッド // 各オブジェクトに直接作用フィールドアクセス : void show() { this からは フィールド名 x System.out.println( 一般に a.x "x="+x+", y="+y+ Point a が参照している " with weight "+weight); オブジェクトの x フィールド 識別子が特定する位置の実体に対し x のフィールド値をとりだす Note: オブジェクトはCの構造体 参照変数は構造体型のポインタ変数に対応する メソッド ( 関数 ) と一体化して使う点がオブジェクト指向を表しているが 上記の図ではその事情を十分説明できていない ( インスタンスの図 ) 後で詳しく述べる 5

6 C の構造体 オブジェクトと参照変数はCの構造体とそのポインタと似ている似て ( メモリ上の構造物という点は同じ ) 非なるもの ( 使い方 その作法 安全性に対する配慮が全く異なる ) struct student{ int stnum; char stname[16]; ;... struct student *stpt; /* ポインタ */... stpt->stnum (*stpt).stnum class Student{ int stnum; String stname;... Student st; // 参照変数... st.stnum stpt, st が参照する実体の stnum フィールドをゲット stpt, *stpt を区別参照変数は Student 実体 と考えてよい書き方 非なる点 としては そもそもオブジェクトがメモリの特定の領域を 占有しているか? の問題もある Java: 占有状態 ( システムが管理 ) C: アドレス計算が可能 型チェックが甘い等により上書きの危険性 プログラマの責任 6

7 参照変数はポインタか? - C との比較 答え : 広義の意味のポインタか? Yes C と同じポインタか? アドレス計算を禁止 参照機能に限定 識別子の詳細は 知る必要はない 知ったとしてもその事実をコードに反映できない 識別しアクセスできることが論理レベルで保障されていれば十分 以下 実体を特定できる論理的なものとして識別子を考える 7

8 参照関係と内部状態の変化 厳密表現 :Point の参照変数 aが参照する ( 指す ) オブジェクト略した表現 :Point a ( 単に 点 a) 仮の名前 : 変数と実体の参照関係は動的に変化 内部状態も! 計算過程 : 新規オブジェクトを生成しながら (1) 参照関係の変化 (2) オブジェクトの内部状態の更新上記はメソッド実行時 8

9 メソッド呼出とパラメータ 実体内部状態 : メソッドにより更新され変化実体の識別子 : 何ら変わることはない ( 永続性 *) 識別子 ( 名前 ) と実体は同一視基本データ型の引数 : 値を引数パラメータに代入 ( 値呼出 ) (*) 自オブジェクトを示す参照変数 this への代入 ( 代入式の左辺 ) は禁止で コンパイルエラー 9

10 つぎに 3 角形を定義する class Triangle { // スタティック変数 static final int nofpoints=3; // オブジェクトはフィールドで規定 Point[] points = new Point[nofPoints]; // インスタンスメソッド // オブジェクトに作用する関数 void show() { for (short i=0;i<nofpoints;i++) points[i].show(); // 3 角形に対する show() を点に対する show() を使って定義クラス情報 ( 型 ) で識別 static final int nofpoints=3; クラスに固有 ( インスタンスに依存しない ) 変数でクラスのスタティックメンバーともいう final 指定変数は 上書き不可 ただし 下記の注意が必要となる : 1. 基本データ型 : 文字通り 定数 2. オブジェクト : 参照先オブジェクトは変わらない しかし その内部状態は変更される可能性 定数 にするにはカプセル化が必要 10

11 コンストラクタ ( オブジェクトの占有領域を作成 ) デフォルト生成 : Triangle t = 引数なしの特別な手続き new Triangle(); Point[] points = new Point[nofPoints]; に従い実体を生成し t にセットこの場合 配列領域の確保 ( 割当 ) 明示的な生成 =デフォルト+α Triangle t = new Triangle(p0,p1,p2); 右辺実体 ( の oid) を t にセット Triangle( // 引数付の手続き Point p0, Point p1, Point p2) { points[0]=p0; points[1]=p1; points[2]=p2; クラスのインスタンス化 : コンストラクタを適用し 実体オブジェクトを生成する行為 デフォルトコンストラクタ : 引数なしで Triangle() { クラス定義におけるデフォルトコンスタラクタの扱い明示的コンストラクタを使用しない 宣言せずに使える明示的コンスタラクタを使用 デフォルト Triangle() を使うときはそれも明示する 11

12 定義 生成 操作 オブジェクトの定義をクラス記述で与え コンストラクタでオブジェクトを生成し インスタンスメソッドでオブジェクトを操作する class triangletest { public static void main(string args[]) { Triangle t = new Triangle( new Point(1,2,3), // 各点実体 ( の識別子 ) new Point(4,5,6), new Point(7,8,9) ); // 右辺のオブジェクト ( の識別子 ) を // 左辺の変数 ( に代入 ) に参照させる t.show(); // 3 角形 t に show() を適用 // オブジェクトの操作は手続きで記述 // 手続き的なオブジェクト定義 操作言語 論理型のオブジェクト指向言語 (OOLP) 関数型のオブジェクト指向言語 (Common LISP) この他 オブジェクト指向のデータベース オブジェクト指向の COBOL! などもある 扱うデータの基本単位としてオブジェクトを許すと こうなる 12

13 様々なメソッドの定義と組合せ : 手続きを記述 class クラス名 { // インスタンスメソッド : もの に対する基本操作 または 複合操作 出力型 ( クラス名または基本データ型 ) // ( 基本操作を組合せた操作 ) メソッド名 ( パラメータ型変数名,...) { メソッド本体 ( そのクラスのオブジェクトに対し行う処理 class Point { or オブジェクトがそのメソッドで振る舞う動作の記述 ) double x, y, weight; double length(point p) {// 2 点の距離 return Math.sqrt(Math.pow(x-p.x,2)+Math.pow(y-p.y,2)); // sqrt: 平方根 pow: べき乗 Math クラスで定義... class Triangle { static final int nofpoints = 3; // 大域変数 ( 定数 ) Point[] points = new Point[nofPoints]; // double sumoflength() {// 3つの辺長の総和 double sumoflength = 0.0; for (int i=0;i<nofpoints;i++) // i++ は i=i+1 の略記 sumoflength += points[i].length(points[(i+1)%nofpoints]); return sumoflength; // 整数 n, m に対し n % m は m を法とした剰余 public static void main(string args[]) { Triangle t = new Triangle( new Point(1,2,3), new Point(4,5,6), new Point(7,8,9) ); if (t.checktriangle()) System.out.println(" 辺の長さの総和 = "+ t.sumoflength()); else { System.out.println("3 角形ではありません 要データチェック "); t.show(); ; 13

14 用語の整理 1: インスタンスとオブジェクト オブジェクト : 操作の 対象 で 占有領域 ( インスタンス ) とそれを処理するメソッドを持つ C でも構造体のインスタンス化は行う しかし そのインスタンスは関数 ( メソッド ) と言語的に一体化しているわけではない プログラマが必要に応じて そのインスタンスへのポインタを関数に渡して適用 操作するだけの話 一方 Java では 最初からインスタンスはメソッドと一体化されて扱われることが大前提であり そのことがクラス定義で明示される それは体系的に操作対象を扱うための流儀であると理解すること 14

15 操作により もの をクラス分けする オブジェクトがどのようなメソッドを使用できるかはクラス定義で決まる 逆に言えば 各オブジェクト毎にメソッドを定義し保持するのは不経済オブジェクト毎に異なるメソッドが必要な場合 : 別クラスの もの メソッドがクラスを特徴づける 上図における 人 は識別子と考えてもよい 以後 概念図において 人 記号は 識別子もしくはインスタンス とする 15

16 カプセル化 クラスの利用 クラス間相互作用は一般に複雑化外部仕様 : クラスとは? のメソッドを持つ もの ~ メソッド中心の設計仕様と実装の分離独立化 仕様に関わるメソッドのみ公開外部からは公開メソッドのみで操作 内部的な実装は private に隠蔽し独立に管理 オブジェクト指向はさらなる構造化を促す : 独立したクラスの列挙から 構造化されたクラス群 1. クラス階層 インタフェース階層 2. 内部クラス ( 一般にはクラスの nesting) 16

17 アクセス制御の原則 フィールドは原則 private に ( 不用意なアクセスによる状態参照 更新を抑制する ) ゲッター getattr() +セッター setattr(...) メソッドに対するアクセス制御同一パッケージ ( 同一ディレクトリ ) を想定した場合 : 無修飾のメソッド : パッケージ内で公開 private メソッド : クラス内のみで有効一般には パッケージの作り方に依存 ( 特に public) 複数のパッケージ ( 複数のディレクトリ ) の場合 : public: 全てに公開 protected, final: クラス階層導入時 むやみに意味もなく public をつけない! パッケージ配布 公開の際の外部仕様ソースコード解読時の構文上の情報 インタフェースの定数とメソッドは must be public protected: パッケージ内 + 下位クラスに公開 final 定数 メソッド : 上書きを許さない クラスに対しても public, private, final 無修飾等の修飾が可能. 例えば public にしないと他パッケージから利用できない final にすると 継承 拡大を許可しない 17

18 パッケージと public の例 18

19 リスト : 再帰とカプセル化の例 再帰的構造は 型 で表現 ( インタフェース 後述 ) リスト ( 要素の並び )x 1,x 2..., x n boolean empty(); int head(); List tail(); List cons(int x); フィールドは上記を満たすべく設計実現手法に依存 ( 配列 ポインタ...) class List { int head() {return element; private int element; List tail() {return tail; boolean empty() {return tail == null; private List tail;// 生成時の初期値は null List cons(int x) {// this は自オブジェクト ( の識別子 ) List list = new List(); list.element = x; list.tail = this; return list; // this =...; はコンパイルエラー ( 識別子と実体の1 対 1 関係 ) 19

20 // list の付加的なメソッド定義 int sum() {// 再帰の構造はデータ構造と一致 if (empty()) return 0; else return head() + tail().sum(); // Note: 停止性 正当性は長さに関する数学的帰納法 void show() { if (tail == null) System.out.println(); else { System.out.print(element+", "); tail.show(); ;// ここでは show() と sum() は List で定義 //List の応用として別クラスのメソッド (static or not) でも良い class test { public static void main(string args[]) { List list = new List();// デフォルトコンストラクタ for (short i=0;i<args.length;i++) list = list.cons(integer.parseint(args[i])); list.show(); System.out.println(" sum=" + list.sum()); 20

21 ネータ帰納法 クラス C の実体の集合を単に C と書く (C, ¹) が順序集合 (poset) とする ( 順序の決め方は一意ではないが 実体間の部分構造関係があれば 自然に順序がはいる ) (C, ¹) :well-founded 無限下降列 def... x i 1 x i... x = x 0 が存在しないリストの場合 :[element == any, tail == null] が極小元 int element = 0; と初期化しておけば [element == 0,tail == null] が最小元ネータ帰納法 : P (x) : 証明したいこと x C ( y C(y ¹ x P (y)) P (x)) x C P(x) 線形リストは 特殊ケースである数学的帰納法部分構造関係 ~ 要素数の大小関係 21

22 構造帰納法 x C ( y C(y ¹ x P (y)) P (x)) x C P(x) ネータ帰納法が必要な場合例 : 木に対するメソッド class BinaryTreeNode { private Content content;// ノードが保持する情報 // 別クラスで定義 private BinaryTreeNode leftchild, rightchild; boolean leaf() { return leftchild==null && rightchild==null;...// 部分木 木の順序 // 極小元は 葉 最大元は 根以下の木 22

23 クラス間相互作用の例 class Polygon { private Point stdp; private Point[] points; Point getstdp() { return stdp; // アクセスメソッド... class Point { private double x, y; private Polygon cp;// 帰属多角形 boolean steeper(point ap) { return cp.getstdp().slope(ap) < cp.getstdp().slope(this); double slope(point ap) { 図における人は実体オブジェクトで 矢印は 実体間の参照 ( フィールドの実現値 ) 関係を表す 識別子間の参照関係が形成される 1. メモリ上の現象としては ポインタのお化け 2. 理論上は 複雑なグラフ 次ページの部分クラスは 参照関係の複雑さを軽減させる効果がある 23

24 内部クラス : 複雑さを軽減させるための構造化 class Polygon {// 内部クラス Point の外部クラス private Point stdp; private Point[] points;... class Point {// 多角形の内部クラス 点実体は多角形実体の属性にアクセス可 private double x,y; // 点の実体化は多角形の実体 cp の中で行う (*) boolean steeper(point ap) { return stdp.slope(ap) < stdp.slope(this);... // カプセル化を壊さずに 記述が簡潔化 // クラス間の編成上 組織上の構造を明示 後述のクラス階層とは別 (*) 実体の中に実体を作る ~ 占有領域の中でインスタンス化すると理解 Polygon のコンストラクタで多角形をインスタンス化する際 もしくは Polygon のインスタンスメソッド中で点をインスタンス化 A 外 B 内 B 外 C 内 のような外部 内部が層化される場合 外側の実体から順次生成する (A の実体から C のコンストラクタは直接呼び出せない ) 実体化に関する制限と メンバアクセスの話は別 メンバーを隠蔽するには きちんと private をつけておく 内部クラスを始め 構造化のための言語的諸機能はオブジェクト指向の大きな特徴 24

25 用語の整理 2: obj.m(p1,.., pn) の読み方 オブジェクト obj に対し メソッド m(p1,.., pn) を適用 obj に対し m(p1,.., pn) を実行 オブジェクト obj に対し メソッド m(p1,..,pn) を呼び出す メソッドはオブジェクトの所有物本講義では 特に区別しないこの他 オブジェクトをエージェント ( 処理主体 ) と考え オブジェクトにメッセージを送る 25

26 メッセージパッシング オブジェクト obj ( レシーバ ) に メッセージ m をパラメータ p1,.., pn で送る 送られた方は m を処理するメソッドを持つメッセージ ~ メソッド class Teacher {... void assignrept(student st, Task task) { Answer ans = st.report(task); // st に report せよ との // メッセージを発信し // 結果を ans で受ける if (ok(ans)) {... else {...;... class Student { // メッセージを受けたときの // 動作 ~ メソッドそのもの Answer report(task task) {... Answer myanswer = new Answer(...); return myanswer; // 解答を myanswer で返す 実際の例題は FA のシミュレーション (statisfa.java, fa.java) で示す 26

27 メッセージパッシング例 各状態をオブジェクトに状態は 受理 / 非受理の情報を持つ入力記号列 str を受け取り 次の状態に処理依頼のメッセージを投げ 以降の処理を委ねる class State { private static final short nofsymbols = 2; // 入力記号は {0,1 private String name; private boolean accept; // 受理状態情報 private State(String n, boolean f) {name = n; accept = f; private State[] nextstates = new State[nofSymbols]; void definenextstate(state next0, State next1) { nextstates[0] = next0; nextstates[1] = next1; private short head(string str) {return Short.parseShort(str.substring(0,1)); private String tail(string str) {return str.substring(1,str.length()); private void process(string input) { if (input.length()!=0) nextstates[head(input)].process(tail(input)); else if (accept) System.out.println("OK"); else System.out.println("NG"); public static void main(string args[]) { State q0 = new State("q0", false); State q1 = new State("q1", false); State q2 = new State("q2", true); State q3 = new State("q3", false); q0.definenextstate(q1, q3); q1.definenextstate(q3, q2); q2.definenextstate(q1, q3); q3.definenextstate(q3, q3); q0.process(args[0]); 27

28 Definition of A: A consists of B 1, B 2,... オブジェクト指向 : 言語的な定義のスタイルに対応 Aの定義書 : クラスAのオブジェクトはクラス (or 基本型 )B j のフィールドからなり のメソッドを使って操作します ( 構成要素 (part of, has_a 関係 ) クラスのメンバー A isa B, ora is defined as a B such that... A extends B... AはBを継承し拡大 Aに固有なフィールドやメソッドを追加 A has a role/function of B B: インタフェース A implements B 機能を持つ ~ 役割 機能を実現する手段 メソッドを具体的に持つ ( 実装 ) 多態性 ( ポリモルフィズム ) 様々な役割や機能を実装クラスで記述 ( クラスと機能の分離 独立化を促進 ) 28

29 クラス定義のまとめ class Point { private double x,y; Point(double x, double y) { this.x = x; this.y =y; void show() { System.out.println(" x="+x +", y="+y); class Triangle { private static final int nofpoints=3; private Point[] points = new Point[nofPoints]; private Triangle(Point p0, Point p1, Point p2) { points[0]=p0; points[1]=p1; points[2]=p2; private void show() { for (short i=0;i<nofpoints;i++) points[i].show(); public static void main(string args[]) { Triangle t = new Triangle( new Point(1,2), new Point(4,5), new Point(7,8) ); t.show(); //void main(string[]) は // ここでは Triangle に組み込んだ 実行時 : クラスは生成されたオブジェクトの集まり + 大域変数 (static variable) の値を管理 コンパイル時 : オブジェクトの定義書として記述の集まり 記述は クラスのメンバー ( 構成要素 ) と呼ばれる変数やメソッドの各々に対し行われる フィールド変数 : オブジェクトの属性基本データ型もしくはオブジェクト参照変数フィールド記述がコンスラクタのデフォルト動作を決める インスタンスメソッド : オブジェクトに直接作用する手続きオブジェクト : this で表記 ( 必要ならば ) スタティック (static) メンバースタティック変数 : クラスが保持し 各オブジェクトに依存しない変数スタティックメソッド : オブジェクトに依存しない手続き public static void main(string args[]) java クラス名引数そのクラスの main が実行される クラス毎につけてよい型は void main(string[]) 引数型を別にすると オーバーロード 左記では main は Triangle のメンバー別クラスで main を動作させる場合 Triangle(...) と void show() の private 指定は外す ( メソッドにアクセスできないから ) 29

30 スタティックメンバーについて オブジェクト指向では 先んずオブジェクトとクラス設計その次に手続き等の設計個々のオブジェクトに依存しない定数 変数 メソッドがあれば スタティックメンバーにする具体にスタティックメンバーが必要となる場面例 : コンストラクタに準じた作用を持つメソッドクラス固有の定数やオブジェクト (static final) 個々の もの に依存しないクラス固有の処理手続き基本データ型に関する型変換や数値関数など ラップクラス や Math で提供される int Integer.parseInt(String), double Math.sqrt(double) 30

31 再帰呼び出しに関する補足 C 同様 Java でも再帰は (static, instance methods ともに ) 使える 関数型でやったようなスタイルでのメソッド定義もOK 処理系からみると 再帰と非再帰の区別は全くない! 一般形 f の定義本体中で別のメソッド g を呼び出す再帰特に g = f なだけで何ら処理は変わらない ただし 計算量に注意すること // フィボナッチの数列 f(n)=f(n-1)+f(n-2), f(1)=f(0)=1 class Fibonacci{ static int rec_fib(int n) {// この場合 指数爆発 if (n==0 n==1) return 1; return rec_fib(n-1)+rec_fib(n-2); static int it_fib(int n) {// 繰り返し // 定数領域 線形時間 if (n==0 n==1) return 1; int nminus1 = 1, nminus2 = 1, tmp; for (int i=1;i<n;i++) { tmp = nminus1; nminus1 = nminus1 + nminus2; nminus2 = tmp; ; return nminus1; 31

32 スパゲッティプログラム : よくあるパターンその 1 static void main(string args[]) で全てを書こうとし補足的に static メソッドを用いる スパゲッティプログラムへの道 処理対象と手続きの両方が構造化されていないため バグとり 修正 再利用 機能の追加が困難 書き直した方が早い 修正箇所 機能追加 デバッグ箇所を特定しずらく ズルズルと全体がついてくる スパゲッティ ( 結局 多くの箇所を 食べないとダメ もしくは 切るのが大変 ) 32

33 スパゲッティプログラム : よくあるパターンその 2 Cで書いていたとき 構造体とポインタに苦手意識があり その惰性でつい配列だけで書いてしまう 関連する配列や変数がばらばらで 関連性を見出すためには スパゲッティ状態 コメントをつけて対処する人も多い コメントはダラダラとつければ良いというものでない OOPL 構造体と参照は簡単にかつより安全にカプセル化できる : クラスを定義し メソッドで実体を処理する 33

34 スパゲッティプログラム 3: 例 static int nofitems = 0; // 商品数 static int[] stock = new int[10000], price = new int[10000]; static String[] itemname = new String[10000];... static void additem(int initialstock, int price, String itemname) { if (nofitems == 10000) { System.out.println("sorry, full list"); return; ; stock[nofitems] = initialstock; price[nofitems] = price; itemname[nofitem++] = itemname; まず 重要な定数 のスパゲティ 後で商品コードも必要になった 追加 : static int[] code = int[10000]; 関連するメソッドの引数や本体部の修正 static void additem( int initialstock, int price, String itemname, int codenumber) {... code[nofitems] = codenumber; さらに 商品コードで商品リストをソート code の値による並び替えで 同時に stock, price, itemname 配列も操作修正箇所が増え しかもその場所が集中しているとは限らない 喩え話 : 中に色々なものが入っている箱を 他に移動するとき ある順序で並び替えるときに 箱の中身をバラバラにして移動 あるいは並べ替えますか? この場合の箱 ~ オブジェクト箱の中身 ~ フィールド クラスによるカプセル化 34

35 OOPL では class Item { private int stock, price; Item(int initialstock, int price) { stock=initialstock; this.price=price;... その他のメソッド... class ItemList { private static int MaxNof = 10000; private int nof = 0; private Item[] list = new Item[MaxNof]; void add(item item) { if (nof!= MaxNof) list[nof++] = item; else System.out.println("full list"); code や name の追加は対応するフィールドとコンストラクタの修正のみ add(item) は修正の必要なし 一般に 参照変数で実体を丸ごと渡すので 関数 メソッドの引数は少なくなる また 例えば ソートのときも item.code の大小関係で 実体そのものを並び替えればそれで OK 例えば実体の交換 : Item tmp = itemlist[i]; itemlist[i] = itemlist[j]; itemlist[j] = tmp; 使い方は 商品名フィールドが追加されたとして 例えば ItemList itemlist = new ItemList(); itemlist.add(new Item(100,1200," 製図用シャープペン ")); 集合やリストは java.util に色々定義されている 自分で適宜定義しても良い インタフェースで話す キャスト を使う class MyList { private static int MaxNof = 10000; private int nof = 0; private Object[] list = new Object[MaxNof]; void add(object obj) { if (nof!= MaxNof) list[nof++] = obj; else System.out.println("sorry, full list"); 35

36 オブジェクト指向のストーリー 最初から 必要なオブジェクトとクラスを切り出す作業 他のクラスとの切り分け 分節化 部品化先んず対象のモデリング 設計 その次にアルゴリズムの設計と解析その次の次にプログラミング技法優れたモデル 優れたパッケージ ( クラスの集合 ) 保守 拡張 利用が楽 36

37 本日の演習問題 1 整数を要素とする線形リスト ( 要素の並びを表し 参照構造が一方向のもの ) について述べた 一方 CS 実験で 双方向リストをCのポインタで実現する課題を行ったと思う 課題の手引書と本講義の線形リスト Java プログラムを参考にし 実験課題に対する Java のクラスを定めよ 37

38 本日の演習問題 2 下記の 2 つのメソッドを当該クラスに追加しなさい ただし ( 平面上の ) 点とベクトルを区別するために ベクトルのクラス MyVector を定義し それを利用した上で下記のメソッドを当該クラスに追加すること 1. Point クラスのメソッド : boolean checkpointonline(point p1, Point p2); パラメータで与えた 2 点と自オブジェクトが一直線上にあれば true, otherwise false. 2. Triangle クラスのメソッド : double computearea(); ベクトルの内積を用いて面積を計算し出力 演習問題解答 : その詳細レベル仕様をかくつもりで 1. クラス名 クラスの各メンバーの仕様 2. 各メンバーの仕様 : (a) 変数であれば その型 ( クラスもしくは基本データ型 ) およびその役割 機能の説明をつける (b) メソッドであれば 出力およびパラメータ型を明記した上で その動作について正確な日本語で記述すること ただし (1) メソッド中で ( 別のオブジェクトに対し ) メソッド呼び出しを行う場合はそのことも明記 (2) スタティックの場合は static を明示 Java 言語の構文で書けるなら なお良い 38

39 本日の演習問題 3: 有限オートマトン 右図は受理機械としての有限オートマトン F A の例である ただし q0 を初期状態 q2 を受理状態とする 受理する言語は {(01) n n 1 1. FA には {0, 1 の入力記号系列が与えられる 2. 各状態で 入力系列 σ 0 σ 1...σ n 1 (n は 入力系列長 ) を受け取る 挙動は : (1) 先頭記号 σ 0 により次の状態 q next を決め (2) q next に残りの入力系列 σ 1...σ n 1 を渡し以後の処理を委ねる 3. 入力系列が空列 ( 記号が残っていない n =0) のときは 最終状態なら 受理 それ以外の場合は 非受理 のメッセージを出力し 全体の処理が終了 課題 : FA の動作を模倣するプログラム ( クラス State) を書くとして 必要なフィールドとメソッドを与え その型ならびにその挙動を説明せよ メソッド中で 別のオブジェクトに対するメソッド呼び出しを行う場合はそのことも明記すること ヒント : 各状態をエージェントと考える ただし 依頼先 ( 次の状態 ) から結果をもらう必要はこの場合ない 完全に処理を委ねる 有限オートマトンは 演習でやったと思うが 自動販売機の状態遷移 モデル 文字列検索における正規表現など 広く使われている 39

1.1 (1) (2) (3) (4) 2

1.1 (1) (2) (3) (4) 2 1 Part2-1-1 1 1.1 (1) (2) (3) (4) 2 2 JAVA (*) Java : 1. Java 2. 3. 4. Java Java 3 3 int[] a; a = new int[3]; new int[3] a i a[i] 32bit a[i] 4 4 class Point { // double x, y, weight; // Point(double x,

More information

DVIOUT-oolin

DVIOUT-oolin オブジェクト 指 向 操 作 対 象 の 理 解 と 言 語 の 効 率 性 プログラム 理 論 と 言 語 Part2-1-1 関 連 したデータの 塊 を1つの もの として 認 識 (1) クラス= もの と もの に 付 随 した 操 作 系 (2) クラスのことはクラス 内 部 で 処 理 ブラックボックス 化 し 外 部 仕 様 を 明 確 化 部 品 としての 再 利 用 安 全 性

More information

DVIOUT-exer

DVIOUT-exer プログラム理論と言語 : 期末試験用問題集 Part2 (2009) 演習問題 2-0 オブジェクト指向言語, とりわけ Java に関する用語の設問をもうける. 重要な語句については復習をしておくこと. 1 演習問題 2-1( レジメ記載の問題を具体化した問題 ) 下記は, 整数 (int) を要素とする線形リストのプログラムである. class IntCell { private int value

More information

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード] 第 3 回 Java 基本技術講義 クラス構造と生成 33 クラスの概念 前回の基本文法でも少し出てきたが, オブジェクト指向プログラミングは という概念をうまく活用した手法である. C 言語で言う関数に似ている オブジェクト指向プログラミングはこれら状態と振る舞いを持つオブジェクトの概念をソフトウェア開発の中に適用し 様々な機能を実現する クラス= = いろんなプログラムで使いまわせる 34 クラスの概念

More information

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name クラス ( 教科書第 8 章 p.267~p.297) 前回は処理をまとめる方法として メソッドについて学習した 今回はメソッドとその処理の対象となるデータをまとめるためのクラスについて学習する このクラスはオブジェクト指向プログラミングを実現するための最も重要で基本的な技術であり メソッドより一回り大きなプログラムの部品を構成する 今回はクラスにおけるデータの扱いとクラスの作成方法 使用方法について説明していく

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt 独習 Java ( 第 3 版 ) 6.7 変数の修飾子 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 Object クラスと Class クラス 6.7 変数の修飾子 (1/3) 変数宣言の直前に指定できる修飾子 全部で 7 種類ある キーワード final private protected public static transient volatile 意味定数として使える変数同じクラスのコードからしかアクセスできない変数サブクラスまたは同じパッケージ内のコードからしかアクセスできない変数他のクラスからアクセスできる変数インスタンス変数ではない変数クラスの永続的な状態の一部ではない変数不意に値が変更されることがある変数

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 基本 Java プログラミング演習 第 13 回 担当 : 植村 今後の予定 7/15 第 13 回 今回 7/22 第 14 回 小テスト ( クラス ) 7/29 第 15 回 総まとめテスト レポート提出 期末テストの時間割に Java のテストの欄がありますが無視してください 再テストはまた別途連絡いたします 2 CHAPTER 11 はじめてのクラス前回の復習 クラスクラスを構成する要素

More information

Microsoft PowerPoint - chap10_OOP.ppt

Microsoft PowerPoint - chap10_OOP.ppt プログラミング講義 Chapter 10: オブジェクト指向プログラミング (Object-Oriented Programming=OOP) の入り口の入り口の入り口 秋山英三 F1027 1 例 : 部屋のデータを扱う // Test.java の内容 public class Test { public static void main(string[] args) { double length1,

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 12 回目クラス 今日の講義で学ぶ内容 クラスとは クラスの宣言と利用 クラスの応用 クラス クラスとは 異なる複数の型の変数を内部にもつ型です 直観的に表現すると int 型や double 型は 1 1 つの値を管理できます int 型の変数 配列型は 2 5 8 6 3 7 同じ型の複数の変数を管理できます 配列型の変数 ( 配列変数 ) クラスは double

More information

プログラミング基礎I(再)

プログラミング基礎I(再) 山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全

More information

Javaプログラムの実行手順

Javaプログラムの実行手順 戻り値のあるメソッド メソッドには 処理に使用する値を引数として渡すことができました 呼び出し 側からメソッドに値を渡すだけでなく 逆にメソッドで処理を行った結果の値を 呼び出し側で受け取ることもできます メソッドから戻してもらう値のことを もどりち戻り値といいます ( 図 5-4) 図 5-4. 戻り値を返すメソッドのイメージ 戻り値を受け取ることによって ある計算を行った結果や 処理に成功したか失

More information

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問 Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問のメソッドを追加する public static void main(string[] args) {

More information

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド メソッド ( 教科書第 7 章 p.221~p.239) ここまでには文字列を表示する System.out.print() やキーボードから整数を入力する stdin.nextint() などを用いてプログラムを作成してきた これらはメソッドと呼ばれるプログラムを構成する部品である メソッドとは Java や C++ などのオブジェクト指向プログラミング言語で利用されている概念であり 他の言語での関数やサブルーチンに相当するが

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション オブジェクト指向 プログラミング演習 第 4 回継承 オーバーライド ポリモルフィズム 今日のお題 継承 オーバーライド ポリモルフィズム 継承 (inherit) あるクラス c のサブクラス s を定義する : このとき s は c を継承していると言う 何かの下位概念を表すクラスは その上位概念を表すクラスの属性や機能を ( 基本的には ) 使える 継承の例 大学生 長崎県立大学の学生 大学生を継承する概念

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション オブジェクト指向 プログラミング演習 第 2 回クラス インスタンス メソッド フィールド コンストラクタ ICPC の宣伝 国際大学対抗プログラミングコンテスト 3 人一組のチームでプログラムを書く速さを競う 国内予選 : ネットワーク上で 6 月末 ~7 月頭 アジア地区予選 : 日本国内で秋に開催 世界大会 :2020 年は 6 月にモスクワで 参加登録締切 : 国内予選の 2~3 週間前 今年は

More information

2004/11/23 オブジェクト指向プログラミング - モデル図とシーケンス図の表現方法 - オブジェクト指向プログラミング (OOP:ObjectOrientedPrograming) オブジェクト指向プログラミング言語 (OOPL) Java,C++,Delphi(Pascal),Visual

2004/11/23 オブジェクト指向プログラミング - モデル図とシーケンス図の表現方法 - オブジェクト指向プログラミング (OOP:ObjectOrientedPrograming) オブジェクト指向プログラミング言語 (OOPL) Java,C++,Delphi(Pascal),Visual オブジェクト指向プログラミング - モデル図とシーケンス図の表現方法 - オブジェクト指向プログラミング (OOP:ObjectOrientedPrograming) オブジェクト指向プログラミング言語 (OOPL) Java,C++,Delphi(Pascal),VisualBasic,smaltalk,Simula オブジェクト指向ソフトウエア開発 ( システム開発 ) システム ( プログラム

More information

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - prog03.ppt プログラミング言語 3 第 03 回 (2007 年 10 月 08 日 ) 1 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 2/33 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/java06/ にアクセスすると 教材があります 2007 年 10 月 08 日分と書いてある部分が 本日の教材です

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅱ 4 回目クラスの機能 (2) コンストラクタ クラス変数 クラスメソッド課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) コンストラクタはメソッドと同様に戻り値をもつ (2) コンストラクタはオブジェクトが生成されると最初に実行される (3) コンストラクタはメソッドと同様にオーバーロードができる (4) コンストラクタは常に public メンバとしなければならない

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション オブジェクト指向 プログラミング演習 第 4 回継承 オーバーライド ポリモルフィズム 今日のお題 継承 オーバーライド ポリモルフィズム 継承 (inherit) あるクラス c のサブクラス s を定義する : このとき s は c を継承していると言う 何かの下位概念を表すクラスは その上位概念を表すクラスの属性や機能を ( 基本的には ) 使える 継承の例 大学生 長崎県立大学の学生 大学生を継承する概念

More information

JAVA入門

JAVA入門 JAVA 入門後期 10 情報処理試験例題解説 H14 年度秋問 8 次の Java プログラムの説明及びプログラムを読んで, 設問に答えよ プログラムの説明 ディジタル論理回路シミュレータを作成するためのクラスとテスト用クラスである (1) ゲートを表す抽象クラス Gate のサブクラスとして, NOT ゲートを表すクラス NotGate 及び AND ゲートを表すクラス AndGate を定義する

More information

メディプロ1 Javaプログラミング補足資料.ppt

メディプロ1 Javaプログラミング補足資料.ppt メディアプロジェクト演習 1 Javaプログラミング補足資料 l Javaとは l JavaScript と Java 言語の違い l オブジェクト指向 l コンストラクタ l 継承 抽象クラス 本資料内のページ番号は, 以下の参考書のページを引用している高橋麻奈 : やさしい Java, ソフトバンククリエイティブ (2,625 円 ) はじめに l プログラミング言語とは? l オブジェクト指向とは?

More information

Prog1_6th

Prog1_6th 2019 年 10 月 31 日 ( 木 ) 実施配列同種のデータ型を有する複数のデータ ( 要素 ) を番号付けして, ひとまとまりの対象として扱うものを配列と呼ぶ 要素 point[0] point[1] point[2] point[3] point[4] 配列 配列の取り扱いに関して, 次のような特徴がある 1. プログラム中で用いる配列変数 ( 配列の本体を参照する参照型の変数 ) は必ず宣言しておく

More information

Java講座

Java講座 ~ 第 1 回 ~ 情報科学部コンピュータ科学科 2 年竹中優 プログラムを書く上で Hello world 基礎事項 演算子 構文 2 コメントアウト (//, /* */, /** */) をしよう! インデントをしよう! 変数などにはわかりやすい名前をつけよう! 要するに 他人が見て理解しやすいコードを書こうということです 3 1. Eclipse を起動 2. ファイル 新規 javaプロジェクト

More information

基本情報STEP UP演習Java対策

基本情報STEP UP演習Java対策 トレーニング編 1. 予約語 extends アクセスレベル class サブクラス名 extends スーパクラス名 { (1) スーパクラス ( 既存のクラス ) を拡張して, サブクラス ( 新しいクラス ) を定義する場合に extends を利用する (2) extends の後ろには, スーパクラスの名前を一つだけ指定できる (3) サブクラスからインスタンスを生成すると, スーパクラスに定義されたインスタンス変数やメソッドがこのインスタンス内部に引き継がれる

More information

メソッドのまとめ

メソッドのまとめ メソッド (4) 擬似コードテスト技法 http://java.cis.k.hosei.ac.jp/ 授業の前に自己点検以下のことがらを友達に説明できますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか

More information

Javaの作成の前に

Javaの作成の前に メディアプロジェクト演習 1 参考資料 Javaとは JavaScript と Java 言語の違い オブジェクト指向 コンストラクタ サーブレット 本資料内のページ番号は, 以下の参考書のページを引用している 高橋麻奈 : やさしい Java, ソフトバンククリエイティブ (2,625 円 ) はじめに プログラミング言語とは? オブジェクト指向とは? Java 言語とは? JavaとJavaScriptの違いとは?

More information

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文 Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文字 0x0000 ~ 0xffff byte 1バイト整数 - 2 8 ~ 2 8-1 short 2バイト整数

More information

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

Javaセキュアコーディングセミナー2013東京第1回 演習の解説 Java セキュアコーディングセミナー東京 第 1 回オブジェクトの生成とセキュリティ 演習の解説 2012 年 9 月 9 日 ( 日 ) JPCERT コーディネーションセンター脆弱性解析チーム戸田洋三 1 演習 [1] 2 演習 [1] class Dog { public static void bark() { System.out.print("woof"); class Bulldog

More information

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - 09.pptx 情報処理 Ⅱ 第 9 回 2014 年 12 月 22 日 ( 月 ) 関数とは なぜ関数 関数の分類 自作関数 : 自分で定義する. ユーザ関数 ユーザ定義関数 などともいう. 本日のテーマ ライブラリ関数 : 出来合いのもの.printf など. なぜ関数を定義するのか? 処理を共通化 ( 一般化 ) する プログラムの見通しをよくする 機能分割 ( モジュール化, 再利用 ) 責任 ( あるいは不具合の発生源

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅱ 8 回目抽象クラスとインタフェース課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) 抽象クラスのオブジェクトは生成できる (2) 抽象メソッドとはメソッドの本体が未定義のメソッドである (3) 抽象メソッドをメンバーにもつクラスは抽象クラスである (4) 抽象クラスを拡張してすべての抽象メソッドをオーバーライドすれば サブクラスのオブジェクトを生成できる

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 9 回 メソッド (3) 授業の前に自己点検 以下の質問に答えられますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 戻り値はどのように利用しますか 変数のスコープとは何ですか

More information

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint - prog04.ppt プログラミング言語 3 第 04 回 (2007 年 10 月 15 日 ) 1 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 2/33 1 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/java06/ にアクセスすると 教材があります 2007 年 10 月 15 日分と書いてある部分が 本日の教材です

More information

スライド 1

スライド 1 第 4 回データの入出力 情報科学部情報メディア学科 鈴木基之 1 前回の演習の答え class CalcMean { public static void main(string[] args){ int a = 10, b = 15; double f; f = ( a + b ) / 2; System.out.println(f); f = ( a + b ) / 2.0; System.out.println(f);

More information

デジタル表現論・第4回

デジタル表現論・第4回 デジタル表現論 第 4 回 劉雪峰 ( リュウシュウフォン ) 2016 年 5 月 2 日 劉 雪峰 ( リュウシュウフォン ) デジタル表現論 第 4 回 2016 年 5 月 2 日 1 / 14 本日の目標 Java プログラミングの基礎 出力の復習 メソッドの定義と使用 劉 雪峰 ( リュウシュウフォン ) デジタル表現論 第 4 回 2016 年 5 月 2 日 2 / 14 出力 Systemoutprint()

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 2 第 8 回表形式データ (1) 1 テーマ : 表形式データ (1) 配列と複合データを用いた表形式データ データの登録 データの検索 データの更新 実際的はソフトウェアでは 表形式データの ( 例えば データベースのデータ ) を利用する場面が非常に多く とても重要である そこで 表形式を扱うプログラミングを繰り返しとりあげる 2 テーマ : 表形式データ (1) 配列と複合データを用いた表形式データ

More information

Java知識テスト問題

Java知識テスト問題 Java 知識テスト SDAS プログラマ(Java 編 ) 運営事務局 このテストは J2EE プログラマとしての Java の知識を評価するものです 問題は 30 問, テスト時間は J2EE 知識テストとあわせて 90 分です 問題は全て択一式です 選択肢から 1 つだけ選択してください 資料の閲覧は禁止です テストが終わり次第 答案用紙を提出していただいてかまいません テスト終了後, 本テストの内容を他の方に話さないでください

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 講座準備 講座資料は次の URL から DL 可能 https://goo.gl/jnrfth 1 ポインタ講座 2017/01/06,09 fumi 2 はじめに ポインタはC 言語において理解が難しいとされる そのポインタを理解することを目的とする 講座は1 日で行うので 詳しいことは調べること 3 はじめに みなさん復習はしましたか? 4 & 演算子 & 演算子を使うと 変数のアドレスが得られる

More information

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

コンピュータ中級B ~Javaプログラミング~  第3回 コンピュータと情報をやりとりするには? Copyright (C) Junko Shirogane, Waseda University 2016, All rights reserved. 1 プログラミング初級 (Java) 第 10 回オブジェクト指向って? 白銀純子 Copyright (C) Junko Shirogane, Waseda University 2016, All rights reserved. 2 第 10

More information

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ 第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイルの作成方法 コンパイル方法について説明します IDL ファイルの作成にあたっては INTERSTAGE

More information

Microsoft PowerPoint - lec06 [互換モード]

Microsoft PowerPoint - lec06 [互換モード] 内 容 Ⅶ. クラスの定義 クラス定義の基本 フィールドの定義 メソッド定義 例題 : 円クラスのフィールドとメソッドの定義 コンストラクタ 例題 :Circle2を使ったアプレット 1 2 クラス定義の基本 オブジェクト指向のプログラム プログラム実行時に登場するオブジェクトの性質や挙動を記述する オブジェクトの性質や挙動を記述したものが クラス である Java プログラムを書くとはクラスを定義すること

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 基幹 7 ( 水 5) 13: 構造体 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2016-07-06 1 例題 : 多角形の面積 n = 5 (5 角形 ) の例 n 1 n 1 1 p 1 T 0 S = i=0 p 0 T i = i=0 2

More information

ガイダンス

ガイダンス 情報科学 B 第 2 回変数 1 今日やること Java プログラムの書き方 変数とは何か? 2 Java プログラムの書き方 3 作業手順 Java 言語を用いてソースコードを記述する (Cpad エディタを使用 ) コンパイル (Cpad エディタを使用 ) 実行 (Cpad エディタを使用 ) エラーが出たらどうしたらよいか??? 4 書き方 これから作成する Hello.java 命令文 メソッドブロック

More information

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value = Part2-1-3 Java (*) (*).class Java public static final 1 class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラマー勉強会 1 回 basic.h 補足 [ 修飾子 ] const 付けた変数は初期化以外で値を設定することができなくなる 定数宣言に使う unsigned 付けた変数は符号がなくなり 正の値しか設定できない [ 条件コンパイル ] #ifdef M ここ以前に M がマクロとして定義されていれば ここ以下をコンパイルする #ifndef M ここ以前に M というマクロが定義されていなければ

More information

人工知能入門

人工知能入門 藤田悟 黄潤和 探索とは 探索問題 探索解の性質 探索空間の構造 探索木 探索グラフ 探索順序 深さ優先探索 幅優先探索 探索プログラムの作成 バックトラック 深さ優先探索 幅優先探索 n 個の ueen を n n のマスの中に 縦横斜めに重ならないように配置する 簡単化のために 4-ueen を考える 正解 全状態の探索プログラム 全ての最終状態を生成した後に 最終状態が解であるかどうかを判定する

More information

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲 Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲を決定します 次の型が利用でき これらの型は特に基本型とよばれます 基本型 値の種類 値の範囲 boolean

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅱ 3 回目クラスの機能 (1) アクセス制限 オーバーロード課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) クラスの private メンバは そのクラスからのみアクセス可能なメンバである (2) 一般に クラスのフィールドはどこからでもアクセスできるように public メンバで宣言すべきである (3) クラスは private メンバと public

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 8 回メソッド (2) 授業開始前に自己点検 前回までの必須課題はすべてできていますか 前回までの学習項目であいまいな所はありませんか 理解できたかどうかは自分自身の基準をもとう Java 1 第 8 回 2 前回のテーマ メソッドとは いくつかの命令の列を束ねて 一つの命令として扱えるようにしたもの 今回学ぶメソッドの役割は その他のプログラミング言語では関数またはサブルーチンと呼ばれることがある

More information

GEC-Java

GEC-Java Copyright (C) Junko Shirogane, Waseda University 2019, All rights reserved. 1 プログラミング初級 (Java) 第 14 回継承 白銀純子 第 14 回の内容 継承 オーバーライド ポリモーフィズム Copyright (C) Junko Shirogane, Waseda University 2019, All rights

More information

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value = Part2-1-3 Java (*) (*).class Java public static final 1 class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value

More information

program7app.ppt

program7app.ppt プログラム理論と言語第 7 回 ポインタと配列, 高階関数, まとめ 有村博紀 吉岡真治 公開スライド PDF( 情報知識ネットワーク研 HP/ 授業 ) http://www-ikn.ist.hokudai.ac.jp/~arim/pub/proriron/ 本スライドは,2015 北海道大学吉岡真治 プログラム理論と言語, に基づいて, 現著者の承諾のもとに, 改訂者 ( 有村 ) が加筆修正しています.

More information

レコードとオブジェクト

レコードとオブジェクト レコードとオブジェクト レコード class Point attr_accessor("x", "y") インスタンス変数の宣言 point.rb irb(main):004:0> load("point.rb") => true irb(main):005:0> p = Point.new() => # irb(main):006:0> p.x = 3 => 3

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 総機 1 ( 月 1) 13: 構造体 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2015-07-06 1 例題 : 多角形の面積 n = 5 (5 角形 ) の例 n 1 n 1 p 1 S = T i = 1 2 p i p i+1 i=0 i=0

More information

メソッドのまとめ

メソッドのまとめ 配列 (2) 2 次元配列, String http://jv2005.cis.k.hosei.c.jp/ 授業の前に自己点検 配列変数に格納される配列の ID と配列の実体の区別ができていますか 配列変数の宣言と配列の実体の生成の区別ができていますか メソッドの引数に配列が渡されるとき 実際に渡されるものは何ですか このことの重要な帰結は何ですか 引数の値渡しと参照渡しということばを例を挙げて説明できますか

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 2 第 6 回継承 コンストラクタ 1 講義資料について 新しい言語の機能 ( オブジェクト指向の機構 ) については 随時参考書などを参照するのがよい 過去の資料も参考になる http://java2005.cis.k.hosei.ac.jp/ 今回の範囲は 上記ページの 17 回に詳しい 2 テーマ : 継承 コンストラクタ 継承 (inheritance) インスタンス変数の継承

More information

プログラミング実習I

プログラミング実習I プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 m.imura@kwansei.ac.jp 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,

More information

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx シーケンスに基づく検索モデルの検索精度について 東京工芸大学工学部コンピュータ応用学科宇田川佳久 (1/3) (2/3) 要員数 情報システム開発のイメージソースコード検索機能 他人が作ったプログラムを保守する必要がある 実務面での応用 1 バグあるいは脆弱なコードを探す ( 品質の高いシステムを開発する ) 2 プログラム理解を支援する ( 第 3 者が書いたコードを保守する ) 要件定義外部設計内部設計

More information

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 ポインタ変数の扱い方 1 ポインタ変数の宣言 int *p; double *q; 2 ポインタ変数へのアドレスの代入 int *p; と宣言した時,p がポインタ変数 int x; と普通に宣言した変数に対して, p = &x; は x のアドレスのポインタ変数 p への代入 ポインタ変数の扱い方 3 間接参照 (

More information

GEC-Java

GEC-Java プログラミング初級 (Java) 第 12 回メッセージのやりとり 白銀純子 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 1 第 12 回の内容 メッセージのやりとり Copyright (C) Junko Shirogane, Waseda University 2018, All rights

More information

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀 できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀 内容 オブジェクト指向とは オブジェクト指向のしくみ Java 言語とオブジェクト指向 属性と振る舞い クラスとメソッド オブジェクト指向の特徴 演習問題 勉強会の参考書 Java ( アジャイルソフトウェア開発技術シリーズ 基礎編 ) 発売日 2012 年 5

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅱ 11 回目スレッド課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) スレッドは 1 つの実行箇所をもつ一連の処理の流れである (2) マルチスレッドで各スレッドの処理は並行して実行される (3) Java はマルチスレッド処理を記述できない (4) 新たにスレッドを生成する場合 Thread クラスを拡張し かつ Runnable インタフェースを実装する必要がある

More information

第2回講義

第2回講義 オブジェクト指向概論 第 2 講 クラスとカプセル化 立命館大学 情報理工学部 黄宏軒 1 オブジェクト指向の重要な概念 n クラス q 同じようなオブジェクトを まとめて 考える n 継承 ( インヘリタンス ) q 複数のクラスの 共通部分をまとめる n ポリモーフィズム ( 多態性 ) q 呼び出す側を 共通化 する n 複雑なものを簡単に 2 2.1 クラスとは何か n 類似のオブジェクトを

More information

Prog1_10th

Prog1_10th 2014 年 6 月 19 日 ( 木 ) 実施 例外処理 Java 言語では, 作成したプログラムを実行する際に, 記述した処理が想定しない事態によって実行できなくなる場合を例外と呼び, その例外への対処, 即ち例外処理が求められる 例外処理を行うための try 文の一般形は次のようになる 例外を発生させる可能性のある処理 catch( 例外のクラス名 1 変数 1 ) 例外に対処する処理 1 catch(

More information

Microsoft PowerPoint - handout07.ppt [互換モード]

Microsoft PowerPoint - handout07.ppt [互換モード] Outline プログラミング演習第 7 回構造体 on 2012.12.06 電気通信大学情報理工学部知能機械工学科長井隆行 今日の主眼 構造体 構造体の配列 構造体とポインタ 演習課題 2 今日の主眼 配列を使うと 複数の ( 異なる型を含む ) データを扱いたい 例えば 成績データの管理 複数のデータを扱う 配列を使う! 名前学籍番号点数 ( 英語 ) 点数 ( 数学 ) Aomori 1 59.4

More information

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do 8 構造体と供用体 ( 教科書 P.71) 構造体は様々なデータ型,int 型,float 型や char 型などが混在したデータを一つのまとまり, 単位として扱える.( 配列は一つのデータ型しか扱えない.) 構造体は柔軟なデータ構造を扱えるので, プログラムを効率よく開発できる. つまり構造体を使用すると, コード量を抑え, バグを少なくし, 開発時間を短くし, 簡潔なプログラムが作れる. 共用体は,

More information

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。 ソフトウェア基礎演習課題 文法理解度確認範囲 問題 1 データ型 ( 変数, データ型 ) 問題 2 制御構造 (switch 文 ) 問題 3 制御構造 (while 文 ) 問題 4 制御構造と配列 ( 総和 ) 問題 5 制御構造と配列 ( 総和, 平均 ) 問題 6 データ型と各種演算子 ( 文字列, 検索 ) 問題 7 クラスの定義 ( メソッドの定義, コンストラクタの定義, キャスト

More information

デジタル表現論・第6回

デジタル表現論・第6回 デジタル表現論 第 6 回 劉雪峰 ( リュウシュウフォン ) 2016 年 5 月 16 日 劉 雪峰 ( リュウシュウフォン ) デジタル表現論 第 6 回 2016 年 5 月 16 日 1 / 16 本日の目標 Java プログラミングの基礎配列 ( 復習 関数の値を配列に格納する ) 文字列ファイルの書き込み 劉 雪峰 ( リュウシュウフォン ) デジタル表現論 第 6 回 2016 年

More information

GEC-Java

GEC-Java プログラミング初級 (Java) 第 11 回オブジェクト指向って? 白銀純子 Copyright (C) Junko Shirogane, Waseda University 2018, All rights reserved. 1 第 11 回の内容 プログラミングの種類 オブジェクト指向とは? Copyright (C) Junko Shirogane, Waseda University 2018,

More information

微分方程式 モデリングとシミュレーション

微分方程式 モデリングとシミュレーション 1 微分方程式モデリングとシミュレーション 2018 年度 2 質点の運動のモデル化 粒子と粒子に働く力 粒子の運動 粒子の位置の時間変化 粒子の位置の変化の割合 速度 速度の変化の割合 加速度 力と加速度の結び付け Newtonの運動方程式 : 微分方程式 解は 時間の関数としての位置 3 Newton の運動方程式 質点の運動は Newton の運動方程式で記述される 加速度は力に比例する 2

More information

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint - 計算機言語 第7回.ppt 計算機言語第 7 回 長宗高樹 目的 関数について理解する. 入力 X 関数 f 出力 Y Y=f(X) 関数の例 関数の型 #include int tasu(int a, int b); main(void) int x1, x2, y; x1 = 2; x2 = 3; y = tasu(x1,x2); 実引数 printf( %d + %d = %d, x1, x2, y);

More information

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード] 情報工学実験 II 実験 2 アルゴリズム ( リスト構造とハッシュ ) 実験を始める前に... C 言語を復習しよう 0. プログラム書ける? 1. アドレスとポインタ 2. 構造体 3. 構造体とポインタ 0. プログラム書ける? 講義を聴いているだけで OK? 言語の要素技術を覚えれば OK? 目的のプログラム? 要素技術 データ型 配列 文字列 関数 オブジェクト クラス ポインタ 2 0.

More information

memo

memo 数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int

More information

Microsoft Word - 3new.doc

Microsoft Word - 3new.doc プログラミング演習 II 講義資料 3 ポインタ I - ポインタの基礎 1 ポインタとは ポインタとはポインタは, アドレス ( データが格納されている場所 ) を扱うデータ型です つまり, アドレスを通してデータを間接的に処理します ポインタを使用する場合の, 処理の手順は以下のようになります 1 ポインタ変数を宣言する 2 ポインタ変数へアドレスを割り当てる 3 ポインタ変数を用いて処理 (

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅱ 7 回目オーバーライド課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) スーパークラスのメソッドと同じ名前 戻り値 引数の個数と型をもつメソッドをサブクラスで宣言すると これらのメソッドはオーバーライドの関係になる (2) メソッドのオーバーライドとは スーパークラスのメソッドに代わってサブクラスのメソッドが実行される機能のことである (3) スーパークラス型の変数にサブクラスのオブジェクトは代入できない

More information

DVIOUT-interface-he

DVIOUT-interface-he インタフェース プログラム理論と言語 Part2-1-3 Java インタフェース : クラスとしての解釈 (*): 指定された型のメソッド群を持つ もの インタフェースのメソッド : メソッド名と型情報のみの 抽象メソッド 実装クラスでの実装 ( 具体化 ) の義務インタフェースの利用 : もの そのものでなく もの が持つ操作の名前と型のみで処理を記述 処理コードの抽象化 汎用で再利用度が高い

More information

Prog2_12th

Prog2_12th 2018 年 12 月 13 日 ( 木 ) 実施クラスの継承オブジェクト指向プログラミングの基本的な属性として, 親クラスのメンバを再利用, 拡張, または変更する子クラスを定義することが出来る メンバの再利用を継承と呼び, 継承元となるクラスを基底クラスと呼ぶ また, 基底クラスのメンバを継承するクラスを, 派生クラスと呼ぶ なお, メンバの中でコンストラクタは継承されない C# 言語では,Java

More information

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt) 独習 JAVA 第 3 版 8.4 例外とエラークラス 8.5 throws ステートメント 8.6 独自の例外 Throwable コンストラクタ catch ブロックには Throwable 型のパラメータが必ず 1 つなければならない Throwable コンストラクタ Throwable() Throwable( String message ) message には問題を通知する文字列のメッセージ

More information

文字列操作と正規表現

文字列操作と正規表現 文字列操作と正規表現 オブジェクト指向プログラミング特論 2018 年度只木進一 : 工学系研究科 2 文字列と文字列クラス 0 個以上の長さの文字の列 Java では String クラス 操作 文字列を作る 連結する 文字列中に文字列を探す 文字列中の文字列を置き換える 部分文字列を得る 3 String クラス 文字列を保持するクラス 文字列は定数であることに注意 比較に注意 == : オブジェクトとしての同等性

More information

gengo1-11

gengo1-11 関数の再帰定義 自然数 n の階乗 n! を計算する関数を定義してみる 引数は整数 返却値も整数 n! = 1*2*3*... * (n 1)*n である ただし 0! = 1 とする int factorial(int n) int i, tmp=1; if( n>0 ) for(i=1; i

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション オブジェクト指向 プログラミング演習 第 2 回クラス インスタンス メソッド コンストラクタ 先週の出席確認 Webブラウザはどのようなプログラムでできているかこの問に答える前に Webブラウザとは 何か? 普段使ってますよね? Webブラウザを使ってできることと Webブラウザがやっていることを区別する必要がある 何をすれば Web ブラウザ と言えるのか NHK チコちゃんに叱られる! Web

More information

情報処理 Ⅱ 2007 年 11 月 26 日 ( 月 )

情報処理 Ⅱ 2007 年 11 月 26 日 ( 月 ) 情報処理 Ⅱ 2007 年 11 月 26 日 ( 月 ) 本日学ぶこと 関数と変数 目的 関数を自分で定義し, 変数の利用方法 範囲を明示的に制限することで, 適切な機能分割 ( モジュール化, 再利用 ) を図る. してはいけないこと main 関数のみで 100 行以上のプログラム グローバル変数を駆使するプログラム プログラムを読みやすくする 保守性向上 入 p.109 2 関数 (Function)

More information

デザインパターン第一章「生成《

デザインパターン第一章「生成《 変化に強いプログラミング ~ デザインパターン第一章 生成 ~ 梅林 ( 高田明宏 )@ わんくま同盟 デザインパターンとは何か (1) デザインパターンの定義 ソフトウェア開発におけるデザインパターンとは 過去のソフトウェア設計者が発見し編み出した設計ノウハウを蓄積し 名前をつけ 再利用しやすいように特定の規約に従ってカタログ化したもの (Wikipedia) 参考書籍 オブジェクト指向における再利用のためのデザインパターン

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅱ 6 回目継承課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) 新しいクラスを宣言するとき既存のクラスを利用することはできない (2) 新しいクラスが既存のクラスのメンバーを受け継ぐことを継承という (3) クラスの拡張における既存のクラスをサブクラスという (4) サブクラスからスーパークラスの private メンバーをアクセスすることはできない (5)

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 3 回目変数 今日の講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能です 変数は 型 ( データ型ともいいます ) と識別子をもちます 2 型 変数に記憶できる値の種類です型は 値の種類に応じて次の 8 種類があり これを基本型といいます 基本型値の種類値の範囲または例 boolean 真偽値 true または

More information

Prog2_9th

Prog2_9th 2013 年 11 月 21 日 ( 木 ) 実施例外処理 Java 言語では, 作成したプログラムを実行する際に, 記述した処理が想定しない事態によって実行できなくなる場合を例外と呼び, その例外への対処, 即ち例外処理が求められる これまでの教材に登場した例外の中で,IOException はコンパイラがチェックするため, 例外処理を必ず記述しなければコンパイルが出来ないものであるのに対して,ArithmeticException

More information

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac Actual4Test http://www.actual4test.com Actual4test - actual test exam dumps-pass for IT exams Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN

More information

2

2 プログラミング応用演習 b 10 月 5 日演習課題 2016/10/05 PAb 演習課題 プログラム仕様書作成課題 課題クラスを読み 次に示すクラスの仕様書を完成させよ なお 仕様書は クラス 1 つに付き 1 つ作成す る 加えて 図 1 のようなクラス継承の模式図を作成せよ < クラス名 のプログラム仕様書 > 作成者 : 学籍番号 名前 (1) クラスクラス名 : クラス名 説明 : クラスが何を表現しているか

More information

オブジェクト指向プログラミング・同演習 5月21日演習課題

オブジェクト指向プログラミング・同演習 5月21日演習課題 オブジェクト指向プログラミング 同演習 5 月 21 日演習課題 問題 1 配列の例外処理例外が発生する可能性のある処理を try で囲み その後に catch で例外を捕捉します 例外処理の終了処理として finally が行われます これは書かなくて自動的に行われます 提出課題 1 (Kadai052301.java) 以下のプログラムは例外処理をしていない ArrayIndexOutOfBoundsException

More information

第二回独習 Java ゼミ 第二章クラスとメソッド 2.1 メソッドの構造 2.2 静的メソッドと静的変数の概要 2.3 インスタンスメソッドとインスタンス変数の概要 2.4 Integerクラス 2006/04/19 神津健太

第二回独習 Java ゼミ 第二章クラスとメソッド 2.1 メソッドの構造 2.2 静的メソッドと静的変数の概要 2.3 インスタンスメソッドとインスタンス変数の概要 2.4 Integerクラス 2006/04/19 神津健太 第二回独習 Java ゼミ 第二章クラスとメソッド 2.1 メソッドの構造 2.2 静的メソッドと静的変数の概要 2.3 インスタンスメソッドとインスタンス変数の概要 2.4 Integerクラス 2006/04/19 神津健太 2.1 メソッドの構造 メソッドとは プログラムステータメントの集合体 Java の基本的な実行単位 クラスの一部 メソッドの外部にプログラムコードを置いたり クラスの外部にメソッドを置くことはできない

More information

Microsoft PowerPoint - 6.pptx

Microsoft PowerPoint - 6.pptx 6. データ構造入門 6-1. 連結リスト (Linked List) 6-2. スタック (Stack) 6-. キュー (Queue) 6-4. デク (Double-Ended-Queue) 6-. 抽象データ型 (Abstract Data Type) データ構造とは データの保存を効率的に行うもの 1 ito 2.712.14 suzuki データ構造 1 2 6-1. 連結リスト (Linked

More information

Microsoft PowerPoint - Pro110111

Microsoft PowerPoint - Pro110111 本日の到達目標 : コレクション プログラミング III 及び実習 1. コレクションとは 2. コレクションの種類 3. 使用方法 第 13 回コレクション 1 2 配列 ( 第 3 回 10 月 13 日 ) 演習 2 ファイル Bubble1.java は, 交換ソート ( バブルソート ) のプログラム ( 途中 ) である. プログラムを完成させ, 正しく実行できることを確かめなさい. /edu/g/po3_09/bubble1.java

More information

Java言語 第1回

Java言語 第1回 Java 言語 第 2 回簡単な Java プログラムの作成と実行 知的情報システム工学科 久保川淳司 kubokawa@me.it-hiroshima.ac.jp 簡単な Java プログラム Java プログラムのファイル名 Java プログラムのファイル名命名ルール ファイル名とクラス名は同じでなければならない HelloJava.java public class HelloJava { public

More information

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用 RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用体型のローカル変数を文字列操作関数で操作する場合の注意事項 (RXC#013) 配列型構造体または共用体の配列型メンバから読み出した値を動的初期化に用いる場合の注意事項

More information

Microsoft PowerPoint pptx

Microsoft PowerPoint pptx PFCore(RT ミドルウェア ) トレーニング中級編 10:00-11:00 第 1 部 :RT コンポーネントプログラミングの概要 担当 : 安藤慶昭 ( 産業技術総合研究所 ) 概要 :RT コンポーネントの作成方法, 設計時の注意点などの概要について解説します 第 2 部 :RT ミドルウェア (PFcore) 開発支援ツールと RT コンポーネントの作成方法 11:00-12:00 12:00-13:00

More information

Prog1_3rd

Prog1_3rd 2019 年 10 月 10 日 ( 木 ) 実施 プログラムの制御構造 1960 年代後半にダイクストラが提唱した構造化プログラミングという考え方では, 手続き型のプログラムを記述する際には, 順次, 選択, 反復という標準的な制御構造のみを用い, 先ずプログラムの概略構造を設計し, その大まかな単位を段階的に詳細化して処理を記述していく 順次構造順次構造とは, プログラム中の文を処理していく順に記述したものである

More information

プログラミングI第10回

プログラミングI第10回 プログラミング 1 第 10 回 構造体 (3) 応用 リスト操作 この資料にあるサンプルプログラムは /home/course/prog1/public_html/2007/hw/lec/sources/ 下に置いてありますから 各自自分のディレクトリにコピーして コンパイル 実行してみてください Prog1 2007 Lec 101 Programming1 Group 19992007 データ構造

More information

Microsoft Word - problem3.doc

Microsoft Word - problem3.doc コンパイラ演習 : 作成問題 3 ( 担当 : 佐々木晃 ) 次のような言語のコンパイラを作成することが目的である 目的機械は hsm 仮想機械とする 昨年度までの講義資料 ( 中田先生 開先生による ) も参考にすること 演習問題 B3 問題番号 : B3 課題名 : コンパイラの作成 3 (1) 記号表の実装 (2) JavaCC プログラム課題 3 (1) 記号表の実装 記号表を実現するクラス

More information

Prog1_2nd

Prog1_2nd 2019 年 10 月 3 日 ( 木 ) 実施浮動小数点数 Java 言語で実数を扱う場合, 実用的な計算には変数のデータ型としては,double 型を用いる 浮動小数点数とは, 実数を表す方式の一つで,2 進数の場合は例えば 1.101 2 3 ( 判り易さの為にここでは 2 や 3 は 10 進数で表記 ) の様な表記法である なお, 第 1 回の教材にあった, 単精度, 倍精度という用語で,

More information

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 ( Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 ( 引数 ) x が決まれば F(x) が決まる これを応用して 複雑な処理も 外面的にはひと固まりの処理として扱う

More information

Prog1_10th

Prog1_10th 2012 年 6 月 20 日 ( 木 ) 実施ポインタ変数と文字列前回は, ポインタ演算が用いられる典型的な例として, ポインタ変数が 1 次元配列を指す場合を挙げたが, 特に,char 型の配列に格納された文字列に対し, ポインタ変数に配列の 0 番の要素の先頭アドレスを代入して文字列を指すことで, 配列そのものを操作するよりも便利な利用法が存在する なお, 文字列リテラルは, その文字列が格納されている領域の先頭アドレスを表すので,

More information