タグ付けされた質問 「oop」

オブジェクト指向プログラミングは、「オブジェクト」を使用したプログラミングパラダイムです。つまり、データフィールドとメソッド、およびそれらの相互作用で構成されるデータ構造です。

15
オブジェクトとインスタンスの違い
私は質問のこの種がされています知って尋ね 前に把握する(拡張子によって、いくつかの/ほとんどの初心者は、と)、私はまだ答えは私にとってあまりにも曖昧であると感じています。 私は、手続き型および基本的なOOPよりも幅広いプログラミングの概念を自分自身に教えようとしてきました。OOPの具体的な概念を理解しています(データ(メンバー)と関数(メソッド)を持つクラスを作成し、実行時にそのクラスをインスタンス化して、実際に何かを実行します)。 私はクラスが何であるかについてのハンドルを持っていると思います(コンパイル時にそのように作成されるインスタンスの一種の設計青写真)。しかし、その場合、オブジェクトとは何ですか?また、プロトタイプベースの言語では、これが事態をさらに混乱させる可能性があることも知っていますが、おそらくこれが、私の頭の中でオブジェクトとインスタンスを明確に区別する必要がある理由です。 それを超えて、私は「オブジェクト」と「インスタンス」の概念に苦労しています。私が読んだ多くのリソース(SOでの回答を含む)は、それらはほぼ同じであり、違いはセマンティクスにあると述べています。他の人々は、2つの間に真の概念的な違いがあると言います。 ここSOの専門家は、初心者がOOPの世界で前進するための「あはは」の瞬間を持つのを助けることができますか? 注:これは宿題ではありません。私は学校に行きませんが、宿題の助けを探している人には役立つと思います。
83 oop 

6
通常のメソッドからプロトコルのデフォルト実装を呼び出す
そのようなことを成し遂げることは可能かと思います。 私はこのような遊び場を持っています: protocol Foo { func testPrint() } extension Foo { func testPrint() { print("Protocol extension call") } } struct Bar: Foo { func testPrint() { // Calling self or super go call default implementation self.testPrint() print("Call from struct") } } let sth = Bar() sth.testPrint() でデフォルトの実装を提供できますが、デフォルトの実装にあるすべてのものに加えて追加のものが必要extensionな場合Barはどうなりますか?すべてのプロパティなどを実装するという要件を満たすためにesでメソッド を呼び出すのとどういうわけか似ていますが、で同じことを達成する可能性はありません。super.classstructs
83 swift  oop  protocols  swift2 

6
オブジェクト指向プログラミングの代替案?
OOPは、おそらく今日のソフトウェア設計で最も使用されているプログラミングパラダイムです。私の質問は、他にどのようなパラダイムがそれと競合し、OOPの代わりに立つことができるかということです。その質問を明確にするために、私は他にどのようなパラダイムがあるかについて質問していません。たくさんありますが、どれがいいのか知りたい… 理論だけでなく、実際に使用されてきました。 OOPと競合できるため、大規模なプロジェクトで最小限の労力で使用できます。 ビジネスロジック、データベースなどを備えたデスクトップアプリの開発に使用できます。 OOPと一緒に使用されるのではなく、OOPの代わりとして使用されます。 そして、もしあれば、それの長所/短所は何ですか、それがOOPよりも良い/悪い理由、それを使用するのに最適な言語は何ですか、人気のある言語でそれを使用するのはどうですか、それはどんなデザインパターンを持っていますか、そしてそれはできますかOOPを完全に置き換えますか?


4
PHPトレイトがインターフェースを実装できないのはなぜですか?
なぜPHPトレイト(PHP 5.4)がインターフェースを実装できないのか疑問に思います。 user1460043の回答からの更新=> ...特定のインターフェースを実装するためにそれを使用するクラスを要求することはできません を実装しているClass AaTrait Tを使用している場合、間接的に実装する必要があるinterface Iよりも、人々が考える可能性があるため、それは明らかである可能性があることを理解しています(これは、トレイトメソッドの名前を変更できるため真実ではありません)。Class Ainterface IClass A 私の場合、私の特性は、特性を使用するクラスが実装するインターフェースからメソッドを呼び出すことです。 特性は、実際にはインターフェースのいくつかのメソッドの実装です。だから、私は自分の特性を使用したいすべてのクラスがインターフェースを実装しなければならないコードで「設計」したいと思います。これにより、Traitはインターフェイスで定義されたクラスメソッドを使用し、それらがクラスに存在することを確認できます。
82 php  oop  interface  traits 

3
ES6-クラス内で静的メソッドを呼び出す
静的メソッドの内部呼び出しを行う次のクラスがあります。 export class GeneralHelper extends BaseHelper{ static is(env){ return config.get('env:name') === env; } static isProd(){ return GeneralHelper.is('prod'); } } 以下の行のクラス名を置き換えるために使用できるキーワードはありますか? GeneralHelper.is('prod'); PHPにはself、staticなどがあります。ES6はこれらに類似したものを提供しますか? TY。

7
クラス宣言中括弧の後のセミコロン
C ++クラスでは、なぜ閉じ中括弧の後にセミコロンがあるのですか?私は定期的にそれを忘れてコンパイラエラーが発生するため、時間が失われます。私にはやや不必要に思えますが、そうではない可能性があります。人々は本当に次のようなことをしますか? class MyClass { . . . } MyInstance; 構造体と列挙型のC互換性の観点から取得しますが、クラスはC言語の一部ではないため、主に類似の宣言構造体間の一貫性を維持していると思います。 私が探していたのは、何かを変更できるというよりも、設計の根拠に関連していましたが、優れたコード補完IDEは、コンパイル前にこれをトラップする可能性があります。
82 c++  class  oop  declaration 

8
PHPのクロージャ…正確には、それらは何であり、いつ使用する必要がありますか?
ですから、私は素晴らしい、最新の、オブジェクト指向の方法でプログラミングしています。私はPHPが実装するOOPのさまざまな側面を定期的に利用していますが、クロージャをいつ使用する必要があるのか​​疑問に思っています。クロージャを実装することがいつ役立つかを明らかにすることができる専門家はいますか?
82 php  oop  closures 

11
__init__の外部に新しい属性を作成しないようにする
で初期化されると__init__、新しい属性を受け入れないが、既存の属性の変更を受け入れるクラスを(Pythonで)作成できるようにしたい。これを行うには、ハックっぽい方法がいくつかあります。たとえば、次の__setattr__ような方法があります。 def __setattr__(self, attribute, value): if not attribute in self.__dict__: print "Cannot set %s" % attribute else: self.__dict__[attribute] = value 次に、__dict__内部__init__で直接編集しますが、これを行うための「適切な」方法があるかどうか疑問に思いました。

15
同じファイルに複数のクラスを含めるのは悪い習慣ですか?
以前は、1つのファイルに対して1つのクラスがありました。たとえば、car.csにはクラスcarがあります。しかし、もっと多くのクラスをプログラムするので、それらを同じファイルに追加したいと思います。たとえば、car.csにはクラスcarとdoorクラスなどがあります。 私の質問は、Java、C#、PHP、またはその他のプログラミング言語に適しています。同じファイルに複数のクラスを含めないようにする必要がありますか、それとも問題ありませんか?

7
実用的なJavaScriptオブジェクト指向のデザインパターンの例
アプリケーションのJavaScriptでどのオブジェクト指向のデザインパターンを使用していますか。その理由は何ですか。 正式なデザインパターンが添付されていない場合でも、コードを投稿してください。 私はたくさんのJavaScriptを書いてきましたが、私がしていることに多くのオブジェクト指向パターンを適用しておらず、私は多くを見逃していると確信しています。

8
オブジェクト指向プログラミング(OOP)スキルを学習または向上させるための優れた課題/タスク/演習[終了]
閉まっている。この質問は、StackOverflowのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善したいですか?質問を更新して、スタックオーバーフローのトピックになります。 7年前に閉鎖されました。 この質問を改善する オブジェクト指向プログラミングのスキルを向上させるための良い課題は何ですか? この投票の背後にある考え方は、どの演習がOOPの学習に役立つかについての考え方を提供することです。 課題は可能な限り言語にとらわれず、特定のライブラリをほとんどまたはまったく使用しないか、最も一般的なライブラリのみを使用する必要があります。投票がそのチャレンジのメリットだけに対応するように、回答ごとに1つのチャレンジのみを含めるようにしてください。必要なスキルのレベルが示されていれば、また、それが有用な演習である理由の背後にある理論的根拠も示されていれば素晴らしいでしょう。 課題の解決策は、「ハウツー...」の質問への回答として投稿し、ここからリンクすることができます。 例えば: 課題-後入れ先出しスタックを実装する スキルレベル-初心者 理論的根拠-オブジェクトを参照する方法の経験を提供します
81 oop 

3
Rおよびオブジェクト指向プログラミング
Rでは、何らかの方法でオブジェクト指向プログラミングを行うことができます。ただし、たとえばPythonとは異なり、オブジェクト指向を実現する方法はたくさんあります。 R.ooパッケージ S3およびS4クラス 参照クラス プロトパッケージ 私の質問は: Rでのオブジェクト指向プログラミングのこれらの方法を区別する主な違いは何ですか? 理想的には、ここでの回答は、どのOOプログラミング方法が彼らのニーズに最も適しているかを決定しようとするRプログラマーのための参照として役立つでしょう。 そのため、私は詳細を求め、経験に基づいて客観的に提示し、事実と参照に裏打ちされています。これらの方法が標準のOOプラクティスにどのようにマッピングされるかを明確にするためのボーナスポイント。
80 oop  r 

10
オブジェクト指向プログラミング-変数によってわずかに異なるプロセスでの重複を回避する方法
私の現在の仕事でかなり多く浮かび上がっているのは、一般化されたプロセスが発生する必要があるということですが、そのプロセスの奇妙な部分は特定の変数の値に応じてわずかに異なる方法で発生する必要があります。これを処理する最もエレガントな方法は何でしょうか。 私たちが通常使用している例を使用します。これは、処理する国に応じて少し異なる動作をします。 だから私はクラスを持っています、それを呼びましょうProcessor: public class Processor { public string Process(string country, string text) { text.Capitalise(); text.RemovePunctuation(); text.Replace("é", "e"); var split = text.Split(","); string.Join("|", split); } } ただし、特定の国ではこれらのアクションの一部のみを実行する必要があります。たとえば、6か国のみが資本化ステップを必要とします。国によって分割するキャラクターが異なる場合があります。'e'国によっては、アクセント付きの交換のみが必要な場合があります。 明らかに、次のようなことで解決できます。 public string Process(string country, string text) { if (country == "USA" || country == "GBR") { text.Capitalise(); } if (country == "DEU") …
64 c#  oop 

3
らくで実装する方法
Perlでは、を使用して、クラス内の他のメソッドをラップMooするaroundサブルーチンを実装できます。 around INSERT => sub { my $orig = shift; my $self = shift; print "Before the original sub\n"; my $rv = $orig->($self, @_); print "After the original sub\n"; }; この動作をRakuで、できればaを使用してどのように実装できroleますか?
13 oop  raku 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.