4Dでオブジェクト指向プログラミング。クラス継承の管理

Deeplからの自動翻訳

以前のブログ記事で、オブジェクト指向プログラミングにおいて非常に重要な概念を紹介しました。クラスです。今回は、もう一つの核となる概念について説明します。継承とは、あるクラスが他のクラスの振る舞いを取得できるようにする仕組みのことです。

データベースの例

前回のブログで紹介した “Person “クラスの例を覚えていますか?ここでは学校を想定して、生徒と先生を管理することにします。どちらもですが、異なる特性を持っています。そこで、”Teacher” クラスと “Student” クラスを作成し、両方のクラスが “Person” クラスの特性を継承するようにします。

Aクラスを他のクラスからどのように継承するのですか?

新しい Class extendsキーワードが追加され、継承が容易になりました。学校の例で言うと、「Person」クラスを継承した「Student」クラスを作成します。

Class Extends Person

コンストラクタは?

では、コンストラクタについては(「Student」クラスの特定のコンストラクタを定義していない場合)、「Person」クラスのコンストラクタが自動的に呼び出されます。

また、コンストラクタをオーバーライドすることも可能です。例えば「Student」の場合:Personとして名前、苗字、生年月日を持ちますが、Studentは学年と学校も持ちます。このような場合、new Superコマンドを使用すると、親クラスのコンストラクタを呼び出すことができます。そして「Student」コンストラクタの中で、学年と学校に関する特定のコードを追加します。

Class constructor
C_TEXT
// Grade( ) ( ) ( ) ( ) ( ) ( ; ; ) . := $1 // FirstName
C_TEXT$2 // LastName
C_DATE$3 // Birthdate C_TEXT$4 // SchoolName
C_TEXT$5
Super$1$2$3 // Call the "Person" constructor
ThisSchoolName$4

This . :=。Grade$5

関数は?

Student “クラスに固有の関数を追加し、そこから親クラス(”Person”)の関数を呼び出すことができます。

次の例では、生徒の名前、学年、学校名を含む文字列を返す関数を用意しています。Person” クラスには、人物のフルネームを返す関数がすでに用意されています。そこで、この関数を呼び出し、getFullName 、生徒特有の情報を追加します。

Function getIdentity
C_TEXT( ) := . ()+", "+ .の「+」の成績は、「+ .$0
$0SupergetFullNameThisGradeThisSchoolName

メソッドで、”Student” クラスのインスタンスを作成します。親クラスである “Person” からgetFullName 関数を呼び出します。そして、”Student” クラスからgetIdentity 関数を呼び出します。このように、getFullNamegetIdentity の関数の間には、何の違いもありません。

C_OBJECT($s)
$s :=cs.Student.new("Joe"; "Doe";!2002-02-20!; "Waco High School"; "10th")

$name :=$s.getFullName()
//return John Doe
$identity :=$s.getIdentity() //return Joe DOE, 10th grade in Waco High School

ライブデモをまとめると

Vanessa Talbot
- プロダクトオーナー - Vanessa Talbotは、2014年6月に4Dプログラムチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。入社以来、4Dにおける主要機能の定義に関わってきました。プリエンプティブ/マルチスレッドの新機能の大部分と、非常に複雑なテーマである組み込みアプリケーションの新アーキテクチャに取り組んできました。VanessaはTelecom Saint-Etienneで学位を取得後、Criminal Research Institute でオーディオビジュアル部門の開発者としてキャリアをスタートさせました。また、メディアや医療の分野でも、技術サポートやプロダクションの分野で働いてきました。