# IEC 61131-3 第3版の機能について


IEC61131-3の第3版では、オブジェクト指向を用いたプログラミングが可能です。IECではクラスという概念が定義されていますが、TwinCATでは同じカプセル化を実現する方法として旧来からあるファンクションブロックを拡張する形でクラスの機能を追加しました。


プロパティ
    : `GET`はファンクションブロック内部の変数を外部へ読み出すためのアクセス機構です。また、`SET`は外部の変数の値をファンクションブロック内部の変数へ書き込むためのアクセス機構です。

メソッド
    : 従来ファンクションブロックのボディに一つだけ定義できたものを、任意の名前を付けて複数の処理を定義する機構をメソッドと呼びます。外部のプログラム、および、ファンクションブロック内部のプログラムロジックが明示的に任意のメソッドを呼び出して処理を行う事ができます。

インターフェースと継承
    : 他のファンクションブロックの機能を継承して追加実装する機構や、共通のインターフェースを備えた抽象クラスを読み込んで実行するファンクションブロックを定義する事で、インターフェース実装した派生のファンクションブロックをダイナミックに実行させることができます。

```{csv-table}
:header: ファンクションブロックの機能, 従来, オブジェクト指向

アクセッサ, `VAR_INPUT`、`VAR_OUTPUT`、`VAR_IN_OUT` , プロパティの`GET`と`SET`
処理ロジック, ボディに一つだけ定義可能, メソッドとして複数定義可能
多態性の実現方法, ポインタ、参照, ポインタ、参照、インターフェース
継承機能の違い, 全てのアクセッサへアクセス可能, 親クラスを`SUPER^`、自クラスを`THIS^`としたポインタを通してメソッドやアクセッサへアクセスする必要がある。
```


