なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

職業訓練の授業64日目~JAVA:オブジェクト指向の継承~

f:id:nazuna_0124:20170310221050p:plain

いつぞや未経験からプログラムを覚える方法はプログラムを書くこと

なんてお話をしました。


未経験からプログラム覚えるたったひとつの方法 - 職業訓練校のまいにち~職業訓練ではどんな授業をしているのか~


ではプログラムを書くにはどうしたら??


それは言うまでもなく、プログラムを書けるようになればいいのです!!


…… 今説明しますのでちょっと待ってね?


言葉の定義の問題もあって、無限ループにしかみえませんが、

オブジェクト指向に関してはこの視点があると教えやすいはずです。

(主に昔のわたしに)


オブジェクト指向では生まれた経緯の関係で、

説明する人はオブジェクト指向が必要なほど大規模な開発

のプログラムを前提として説明してます。


でも、初心者は当面そんなおっきいもの作りません。

小さいプログラム書けるようになればいいのです。


そこでオブジェクト指向を3つに分けます。

  • オブジェクト思想
    オブジェクト機能を使うにあたってのルール。

  • オブジェクト機能
    オブジェクト使う、クラスを作るときに備わった純粋な機能。

  • オブジェクト手法
    機能の使い方。特にオブジェクト以外では見られないもの。


普通の説明が恐ろしくわかりにくいのは、

思想の影響を踏まえて機能を説明するからです。


時間的な経緯としては思想が先ですが

目の前のプログラム作りたいだけなら、機能>手法と覚えて


実際に作ってみてから、思想を思い出す方が早道です。


というわけで、オブジェクト指向を覚えるために、

オブジェクト指向で書く

を言い換えて、


オブジェクト機能を使って書くことに重点をおいてみます。

思想には反した説明がでるかもという前置きでもあります。


ついでに思想を加味しないでの記述を

オブジェクト主体と定義しておきます。


などと、前置きが長くなったところで

オブジェクト指向の花形、継承のおはなしです。


こんな機能あったらなーとは確かに思いますが、

作った人はただの天才なのでしょう。とても便利!


クラスの記述に、フィールドやメソッドを引き継げるというもの。


すぐに記述を省略できる便利さに気がつくと思います。


そうすると、クラスの共通定義ができるようになります!


ここから出てくる便利な点は、クラス作成の分割ができること。

共通したクラス側の配列に突っ込めることです。


自分で見ても意味不明な説明なので、このへんは別途記事かきます。


ついでに出てくるオーバーライドはそのまんま。

継承した側で同じメソッド名は上書きできる機能です。


オーバーライドとオーバーロードの区別がつかない人は

機能に絞ってかんがえなおしましょー。


さて、この説明で伝わる人は

引数付きのサブモジュールを使いたおした

モジュール分割の名前付けで苦労したことがある

ループを回すために同じような名前になるように工夫したことがある

変数でメソッド呼び出せたらいいのにと思ったことがある


なんて経験があるのかなって思います。←


本当の初心者にはもう少し変える必要があると思うので

こっちも別に考えたいと思います。


ほらほら、哺乳類だの犬だの猫だの出てこないですよ。

思想はあとにして、あとでみんなで困りましょう


どことなく、民主主義で独裁者になる方法を伝えてる雰囲気が

ただよいます。


目下の目的は練習するだけのプログラムが書けるようになること、

なのでぶれてはいません。


でもこの目的はプログラマとして就職することに繋がるとは限らない

ので、そこは達成後に思い出してね!