Slide 102
Slide 102 text
2000年代:手続き型からオブジェクト指向プログラミングへ変化していった時代
102
#include
#include
// "クラス"構造体の定義
typedef struct {
char message[50];
void (*print)(struct HelloWorld*); // メソッドを指す関数ポインタ
} HelloWorld;
// メソッド関数の定義
void printMessage(HelloWorld *self) {
printf("%s\n", self->message);
}
// "コンストラクタ"関数
void HelloWorld_init(HelloWorld *self, const char *msg) {
strncpy(self->message, msg, sizeof(self->message) - 1);
self->message[sizeof(self->message) - 1] = '\0'; // 文字列終端の確保
self->print = printMessage;
}
int main() {
// オブジェクトの生成と初期化
HelloWorld hw;
HelloWorld_init(&hw, "Hello, World!");
// メソッドの呼び出し
hw.print(&hw);
return 0;
}
C言語
class HelloWorld {
private String message;
public HelloWorld(String message) {
this.message = message;
}
public void print() {
System.out.println(message);
}
public static void main(String[] args) {
HelloWorld hw = new HelloWorld("Hello, World!");
hw.print();
}
}
Java