| 情報学部 | 菅沼ホーム | 目次 | 索引 |
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 行目
| 情報学部 | 菅沼ホーム | 目次 | 索引 |