オブジェクト指向 (オブジェクトしこう、英: object-oriented) とは、プログラミングのために用いられる考え方の1つである。根源的には、既に存在していたプログラミングパラダイムを説明するためにできた言葉であり、それはGUIとも密接に関係しているものだった。

このパラダイムを組み込んだプログラミングをオブジェクト指向プログラミング (Object-Oriented Programming) と呼び、OOPと略される。

オブジェクトとは

プログラミング的な観点では、データ構造とその手続きを一つにまとめたものを指しており、例えばC++, C#, Java言語のクラスなどがあたる。

発案

オブジェクト指向(object-oriented)という言葉自体は、1972年から80年にかけて開発されたプログラミング言語「Smalltalk」の開発者が、その言語設計を説明する過程で誕生している。
しかし、1960年代末の「Simula」プログラミング言語の開発者たちの中では、先にジョーク的に使用された記録もあり、明確にはわからない。

言語

オブジェクト指向プログラミングができる言語は非常に多い。そのため、主要な言語に絞る。

特化

ほぼすべてをオブジェクトとして扱う、オブジェクト指向プログラミングの言語は以下の通り。

  • Java
  • C# (最近はマルチパラダイムになりつつある)
  • Smalltalk - 元祖オブジェクト指向
  • Ruby
  • Objective-C
  • Dart

マルチパラダイム

マルチパラダイム言語なうち、OOP的なプログラミングができる言語は以下の通り。

  • Python
  • JavaScript
  • Rust
  • Swift
  • Kotlin
  • Scala
  • C++
  • Go
  • PHP
  • TypeScript

コーディング

オブジェクト指向では、主にクラス継承メソッドインスタンスなどを組み合わせてプログラミングを行う。

# クラスの定義
class Animal:
    def __init__(self, name):
        self.name = name
 
    def speak(self):
        print(f"{self.name} が鳴いています!")
 
# クラス継承(DogはAnimalの子)
class Dog(Animal):
    def speak(self):
        print(f"{self.name}:「ワン」")
 
# さらに別のクラス(継承の多様性)
class Cat(Animal):
    def speak(self):
        print(f"{self.name}:「ニャー」")
 
# オブジェクト(インスタンス)を作る
dog = Dog("ポチ")
cat = Cat("タマ")
 
 
dog.speak()  # → ポチ:「ワン」
cat.speak()  # → タマ:「ニャー」