オブジェクト指向の概念について読んでいて、本当に迷っています。概念的に、私が理解しているのは、メソッドが何かを「実行」し、クラスが「設計図」であることだけです。私はすべての類推を読みましたが、これまでのところ本当に意味があるのは、ループ、変数の割り当て、プリミティブ データ型、および基本的な構文だけです。
私にとって、プログラムはプログラムです。命令を入力すると、コンピューターが実行します。全体像が見えていないと思います。
オブジェクト指向の概念について読んでいて、本当に迷っています。概念的に、私が理解しているのは、メソッドが何かを「実行」し、クラスが「設計図」であることだけです。私はすべての類推を読みましたが、これまでのところ本当に意味があるのは、ループ、変数の割り当て、プリミティブ データ型、および基本的な構文だけです。
私にとって、プログラムはプログラムです。命令を入力すると、コンピューターが実行します。全体像が見えていないと思います。
Sky ビューから見た OOP の最大の部分は、編成とコードの再利用です。特定のことを行う「オブジェクト」を整理し、それを他のアプリケーションにも再利用できるようにしたいと考えています。この考え方は、自分が何をしているか、どこに情報があり、どのように連携しているかを維持することを容易にします。これは非常に広いので、あなたが本当に理解していないことを教えてください。
コードを個々のソフトウェア オブジェクトにバンドルすると、次のような多くの利点が得られます。
Modularity: The source code for an object can be written and maintained independently of the source code for other objects. Once created, an object can be easily passed around inside the system.
Information-hiding: By interacting only with an object's methods, the details of its internal implementation remain hidden from the outside world.
Code re-use: If an object already exists (perhaps written by another software developer), you can use that object in your program. This allows specialists to implement/test/debug complex, task-specific objects, which you can then trust to run in your own code.
Pluggability and debugging ease: If a particular object turns out to be problematic, you can simply remove it from your application and plug in a different object as its replacement. This is analogous to fixing mechanical problems in the real world. If a bolt breaks, you replace it, not the entire machine.
オブジェクト指向言語でのプログラミングを理解したいのでなければ、「オブジェクト指向の概念」を理解する必要はないと思います。プログラムを実行したり、入力を提供したり、出力を調べたりする人にとっては、それらを理解する必要はまったくありません。数年前、米国の自動車は主にキャブレターから燃料噴射に変わりました。一般に、車の運転手はどちらかを理解する必要はなく、新しい車には一方があり他方がないことも理解する必要はありませんでした。これは似ています。そのような言語でプログラミングする方法を理解したい場合は別ですが、その場合は、より具体的な質問をする必要があります。
--
プログラミングを理解したいというあなたのコメントに基づいて、これについて詳しく説明します。
私が見ている違いは、Java などの OO 言語は、問題の中のもの (または「項目」または「オブジェクト」) を表すプログラミング構造を持つことによって、プログラムの編成を容易にすることです。古い言語で物事を表現することはできますが、それを行うための構造を自分で作成する必要があります (これが C++ の始まりです)。
したがって、交通管制システムを作成する場合は、「車両」のクラスと、さまざまな特性や動作を備えたさまざまな種類の車両のサブクラスを作成できます。これを簡単にするためのクラス定義と継承が組み込まれています。
Vehicle クラスを定義し、それを PassengerCar、PanelTruck、SemiRig など、問題の領域で意味のあるものに拡張できます。すべての車両の特性とコードは、論理的にスーパークラスに適合します。それぞれの特定のタイプに固有の特性とコードは、そのサブクラスと一緒です。
C、FORTRAN、またはアセンブラーで、データ構造を作成し、それらにコードを関連付け、それらをグループに編成してさまざまなタイプの車両を表すことにより、同様のことを行うことができますが、言語には作成する組み込みの構造がありませんするのは簡単です。
追加の関連する基本的な違いは、1 つの単位でのデータとコードの言語の定義です。繰り返しますが、他の言語でも実行できますが、OO 言語には言語の一部として関連付けがあり、命名規則などを自分で作成する必要がありません。