からくりがてんこ

IT関連情報、プログラミングに関する作業ログや備忘録を記載していきます。

C言語からの本当のJava言語へ (その前に一読)

皆さん、今日もオブジェクト指向してますか?

私はそこそこです。

 

手続き型言語の経験者でオブジェクト指向がいまいち理解できないという方、お手元のスイッチをどうぞ。

 

…という訳で、オブジェクト指向への移行がうまくできない方向けに書き留めたいと思います。

 

昔話 (long time ago)

私は昔、C言語を扱っていたのですが、仕事の都合上、Javaを始めることになりました。

「オブジェクト思考って?」「クラス?」「カプセル化?」

よく分からんが、結局プログラムだから一緒でしょ?

 

そう思ってましたし、よく理解しようとしてませんでした。

 

いざJavaでプログラムを書き始めると…。

まぁ書けるっちゃ書けますね。言語表現さえ分かれば。

 

しかし、周りからは言われました。

 

Javaなのにオブジェクト指向でない。」

「活かせてないね。」

 

「??」

 

何を言ってるんだろう。ちゃんと動くのに。

そう思ってました。

 

 

しかし、私の作成したプログラムは、

オブジェクト指向型言語を使用しているのに、手続き型で書いていたのです。

(この内容がよく分からない方は、今後の記事も見て頂くと何かの手がかりが掴めると思います。)

 

 

当時は、この「オブジェクト指向の考え方」を持つという作業に結構苦労しました。(個人の感想です) 

どう書いても手続き型の書き方にしかならず、どうすればよいのかと頭を抱えていました。

 

そこで出会ったのが「デザインパターン」です。

 

内容を理解して行くうちに、少しずつですがオブジェクト指向とはこういうものか、

なるほど便利だ、ちょっとカッコいいな、なんて気持ちさえ沸いてきました。

 

今、Javaを触り始めた方、これから始める方。

ここで一発、脱手続き型を目指しましょう!

 

 

はじめる前に

 

一番大事なのはクラス設計、一番楽しいのもクラス設計

 

今後の章でJava言語による設計について触れていきますが、その前にまず小話を。

Java言語の学習において、二つのステップがあると考えています。

 

  1. 何ができるか
  2. どう使うか

 

「何ができるか」については、言語仕様の理解ということです。

Javaという言語はどういった言語表現ができるのか。

 

宣言、構文、継承、インターフェース…これらを実現させる為にどのようにプログラムを書けば良いか。

for文はこう書くんだとか、こうすればインターフェースの宣言ができるのだ、とか入門書にある内容ですね。

プログラムを書く作業では、これが前提の知識となります。

 

これだけでもお仕事はできますが、オブジェクト指向に則ったcoolな書き方はできません。

しかもこれらは、google先生に問い合わせをすればすぐに分かってしまう内容です。

 

 

 

では、次の「どう使うか」です。

ここが脱手続き型のポイントになります。

 

「何ができるか」という段階で、継承やインターフェース、オーバーライド等の動きは理解できるかと思います。

では、それら様々な表現を使って、どのようにcoolに書き上げて行けばよいのでしょうか。

 

「どう使うか」というのは、

 

Java言語を使って「どんなクラスを作るか」ということが言え、

それは「どう設計するか」、どんな「クラス設計」にするかということにつながります。

 

クラス設計とは、システム構築を行う上で、下記作業の結果をクラス図に起こす作業のことを言います。

 

  • 必要なクラスを洗い出す
  • 各クラスの機能をまとめる
  • クラス間の関連を決める

 

オブジェクト指向」と「クラス設計」は切っても切れない関係と言っても過言ではありません。

 

 

では、どんなクラス設計をすればよいのか?

それは、これから紹介する「デザインパターン」をもとに考えを広げていけば、色々とイメージやアイディアが沸いて来るかと思います。

 

少しずつ、オブジェクト指向の考え方を取入れ、脱手続き型を目指しましょう。