オブジェクトフィールドをクラスで型指定する

4D 20 R10 では、オブジェクトの型指定が大きく前進し、コードにさらなる信頼性とコントロールを与えます。今後 4D は、値がオブジェクトであるかだけをチェックするのではなく、特定のクラスのインスタンスであるかを検証します。これにより、よりスマートな自動コード補完、インライン検証、より厳しいコンパイルチェックが可能になり、ミスを早期に発見し、より明確で保守性の高いコードを書くことができます。

メリットは変数や関数の結果だけにとどまりません。この機能強化は、データモデルにも適用されます。ストラクチャーエディターのオブジェクトフィールドに、ユーザー定義クラスやネイティブクラス (AI実装用の新しい 4D.Vector など) を型として直接指定できるようになりました。これにより 4D は、オブジェクトの構造を理解し、より信頼性の高い開発を可能にします。

HDI: 型指定されたオブジェクトフィールド

オブジェクトフィールド属性のシンタックスチェック

4D は、以下の場所でオブジェクトの型をチェックします:

  • コードエディターでの入力中

  • コンパイラーでのシンタックスチェック中

不適切なオブジェクトの使用や、単純なタイプミスが早期に警告やエラーとして表示されるようになり、リファクタリングやデバッグ時の信頼性が向上しました。

注記: あるクラスが他のクラスに継承されている場合には、そのクラスのオブジェクトを他クラスのオブジェクト変数に代入することができます。これは、アップキャスト (親クラスの変数に子クラスを代入すること) とダウンキャスト (適切な場合に親クラスを子クラスにキャストすること) の両方をサポートします。たとえば、Dog クラスは Animalクラスを継承しているので、両方を安全に書くことができます:
var $animal:cs.Animal:=cs.Dog.new()  // アップキャスト
// または
var $dog:cs.Dog:=cs.Animal.new()  // ダウンキャスト

オブジェクトフィールド用のクラスを定義する

データストラクチャーでオブジェクト型のフィールドを宣言すると、ストラクチャーエディターのインスペクターには新しいクラス入力欄が追加されます。これにより、ビジネスオブジェクトやネイティブ4Dクラスなどの特定のクラスでフィールドを関連付けることができます。

例として、Vector というフィールドに 4D.Vector という型を割り当てることができます:

blank

注記: クラス欄は、プロジェクトモードで作業している時のみ使用できます

コードエディター: 属性の自動コード補完

クラスの関連付けのおかげで、オブジェクトフィールドを含むコードを書くときに、指定クラスで定義されている属性が提案されるようになりました。

blank

まとめ

このアップデートは、4D でのオブジェクトフィールドの扱いが大きく改善しました。クラスによる型指定をサポートすることで、4D は、ストラクチャー設計からランタイム実行まで、より堅牢で、保守性が高く、インテリジェントな開発体験を提供します。

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。