手続き型言語をやっていると、データを組み合わせて取り扱う必要が出てくる。 例えば、顧客のデータを扱う必要があるとき、顧客の「名前、住所、所属、電話番号、取引内容...」などをまとめて取扱いたい。 そこで、構造体という発想が出てくる。 コンストラクタ、デストラクタ、メソッド、アクセス制御手続き型言語では構造体を扱っていると、新しく顧客データを作るとき、毎回毎回、作った後に同じ動作をしないといけないことに気づく。 具体的には、名前、住所、電話番号の登録。 そしたら、それをいっぺんにやってしまうために関数を作ることになるだろう。 init_customer(struct Customer*, char* name, char* addr, char* tel) また、逆に顧客データが不要になったとき、メモリ解放などをさせるために、 delete_customer(struct Customer*
![オブジェクト指向は、手続き型言語をやっていると自然に導かれる発想](https://cdn-ak-scissors.b.st-hatena.com/image/square/b1638cdb5807a4788e4ba3c1109a984166e095fc/height=288;version=1;width=512/https%3A%2F%2Fanond.hatelabo.jp%2Fimages%2Fog-image-1500.gif)