情報学部 | 菅沼ホーム | 目次 | 索引 |
class クラス名 [ : [アクセス権] 基底クラス名 [,[アクセス権] 基底クラス名・・・]] { private: int x; // プライベートメンバー変数 double fun1(int); // プライベートメンバー関数 protected: int y; // 派生クラスだけが使用可能なメンバー変数 double fun2(int); // 派生クラスだけが使用可能なメンバー関数 public: int z; // パブリックメンバー変数 // コンストラクタ クラス名 (引数リスト) : 基底クラス名(パラメータリスト), ・・・ { このクラスに必要な初期設定 } double fun3(int); // パブリックメンバー関数 friend double fun4(int); // フレンド関数 friend class Example2; // フレンドクラス };
Example t1(1, 2); Example t2 = t1; Example *p1 = new Example(1, 2); Example *p2 = p1;
[クラス修飾子] class クラス名[ extends スーパークラス名] [implements 親インタフェース名 [ , ・・・ ]] { [変数修飾子] データ型 変数名,・・・; ・・・・・ // コンストラクタ クラス名 (...) { super(...); // スーパークラスのコンストラクタ コンストラクタにおける処理 } ・・・・・ [関数修飾子] 関数の型 関数名 (引数の並び) { 関数における処理 } ・・・・・ }
Example p1 = new Example(1, 2); Example p2 = p1;
--- Complex オブジェクト ---
function Complex(a, b) { this.x = a; this.y = b; } // Complex オブジェクトのメンバー関数 add Complex.prototype.add = function(b) { let cp = new Complex(this.x + b.x, this.y + b.y); return cp; }
--- Complex クラス ---
class Complex [ extends 基底クラス名] {
#x = 0;
#y = 0;
// コンストラクタ
constructor(a, b)
{
this.s = "Complex";
this.#x = a;
this.#y = b;
}
// メソッド add
add = function(b)
{
let cp = new Complex(this.#x + b.#x, this.#y + b.#y);
return cp;
}
// メソッド out1( x や y を出力するため)
out1 = function()
{
document.write("add = (" + this.#x + " , " + this.#y + ")<BR>\n");
}
// メソッド out2
out2 = function()
{
document.write("s = " + this.s + "<BR>\n");
}
}
/*
// メソッド out2(このように,クラス定義の外に記述することも可)
Complex.prototype.out2 = function() // 「 Complex.prototype. 」の部分が異なる
{
document.write("s = " + this.s + "<BR>\n");
}
*/
var p1 = new Example(1, 2); var p2 = p1;
class クラス名[ extends 基底クラス名] { 変数名,・・・; ・・・・・ // コンストラクタ function クラス名 (...) { parent::基底クラス名(...); // 基底クラスクラスのコンストラクタ コンストラクタにおける処理 } ・・・・・ function 関数名 (引数の並び) { 関数における処理 } ・・・・・ }
$p1 = new Example(1, 2); $p2 = $p1;
class クラス名 [ < スーパークラス名 ] // コンストラクタ def initialize(...) { super(...); // スーパークラスのコンストラクタ コンストラクタにおける処理 } ・・・・・ 式(演算式,関数,クラスなど) ・・・ end
p1 = Example.new(1, 2); p2 = p1;
class クラス名 [(基底クラス名,・・・)] : 変数名 ・・・・・ // コンストラクタ def __init__(self,...) { 基底クラス名.__init__(self,...); // 基底クラスのコンストラクタ コンストラクタにおける処理 } ・・・・・ def 関数名 (self, 引数の並び) : 関数における処理 ・・・・・
p1 = Example(1, 2, 3) p2 = p1 p3 = copy.copy(p1) p4 = copy.deepcopy(p1)
# -*- coding: UTF-8 -*- import copy ############################ # リスト構造 # # coded by Y.Suganuma # ############################ #*******************/ # クラスListの定義 */ #*******************/ class List : # コンストラクタ def __init__(self, s = "") : self.st = s # データ(文字列) self.next = None # 次のデータ #*************************************/ # データの追加 */ # dt : Listクラスのオブジェクト */ #*************************************/ def add(self, dt) : lt2 = self sw = 1 while sw > 0 : # 最後に追加 if lt2.next == None : lt2.next = dt sw = 0 # 比較し,途中に追加 else : lt1 = lt2 lt2 = lt2.next if dt.st < lt2.st : # 追加 dt.next = lt2 lt1.next = dt sw = 0 #********************/ # データの削除 */ # st1 : 文字列 */ #********************/ def delete(self, st1) : lt2 = self sw = 1 while sw > 0 : # データが存在しない場合 if lt2.next == None : print(" 指定されたデータがありません!") sw = 0 # 比較し,削除 else : lt1 = lt2 lt2 = lt2.next if st1 == lt2.st : # 削除 lt1.next = lt2.next sw = 0 #*********************/ # リストデータの出力 */ #*********************/ def output(self) : nt = self.next while nt != None : print(" data =", nt.st) nt = nt.next name1 = List () sw = 1 while sw > 0 : str = input("1:追加,2:削除,3:出力,0:終了? ") sw = int(str) if sw == 1 : # 追加 str = input(" データを入力してください ") lt = List (str) name1.add(lt) elif sw == 2 : # 削除 str = input(" データを入力してください ") name1.delete(str) elif sw == 3 : # 出力 name1.output() else : # 終了 sw = 0 name2 = name1 name3 = copy.copy(name1) name4 = copy.deepcopy(name1) name1.delete("str") print("name1") name1.output() print("name2") name2.output() print("name3") name3.output() print("name4") name4.output()
[ クラス修飾子 ] class クラス名 [ : 基底クラス名 ] { [ メンバー修飾子 ] データ型 変数名,・・・; ・・・・・ // コンストラクタ [ メンバー修飾子 ] クラス名(...) : base(..) { // base は基底クラスのコンストラクタ コンストラクタにおける処理 } ・・・・・ [ メンバー修飾子 ] 関数の型 関数名 (引数の並び) { 関数における処理 } ・・・・・ }
Example p1 = new Example(1, 2); Example p2 = p1;
[ 修飾子 ] Class クラス名 [ Inherits 基底クラス ; ] 修飾子 変数名 As データ型 ; ' コンストラクタ [ [ 修飾子 ] Sub New (引数の並び) [ MyBase.new(...) ] ' 基底クラスのコンストラクタ コンストラクタにおける処理 End Sub ] ・・・・・ [ 修飾子 ] Sub / Function 関数名 (引数の並び) [ As 戻り値のデータ型 ] 関数における処理 End Sub / Function ・・・・・ End Class
Dim p1 As Example = new Example(1, 2) Dim p2 As Example = p1
001 /******************************/ 002 /* クラスに対するプログラム例 */ 003 /* coded by Y.Suganuma */ 004 /******************************/ 005 #include <stdio.h> 006 #include <iostream> 007 #include <string> 008 #include <vector> 009 010 using namespace std; 011 012 /**************/ 013 /* クラス Win */ 014 /**************/ 015 class Win { 016 string BGC; // 背景色 017 protected : 018 pair<int, int> size; // サイズ(縦と横) 019 public : 020 static string name; // 名前 021 vector<string> menu; // メニュー 022 // コンストラクタ 023 Win(string s1, string s2) { 024 size = make_pair(100, 200); 025 BGC = "white"; 026 menu.push_back(s1); 027 menu.push_back(s2); 028 } 029 // 名前の取得 030 static string getName() { return name; } 031 // 背景色の取得 032 string getBGC(); 033 // サイズの取得 034 pair<int, int> getSize() { return size; } 035 }; 036 037 /****************/ 038 /* 背景色の取得 */ 039 /****************/ 040 string Win::getBGC() 041 { 042 return BGC; 043 } 044 045 /**************/ 046 /* クラス App */ 047 /**************/ 048 class App : public Win { // クラス Win を継承 049 // string BGC; // 背景色 050 public : 051 // コンストラクタ 052 App(string s1, string s2) : Win(s1, s2) { 053 menu.push_back("other"); 054 } 055 // サイズの変更 056 void setSize(int row, int col) { size = make_pair(row, col); } 057 // 背景色の変更と参照(基底クラスの private 変数にアクセスできない) 058 // void setBGC(string col) { BGC = col; } 059 string getBGC() { 060 // return BGC; 061 return Win::getBGC(); 062 } 063 }; 064 065 string Win::name = "Window1"; // static 指定のため必要 066 067 int main() 068 { 069 // クラス Win 070 cout << "Win_name : " << Win::name << endl; // 名前,static 指定のため可 071 cout << "Win_name : " << Win::getName() << endl; // 名前,static 変数だけを参照可 072 Win w1 = Win("file", "edit"); 073 cout << "w1_name : " << w1.name << endl; // 名前 074 cout << "w1_BGC : " << w1.getBGC() << endl; // 背景色 075 pair<int, int> s = w1.getSize(); // サイズの取得 076 cout << "w1_size : " << s.first << " " << s.second << endl; 077 cout << "w1_menu : " << w1.menu[0] << " " << w1.menu[1] << endl; // メニュー 078 // クラス App(クラス Win を継承) 079 cout << endl << "App_name : " << App::name << endl; // 名前,Win クラスと同じ 080 App a1 = App("file", "edit"); 081 a1.name = "Window2"; 082 cout << "Win_name : " << Win::name << endl; // 名前(Win) 083 cout << "App_name : " << App::name << endl; // 名前(App) 084 cout << "a1_name : " << a1.name << endl; // 名前(App) 085 // a1.setBGC("red"); // 基底クラスの private 変数にアクセスできない 086 cout << "a1_BGC : " << a1.getBGC() << endl; // 背景色 087 a1.setSize(200, 400); // サイズの変更 088 s = a1.getSize(); 089 cout << "a1_size : " << s.first << " " << s.second << endl; 090 cout << "w1_size : " << w1.getSize().first << " " << w1.getSize().second << endl; 091 cout << "a1_menu : " << a1.menu[0] << " " << a1.menu[1] << " " << a1.menu[2] << endl; // メニュー 092 // new 演算子と代入 093 App a2 = a1; 094 cout << "\n前 a1_size : " << a1.getSize().first << " " << a1.getSize().second << endl; 095 cout << " a2_size : " << a2.getSize().first << " " << a2.getSize().second << endl; 096 a1.setSize(300, 600); // サイズの変更 097 cout << "後 a1_size : " << a1.getSize().first << " " << a1.getSize().second << endl; 098 cout << " a2_size : " << a2.getSize().first << " " << a2.getSize().second << endl; 099 100 App *b1 = new App("file", "edit"); 101 App *b2 = b1; 102 cout << "前 b1_size : " << b1->getSize().first << " " << b1->getSize().second << endl; 103 cout << " b2_size : " << b2->getSize().first << " " << b2->getSize().second << endl; 104 b1->setSize(400, 800); // サイズの変更 105 cout << "後 b1_size : " << b1->getSize().first << " " << b1->getSize().second << endl; 106 cout << " b2_size : " << b2->getSize().first << " " << b2->getSize().second << endl; 107 108 return 0; 109 }
クラス名::静的メンバー変数名 クラス名::静的メンバー関数名
Win_name : Window1 // 070 行目 Win_name : Window1 // 071 行目 w1_name : Window1 // 073 行目 w1_BGC : white // 074 行目 w1_size : 100 200 // 076 行目 w1_menu : file edit // 077 行目 App_name : Window1 // 079 行目 Win_name : Window2 // 082 行目 App_name : Window2 // 083 行目 a1_name : Window2 // 084 行目 a1_BGC : white // 086 行目 a1_size : 200 400 // 089 行目 w1_size : 100 200 // 090 行目 a1_menu : file edit other // 091 行目 前 a1_size : 200 400 // 094 行目 a2_size : 200 400 // 095 行目 後 a1_size : 300 600 // 097 行目 a2_size : 200 400 // 098 行目 前 b1_size : 100 200 // 102 行目 b2_size : 100 200 // 103 行目 後 b1_size : 400 800 // 105 行目 b2_size : 400 800 // 106 行目
01 /******************************/ 02 /* クラスに対するプログラム例 */ 03 /* coded by Y.Suganuma */ 04 /******************************/ 05 import java.io.*; 06 import java.util.*; 07 08 public class Test { 09 public static void main(String args[]) throws IOException 10 { 11 // クラス Win 12 System.out.printf("Win_name : %s\n", Win.name); // 名前,static 指定のため可 13 System.out.printf("Win_name : %s\n", Win.getName()); // 名前,static 変数だけを参照可 14 Win w1 = new Win("file", "edit"); 15 System.out.printf("w1_name : %s\n", w1.name); // 名前 16 System.out.printf("w1_BGC : %s\n", w1.getBGC()); // 背景色 17 int s[] = w1.getSize(); // サイズの取得 18 System.out.printf("w1_size : %d %d\n", s[0], s[1]); 19 System.out.printf("w1_menu : %s %s\n", w1.menu.get(0), w1.menu.get(1)); // メニュー 20 // クラス App(クラス Win を継承) 21 System.out.printf("\nApp_name : %s\n", App.name); // 名前,App.getName() でも可 22 App a1 = new App("file", "edit"); 23 System.out.printf("a1_name : %s\n", a1.name); // 名前 24 // a1.setBGC("red"); // スーパークラスの private 変数にアクセスできない 25 System.out.printf("a1_BGC : %s\n", a1.getBGC()); // 背景色 26 a1.setSize(200, 400); // サイズの変更 27 s = a1.getSize(); 28 System.out.printf("a1_size : %d %d\n", s[0], s[1]); 29 System.out.printf("w1_size : %d %d\n", w1.getSize()[0], w1.getSize()[1]); 30 System.out.printf("a1_menu : %s %s %s\n", a1.menu.get(0), a1.menu.get(1), a1.menu.get(2)); // メニュー 31 // 代入 32 App a2 = a1; 33 System.out.printf("\n前 a1_size : %d %d\n", a1.getSize()[0],a1.getSize()[1]); 34 System.out.printf(" a2_size : %d %d\n", a2.getSize()[0],a2.getSize()[1]); 35 a1.setSize(300, 600); // サイズの変更 36 System.out.printf("後 a1_size : %d %d\n", a1.getSize()[0],a1.getSize()[1]); 37 System.out.printf(" a2_size : %d %d\n", a2.getSize()[0],a2.getSize()[1]); 38 } 39 } 40 41 /**************/ 42 /* クラス Win */ 43 /**************/ 44 class Win { 45 final static String name = "Window1"; // 名前 46 private String BGC = "white"; // 背景色 47 protected int size[] = {100, 200}; // サイズ(縦と横) 48 ArrayList <String> menu = new ArrayList <String> (); // メニュー 49 // コンストラクタ 50 Win (String s1, String s2) { 51 menu.add(s1); 52 menu.add(s2); 53 } 54 // 名前の取得 55 static String getName() { return name; } 56 // 背景色の取得 57 String getBGC() { return BGC; } 58 // サイズの取得 59 int[] getSize() { return size; } 60 } 61 62 /**************/ 63 /* クラス App */ 64 /**************/ 65 class App extends Win { // クラス Win を継承 66 // private String BGC; // 背景色 67 // コンストラクタ 68 App(String s1, String s2) { 69 super(s1, s2); 70 menu.add("other"); 71 } 72 // サイズの変更 73 void setSize(int row, int col) { size[0] = row; size[1] = col; } 74 // 背景色の変更(スーパークラスの private 変数にアクセスできない) 75 // void setBGC(String col) { BGC = col; } 76 // String getBGC() { return BGC; } 77 }
クラス名.静的メンバー変数名 クラス名.静的メンバー関数名
Win_name : Window1 // 12 行目 Win_name : Window1 // 13 行目 w1_name : Window1 // 15 行目 w1_BGC : white // 16 行目 w1_size : 100 200 // 18 行目 w1_menu : file edit // 19 行目 App_name : Window1 // 21 行目 a1_name : Window1 // 23 行目 a1_BGC : white // 25 行目 a1_size : 200 400 // 28 行目 w1_size : 100 200 // 29 行目 a1_menu : file edit other // 30 行目 前 a1_size : 200 400 // 33 行目 a2_size : 200 400 // 34 行目 後 a1_size : 300 600 // 36 行目 a2_size : 300 600 // 37 行目
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>クラス</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <SCRIPT TYPE="text/javascript"> 07 /******************************/ 08 /* クラスに対するプログラム例 */ 09 /* coded by Y.Suganuma */ 10 /******************************/ 11 function run() { 12 // クラス Win 13 let str = "Win_name : " + Win.name + "\n"; // 名前,static 指定のため可 14 str += "Win_name : " + Win.getName() + "\n"; 15 let w1 = new Win("file", "edit"); 16 // str += "w1_name : " + w1.getName() + "\n"; // 許されない 17 str += "w1_BGC : " + w1.getBGC() + "\n"; // 背景色 18 let s = w1.getSize(); // サイズの取得 19 str += "w1_size : " + s[0] + " " + s[1] + "\n"; 20 str += "w1_menu : " + w1.menu[0] + " " + w1.menu[1] + "\n"; // メニュー 21 // クラス App(クラス Win を継承) 22 str += "App_name : " + App.getName() + "\n"; 23 let a1 = new App("file", "edit"); 24 str += "Win_name : " + Win.getName() + "\n"; 25 str += "App_name : " + App.getName() + "\n"; 26 a1.setBGC("red"); 27 str += "a1_BGC : " + a1.BGC + "\n"; // 背景色 28 str += "w1_BGC : " + w1.getBGC() + "\n"; // 背景色 29 a1.setSize(200, 400); // サイズの変更 30 s = a1.getSize(); // サイズの取得 31 str += "a1_size : " + s[0] + " " + s[1] + "\n"; 32 str += "a1_menu : " + a1.menu[0] + " " + a1.menu[1] + " " + a1.menu[2] + "\n"; // メニュー 33 // 代入 34 let w2 = w1; 35 str += "前 w1_menu[0] : " + w1.menu[0] + "\n"; 36 str += " w2_menu[0] : " + w2.menu[0] + "\n"; 37 w1.menu[0] = "copy"; 38 str += "後 w1_menu[0] : " + w1.menu[0] + "\n"; 39 str += " w2_menu[0] : " + w2.menu[0] + "\n"; 40 // 結果の設定 41 document.getElementById("tx").value = str; 42 } 43 44 /**************/ 45 /* クラス Win */ 46 /**************/ 47 class Win { 48 static name = "Window1"; // 名前 49 #BGC = "white"; // 背景色,クラス外(継承クラスを含む)からは参照不可 50 51 constructor(s1, s2) 52 { 53 this.size = new Array(100, 200); // サイズ(縦と横) 54 this.menu = new Array(s1, s2); // メニュー 55 } 56 57 static getName = function() { return this.name; } // static 変数だけを参照可 58 getBGC = function() { return this.#BGC; } 59 getSize = function() { return this.size; } 60 } 61 62 /**************/ 63 /* クラス App */ 64 /**************/ 65 class App extends Win { // クラス Win を継承 66 static name = "window2"; // 記述しないとクラス名が入る 67 // コンストラクタ 68 constructor(s1, s2) { 69 super(s1, s2); 70 this.menu[2] = "other"; 71 } 72 // サイズの変更 73 setSize = function(row, col) { this.size[0] = row; this.size[1] = col; } 74 // 背景色の変更 75 setBGC = function(col) { this.BGC = col; } // BGC の定義も行われる 76 getBGC = function() { return this.BGC; } // 記述しないと親の getBGC 利用 77 } 78 </SCRIPT> 79 </HEAD> 80 <BODY STYLE="font-size:130%"> 81 <P STYLE="text-align:center"> 82 <INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR> 83 <TEXTAREA TYPE="text" ID="tx" COLS="25" ROWS="5" STYLE="font-size: 100%"></TEXTAREA> 84 </P> 85 </BODY> 86 </HTML>
クラス名.静的メンバー変数名 クラス名.静的メンバー関数名
Win_name : Window1 // 13 行目 Win_name : Window1 // 14 行目 w1_BGC : white // 17 行目 w1_size : 100 200 // 19 行目 w1_menu : file edit // 20 行目 App_name : window2 // 22 行目 Win_name : Window1 // 24 行目 App_name : window2 // 25 行目 a1_BGC : red // 27 行目 w1_BGC : white // 28 行目 a1_size : 200 400 // 31 行目 a1_menu : file edit other // 32 行目 前 w1_menu[0] : file // 35 行目 w2_menu[0] : file // 36 行目 後 w1_menu[0] : copy // 38 行目 w2_menu[0] : copy // 39 行目
01 <?php 02 /****************************/ 03 /* 関数に対するプログラム例 */ 04 /* coded by Y.Suganuma */ 05 /****************************/ 06 // クラス Win 07 printf("Win_name : %s\n", Win::$name); // 名前,static 指定のため可 08 printf("Win_name : %s\n", Win::getName()); // 名前,static 変数だけを参照可 09 $w1 = new Win("file", "edit"); 10 // printf("w1_name : %s\n", $w1->name); // 許されない 11 printf("w1_BGC : %s\n", $w1->getBGC()); // 背景色 12 $s = $w1->getSize(); // サイズの取得 13 printf("w1_size : %d %d\n", $s[0], $s[1]); 14 printf("w1_menu : %s %s\n", $w1->menu[0], $w1->menu[1]); // メニュー 15 // クラス App(クラス Win を継承) 16 printf("\nApp_name : %s\n", App::$name); // 名前,Win クラスと同じ 17 $a1 = new App("file", "edit"); 18 printf("App_name : %s\n", App::$name); // 新しい名前 19 printf("Win_name : %s\n", Win::$name); // 新しい名前 20 $a1->setBGC("red"); // ここで,App の $BGC が定義される 21 printf("a1_BGC : %s\n", $a1->BGC); // 背景色 22 printf("a1_BGC : %s\n", $a1->getBGC()); // 背景色 23 printf("w1_BGC : %s\n", $w1->getBGC()); // 背景色 24 $a1->setSize(200, 400); // サイズの変更 25 $s = $a1->getSize(); // サイズの取得 26 printf("a1_size : %d %d\n", $s[0], $s[1]); 27 printf("w1_size : %d %d\n", $w1->getSize()[0], $w1->getSize()[1]); 28 printf("a1_menu : %s %s %s\n", $a1->menu[0], $a1->menu[1], $a1->menu[2]); // メニュー 29 // 代入 30 $a2 = $a1; 31 printf("\n前 a1_size : %d %d\n", $a1->getSize()[0], $a1->getSize()[1]); 32 printf(" a2_size : %d %d\n", $a2->getSize()[0], $a2->getSize()[1]); 33 $a1->setSize(300, 600); // サイズの変更 34 printf("後 a1_size : %d %d\n", $a1->getSize()[0], $a1->getSize()[1]); 35 printf(" a2_size : %d %d\n", $a2->getSize()[0], $a2->getSize()[1]); 36 37 /**************/ 38 /* クラス Win */ 39 /**************/ 40 class Win { 41 static $name = "window1"; 42 private $BGC = "white"; 43 protected $size = array(100, 200); 44 public $menu = array(); 45 // コンストラクタ 46 function Win($s1, $s2) { 47 $this->menu[0] = $s1; 48 $this->menu[1] = $s2; 49 } 50 // 名前の取得 51 static function getName() { return self::$name; } 52 // 背景色の取得 53 function getBGC() { return $this->BGC; } 54 // サイズの取得 55 function getSize() { return $this->size; } 56 } 57 58 /**************/ 59 /* クラス App */ 60 /**************/ 61 class App extends Win { // クラス Win を継承 62 // private $BGC; 63 // コンストラクタ 64 function App($s1, $s2) { 65 self::$name = "window2"; // インスタンス化できないため,$this の代わりに self を使用 66 parent::Win($s1, $s2); 67 $this->menu[2] = "other"; 68 } 69 // サイズの変更 70 function setSize($row, $col) { $this->size[0] = $row; $this->size[1] = $col; } 71 // 背景色の変更 72 function setBGC($col) { $this->BGC = $col; } // $BGC の定義も行われる 73 // function getBGC() { return $this->BGC; } // 記述しないと親の BGC 参照 74 } 75 ?>
クラス名::静的メンバー変数名 クラス名::静的メンバー関数名
Win_name : window1 // 07 行目 Win_name : window1 // 08 行目 w1_BGC : white // 11 行目 w1_size : 100 200 // 13 行目 w1_menu : file edit // 14 行目 App_name : window1 // 16 行目 App_name : window2 // 18 行目 Win_name : window2 // 19 行目 a1_BGC : red // 21 行目 a1_BGC : white // 22 行目 w1_BGC : white // 23 行目 a1_size : 200 400 // 26 行目 w1_size : 100 200 // 27 行目 a1_menu : file edit other // 28 行目 前 a1_size : 200 400 // 31 行目 a2_size : 200 400 // 32 行目 後 a1_size : 300 600 // 34 行目 a2_size : 300 600 // 35 行目
01 ############################## 02 # クラスに対するプログラム例 # 03 # coded by Y.Suganuma # 04 ############################## 05 06 ############## 07 # クラス Win # 08 ############## 09 class Win 10 Name = "Window"; # 名前 11 @@_name = "other"; # クラス変数 12 # 初期設定(コンストラクタ) 13 def initialize(s1, s2) 14 @_BGC = "white"; 15 @_size = [100, 200]; 16 @_menu = [s1, s2]; 17 end 18 # 背景色の取得 19 def getBGC() 20 return @_BGC; 21 end 22 # サイズの取得 23 def getSize() 24 return @_size; 25 end 26 # インスタンス変数の読み込み許可 27 attr("_menu"); 28 # attr_accessor("_menu"); # インスタンス変数の読み込み,書き込み許可 29 end 30 31 ############## 32 # クラス App # 33 ############## 34 class App < Win # クラス Win を継承 35 # 初期設定(コンストラクタ) 36 def initialize(s1, s2) 37 super(s1, s2); # 記述しないとオーバーライドされる 38 @_menu[2] = @@_name; 39 end 40 # サイズの変更 41 def setSize(row, col) 42 @_size[0] = row; 43 @_size[1] = col; 44 end 45 # 背景色の変更 46 def setBGC(c) 47 @_BGC = c; 48 end 49 end 50 51 # クラス Win 52 printf("Win_name : %s\n", Win::Name); # 名前 53 w1 = Win.new("file", "edit"); 54 #printf("Win_name : %s\n", w1.Name); # 許されない 55 printf("w1_BGC : %s\n", w1.getBGC()); # 背景色 56 s = w1.getSize(); # サイズの取得 57 printf("w1_size : %d %d\n", s[0], s[1]); 58 printf("w1_menu : %s %s\n", w1._menu[0], w1._menu[1]); # メニュー 59 # クラス App(クラス Win を継承) 60 printf("\nApp_name : %s\n", App::Name); # 名前,Win クラスと同じ 61 a1 = App.new("file", "edit"); 62 a1.setBGC("red"); # 色の変更 63 printf("a1_BGC : %s\n", a1.getBGC()); # 背景色(a1) 64 printf("w1_BGC : %s\n", w1.getBGC()); # 背景色(w1) 65 a1.setSize(200, 400); # サイズの変更 66 s = a1.getSize(); # サイズの取得 67 printf("a1_size : %d %d\n", s[0], s[1]); 68 printf("w1_size : %d %d\n", w1.getSize()[0], w1.getSize()[1]); 69 printf("a1_menu : %s %s %s\n", a1._menu[0], a1._menu[1], a1._menu[2]); # メニュー 70 # 代入 71 a2 = a1; 72 printf("\n前 a1_size : %d %d\n", a1.getSize()[0], a1.getSize()[1]); 73 printf(" a2_size : %d %d\n", a2.getSize()[0], a2.getSize()[1]); 74 a1.setSize(300, 600); # サイズの変更 75 printf("後 a1_size : %d %d\n", a1.getSize()[0], a1.getSize()[1]); 76 printf(" a2_size : %d %d\n", a2.getSize()[0], a2.getSize()[1]);
クラス名::定数
Win_name : Window # 52 行目 w1_BGC : white # 55 行目 w1_size : 100 200 # 57 行目 w1_menu : file edit # 58 行目 App_name : Window # 60 行目 a1_BGC : red # 63 行目 w1_BGC : white # 64 行目 a1_size : 200 400 # 67 行目 w1_size : 100 200 # 68 行目 a1_menu : file edit other # 69 行目 前 a1_size : 200 400 # 72 行目 a2_size : 200 400 # 73 行目 後 a1_size : 300 600 # 75 行目 a2_size : 300 600 # 76 行目
01 # -*- coding: UTF-8 -*- 02 03 ############################## 04 # クラスに対するプログラム例 # 05 # coded by Y.Suganuma # 06 ############################## 07 08 ############## 09 # クラス Win # 10 ############## 11 class Win : 12 name = "Window1"; # 名前 13 # 初期化(コンストラクタ) 14 def __init__(self, s1, s2) : 15 self.BGC = "white" 16 self.size = [100, 200] 17 self.menu = [s1, s2] 18 # 背景色の取得 19 def getBGC(self) : return self.BGC 20 # サイズの取得 21 def getSize(self) : return self.size 22 # 名前の取得(クラスメソッド) 23 @classmethod 24 def getName_c(cls) : 25 return cls.name 26 # 名前の取得(スタティックメソッド) 27 @staticmethod 28 def getName_s() : 29 return Win.name 30 31 ############## 32 # クラス App # 33 ############## 34 class App(Win) : # クラス Win を継承 35 # 初期化(コンストラクタ) 36 def __init__(self, s1, s2) : 37 Win.__init__(self, s1, s2) 38 (self.menu).append("other") 39 # サイズの変更 40 def setSize(self, row, col) : 41 self.size[0] = row 42 self.size[1] = col 43 # 背景色の変更 44 def setBGC(self, col) : self.BGC = col 45 46 # クラス Win 47 print("Win_name :", Win.name) # 名前 48 w1 = Win("file", "edit") 49 print("w1_name :", w1.name) # 名前 50 print("w1_name(c) :", w1.getName_c()) # 名前(クラスメソッド) 51 print("w1_name(s) :", w1.getName_s()) # 名前(スタティックメソッド) 52 print("w1_BGC :", w1.getBGC()) # 背景色,print(w1.BGC) でも可 53 s = w1.getSize() # サイズの取得,s = w1.size でも可 54 print("w1_size :", s[0], s[1]) 55 print("w1_menu :", w1.menu[0], w1.menu[1]) # メニュー 56 # クラス App 57 print("\nApp_name :", App.name) # 名前(App) 58 print("Win_name :", Win.name) # 名前(Win) 59 a1 = App("file", "edit") 60 App.name = "Window2" 61 a1.name = "Window3" 62 print("App_name :", App.name) # 名前(App) 63 print("Win_name :", Win.name) # 名前(Win) 64 print("a1_name :", a1.name) # 名前 65 print("a1_name(c) :", a1.getName_c()) # 名前(クラスメソッド) 66 print("a1_name(s) :", a1.getName_s()) # 名前(スタティックメソッド) 67 a1.setBGC("red"); 68 print("a1_BGC :", a1.getBGC()) # 背景色,print(a1.BGC) でも可 69 print("w1_BGC :", w1.getBGC()) # 背景色,print(w1.BGC) でも可 70 a1.setSize(200, 400) # サイズの変更 71 s = a1.getSize() # サイズの取得,s = a1.size でも可 72 print("a1_size :", s[0], s[1]) 73 print("w1_size :", w1.getSize()[0], w1.getSize()[1]) 74 print("a1_menu :", a1.menu[0], a1.menu[1], a1.menu[2]) # メニュー 75 # 代入 76 a2 = a1 77 print("\n前 a1_size :", a1.getSize()[0], a1.getSize()[1]) 78 print(" a2_size :", a2.getSize()[0], a2.getSize()[1]) 79 a1.setSize(300, 600) # サイズの変更 80 print("後 a1_size :", a1.getSize()[0], a1.getSize()[1]) 81 print(" a2_size :", a2.getSize()[0], a2.getSize()[1])
クラス名.変数名
Win_name : Window1 # 47 行目 w1_name : Window1 # 49 行目 w1_name(c) : Window1 # 50 行目 w1_name(s) : Window1 # 51 行目 w1_BGC : white # 52 行目 w1_size : 100 200 # 54 行目 w1_menu : file edit # 55 行目 App_name : Window1 # 57 行目 Win_name : Window1 # 58 行目 App_name : Window2 # 62 行目 Win_name : Window1 # 63 行目 a1_name : Window3 # 64 行目 a1_name(c) : Window2 # 65 行目 a1_name(s) : Window1 # 66 行目 a1_BGC : red # 68 行目 w1_BGC : white # 69 行目 a1_size : 200 400 # 72 行目 w1_size : 100 200 # 73 行目 a1_menu : file edit other # 74 行目 前 a1_size : 200 400 # 77 行目 a2_size : 200 400 # 78 行目 後 a1_size : 300 600 # 80 行目 a2_size : 300 600 # 81 行目
01 /******************************/ 02 /* クラスに対するプログラム例 */ 03 /* coded by Y.Suganuma */ 04 /******************************/ 05 using System; 06 using System.Collections.Generic; 07 08 class Program 09 { 10 static void Main() 11 { 12 // クラス Win 13 Console.WriteLine("Win_name : " + Win.name); // 名前,static 指定のため可 14 Console.WriteLine("Win_name : " + Win.getName()); // 名前,static 変数だけを参照可 15 Win w1 = new Win("file", "edit"); 16 // Console.WriteLine("w1_name : " + w1.name); // 参照不可 17 Console.WriteLine("w1_BGC : " + w1.getBGC()); // 背景色 18 int[] s = w1.getSize(); // サイズの取得 19 Console.WriteLine("w1_size : " + s[0] + " " + s[1]); 20 Console.WriteLine("w1_menu : " + w1.menu[0] + " " + w1.menu[1]); // メニュー 21 // クラス App(クラス Win を継承) 22 Console.WriteLine("\nApp_name : " + App.name); // 名前,App.getName() でも可 23 App a1 = new App("file", "edit"); 24 // Console.WriteLine("a1_name : " + a1.name); // 参照不可 25 Console.WriteLine("a1_BGC : " + a1.getBGC()); // 背景色 26 a1.setSize(200, 400); // サイズの変更 27 s = a1.getSize(); 28 Console.WriteLine("a1_size : " + s[0] + " " + s[1]); 29 Console.WriteLine("w1_size : " + w1.getSize()[0] + " " + w1.getSize()[1]); 30 Console.WriteLine("a1_menu : " + a1.menu[0] + " " + a1.menu[1] + " " + a1.menu[2]); // メニュー 31 // 代入 32 Console.WriteLine(); 33 App a2 = a1; 34 Console.WriteLine("前 a1_size : " + a1.getSize()[0] + " " + a1.getSize()[1]); 35 Console.WriteLine(" a2_size : " + a2.getSize()[0] + " " + a2.getSize()[1]); 36 a1.setSize(300, 600); // サイズの変更 37 Console.WriteLine("後 a1_size : " + a1.getSize()[0] + " " + a1.getSize()[1]); 38 Console.WriteLine(" a2_size : " + a2.getSize()[0] + " " + a2.getSize()[1]); 39 } 40 } 41 42 /**************/ 43 /* クラス Win */ 44 /**************/ 45 class Win { 46 public static String name = "Window1"; // 名前 47 private String BGC = "white"; // 背景色 48 protected int[] size = {100, 200}; // サイズ(縦と横) 49 public List <String> menu = new List <String> (); // メニュー 50 // コンストラクタ 51 public Win(String s1, String s2) { 52 menu.Add(s1); 53 menu.Add(s2); 54 } 55 // 名前の取得 56 public static String getName() { return name; } 57 // 背景色の取得 58 public virtual String getBGC() { return BGC; } 59 // サイズの取得 60 public int[] getSize() { return size; } 61 } 62 63 /**************/ 64 /* クラス App */ 65 /**************/ 66 class App : Win { // クラス Win を継承 67 // コンストラクタ 68 public App(String s1, String s2) : base(s1, s2) // base は基底クラスのコンストラクタ 69 { 70 menu.Add("other"); 71 } 72 // サイズの変更 73 public void setSize(int row, int col) 74 { 75 size[0] = row; 76 size[1] = col; 77 } 78 // 背景色の取得(基底クラスの private 変数にアクセスできない) 79 public override String getBGC() 80 { 81 // return BGC; // アクセス不可 82 return base.getBGC(); 83 } 84 }
クラス名.静的メンバー変数名 クラス名.静的メンバー関数名
Win_name : Window1 // 13 行目 Win_name : Window1 // 14 行目 w1_BGC : white // 17 行目 w1_size : 100 200 // 19 行目 w1_menu : file edit // 20 行目 App_name : Window1 // 22 行目 a1_BGC : white // 25 行目 a1_size : 200 400 // 28 行目 w1_size : 100 200 // 29 行目 a1_menu : file edit other // 30 行目 前 a1_size : 200 400 // 34 行目 a2_size : 200 400 // 35 行目 後 a1_size : 300 600 // 37 行目 a2_size : 300 600 // 38 行目
01 '''''''''''''''''''''''''''''' 02 ' クラスに対するプログラム例 ' 03 ' coded by Y.Suganuma ' 04 '''''''''''''''''''''''''''''' 05 Imports System 06 Imports System.Collections.Generic 07 08 Module Test 09 Sub Main() 10 ' クラス Win 11 Dim w1 As Win = new Win("file", "edit") 12 Console.WriteLine("w1_name : " & w1.name) ' 名前,a1.getName() でも可 13 Console.WriteLine("w1_BGC : " & w1.getBGC()) ' 背景色 14 Dim s() As Integer = w1.getSize() ' サイズの取得 15 Console.WriteLine("w1_size : " & s(0) & " " & s(1)) 16 Console.WriteLine("w1_menu : " & w1.menu(0) & " " & w1.menu(1)) ' メニュー 17 ' クラス App(クラス Win を継承) 18 Console.WriteLine() 19 Dim a1 As App = new App("file", "edit", 2) 20 Console.WriteLine("a1_name : " & a1.getName()) ' 名前,a1.name でも可 21 a1.name = "Window2" 22 Console.WriteLine("a1_name(変更後) : " & a1.getName()) ' 名前,a1.name でも可 23 Console.WriteLine("a1_BGC : " & a1.getBGC()) ' 背景色 24 a1.setSize(200, 400) ' サイズの変更 25 s = a1.getSize() 26 Console.WriteLine("a1_size : " & s(0) & " " & s(1)) 27 Console.WriteLine("w1_size : " & w1.getSize()(0) & " " & w1.getSize()(1)) 28 Console.WriteLine("a1_menu : " & a1.menu(0) & " " & a1.menu(1) & " " & a1.menu(2)) 29 Console.WriteLine("x : " & a1.x(0) & " " & a1.x(1)) ' 配列 x 30 ' 代入 31 Console.WriteLine() 32 Dim a2 As App = a1 33 Console.WriteLine("前 a1_size : " & a1.getSize()(0) & " " & a1.getSize()(1)) 34 Console.WriteLine(" a2_size : " & a2.getSize()(0) & " " & a2.getSize()(1)) 35 a1.setSize(300, 600) ' サイズの変更 36 Console.WriteLine("後 a1_size : " & a1.getSize()(0) & " " & a1.getSize()(1)) 37 Console.WriteLine(" a2_size : " & a2.getSize()(0) & " " & a2.getSize()(1)) 38 End Sub 39 40 '''''''''''''' 41 ' クラス Win ' 42 '''''''''''''' 43 Class Win 44 Public name As String = "Window1" ' 名前 45 Private BGC As String = "white" ' 背景色 46 Protected size() As Integer = {100, 200} ' サイズ(縦と横) 47 Public menu As New List(Of String) ' メニュー 48 ' コンストラクタ 49 Public Sub New (s1 As String, s2 As String) 50 menu.Add(s1) 51 menu.Add(s2) 52 End Sub 53 ' 名前の取得 54 Public Function getName() As String 55 Return name 56 End Function 57 ' 背景色の取得 58 Public Function getBGC() As String 59 Return BGC 60 End Function 61 ' サイズの取得 62 Public Function getSize() As Integer() 63 Return size 64 End Function 65 End Class 66 67 '''''''''''''' 68 ' クラス App ' 69 '''''''''''''' 70 Class App 71 Inherits Win ' クラス Win を継承 72 Private BGC As String = "red" ' 背景色 73 Public x() As Integer 74 ' コンストラクタ 75 Public Sub New (s1 As String, s2 As String, n As Integer) 76 MyBase.new(s1, s2) ' 基底クラスのコンストラクタ 77 menu.Add("other") 78 ReDim x(n) 79 x(0) = 10 80 x(1) = 20 81 End Sub 82 ' サイズの変更 83 Public Sub SetSize(row As Integer, col As Integer) 84 size(0) = row 85 size(1) = col 86 End Sub 87 ' 背景色の取得(基底クラスの private 変数にアクセス不可) 88 Public Overloads Function getBGC() As String 89 Return BGC 90 End Function 91 End Class 92 End Module
w1_name : Window1 // 12 行目 w1_BGC : white // 13 行目 w1_size : 100 200 // 15 行目 w1_menu : file edit // 16 行目 a1_name : Window1 // 20 行目 a1_name(変更後) : Window2 // 22 行目 a1_BGC : red // 23 行目 a1_size : 200 400 // 26 行目 w1_size : 100 200 // 27 行目 a1_menu : file edit other // 28 行目 x : 10 20 // 29 行目 前 a1_size : 200 400 // 33 行目 a2_size : 200 400 // 34 行目 後 a1_size : 300 600 // 36 行目 a2_size : 300 600 // 37 行目
情報学部 | 菅沼ホーム | 目次 | 索引 |