24th Developer Camp B1
|
|
|
- あきひさ かりこめ
- 7 years ago
- Views:
Transcription
1 17 Th Developer Camp B1 Delphi チュートリアルセッション Delphi で学ぶ楽しいプログラミング基礎 デキるプログラマになる第一歩 株式会社シリアルゲームズ 細川淳 1
2 アジェンダ オブジェクト指向について Class について 付録 :Interface について 2
3 17 Th Developer Camp 1 OOP について 3
4 OOP とは? OOP = Object Oriented Program オブジェクト指向プログラム 今となっては OOP ではない言語の方が少ない? つまり 比較する物がないので 説明しづらい 原義 オブジェクトに注目したプログラム技法 オブジェクト = データとそれを扱うプログラムの集合 オブジェクトは自律的に動く 与えられた入力に対し 自律的に出力を導く 言語として OOP を実現したのが Smalltalk や Delphi や C++ など 4
5 OOP とは? OOP が目指していた物 バグの少ないプログラム スパゲティプログラム ソフトウェア クライシス 構造化プログラム 再利用可能なプログラム 生産性を上げる プログラムのモジュール化 つまり OOP が目指したのは 高品質 高生産性 5
6 OOP とは Delphi での OOP といえば! コンポーネント 部品化 ( モジュール化 ) より高度なプログラマが部品を作る : 高品質化 資産化され再利用可能 : 高生産性 カプセル化 ( ブラックボックス化 ) 中身を知らずとも誰でも使える : 高生産性 拡張性 コードを一部変更しただけで動作を変更できる : 高生産性 6
7 OOP とは コンポーネントとは 結局 Class である Delphi における Class とは 部品化の最小単位 内部にデータを持ち それを扱うプログラムの集合体 入力に対して 自律的に出力を導く カプセル化を可能にする アクセス制御 と プロパティ 拡張性を提供する 継承 7
8 プログラマー ポイント OOP 高品質化 高生産性 ( 資産性 ) の為に考えられたシステムの総称 モジュール化 カプセル化 拡張性 ( 継承 ) Delphi の OOP 機能 Component の高い資産性 Class による OOP の実現 8
9 17 Th Developer Camp 2 Class とは 9
10 登場人物 ブルジョアジー 資産家 プロレタリアート プロジェクト マネージャ 上級のプログラマ プログラマ 10
11 Class とは 入力値が 2 つあり それを加算するプログラムを書いてくれ 金は払う 整数型の値 A 整数型の値 B 入力 出力 A と B の加算 11
12 Class とは コード A function Add(i1, i2: Integer); // 入力 Result := i1 + i2; // 出力 できた! 12
13 Class とは 仕様変更発生! 整数型の値 A 整数型の値 B 入力 出力 A と B の加算 新規 1: 入力値が 0 の場合は前回の値を使う新規 2: 初めての呼び出し時 入力値が 0 の場合は 0 を出力する すまんね 13
14 Class とは コード A var G1: Integer; G2: Integer; // 新規 2 に対応するために初期化 procedure Init; G1 := 0; G2 := 0; function Add(i1, i2: Integer); // 新規 1 に対応 if (i1 = 0) then i1 := G1 else G1 := i2; if (i2 = 0) then i2 := G2 else G2 := i2; できた! Result := i1 + i2; 14
15 Class とは 実際のコーディング シチュエーション // 仕様を熟知しているプログラマのコード procedure OutputAdd; Init; Writeln(Foo(1, 2)); Writeln(Foo(0, 0)); 最初に init を 1 回だけ呼ぶんだな // 仕様をよく知らないプログラマのコード procedure OutputAdd; Init; Writeln(Foo(1, 2)); Init; Writeln(Foo(0, 0)); 毎回 init を呼ぶんじゃね? プログラムの品質が プログラマに大きく依存している! 15
16 Class とは 優秀なプログラマそうではないプログラマどちらも 正しく動作するコードを書かせるにはどうすれば良いか? 16
17 Class とは その 1 つの回答が OOP であり OOP を実現した Class という構造! 17
18 17 Th Developer Camp 3 Class の実際 18
19 Class の実際 コード A をクラスで書き換えてねよろしく頼むよ わかりました 19
20 Class の実際 コード B クラスによる書き換え type TFoo2 = class private F1, F2: Integer; public constructor Create; function Output(i1, i2: Integer): Integer; { TFoo2 } constructor TFoo2.Create; // クラスは生成時にフィールドを初期化するため実際は 0 で初期化する必要は無い F1 := 0; F2 := 0; function TFoo2.Output(i1, i2: Integer): Integer; if (i1 = 0) then i1 := F1 else F1 := i1; ふう できたぞ if (i2 = 0) then i2 := F2 else F2 := i2; Result := i1 + i2; 20
21 Class の実際 クラスを使った場合のシチュエーション // 仕様を熟知しているプログラマのコード procedure Baz; with TFoo2.Create do try Writeln(Output(1, 2)); Writeln(Output(0, 0)); finally Free; TFoo2 クラスを使う // 仕様をよく知らないプログラマのコード procedure Dame; var Foo2: TFoo2; Foo2 := TFoo2.Create; Writeln(Foo2.Output(1, 2)); Writeln(Foo2.Output(0, 0)); TFoo2 を使うのか 解放忘れてるけど コードの均質化による高品質化 21
22 Class の実際 Class とは データと それを扱うメソッドを纏めた 型 Integer や Boolean といったほかの型と同じように使える 変数の定義や 引数の定義として使える フィールド変数 ( データ ) メソッド ( データを扱う ) 従来の 関数 と ほぼ同じ意味 type TFoo2 = class private F1, F2: Integer; public constructor Create; function Output(i1, i2: Integer): Integer; 22
23 Class の実際 Class の宣言 Class は型なので type 部で宣言する type // 慣例として型には接頭辞 "T" を付ける T 名前 = class(t 継承するクラス名 ) // 継承するクラスが無い場合は省略可 private // 変数やメソッドの定義 protected // 変数やメソッドやプロパティの定義 public // メソッドやプロパティの定義 published // プロパティの定義 アクセス制御 (private, protected etc) については後ほど Delphi では全ての Class が TObject から派生する省略した場合は TObject を継承する 23
24 Class の実際 Class は使うときに生成する必要がある! クラスを 生成 するメソッドを コンストラクタ と呼ぶ Delphi 言語では constructor という予約語で宣言する 名前は 慣例的に Create という名前をつける Class は使い終わったら破棄する必要がある! クラスを 破棄 するメソッドを デストラクタ と呼ぶ Delphi 言語では destructor という予約語で宣言する 名前は 慣例的に Destory という名前をつける 生成された値を インスタンス と呼ぶ! 24
25 Class の実際 Constructor と Destructor クラス生成の例 type TFoo = class private FList: TList; // TList というクラスの型で変数を宣言している! public constructor Create; // コンストラクタの定義 destructor Destroy; override; // デストラクタの定義 (TObject.Destroyはvirtual) // 最初に呼ばれる 初期化できる! constructor TFoo.Create; inherited; // inherited については 後のページで FList := TList.Create; // 使うクラスを生成 FList には TList のインスタンスが入っている // 最後に呼ばれる 終了処理できる! destructor TFoo.Destroy; FList.Free; // 使うクラスを破棄 (Free メソッドは Destroy を呼び出す ) inherited; // inherited については 後のページで 25
26 プログラマー ポイント Class データと それを扱うメソッドを纏めた 型 Class には初期化 終了の為の コンストラクタ デストラクタ がある 高品質化に寄与する 生成された値を インスタンス と呼ぶ 26
27 17 Th Developer Camp 4 Class の OOP 機能 - 継承 27
28 Class の OOP 機能 - 継承 また! 仕様変更発生! 入力処理 1 整数型の値 A 整数型の値 B 出力 A と B の加算 処理 2 入力 整数型の値 A 整数型の値 B 出力 A と B の乗算 入力値が 0 の場合は前回の値を使う 初めての呼び出し時 入力値が 0 の場合は 0 を出力する すまんね 処理 1 と処理 2 は プログラム生成時に決まり 同時には起こらない 28
29 Class の OOP 機能 - 継承 前提 処理 1 と処理 2 は 同時に発生しない 設計方針 クラスを2つ作る 処理 1のクラス名を TAdd とする 処理 2のクラス名を TMul とする 29
30 Class の OOP 機能 - 継承 宣言部や その他の部分についてはコード B とほぼ同じため割愛 function TAdd.Output(i1, i2: Integer): Integer; if (i1 = 0) then i1 := F1 else F1 := i1; できた! if (i2 = 0) then i2 := F2 else F2 := i2; Result := i1 + i2; function TMul.Output(i1, i2: Integer): Integer; if (i1 = 0) then i1 := F1 else F1 := i1; if (i2 = 0) then i2 := F2 else F2 := i2; Result := i1 * i2; 同じコードだ! 同一化できないかな? コードを同一化する意義コードを同一化すると バグがあったとき 改修が発生したとき 1 箇所を直せば良い コピー & ペーストで 複数の所に同じコードがあると 何カ所も変更があるため 修正が困難になる 30
31 Class の OOP 機能 - 継承 Class には継承という考え方がある! 基本的な処理は同じだけど 一部だけ変えたい! その要望を叶える機構 抽出を使った SuperClass 化 同じ処理を 抽出 してクラスとして纏める方法 概念としては (X * A) + (X * B) X * (A + B) みたいな 31
32 Class の OOP 機能 - 継承 まず 同じ処理を抜き出してみる type TSuperClass = class private F1, F2: Integer; protected function Proc(i1, i2: Integer): Integer; virtual; abstract; public constructor Create; function Output(i1, i2: Integer): Integer; { TSuperClass } virtual とは継承先のクラスで変更されるかもしれないよ! とコンパイラに指示する指令 function TSuperClass.Output(i1, i2: Integer): Integer; if (i1 = 0) then i1 := F1 else F1 := i1; if (i2 = 0) then i2 := F2 else F2 := i2; Result := Proc(i1, i2); 先ほどのコード! Proc の処理内容は継承先で決定される! abstract とはこのクラスでは 宣言はするけど 実装しないよ! たぶん 継承先で実装されるよ! とコンパイラに指示する指令 abstract を指定すると 継承先で変更するため virtual も一緒に指定しなくてはならない 32
33 Class の OOP 機能 - 継承 次に異なった処理を書いてみる type TAdd = class(tsuperclass) protected function Proc(i1, i2: Integer): Integer; override; TMul = class(tsuperclass) protected function Proc(i1, i2: Integer): Integer; override; { TAdd } TSubClass = class(tsuperclass) と書くと TSubClass は TSuperClass を継承しているという意味になる override とは継承元のクラスが提供しているメソッドを変更しますよ! という指令 元のメソッドは virtual か dynamic が指定されている必要がある function TAdd.Proc(i1, i2: Integer): Integer; Result := i1 + i2; 加算! { TMul } function TMul.Proc(i1, i2: Integer): Integer; Result := i1 * i2; 乗算! それぞれのクラスでは異なった処理だけ記述 33
34 Class の OOP 機能 - 継承 TAdd, TMul を使用する with TAdd.Create do try // 加算の結果が出る Writeln('TAdd ', Output(1, 2)); Writeln('TAdd ', Output(0, 0)); finally Free; with TMul.Create do try // 乗算の結果が出る Writeln('TMul ', Output(1, 2)); Writeln('TMul ', Output(0, 0)); finally Free; Readln; end. 34
35 Class の OOP 機能 - 継承 継承 一部の処理を変更する事で 元の処理を変化させる TAdd, TMul は TSuperClass を 継承 して Proc という 一部の処理を変更 した 継承を TSuperClass から考えると TAdd, TMul は TSuperClass から 派生 した とも言う TAdd TSuper Class 継承元 SuperClass という言い方以外に親クラス Ancestor( 祖先 ) とも言う TMul 継承先 SubClass, 子クラス 派生クラスともいう 35
36 Class の OOP 機能 - 継承 継承元の型の変数に代入できる! 逆はできない!( 機能がリッチになる方向へは代入できない ) var Foo: TFoo2; Bar: TAdd; Baz: TMul; Foo := TAdd.Create; // 代入可能 Bar := TMul.Create; // もちろん代入不可 Baz := TFoo2.Create; // これも代入不可 end. 36
37 Class の OOP 機能 - 継承 代入できるなら TAdd, TMul を使う部分 こんな風に改修できないかな? 37
38 Class の OOP 機能 - 継承 TAdd, TMul を使用する 2 procedure OutToConsole(const ifoo: TFoo2); // TAdd, TMul のインスタンスを受け取れる Writeln(iFoo.ClassName + ' ', ifoo.output(1, 2)); 最初のコードの同一処理部分を Writeln(iFoo.ClassName + ' ', ifoo.output(0, 0)); 纏められた! var Add: TAdd; Mul: TMul; Add := TAdd.Create; try OutToConsole(Add); finally Add.Free; でも まだ似たようなコードがあるなあ Mul := TMul.Create; try OutToConsole(Mul); finally Mul.Free; end. 38
39 Class の OOP 機能 - 継承 TAdd, TMul を使用する 3 type TFooClass = class of TFoo2; // クラスを表す クラス型 ( メタクラス ) procedure OutToConsole(const ifooclass: TFooClass); var Foo: TFoo2; Foo := ifooclass.create; // 渡されたクラスは そのまま生成できる! try Writeln(iFoo.ClassName + ' ', ifoo.output(1, 2)); Writeln(iFoo.ClassName + ' ', ifoo.output(0, 0)); finally Foo.Free; OutToConsole(TAdd); // クラスそのものを渡せる! OutToConsole(TMul); // クラスそのものを渡せる! end. メタクラスを使えばいいんですよ 39
40 Class の OOP 機能 - 継承 またまた! 仕様変更発生! 入力処理 1 整数型の値 A 整数型の値 B 出力 A と B の加算 処理 2 入力 整数型の値 A 整数型の値 B 出力 A と B の乗算 すまんね 処理 3 入力 整数型の値 A 整数型の値 B 出力 A が 1 の時 処理 1 を呼び出すそれ以外の時 A + A + B とする 入力値が 0 の場合は前回の値を使う 初めての呼び出し時 入力値が0の場合は 0を出力する 処理 1と処理 2は プログラム生成時に決まり 同時には起こらない 40
41 Class の OOP 機能 - 継承 処理 3 は新しくクラスを作らないと実装できないかな? TAdd から継承すればいいんですよ 41
42 Class の OOP 機能 - 継承 TAdd を継承した TAdd2 を作る type TAdd2 = class(tadd) protected function Proc(i1, i2: Integer): Integer; override; { TAdd2 } function TAdd2.Proc(i1, i2: Integer): Integer; if (i1 = 1) then Result := inherited Proc(i1, i2); else Result := i1 + i1 + i2; 継承元のメソッドを呼び出す機能! 42
43 Class の OOP 機能 - 継承 inherited 継承元のメソッドを呼び出す機能 inherited メソッド名 inherited Proc(1, 2); // 先ほどの例 上書きしたメソッドの元の処理を呼び出す場合 メソッド名は省略できる { TAdd2 } 上書きしたメソッド function TAdd2.Proc(i1, i2: Integer): Integer; 元のメソッド if (i1 = 1) then Result := inherited // Result := inherited Proc(i1, i2); と同じ else Result := i1 + i1 + i2; 43
44 Class の OOP 機能 - 継承 コンストラクタとデストラクタでは 初期化 終了処理を行う ということは 継承元クラスも初期化 終了処理をやっている可能性が高い constructor, destructor を override した場合は 絶対に inherited を呼ぶ! // 初期化ができる constructor TFoo.Create; inherited; FList := TList.Create; // 終了処理ができる destructor TFoo.Destroy; FList.Free; inherited; 継承元の初期化と終了処理 inherited を呼ぶ順番に注意! constructor では最初に呼ぶ destructor では最後に呼ぶ 44
45 プログラマー ポイント 継承 override 親クラスのメソッドを 上書き して 処理を変える機構 親クラス型の変数に 子クラスのインスタンスを代入可能 逆はできない inherited は親クラスのメソッドを呼ぶ機能 上書きしてしまうと変更後のメソッドしか呼べないため メタクラス クラスそのものを扱える機能 45
46 17 Th Developer Camp 5 Class の OOP 機能 - 多態性 46
47 Class の OOP 機能 - 多態性 多態性 ( ポリモーフィズム ) Class や型に寄って 入力や出力 形式 は同じなのに 別の結果を得られるようにする TAdd, TMul は同じ呼び出しなのに 出てきた 値 は別の値になっていた TAdd 出力 呼び出す 同じ方法で呼び出せる TMul 出力 結果は異なる! 47
48 Class の OOP 機能 - 多態性 Class 継承する事で 多態性を表現できる TRectangle TFigure 図形を描くクラス どのような図形を描くかは継承先で 定義する このクラスは図形を描けるがどのような図形を描くのかは定義されていない TTriangle 48
49 Class の OOP 機能 - 多態性 TFigure の実装 type TFigure = class protected FPoints: TList<TPoint>; procedure GetPoints; virtual; abstract; // 継承先で実装する! public constructor Create; destructor Destroy; override; procedure Draw; // 実装 constructor TFigure.Create; inherited; FPoints := TList<TPoint>.Create; destructor TFigure.Destroy; FPoints.Free; ジェネリクスコードの同一化という観点から有用な技術だがここでは解説しない inherited; 49
50 Class の OOP 機能 - 多態性 TFigure の実装 procedure TFigure.Draw; var Point: TPoint; i: Integer; GetPoints; if (FPoints.Count < 1) then Exit; // FPoints に与えられた点を元に線を描く Point := FPoints[0]; MoveTo(Point.X, Point.Y); for i := 1 to FPoints.Count - 1 do LineTo(Point.X, Point.Y); 50
51 Class の OOP 機能 - 多態性 四角形を描画する TRectangle の実装 type TRectangle = class protected procedure GetPoints; override; // 実装する! (0, 0) (10, 0) procedure TRectangle.GetPoints; FPoints.Clear; FPoints.Add(TPoint.Create( 0, 0)); FPoints.Add(TPoint.Create(10, 0)); FPoints.Add(TPoint.Create(10, 10)); FPoints.Add(TPoint.Create( 0, 10)); (0, 10) (10, 10) 51
52 Class の OOP 機能 - 多態性 procedure DrawRectangle; // 四角形を描く! var Figure: TFigure; Figure := TRectangle.Create; try Figure.Draw; finally Figure.Free; TFigure は何を描くか知らないのに Draw を呼び出すと 四角形が描ける! 52
53 Class の OOP 機能 - 多態性 多態性の具体例 複数のアルゴリズムがある場合 ランダム関数 線形合同法 メルセンヌツイスターなど 暗号化関数 RSA, DSA など FireMonkey の TCanvas Windows では DirectX を使い MacOS では OpenGL を使う 53
54 プログラマー ポイント 多態性 ( ポリモーフィズム ) Delphi では Class や Interface で実現されている 派生クラスの扱い方は同じなのに 派生クラス毎に異なる処理を実装していること 54
55 17 Th Developer Camp 6 Class の OOP 機能 - アクセス制御 55
56 Class の OOP 機能 - アクセス制御 アクセス制御 privte 自分! 同一ユニット内!(strict 指令をつけると見えなくなる ; strict private) protected 自分! 継承先! 同一ユニット内! (strict 指令をつけると見えなくなる ; strict protected) public 誰でも! published むしろ積極的に見せていく! public までは名前を知らないと呼び出せないが published の場合 名前を知らなくても呼び出せる (RTTI が生成される ) 56
57 Class の OOP 機能 - アクセス制御 先ほどの例で Proc が private になっていると 変更不可能! type TSuperClass = class private F1, F2: Integer; private もしも private だったら 継承先では見えない為 override できない!! function Proc(i1, i2: Integer): Integer; virtual; abstract; public constructor Create; function Output(i1, i2: Integer): Integer; 57
58 Class の OOP 機能 - アクセス制御 アクセス制御 処理の隠蔽 最初の例 ( コード A ) では Init 関数をユーザーに見せて 処理の流れを任せてしまった しかも G1, G2 という変数は誰もが触ることができた クラスとアクセス制御を使えば ユーザーに触らせたくない処理を作成可能! 58
59 Class の OOP 機能 - アクセス制御 先ほどの例で F1, F2 が public になっていると 変更されてしまう! type TSuperClass = class public F1, F2: Integer; protected もしも public だと 誰からも見える! つまり 変更されてしまう! function Proc(i1, i2: Integer): Integer; virtual; abstract; public constructor Create; function Output(i1, i2: Integer): Integer; あれ? F1, F2 に触れるじゃん! 変えちゃお 59
60 Class の OOP 機能 - アクセス制御 高度なカプセル化を可能にする Property Delphi 言語に特有の Property 変数でも メソッドでもない その間の存在 ユーザーからは変数に見える 実体はメソッド type TFoo = class private FFoo: Integer; procedure SetFoo(const ifoo: Integer); public Bar: Integer; property Foo read FFoo write SetFoo; 実装は private にあり クラス外からは触れない 値を設定される時に実行される ユーザーからは 両方とも変数に見えるその実 Propety はメソッドとして実装できるため 値を設定される時に範囲チェックなど 値の参照 代入を契機に処理を実行できる 60
61 Class の OOP 機能 - アクセス制御 たとえば TControl.Visible プロパティ type TControl = class(tcomponent) private FVisible: Boolean; procedure SetVisible(Value : Boolean); public property Visible: Boolean read FVisible write SetVisible stored IsVisibleStored // true のときコンポーネントストリームに格納される default True; // デフォルト値と同じときは格納されない procedure TControl.SetVisible(Value: Boolean); if FVisible <> Value then VisibleChanging; FVisible := Value; Perform(CM_VISIBLECHANGED, Ord(Value), 0); RequestAlign; 値を代入すると それを契機にメソッドが実行される 61
62 プログラマー ポイント アクセス制御 見せるべきデータと 見せてはならないデータを定義する機能 プログラムの高品質化に寄与 プロパティ カプセル化 モジュール化を促進する機能 アクセス制御の一形態と見なせる 62
63 17 Th Developer Camp 7 Apendix: Interface 63
64 Interface Class の abstract 指令 継承先で実装されることを期待するメソッドにつける クラスと関連付いているため 親クラスに宣言されていないと使えない TSuper Class procedure Foo; virtual; abstract; 継承元定義だけ宣言しておく TSub Class procedure Foo; override; 継承先実装する 64
65 Interface 別のクラスが同じような関数を実装して呼び出したい どうする? TSuper Class 継承 TFoo procedure Baz; virtual; abstract; procedure Baz; override; 1 つのメソッドで TFoo.Baz TBar.Baz 両方呼び出したい procedure CallFoo(Value: TFoo); Value.Baz; TBar ほぼ同じシチュエーションで呼ばれる procedure Baz; override; procedure CallBar(Value: TBar); Value.Baz; クラス ( 型 ) が違う為 2 つメソッドを作らなくてはならない 65
66 Interface 入出力部分を切り出してそれを 各クラスで実装すればいいんじゃね!! その機構を Interface と呼ぼう 66
67 Interface 宣言だけする機構を Interface と呼ぶ TFoo = class(tsuperclass, IBaz) IBaz = Interface procedure Baz; TBar = class(tinterfacedobject, IBaz) procedure Baz; Interface は慣例として接頭辞 "I" を付ける procedure Baz; Interface を実装する場合 class( 継承元, インターフェース ) と宣言する なお インターフェースはカンマで区切り複数宣言できる 67 TBar = class(tobject, IBaz, ITest, ITestTest)
68 Interface Interface の例 type // Interface の定義にはアクセス制御はない ITest = interface(iinterface) procedure Show; // 歴史的な経緯で TInterfacedObject から継承する TTest = class(tinterfacedobject, ITest) strict private // ITest として見る場合には意味が無い procedure Show; Delphi の Interface は COM 対応のために導入されたので 参照カウンタによる自動破棄が必須になる そのため 参照カウンタを実装している TInterfacedObject から継承する TComponent から派生するコンポーネントは TComponent が参照カウンタを実装しているため 気にする必要は無い 68
69 Interface Interface の例 procedure TTest.Show; Writeln('TTest'); procedure OutToConsole(const it: ITest); it.show; var T: TTest; T := TTest.Create; try OutToConsole(T); // Interface を継承していると そのまま渡せる finally T.Free; end. 69
70 Interface Interface の例 type // TTest とは異なり TComponent から生成した 全く別のクラス TTest2 = class(tcomponent, ITest) public procedure Show; var T2: TTest2; T2 := TTest2.Create; try OutToConsole(T2); // 別の型だが 同じインターフェースを実装してさえいれば渡せる! finally T.Free; end. 70
71 プログラマー ポイント Interface メソッドやプロパティの宣言部だけを定義する機構 インターフェースを実装していれば どんな型のインスタンスでも同じインターフェース型の変数に代入できる 利用できるメソッド プロパティはインターフェースに宣言されたもの 71
72 プログラマー ポイント 参考文献 docwiki 72
24th Developer Camp B1
17 Th Developer Camp B1 Delphi チュートリアルセッション Delphi で学ぶ楽しいプログラミング基礎 デキるプログラマになる第一歩 株式会社シリアルゲームズ 細川淳 1 アジェンダ オブジェクト指向について Class について 付録 :Interface について 2 17 Th Developer Camp 1 OOP について 3 OOP とは? OOP = Object
Embarcadero Developer Camp
17 Th Developer Camp T5 Delphi テクニカルセッション Delphi 言語 再 入門ビギナーからエキスパートまで! 意外と知らない言語機能や落とし穴 株式会社シリアルゲームズ取締役細川淳 1 17 Th Developer Camp 1 Delphi ソースの構造 2 Delphi ソースの構造 プロジェクトファイル (.dpr) ユニット (.pas) リソースファイル
PowerPoint プレゼンテーション
プログラマー勉強会 1 回 basic.h 補足 [ 修飾子 ] const 付けた変数は初期化以外で値を設定することができなくなる 定数宣言に使う unsigned 付けた変数は符号がなくなり 正の値しか設定できない [ 条件コンパイル ] #ifdef M ここ以前に M がマクロとして定義されていれば ここ以下をコンパイルする #ifndef M ここ以前に M というマクロが定義されていなければ
.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~
.NET プログラマー早期育成ドリル VB 編 付録文法早見表 本資料は UUM01W:.NET プログラマー早期育成ドリル VB 編コードリーディング もしくは UUM02W:.NET プログラマー早期育成ドリル VB 編コードライティング を ご購入頂いた方にのみ提供される資料です 資料内容の転載はご遠慮下さい VB プログラミング文法早見表 < 基本文法 > 名前空間の定義 Namespace
た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name
クラス ( 教科書第 8 章 p.267~p.297) 前回は処理をまとめる方法として メソッドについて学習した 今回はメソッドとその処理の対象となるデータをまとめるためのクラスについて学習する このクラスはオブジェクト指向プログラミングを実現するための最も重要で基本的な技術であり メソッドより一回り大きなプログラムの部品を構成する 今回はクラスにおけるデータの扱いとクラスの作成方法 使用方法について説明していく
レコード class Point attr_accessor("x", "y") インスタンス変数の宣言 point.rb
レコードとオブジェクト レコード 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 =>
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
メディプロ1 Javaプログラミング補足資料.ppt
メディアプロジェクト演習 1 Javaプログラミング補足資料 l Javaとは l JavaScript と Java 言語の違い l オブジェクト指向 l コンストラクタ l 継承 抽象クラス 本資料内のページ番号は, 以下の参考書のページを引用している高橋麻奈 : やさしい Java, ソフトバンククリエイティブ (2,625 円 ) はじめに l プログラミング言語とは? l オブジェクト指向とは?
Javaの作成の前に
メディアプロジェクト演習 1 参考資料 Javaとは JavaScript と Java 言語の違い オブジェクト指向 コンストラクタ サーブレット 本資料内のページ番号は, 以下の参考書のページを引用している 高橋麻奈 : やさしい Java, ソフトバンククリエイティブ (2,625 円 ) はじめに プログラミング言語とは? オブジェクト指向とは? Java 言語とは? JavaとJavaScriptの違いとは?
(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド
メソッド ( 教科書第 7 章 p.221~p.239) ここまでには文字列を表示する System.out.print() やキーボードから整数を入力する stdin.nextint() などを用いてプログラムを作成してきた これらはメソッドと呼ばれるプログラムを構成する部品である メソッドとは Java や C++ などのオブジェクト指向プログラミング言語で利用されている概念であり 他の言語での関数やサブルーチンに相当するが
コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n
コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n を入力してもらい その後 1 から n までの全ての整数の合計 sum を計算し 最後にその sum
Java知識テスト問題
Java 知識テスト SDAS プログラマ(Java 編 ) 運営事務局 このテストは J2EE プログラマとしての Java の知識を評価するものです 問題は 30 問, テスト時間は J2EE 知識テストとあわせて 90 分です 問題は全て択一式です 選択肢から 1 つだけ選択してください 資料の閲覧は禁止です テストが終わり次第 答案用紙を提出していただいてかまいません テスト終了後, 本テストの内容を他の方に話さないでください
プログラミング基礎I(再)
山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全
アスペクトの相互作用を解消するアスペクトの提案
アスペクトの相互作用を解消する アスペクトの提案 武山文信千葉滋東京工業大学大学院情報理工学研究科数理 計算科学専攻 2009/03/11 武山文信, 千葉滋, アスペクトの相互作用を解消するアスペクトの提案 @PPL2009 in 高山 1/21 アスペクト指向プログラミング (AOP) 横断的関心事をアスペクトとしてモジュール化 オブジェクト指向 (OOP) では上手く分離できない クラス階層に
Java言語 第1回
Java 言語 第 2 回簡単な Java プログラムの作成と実行 知的情報システム工学科 久保川淳司 [email protected] 簡単な Java プログラム Java プログラムのファイル名 Java プログラムのファイル名命名ルール ファイル名とクラス名は同じでなければならない HelloJava.java public class HelloJava { public
JAVA入門
JAVA 入門後期 10 情報処理試験例題解説 H14 年度秋問 8 次の Java プログラムの説明及びプログラムを読んで, 設問に答えよ プログラムの説明 ディジタル論理回路シミュレータを作成するためのクラスとテスト用クラスである (1) ゲートを表す抽象クラス Gate のサブクラスとして, NOT ゲートを表すクラス NotGate 及び AND ゲートを表すクラス AndGate を定義する
Microsoft Word - VBA基礎(6).docx
あるクラスの算数の平均点と理科の平均点を読み込み 総点を計算するプログラムを考えてみましょう 一クラスだけ読み込む場合は test50 のようなプログラムになります プログラムの流れとしては非常に簡単です Sub test50() a = InputBox(" バナナ組の算数の平均点を入力してください ") b = InputBox(" バナナ組の理科の平均点を入力してください ") MsgBox
C#の基本
C# の基本 ~ 開発環境の使い方 ~ C# とは プログラミング言語のひとつであり C C++ Java 等に並ぶ代表的な言語の一つである 容易に GUI( グラフィックやボタンとの連携ができる ) プログラミングが可能である メモリ管理等の煩雑な操作が必要なく 比較的初心者向きの言語である C# の利点 C C++ に比べて メモリ管理が必要ない GUIが作りやすい Javaに比べて コードの制限が少ない
PowerPoint プレゼンテーション
オブジェクト指向 プログラミング演習 第 4 回継承 オーバーライド ポリモルフィズム 今日のお題 継承 オーバーライド ポリモルフィズム 継承 (inherit) あるクラス c のサブクラス s を定義する : このとき s は c を継承していると言う 何かの下位概念を表すクラスは その上位概念を表すクラスの属性や機能を ( 基本的には ) 使える 継承の例 大学生 長崎県立大学の学生 大学生を継承する概念
開発者が知りたい実践プログラミングテクニック! ~明日から使えるテクニック集~
セッション No.4 Delphi/400 技術セッション 開発者が知りたい実践プログラミングテクニック! ~ 明日から使えるテクニック集 ~ 株式会社ミガロ. システム事業部システム 2 課辻野健 アジェンダ Delphi/400 技術セッション 1. ユーザビリティの向上 1-1. 同時に複数画面を起動する方法 1-2. グリッド操作時の自動フォーカス制御方法 2. 開発効率 保守性の向上 2-1.
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,
intra-mart Accel Platform — IM-Repository拡張プログラミングガイド 初版
Copyright 2018 NTT DATA INTRAMART CORPORATION 1 Top 目次 1. 改訂情報 2. はじめに 2.1. 本書の目的 2.2. 対象読者 2.3. サンプルコードについて 2.4. 本書の構成 3. 辞書項目 API 3.1. 最新バージョン 3.1.1. 最新バージョンの辞書を取得する 3.2. 辞書項目 3.2.1. 辞書項目を取得する 3.2.2.
Javaプログラムの実行手順
戻り値のあるメソッド メソッドには 処理に使用する値を引数として渡すことができました 呼び出し 側からメソッドに値を渡すだけでなく 逆にメソッドで処理を行った結果の値を 呼び出し側で受け取ることもできます メソッドから戻してもらう値のことを もどりち戻り値といいます ( 図 5-4) 図 5-4. 戻り値を返すメソッドのイメージ 戻り値を受け取ることによって ある計算を行った結果や 処理に成功したか失
Webコンポーネントのカスタマイズ入門
佐田雄一 株式会社ミガロ. システム事業部システム 1 課 Web コンポーネントのカスタマイズ入門カスタムコンポーネントを開発できれば さらなる Web 開発の効率化が見込める VCL for the Web ならではのカスタムコンポーネント作成手法を述べる はじめに カスタムコンポーネントを利用するメリット Ajax JavaScript との連携 数値専用 WebEdit の作成例 まとめ 略歴
Java講座
~ 第 1 回 ~ 情報科学部コンピュータ科学科 2 年竹中優 プログラムを書く上で Hello world 基礎事項 演算子 構文 2 コメントアウト (//, /* */, /** */) をしよう! インデントをしよう! 変数などにはわかりやすい名前をつけよう! 要するに 他人が見て理解しやすいコードを書こうということです 3 1. Eclipse を起動 2. ファイル 新規 javaプロジェクト
Microsoft Word - C言語研修 C++編 3.doc
2006/05/10 オブジェクト指向... 3 1 クラスの継承... 3 2 継承の書式... 3 3 protected... 5 4 メンバ関数のオーバーライド... 6 5 クラスの型キャスト... 7 6 仮想関数... 8 2 オブジェクト指向 1 クラスの継承 クラスには 継承 という機能があります 継承とは 既にあるクラスを元に 新しいクラスを作る 機能です 継承元のクラスを 親クラス
Microsoft PowerPoint - はじめてのDataSnapアプリケーション_
第 27 回エンバカデロ デベロッパーキャンプ A2 Delphi/C++Builder テクニカルセッション はじめての DataSnap 2013 年 X 月 X 日 田中芳起 Ver.1.0.0 1 http://www.avsoft.jp DataSnap の概要 多層型のデータベースアプリケーションを構築するためのフレームワーク Delphi3 で実装された技術で Delphi5 までは
XNA Framework
XNA Framework 2.0 M@STER SESSION 01 XNA Framework の技術的背景 システム基盤は.NET Framework マネージ環境で実行 クロスプラットフォーム Windows, Xbox360, Zune DirectX, MDX から独立している 開発 実行環境の構造 XNA Game Studio (Visual Studio 2005) XNA Framework
Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕
Java Script プログラミング入門 3-6~3-7 茨城大学工学部情報工学科 08T4018Y 小幡智裕 3-6 組み込み関数 組み込み関数とは JavaScript の内部にあらかじめ用意されている関数のこと ユーザ定義の関数と同様に 関数名のみで呼び出すことができる 3-6-1 文字列を式として評価する関数 eval() 関数 引数 : string 式として評価する文字列 戻り値 :
グラフの探索 JAVA での実装
グラフの探索 JAVA での実装 二つの探索手法 深さ優先探索 :DFS (Depth-First Search) 幅優先探索 :BFS (Breadth-First Search) 共通部分 元のグラフを指定して 極大木を得る 探索アルゴリズムの利用の観点から 利用する側からみると 取り替えられる部品 どちらの方法が良いかはグラフに依存 操作性が同じでなければ 共通のクラスの派生で作ると便利 共通化を考える
レコード class Point attr_accessor("x", "y") インスタンス変数の宣言 point.rb
レコードとオブジェクト レコード 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 =>
ios 12, Android 9 時代の 今からでも始められるモバイル開発入門 第 36 回エンバカデロ デベロッパーキャンプ 株式会社シリアルゲームズ取締役 / AppDiv3 マネージャー細川淳 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します
ios 12, Android 9 時代の 今からでも始められるモバイル開発入門 第 36 回エンバカデロ デベロッパーキャンプ 株式会社シリアルゲームズ取締役 / AppDiv3 マネージャー細川淳 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します アジェンダ 最近のモバイル事情 Delphi 10.3 Rio について Delphi 10.3 Rio によるモバイル開発
メソッドのまとめ
メソッド (4) 擬似コードテスト技法 http://java.cis.k.hosei.ac.jp/ 授業の前に自己点検以下のことがらを友達に説明できますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか
書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf
情報処理基礎 C 言語についてプログラミング言語は 1950 年以前の機械語 アセンブリ言語 ( アセンブラ ) の開発を始めとして 現在までに非常に多くの言語が開発 発表された 情報処理基礎で習う C 言語は 1972 年にアメリカの AT&T ベル研究所でオペレーションシステムである UNIX を作成するために開発された C 言語は現在使われている多数のプログラミング言語に大きな影響を与えている
「RAD Studio XE5によるマルチ言語/マルチデバイス開発の進め方」
C1 Delphi/C++ チュートリアルセッション RAD Studio XE5 によるマルチ言語 / マルチデバイス開発の進め方 エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 アジェンダ RAD Studio XE5 の概要 Delphi or C++ Intel or ARM Windows / OS X / ios / Android プロジェクトとは? FireMonkey HD
10th Developer Camp - B5
B5 PHP テクニカルセッション Delphi for PHP で作るリッチコンテンツブログ エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 アジェンダ コンポーネントをフル活用しよう お馴染み データモジュール Blog データの表示用ページ Blog データの登録用ページ 2 コンポーネントをフル活用しよう 開発環境の進歩と退化 80 年代の IDE が登場エディタ + コマンドライン型の開発から脱却
Microsoft PowerPoint - 09.pptx
情報処理 Ⅱ 第 9 回 2014 年 12 月 22 日 ( 月 ) 関数とは なぜ関数 関数の分類 自作関数 : 自分で定義する. ユーザ関数 ユーザ定義関数 などともいう. 本日のテーマ ライブラリ関数 : 出来合いのもの.printf など. なぜ関数を定義するのか? 処理を共通化 ( 一般化 ) する プログラムの見通しをよくする 機能分割 ( モジュール化, 再利用 ) 責任 ( あるいは不具合の発生源
プログラミング入門1
プログラミング入門 1 第 5 回 繰り返し (while ループ ) 授業開始前に ログオン後 不要なファイルを削除し て待機してください Java 1 第 5 回 2 参考書について 参考書は自分にあったものをぜひ手元において自習してください 授業の WEB 教材は勉強の入り口へみなさんを案内するのが目的でつくられている これで十分という訳ではない 第 1 回に紹介した本以外にも良書がたくさんある
Embarcadero Developer Camp
17 Th Developer Camp B2 Delphi テクニカルセッション 見た目で楽しい Delphi プログラミング 会社名株式会社シリアルゲームズ 名前細川淳 1 アジェンダ VCL / FireMonkey のスタイルの触りを紹介します VCL スタイル TStyleManager FireMonkey スタイル TStyleBook 2 17 Th Developer Camp 1
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき
プログラミング実習I
プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 [email protected] 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,
PowerPoint プレゼンテーション
5 月 Java 基礎 1 タイトル Java 基礎 2 日間 概要 目的 サーバサイドのプログラミング言語で最もシェアの高い Java SE の基本を習得します 当研修ではひとつの技術ごとに実用的なアプリケーションを作成するため 効果的な学習ができます Java SE の多くの API の中で 仕事でよく利用するものを中心に効率よく学びます 実際の業務で最も利用される開発環境である Eclipse
WebReportCafe
1 1. 概要 WebReportCafe for.net では 生成した PDF に VeriSign の不可視電子署名を付加することができます 電子署名を付加する事により 文書の作成者を証明することができ 作成された PDF を改竄することが不可能になります この文書では WebReportCafe for.net で電子署名を付加するために必要な ドキュメントサイン用 Digital ID の取得と必須ファイル作成
Developer Camp
2F Delphi/C++ チュートリアルセッション Delphi でキカイを制御する アプリケーションの設計とテクニック 株式会社イマジオム代表取締役 高木太郎 1 はじめに この講演の内容 制御プログラムというもの 制御プログラム設計のポイント 制御プログラム実装のテクニック 3 どんなものを考えているのか? 例 :3 次元プリンタ ここに入っている PC がシステム全体を制御 3 次元プリンタ原理
スクールCOBOL2002
(h) 登録集原文の指定方法 . 登録集原文の指定方法 複数の COBOL プログラムに共通の記述を別のソースファイルとしておき COPY 文で取り込むことができます 登録集原文の概念図を下欄に示します このようにすると コーディング量を削減でき 記述ミスもなくなるため 開発効率を高めることができます ここでは 第 章で実習した reidai.cbl というソースファイルの DATA0 と YYMMDD
人工知能入門
藤田悟 黄潤和 探索とは 探索問題 探索解の性質 探索空間の構造 探索木 探索グラフ 探索順序 深さ優先探索 幅優先探索 探索プログラムの作成 バックトラック 深さ優先探索 幅優先探索 n 個の ueen を n n のマスの中に 縦横斜めに重ならないように配置する 簡単化のために 4-ueen を考える 正解 全状態の探索プログラム 全ての最終状態を生成した後に 最終状態が解であるかどうかを判定する
PowerPoint Presentation
ソフトウェア演習 B GUI を持つ Java プログラムの 設計と実装 4.1 例題 :GUI を持った電卓を作ろう プロジェクトCalculator パッケージ名 :example ソースファイル : Calculator.java GUI.java EventProcessor.java 2 4.2 GUI とイベント処理 GUI の構成 :Swing GUI の場合 フレーム JFrame:
Graphical User Interface 描画する
Graphical User Interface 描画する オブジェクト指向プログラミング特論 2016 年度 只木進一 : 工学系研究科 2 描画の基本 javax.swing.jpanel に描画する paint() または paintcomponent() メソッドを上書きすることによって描画する この中で描画対象を描く 基本的図形要素は準備されている しかし 画面の重なりによる再描画の場合
Microsoft PowerPoint - DELPHI�礔.ppt
Delphi コンポーネントの基礎 Delphi の基本のさわり プログラム関連のファイルの説明 コンポーネント関連のファイルの説明 プロパティエディタ関連のファイルの説明 クラスのアクセス権の説明 クラスツリーの抜粋とファイル拡張子の説明 ちょっと作りましたコンポーネント 簡単便利なコンポーネントの実演説明 ( トラブルなければ ) 文責 寺口隆 Delphi のファイルと構文 ( プログラム ).dproj
Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値
コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値 ( 此処では 10) を代入する丈でなく 2 の配列変数の宣言の様に ブレース { } の中にカンマ区切りで初期値のリストを記述し 配列の各要素に初期値を代入出来る様に成った
24th Embarcadero Developer Camp
17 Th Developer Camp B4 Delphi/C++Builder テクニカルワークショップ Delphi / C++Builder 旧バージョンアプリケーションの移行 エンバカデロ テクノロジーズサポートチーム with 高橋智宏 1 17 Th Developer Camp Delphi Q1 2 midas.dll Q. 別々のバージョンで作成したデータベースアプリケーションがあります
Seasar.NET入門
2007 Spring Seasar.NET 入門 2007.5.27 Seasar.NET 杉本和也 2007 Spring Copyright 2004-2007 The Seasar Foundation and the others. All rights reserved. 1 杉本和也と申します 高知県の株式会社アイビスに勤務しています プログラミング歴 6 年 オープンソース歴 2 年
JavaプログラミングⅠ
Java プログラミング Ⅱ 3 回目クラスの機能 (1) アクセス制限 オーバーロード課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) クラスの private メンバは そのクラスからのみアクセス可能なメンバである (2) 一般に クラスのフィールドはどこからでもアクセスできるように public メンバで宣言すべきである (3) クラスは private メンバと public
22nd Embarcadero Developer Camp G6
17 Th Developer Camp ライトニングトーク WMI を もっと使おう! 株式会社シリアルゲームズ 取締役細川淳 1 WMI? WMI とは Windows Management Instrumentation の略 Windows Driver Model の拡張の一種 Windows が管理する情報へのインターフェース 例えば CPU の情報であったり 物理ハードディスクの情報などなどが取れます
情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤
情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤 2017.12.7 前回の演習問題の解答例 1. 四則演算のできる計算機のプログラム ( 括弧も使える ) 2. 実数の扱える四則演算の計算機のプログラム ( 実数 も というより実数 が が正しかったです ) 3. 変数も扱える四則演算の計算機のプログラム ( 変数と実数が扱える ) 演習問題 1 で行うべきこと
