ごく些細なものを除き、プログラムは何らかの構造を必要とし、データと操作を何らかのコンテナに納めればいい。
オブジェクト指向プログラミングはコンテナの一般性を確保している。
データだけでなく操作もこのコンテナに収めたりコンテナ自体を値として他のコンテナに 収めたり操作に対するパラメーターとして渡したりできる。
このようなコンテナをオブジェクトと呼ぶ。
形式化されたインターフェイスのもとでデータと操作を結合することで、言語のスケーラビリティに 大きく貢献する。
Javaなどはプリミティブ型(nullなど)といったオブジェクトではない値を認めているが、 Scalaは完全なオブジェクト指向言語である。