問題タブ [oop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHPで親オブジェクトのクラス変数にアクセスするにはどうすればよいですか?
クラスAのインスタンスは、たとえばクラスBから、他のいくつかのオブジェクトをインスタンス化します。
B内のメソッドからAのパブリッククラス変数にアクセスしたいと思います。
何かが足りない場合を除いて、これを行う唯一の方法は、現在のオブジェクトをBのインスタンスに渡すことです。
これはベストプラクティスですか、それともこれを行う別の方法がありますか?
oop - 依存関係逆転の原則とは何ですか? なぜ重要なのですか?
依存関係逆転の原則とは何ですか? なぜ重要なのですか?
inheritance - この並列階層を削除する方法
次のシナリオに最適なデザインを見つけようとしています - ダンス競技会の結果を保存するアプリケーションです。
イベントには複数のラウンドが含まれ、各ラウンドには多数のパフォーマンス (ダンスごとに 1 つ) が含まれます。各パフォーマンスは、スコアシートを返す多くの審査員によって審査されます。
ラウンドには、ファイナル ラウンド (6 つ以下のダンス カップルを含む) と通常のラウンド (6 つ以上のダンス カップルを含む) の 2 種類があります。それぞれに、わずかに異なる動作とデータが必要です。
決勝ラウンドの場合、各スコアシートには、最終ショーでジャッジが 1 位、2 位などと付けた 6 カップルの順序付きリストが含まれます。私はこれらの順位を「スコアシートには 6 位が含まれる」と呼びます。順位にはカップル番号とそのカップルの順位が含まれます
通常のラウンドの場合、各スコアシートには順序付けられていない M カップルのセットが含まれます (M < ラウンドに参加するカップルの数 - 競技主催者によって決定される正確な値)。私はこれらのリコールを「M がリコールするスコアシート」と呼んでいます。リコールにはスコアやランキングは含まれません
例えば、ファイナルで
- 1位:カップル56
- 2位:夫婦234
- 3位:夫婦 198
- 4位:カップル98
- 5位:カップル 3
- 6位:カップル125
通常のラウンドの場合 次のカップルがリコールされます 54,67,201,104,187,209,8,56,79,35,167,98
これの私の素朴なバージョンは次のように実装されています
イベント - has_one final_round、has_many ラウンド
final_round - has_many final_performances final_performance - has_many final_scoresheets final_scoresheet - has_many 順位
ラウンド - has_many パフォーマンス パフォーマンス has_many スコアシート スコアシート has_many リコール
しかし、私はこれが必要とする複製が好きではありません。また、いくつかの並列階層 (ラウンド、パフォーマンス、スコアシート用) があり、維持するのが面倒です。
oop - Reuse/Release Equivalence Principle (REP)
Reuse/Release Equivalence Principle とは何ですか? なぜ重要なのですか?
php - PHP オブジェクトを配列のように動作させますか?
配列のように動作し、取得と設定に通常の配列構文を使用する PHP クラスを作成できるようにしたいと考えています。
例 (Foo は私が作成した PHP クラスです):
PHP には _get および _set マジック メソッドがあることは知っていますが、それらでは配列表記を使用して項目にアクセスできません。Python は __getitem__ と __setitem__ をオーバーロードすることでこれを処理します。
PHPでこれを行う方法はありますか?違いがある場合は、PHP 5.2 を実行しています。
python - 親クラスのメソッドをデコレートする
メソッドが子クラスの 'classmethod' であるが親クラスのメソッドではない、親クラスのメソッドを持つ子クラスを作成したいと思います。
基本的に、私は次のことを達成しようとしています。
language-agnostic - 流暢なインターフェイスはデメテルの法則に違反していますか?
デメテルの法則に関するウィキペディアの記事には、次のように書かれています。
法則は「一点だけ使う」と簡単に言えます。
ただし、流暢なインターフェースの簡単な例は次のようになります。
それで、これは合っていますか?
c# - グローバルを廃止しますか?
深さが 20 代のツリー オブジェクトのセットがあります。このツリーの各ノードは、そのツリーのルートにアクセスする必要があります。
いくつかの解決策:
- 各ノードはルートへの参照を直接格納できます (メモリを浪費します)
- 「上に行く」ことで実行時にルートを計算できます(サイクルを無駄にします)
静的フィールドを使用できます (ただし、これはグローバルになります)
(任意のバリエーションで) グローバルを使用しないが、メモリまたはサイクルの両方でそれぞれ #1 または #2 よりも効率的な設計を誰かが提供できますか?
編集:私はツリーのセットを持っているので、ツリーを区別するのが難しいため、単純に静的に格納することはできません。(ありがとうマカルト)
python - Python メソッドで「self」引数を明示的に持つ必要があるのはなぜですか?
Python でクラスのメソッドを定義すると、次のようになります。
ただし、C# などの他の一部の言語では、メソッド プロトタイプで引数として宣言せずに、"this" キーワードを使用してメソッドがバインドされているオブジェクトへの参照があります。
これは Python での意図的な言語設計上の決定でしたか、それとも引数として「自己」を渡す必要がある実装の詳細がありますか?
oop - システム管理者/Perl/Linux のバックグラウンドを持つ OO プログラミングの就職面接で「勝つ」ことはできますか?
私はモントリオールのソフトウェア エンジニアリングの学生です。過去 3 年間、私はいくつかのインターンシップを経験しました (年に 1 回)。最初の 2 つ (同じ会社内) はほとんどがシステム管理者の仕事でしたが、いくつかの Perl プログラム (主にログ ファイルの分析と統計の生成) を行うことができました。
私の他のインターンシップは、IT セキュリティ分野でした。私は巨大な CGI Perl スクリプトを作成して、ユーザーがインターネットで費やした時間を分析しました。
実は、私が本当にやりたいのはプログラミングですが、私のインターンシップはほとんどがプログラミングを伴うシステム管理者の仕事でした (以前に Linux と UNIX を使用した経験があるため)。
この冬にまたインターンシップがありますが、OO プログラミング分野と SW エンジニアリング分野を希望しています。
私はシステム管理のバックグラウンドを持っていますが、大学のコースやプロジェクト (C++、Java、VB.NET、ASP.NET、残念ながら C# ではありません :( )) のおかげで、OO についてはよく知っています。
私の質問は次のとおりです。面接で、OO 分野での以前の実務経験がなくても (私は Java や Swing などでいくつかのプロジェクトを構築し、現在 JSP を学んでいますが)、OO の経験を持つ他の学生とどのように競争できますか?以前のインターシップ?
私の「セールスポイント」は何ですか?私は自分自身をかなり良いプログラマーだと思っていますが、私の経験不足のために以前の面接はうまくいきませんでした。実際、私は昨年の冬にシステム管理のインターンシップを受けました。
プロとしての経験が不足している (しかし、多くの個人的な知識 (および関心)) にもかかわらず、私が完璧な候補者であることを潜在的な雇用主に納得させる方法についてのヒントはありますか?
ありがとうございました、
ギヨーム。
[編集]
ご支援いただきありがとうございます!
私はまだ学校を卒業していません。私はまだフルタイムの学生です!私の大学のプログラムは共同プログラムです。卒業証書を取得するには、3 つのインターンシップを取得する必要があります。
私の経歴を簡単に説明させてください。この冬は私の 4 回目のインターンシップになります。
最初の 2 回は、ケベック州の高等学校と大学前の学校である CÉGEP で勉強していたときのことです。
最初のものは実質的に CÉGEP によって私に与えられました: Linux システム管理に精通している人を探していた雇い主から電話がありました。学校外で Linux を知っている唯一の学生だったので、私はこの仕事にぴったりでした。学校と雇用主の間ですべての詳細が話し合われていたため、私の面接は実際のものではありませんでした。面接を行う前から、自分が採用されたことを知っていました。
最初の会社がとても気に入ったので、2 番目の会社は 1 年後に同じ会社でした。
それから私は私の大学に到着しました.そこでは、すべての学生が卒業証書を取得するために3回のインターンシップを受ける必要があります. コンピューター サイエンスの面接で実際の経験がなかったため (最初のインターンシップが「与えられた」ため)、オブジェクト指向の仕事の面接を行う際にいくつか失敗をしました。私は最終的に、Bombardier Aerospace でセキュリティ/システム管理者/Perl プログラミングの仕事の面接を受けることができました。
インターンシップはうまくいきましたが、今は本当のソフトウェア開発の仕事がしたいと思っています。私が知っている人は皆、昨年の冬に 1 つ持っていたので、私は経験の点で不利です。
ただし、プログラミング経験はあります。すべてのインターンシップで、特に Perl でかなりの量のプログラミングを行う必要がありました。私の Perl スキルは非常に優れており、勤務先の両方の会社でいくつかの優れたツールを開発する必要がありました。学校では見られなかった実際の問題 (メモリ使用量をできるだけ低く抑えながら 5 GB のログ ファイルを効率的に解析する方法など) を解決しました。
明らかに、sysadmin ドメインまたは Linux の世界で仕事に応募すれば、この冬のインターンシップを簡単に得ることができます。毎年いくつかの求人があり、私はこの分野で多くの経験を積んできましたが、前述したように、次のインターンシップは SW 開発で行いたいと考えています。
私は現在、小さな UML クラス エディターである Java の個人プロジェクトに取り組んでいます。そのため、Swing フレームワーク、リスナー、MVC アーキテクチャなどを扱うようになりました。これは「現実の世界」で行われていることほど大きくはありませんが、楽しいプロジェクトであり、とても楽しくやっています。来月にかなり前倒しできれば、おそらく SourceForge に参加するでしょう。同時にJSPを学んでいます。
OO オープン ソース プロジェクトに関しては、これは私が調査すべきものです。フルタイムの学生であるため、最初の面接まであと 1 か月なので、おそらく今は時間がないでしょうが、このオプションを片付けるつもりはありません。
とにかくありがとうございました!