オブジェクト指向のプログラミング（OOP）は、繰り返し/非常に類似したコードを減らすのに役立つ抽象化の別の層であり、プログラムを指定できる速度と使いやプログラムの目的は迅速です。たとえば、OOPレイヤーの前に、次のことを考慮することができます。
    1. Microcodeの複数の行をAddなどの単一のCPU命令にグループ化します。
    2.複数のCPU命令をA +演算子などの単一言語機能にグループ化するもので、その引数を必要なレジスタまたは「for」ループに移動します。
    3.複数の言語ステートメントを、異なる入力で同様のジョブを実行する関数にグループ化します。
OOPを使用すると、同じデータ構造とそのデータ構造（カプセル化）に関連するいくつかの関数をグループ化できます。これは、猫の属性を保存するだけでなく、「ウォーク」、「Meow」などの猫関連の機能を備えています。またはそれに関連する「スクラッチ」。次に、猫と犬のオブジェクトの実装には、これらを書き直すのではなく、「散歩」のような共有特性や機能に重複/複製がある可能性があることに気付くかもしれません。たとえば、ゲームエンジンでOOPを使用できるため、個々の動作と相互作用が発生したときに指定し、順番に予測して書き留める必要がない、より動的/非線形の制御フローを持つことに焦点を当てることができます。OOPは、プログラムのさまざまなリンクされた部分を個別に更新することなく、モジュール性と変更を促進するのにも役立ちます。

クラステーブルの属性とメソッドをその場で調べる必要があるため、OOPはオーバーヘッドを発生させる可能性があることに注意する必要があります。これはほとんどのアプリケーションでは無視できますが、いくつかの高性能設定で考慮する必要がある場合があります。早すぎる過剰抽出は、コードの読みやすさを支援することになっていると妨害することもあります。

多型により、入力の異なる組み合わせを取りますが、最終的には同じタスクを実行して名前を共有する機能/方法を可能にします。そのため、このタスクと異なる方法でやり取りできる柔軟性を持つことができます。それぞれのわずかなバリエーション。
The object-oriented programming (OOP) is another layer of abstraction which can help reduce repeated/highly similar code, this can increase the speed and ease with which a program can be specified and also aid readability and being able to see and interpret broad patterns and objectives of a program quickly. For instance before the OOP layer, you could consider:
    1. Grouping multiple lines of microcode into single CPU instructions such as ADD.
    2. Grouping multiple CPU instructions into single language features like a + operator that also moves its arguments into the required registers or a "for" loop.
    3. Grouping multiple language statements into a function that performs a similar job on different inputs.
OOP allows you to group several functions that relate to the same data structure along with that data structure (encapsulation), such as a Cat object that as well as storing cat attributes, also has Cat related functions such as "walk", "meow" or "scratch" associated with it. Next we might notice that the implementation of a Cat and a Dog object may have some overlap/duplication in shared traits or functions like "walk", rather than rewriting these, they could instead be inherited from a base "Animal" class for instance. OOP can be used in game engines for instance, so that we can focus on specifying individual behaviour and interactions as they happen and have a more dynamic/nonlinear control flow that we do not have to anticipate and write down sequentially. OOP can also help with modularity and facilitating changes without having to update many different linked parts of a program separately.

It should be noted that OOP can incur an overhead due to the attributes and methods having to be looked up on the fly in class tables, this is negligible for most applications but may need to be considered in some high performance settings. Premature over-abstraction can sometimes also hinder as supposed to aid code readability.

Polymorphism allows for functions/methods that take different combinations of inputs but ultimately perform the same task to share a name, such that we can have the flexibility on being able to interact with this task in different ways, but not have a different cumbersome name for each slight variation.