OOPの専門家に質問です。 - ページ 35 1...282930313233343536373839404142...55 新しいコメント Dmitry Fedoseev 2019.10.05 18:48 #341 Реter Konow: 階層の深いところにある共通のルートを持つ子孫クラス間のクロスリンクはどのように確立されるのでしょうか? 例えば、こんな感じです。クラスFとクラスZは、階層内の共通のルートであるクラスAを持つ継承の連鎖の末端リンクです。 クラスFからクラスZのデータやメソッドを取得するにはどうすればよいか? 無理でしょう。そんなものはない。しかし、その必要はない。 オブジェクトを作成した 後、あるオブジェクトから2番目のオブジェクトにポインタを渡し、2番目のオブジェクトから1番目のオブジェクトにポインタを渡すことができます。 ただし、クラスについて具体的に話す場合は、コロン2つでどんなオブジェクトでもアドレス指定できます。しかし、何のために必要なのでしょうか?もちろん必要な場合もありますが、極めてマイナーなOOP機能です。 Реter Konow 2019.10.05 18:57 #342 Dmitry Fedoseev: まさかね。そんなものはない。でも、その必要はないんです。 オブジェクトを作成した 後、1つのオブジェクトのポインタを2つ目に、2つ目のオブジェクトのポインタを1つ目に渡すことができます。 ただし、クラスについて具体的に話す場合は、コロン2つで何でも参照できる。しかし、何のために必要なのでしょうか? Fクラスがどんな課題を解決しているかによりますね。サードパーティの継承チェーンで使用されるデータやメソッドが有用な場面もあるかもしれない。 Реter Konow 2019.10.05 19:15 #343 例クラスFにはColorメソッドとLengthメソッド、クラスZにはSoundメソッドとWidthメソッドが格納されています。 長さと幅の2つのプロパティを持つオブジェクトが表示されますが、それらは異なるFとZクラスで計算されています。どうすればいいのか?これらのメソッドの繰り返しを持つ別のクラスを作成するか、またはどのようにそれらにアクセスするのですか?(4つのドットで?)です。 Dmitry Fedoseev 2019.10.05 19:29 #344 Реter Konow: 例クラスFにはColorメソッドとLengthメソッド、クラスZにはSoundメソッドとWidthメソッドが格納されています。 長さと幅の2つのプロパティを持つオブジェクトが表示されますが、それらは異なるFとZクラスで計算されています。どうすればいいのか?これらのメソッドの繰り返しを持つ別のクラスを作成するか、またはどのようにそれらにアクセスするのですか?(4つのドットで?)です。 新しいクラスを作り、その中にFクラスとZクラスを入れればいい。 class F{ }; class Z{ }; class Y{ public: F f; Z z; } Реter Konow 2019.10.05 19:31 #345 Dmitry Fedoseev: 新しいクラスを作成し、その中にクラスFとZを含めることができます。 お辞儀の授業?了解です、ありがとうございます Artyom Trishkin 2019.10.05 19:34 #346 Dmitry Fedoseev:新しいクラスを作成し、その中にクラスFとZを含めることができます。 あるいは、他のクラスのデータが欲しいクラスの中に、必要なクラスへのポインタを 取得するメソッドを作ることもできます。 Artyom Trishkin 2019.10.05 19:36 #347 Реter Konow: クラスの "お辞儀"?了解です、ありがとうございます 欲しいクラスへのポインタを取得し、そのポインタを使ってクラスオブジェクトを 取得すればいいのです。しかし、空や新しいクラスオブジェクトへのポインタを取得しないように注意する必要があります。 Реter Konow 2019.10.05 19:46 #348 Artyom Trishkin: 単純に目的のクラスへのポインタを取得し、そのポインタを用いてクラスオブジェクトを 取得することができます。しかし、空のクラスオブジェクトへのポインタを取得しないように注意する必要があります。 微妙なところなるほど、継承の階層化は、データが明確に分類でき、あらかじめ定義され、曖昧さがない場合に便利なのですね。オブジェクトが複雑になると、クラスでは想定していなかったメソッドやプロパティの組み合わせが登場することがあるため、クラス間のクロスリンクである「バインディング」を構築する必要があるのだ。これは必ずしも便利ではなく、美しい配布方式が崩れ、修正を余儀なくされる可能性があります。 Artyom Trishkin 2019.10.05 19:48 #349 Реter Konow: お辞儀」の授業?なるほど、ありがとうございます。 例では class F{ }; class Z{ }; class Y{ public: F f; Z z; } クラスYは、クラスFとクラスZの型を持つ変数を含む。 しかし、すでにFクラスと Zクラスのオブジェクトが どこかで作成され使用されている場合、オブジェクトYでそれらにアクセスすることはできません。オブジェクトYの中にクラスFとZの2つの新しいオブジェクトが存在することになります。 そして、先に作られ、すでに使われているクラスFとZのオブジェクトにアクセスするには、クラスYでオブジェクトFとZへの参照を得る必要があります。そうすれば、クラスYは、新しい原始的なFとZを使うのではなく、すでにFとZに書かれているそれらのデータで操作できるようになります。 しかし、そのようなオブジェクトを作れば、その中のFとZはクラスFとZへのアクセスを与え、クラスYを介してのみそれらを埋める必要があります - 再び、そこからオブジェクトFとZへのアクセスを与え、必要なオブジェクトへのポインタを取得し、ポインタによってそれを操作することができます。 Artyom Trishkin 2019.10.05 19:52 #350 Реter Konow: 微妙なところなるほど、継承の階層化は、データが明確に分類でき、あらかじめ定義され、曖昧さがない場合に便利なのですね。オブジェクトが複雑になると、クラスが意図しないメソッドやプロパティの組み合わせが現れることがあり、そのためには「バインディング」、つまりクラス間のクロスリンクの構築が必要になる。これは必ずしも便利ではなく、美しい配布方式が崩れ、修正を余儀なくされる可能性があります。 何も壊す必要はありません。別のクラスの必要なオブジェクトへのポインタを与えるメソッドをクラスに追加すればいいのです。 最近の記事では、この方法で、すでに作成され動作しているシンボル・コレクション・クラスのオブジェクトや、すでにデータが蓄積されている当座預金のオブジェクトへのポインタを、トレード・オブジェクトに渡しています。そして、貿易クラスは、まるで昔から持っていたかのように、それを扱っています。 1...282930313233343536373839404142...55 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
階層の深いところにある共通のルートを持つ子孫クラス間のクロスリンクはどのように確立されるのでしょうか?
例えば、こんな感じです。クラスFとクラスZは、階層内の共通のルートであるクラスAを持つ継承の連鎖の末端リンクです。
クラスFからクラスZのデータやメソッドを取得するにはどうすればよいか?
無理でしょう。そんなものはない。しかし、その必要はない。
オブジェクトを作成した 後、あるオブジェクトから2番目のオブジェクトにポインタを渡し、2番目のオブジェクトから1番目のオブジェクトにポインタを渡すことができます。
ただし、クラスについて具体的に話す場合は、コロン2つでどんなオブジェクトでもアドレス指定できます。しかし、何のために必要なのでしょうか?もちろん必要な場合もありますが、極めてマイナーなOOP機能です。
まさかね。そんなものはない。でも、その必要はないんです。
オブジェクトを作成した 後、1つのオブジェクトのポインタを2つ目に、2つ目のオブジェクトのポインタを1つ目に渡すことができます。
ただし、クラスについて具体的に話す場合は、コロン2つで何でも参照できる。しかし、何のために必要なのでしょうか?
例クラスFにはColorメソッドとLengthメソッド、クラスZにはSoundメソッドとWidthメソッドが格納されています。
長さと幅の2つのプロパティを持つオブジェクトが表示されますが、それらは異なるFとZクラスで計算されています。どうすればいいのか?これらのメソッドの繰り返しを持つ別のクラスを作成するか、またはどのようにそれらにアクセスするのですか?(4つのドットで?)です。
例クラスFにはColorメソッドとLengthメソッド、クラスZにはSoundメソッドとWidthメソッドが格納されています。
長さと幅の2つのプロパティを持つオブジェクトが表示されますが、それらは異なるFとZクラスで計算されています。どうすればいいのか?これらのメソッドの繰り返しを持つ別のクラスを作成するか、またはどのようにそれらにアクセスするのですか?(4つのドットで?)です。
新しいクラスを作り、その中にFクラスとZクラスを入れればいい。
新しいクラスを作成し、その中にクラスFとZを含めることができます。
新しいクラスを作成し、その中にクラスFとZを含めることができます。
あるいは、他のクラスのデータが欲しいクラスの中に、必要なクラスへのポインタを 取得するメソッドを作ることもできます。
クラスの "お辞儀"?了解です、ありがとうございます
欲しいクラスへのポインタを取得し、そのポインタを使ってクラスオブジェクトを 取得すればいいのです。しかし、空や新しいクラスオブジェクトへのポインタを取得しないように注意する必要があります。
単純に目的のクラスへのポインタを取得し、そのポインタを用いてクラスオブジェクトを 取得することができます。しかし、空のクラスオブジェクトへのポインタを取得しないように注意する必要があります。
お辞儀」の授業?なるほど、ありがとうございます。
例では
クラスYは、クラスFとクラスZの型を持つ変数を含む。
しかし、すでにFクラスと Zクラスのオブジェクトが どこかで作成され使用されている場合、オブジェクトYでそれらにアクセスすることはできません。オブジェクトYの中にクラスFとZの2つの新しいオブジェクトが存在することになります。
そして、先に作られ、すでに使われているクラスFとZのオブジェクトにアクセスするには、クラスYでオブジェクトFとZへの参照を得る必要があります。そうすれば、クラスYは、新しい原始的なFとZを使うのではなく、すでにFとZに書かれているそれらのデータで操作できるようになります。
しかし、そのようなオブジェクトを作れば、その中のFとZはクラスFとZへのアクセスを与え、クラスYを介してのみそれらを埋める必要があります - 再び、そこからオブジェクトFとZへのアクセスを与え、必要なオブジェクトへのポインタを取得し、ポインタによってそれを操作することができます。
微妙なところなるほど、継承の階層化は、データが明確に分類でき、あらかじめ定義され、曖昧さがない場合に便利なのですね。オブジェクトが複雑になると、クラスが意図しないメソッドやプロパティの組み合わせが現れることがあり、そのためには「バインディング」、つまりクラス間のクロスリンクの構築が必要になる。これは必ずしも便利ではなく、美しい配布方式が崩れ、修正を余儀なくされる可能性があります。
何も壊す必要はありません。別のクラスの必要なオブジェクトへのポインタを与えるメソッドをクラスに追加すればいいのです。
最近の記事では、この方法で、すでに作成され動作しているシンボル・コレクション・クラスのオブジェクトや、すでにデータが蓄積されている当座預金のオブジェクトへのポインタを、トレード・オブジェクトに渡しています。そして、貿易クラスは、まるで昔から持っていたかのように、それを扱っています。