AUTHOR: schwarz1009
TITLE: オブジェクト指向とは
BASENAME: 2021/01/13/164503
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 0
DATE: 01/13/2021 16:45:03
CATEGORY: プログラミング
CATEGORY: ピアノ
CATEGORY: おすすめ
オブジェクト指向とは、ものを表すクラスを作る、ということです。
クラスごとに、データと手続きを実装します。
たとえば、みかんは食べ物です。みかんクラスは食べ物クラスを継承します。
食べ物クラスでは、全ての食べ物に共通の「味」「価格」などの属性があり、
「食べられると栄養を与える」という機能があります。
同様に、電話クラスをスマホクラスが継承し、
電話で話すことができる機能は、スマホクラスにも引き継がれるのです。
電話の内部的な情報はprivateメンバ変数で、
インターフェースとなる「聞く」「話す」はpublicメソッドで実装し、
そのインターフェースから、電話を使うのです。
また、クラスベースのオブジェクト指向は、
そのコードの見た目から
「データ構造に対して手続きを実装する」と捉えられることが多いですが、
これは正しいです。
たとえば、リストデータ構造ならばList、
ディレクトリならばDirectory、ファイルならばFileというクラスにし、
これらに共通のnextItem()やgetContents()やopen()などの
メソッドを実装することで、
オブジェクト指向によるプログラミングは行われます。
もっと言えば、DirectoryとFileは
同じ「基本的データ保管構造」から継承するべきであり、
この基本的データ構造をDataと名付け、
DirectoryとFileはDataの機能を継承し、
Data[]を包括するStorageクラスを作って、
実際の物理的ストレージのクラスを作ればいいのです。
このような時に、「デザインパターン」と呼ばれる
クラス設計のテクニックを知っておくと、
さまざまなクラス設計に役立ちます。
また、よく入門書などで
「クラスは設計図、インスタンスは製品」と呼ばれることもありますが、
これも正しいです。
しかしながら、僕はあえて言えば、
「クラス図は回路図」のようなものであり、
「メソッドは機能を提供する機械部品」のようなものであり、
「メンバ変数は機械内部の詳細な情報」であり、
「インスタンスはひとつひとつの部品の組み立て・製造」であり、
「オブジェクトのメソッド呼び出しは機械を使うインターフェース」であり、
「プログラム全体はオブジェクト全てを統括するオーケストラの演奏」
のようなものだと考えると良いと思います。
今日は、デザインの仕事をして、ピアノに行ってきた。
今やっているのは少し難しい曲なのだが、
僕はろくに練習もしていないくせに、けっこう弾けた。
以前に比べれば、すらすら弾けた方だと思う。
先生も、「音を読むことができるようになってきた」と言われたが、
まだまだ間違いだらけの子供のような演奏なので、
もっと上達していきたいと思う。