パラメータのクラスに従って、Smalltalk でメソッドをオーバーロードできないことはわかっています。この設計上の問題が残っています:
Mail を実装するクラス、Sentence を実装するクラス、Word を実装するクラスの 3 つのクラスがあります。これら 3 つのクラスには、String を引数として受け取る addContent というメソッドがあります。Mail と Sentence には Word を受け取る addContent という別のメソッドがあり、Mail には Sentence を受け取る別の addContent があります。側では、それらすべてに、コンテンツを文字列として返す returnAsString というメソッドがあります。
次の可能性が残されています。
依存関係を介して実装します。メールには Sentence のコレクションがあり、Sentence には Word のコレクションがあります (Word には文字列だけがあります)。次に、そのコンテンツを文字列で返すようにパラメーターに要求し、オブジェクトの属性が addContent(String) を使用してそれをロードするようにすることで、その addContent を実装できます。このアプローチで私が見つけた問題は、String オブジェクトがそれ自体を String として返すメソッドを追加する必要があり、残りのメソッドは returnAsString にする必要があることです。
それらをすべて基本抽象クラスから継承させます。Word に Sentence を介して addContent のメソッドを持たせるため、これがどのように機能するかはわかりませんが、それは間違っています。
何か案は?
ありがとう