300 likes | 512 Views
プログラミング論 第 3 回 担当: 山口崇志. C# の 基礎 ( 開発 環境 , 変数 , 制御構造 , 配列 ). C# の特徴. C# 言語 (2000 ~ ) オブジェクト指向プログラミング言語 プラットフォームに依存しない 開発 記述形式: C 言語ベース 言語モデル: Delphi Microsoft の Java 対抗 ? C# 自体はオープンな規格である Unity, PlayStation Suite , Mono Microsoft .NET Framework 共通言語 基盤 に準拠する プログラムの実行・開発環境
E N D
プログラミング論 第3回 担当:山口崇志 C#の基礎(開発環境, 変数, 制御構造, 配列) http://www.edu.tuis.ac.jp/~tyamagu/pl/
C#の特徴 • C#言語(2000~) • オブジェクト指向プログラミング言語 • プラットフォームに依存しない開発 • 記述形式:C言語ベース • 言語モデル:Delphi • MicrosoftのJava対抗? • C#自体はオープンな規格である • Unity, PlayStation Suite, Mono • Microsoft .NET Framework • 共通言語基盤に準拠するプログラムの実行・開発環境 • 共通言語基盤:CLI (Common Language Infrastructure) • インタプリタ方式とコンパイラ方式併用 http://www.edu.tuis.ac.jp/~tyamagu/pl/
.NET Frameworkと開発実行フロー CLS based Development Environment Visual Basic Source Code C# .cs Compile Development Tools CIL: Common Intermediate Language .exe Common Language Infrastructure JIT Compile Just In Time Basic ClassLibrary Virtual Execution System Native Code Operating System Hardware http://www.edu.tuis.ac.jp/~tyamagu/pl/
Microsoft Visual Studio • 商用の統合開発環境 • RAD開発環境としてはかなり早い時期に登場 • 複数言語のサポート • Java, C++, Visual Studio, ASP.NET • 共通のデータ型(CTS: Common Type System) • Microsoft Windowsとの高い親和性 RAD開発:Rapid Application Development ・開発の初期段階で動くプロトタイプを作成する ・プロトタイプの性能評価と改良を繰り返す http://www.edu.tuis.ac.jp/~tyamagu/pl/
プロジェクトとnamespace • プロジェクト • ソースコード管理 • リソース管理 • ライブラリ管理 • namespace • ライブラリ管理の一種 • Javaのpackageと同様 プロジェクトA namespace a ソースコード1 ソースコード2 namespace b http://www.edu.tuis.ac.jp/~tyamagu/pl/
プロジェクトの作成と管理 1. http://www.edu.tuis.ac.jp/~tyamagu/pl/
プロジェクトの新規作成 2. 1. 3.入力 4. http://www.edu.tuis.ac.jp/~tyamagu/pl/
レイアウトの変更 http://www.edu.tuis.ac.jp/~tyamagu/pl/
GUIオブジェクトの追加 http://www.edu.tuis.ac.jp/~tyamagu/pl/
GUIオブジェクトのプロパティ編集 http://www.edu.tuis.ac.jp/~tyamagu/pl/
コンパイルと実行 http://www.edu.tuis.ac.jp/~tyamagu/pl/
デバッグ画面 変数チェック 標準出力 http://www.edu.tuis.ac.jp/~tyamagu/pl/
ソースコードの確認(Program.cs) http://www.edu.tuis.ac.jp/~tyamagu/pl/
プロジェクトファイルの確認 ・binフォルダに.exeファイルが生成される ・ダブルクリックで起動することを確認 ・Hello.exeにはVESが含まれている http://www.edu.tuis.ac.jp/~tyamagu/pl/
クラスの作成 1. http://www.edu.tuis.ac.jp/~tyamagu/pl/
新規クラスの設定 1. 2.入力 3. http://www.edu.tuis.ac.jp/~tyamagu/pl/
ソースコードの編集(HelloControlクラス) 編集 http://www.edu.tuis.ac.jp/~tyamagu/pl/
ボタンの追加 1. 2.ダブルクリック http://www.edu.tuis.ac.jp/~tyamagu/pl/
イベントの追加と編集 ここを確認 編集 http://www.edu.tuis.ac.jp/~tyamagu/pl/
C#の言語仕様 • 言語仕様自体は構文も含めJavaと非常に近い • 参考 • Java 開発者のための C# プログラミング言語 • http://msdn.microsoft.com/ja-jp/library/ms228358(v=vs.80).aspx http://www.edu.tuis.ac.jp/~tyamagu/pl/
変数宣言 • 基本構文はJavaと同様 • C#での書式 • アクセス修飾子 変数型 識別子; • アクセス修飾子を省略した場合はprivate • Javaでの書式 • アクセス修飾子 変数型 識別子; • アクセス修飾子を省略した場合は”アクセス修飾子無し” http://www.edu.tuis.ac.jp/~tyamagu/pl/
変数宣言 • 変数制限の書式に若干制約がある • C#での書式 • アクセス修飾子 変数型[]識別子; • アクセス修飾子を省略した場合はprivate • Javaでの書式 • アクセス修飾子 変数型[]識別子; • アクセス修飾子 変数型 識別子[]; • アクセス修飾子を省略した場合は”アクセス修飾子無し” http://www.edu.tuis.ac.jp/~tyamagu/pl/
C#のデータ型 http://www.edu.tuis.ac.jp/~tyamagu/pl/
演算子とフロー制御 • 書式もほぼJavaと同様だがバージョンによりC#、Java共に使える書式が若干異なる • キャストの方式が異なる • C#はほぼBoxingが自動 http://www.edu.tuis.ac.jp/~tyamagu/pl/
クラスの定義 • 継承やインターフェイスの実装等、基本構造はJavaと同様だが書き方が異なる • C#での書式 • 修飾子 class 識別子 • 修飾子 abstract class識別子 • 修飾子 class識別子 : 親クラス • 修飾子 class 識別子 : interface1, ... • Javaでの書式 • 修飾子 class 識別子 • 修飾子 abstract class識別子 • 修飾子 class 識別子 extends 親クラス • 修飾子 class 識別子 implements interface1, ... http://www.edu.tuis.ac.jp/~tyamagu/pl/
構造体(struct) • C#ではCやC++と同様に構造体が利用できる • 構造体とクラスの違い • 複数の要素を持つ変数 • C#での位置付けは簡易的なクラス • 抽象化できない • 若干クラスよりも効率的 • C#での書式 • 修飾子 struct識別子 http://www.edu.tuis.ac.jp/~tyamagu/pl/
メソッドの定義 • 書式もほぼJavaと同様 • C#での書式 • 修飾子 戻値の型 メソッド名(引数) • paramキーワードにより不特定数の引数が利用可能 • Javaでの書式 • 修飾子 戻値の型 メソッド名(引数) http://www.edu.tuis.ac.jp/~tyamagu/pl/
通常課題 • 通常課題:次のアプリケーションを作成せよ。 • フォームを1つ表示する • フォームのタイトルはHelloとする • フォーム上にはLabel, TextBox, Buttonを1つ配置する • 起動時にLabelに表示される文字列は”hello text here.”とする • 起動時にTextBoxに表示される文字列は”World”とする • Buttonに表示される文字は”Say Hello !!”とする • ButtonをクリックするとLabelの文字列が次のようになる • ”Hello [TextBoxに表示されている文字列] !!” http://www.edu.tuis.ac.jp/~tyamagu/pl/
追加課題 • 前回のMVCモデルを用いたJavaのプログラムを参考に通常課題の要件を満たすアプリケーションを作成せよ。 • なおC#で実装した場合、各クラスのフィールドとメソッドは右図のようになる。 HelloModel string prefix string postfix string name HelloControler HelloModel data string getHello() void setName(string) HelloViewer HelloControlercontroler void button_click(string) http://www.edu.tuis.ac.jp/~tyamagu/pl/
発展課題 • 通常課題:次のアプリケーションを作成せよ。 • 追加課題のHelloModelおよびHelloControlerを用いる • 設定フォームと表示フォームの2つを持つ • 設定フォームのタイトルは設定とする • 表示フォームのタイトルはHelloとする • 設定フォーム上にはTextBox, Buttonを1つ配置する • 表示フォーム上にはLabelを1つ配置する • 表示フォーム上のLabelは次の文字が表示される • ”Hello [TextBoxに表示されている文字列] !!” • 起動時は設定フォームが表示される • 起動時にTextBoxに表示される文字列は”World”とする • Buttonに表示される文字は”Say Hello !!”とする • Buttonをクリックすると表示フォームが表示される http://www.edu.tuis.ac.jp/~tyamagu/pl/