Edited at

【新人教育 資料】第2章 UMLまでの道 〜クラス編〜


【新人教育 資料】第2章 UMLまでの道 〜クラス編〜


あらすじ

新人がいっぱい入ってくる。新人のレベルもバラバラ。教育資料も古くなっているので、更新しましょう。

どうせなら、公開しちゃえばいいじゃん。という流れになり、新人教育用の資料を順次更新していくことにしました。

※後々、リクエストに応じて更新することが多いのでストックしておくことをおすすめします。

自分はTEMONA株式会社でCTOをしていますが、頭でっかちに理論ばっかり学習するよりは、イメージがなんとなく掴めるように学習し、実践の中で知識を深めていく方が効率的に学習出来ると考えています。

※他の登壇やインタビュー記事はWantedlyから見てください。

教育スタイルとしては正しい事をきっちりかっちり教えるのではなく、未経験レベルの人がなんとなく掴めるように、資料を構成していきます。

以下のようなシリーズネタで進めます。

No.
記事

1
【新人教育 資料】第1章 UMLまでの道 〜オブジェクト指向編〜

2
【新人教育 資料】第2章 UMLまでの道 〜クラス編〜

3
【新人教育 資料】第3章 UMLまでの道 〜図種類紹介とクラス図の解説編〜

4
【新人教育 資料】第4章 UMLまでの道 〜クラス図を書いてみよう編〜

5
【新人教育 資料】第5章 UMLまでの道 〜ユースケース図の説明&書いてみよう編〜

6
【新人教育 資料】第6章 UMLまでの道 〜ステートマシン図の説明&書いてみよう編〜

7
【新人教育 資料】第7章 UMLまでの道 〜アクティビティ図の説明&書いてみよう編〜

8
【新人教育 資料】第8章 UMLまでの道 〜シーケンス図の説明&書いてみよう編〜

箸休めには以下をどうぞ

【新人教育 資料】ハードウェア編

では、今回もはじめていきましょう!


クラス(Class)

前回の【新人教育 資料】UMLまでの道 〜オブジェクト指向編〜でオブジェクトは属性を持つという事を説明しました。

クラスは同じ属性を持つオブジェクトをまとめて抽象的に表現するものだと考えてください。

より簡略に言うと、「たい焼きの型」みたいなもんだと思ってください。この例えは、読み進めていくとなんとなく理解出来ると思います。

では少しみていきましょう。


クラスは属性と操作を持つ



Aさん
Bさん

名前
渋谷太郎
新宿花子

性別

身長
175cm
155cm

体重
70kg
50kg

上記の表から「Aさん」と「Bさん」の共通する属性と操作(動作)をみると以下のようになります。



  • 属性


    • 名前

    • 性別

    • 身長

    • 体重




  • 操作


    • 食事をする

    • 会話をする

    • 寝る



AさんとBさんというオブジェクトをみると、共通項が見つかり、人という抽象的な概念があることが分かります。これがクラスです。「人」のクラスは「名前」などの属性を持ちますが、値はありません。

クラスの責務は「操作(動作)」です。クラスで各オブジェクト共通な操作をします。


クラスからインスタンス(オブジェクト)を作る

名前

性別

身長

体重

↓ 名前や性別などの属性にして、インスタンスを作る


Aさん

名前
渋谷太郎

性別

身長
175cm

体重
70kg

プログラムをやっていたりすると、クラスとやらインスタンス、オブジェクトという言葉を聞くと混乱しますよね。UMLの世界とプログラムの世界(言語によっても違う)では厳密に言うと取り扱われ方が若干違うのですが、ここでいう、オブジェクトとインスタンスはニアリーイコールだと思ってください。

具体的な「もの」は全てオブジェクトと呼べます。インスタンスは、クラスを基に作られる、オブジェクトだと思ってください。

冒頭に説明したクラスは「たい焼きの型」と言っていたのがなんとなく伝わったでしょうか?

たい焼きの型というクラスに生地、クリームなどの属性をいれて、出来上がるのがクリーム味のたい焼きというインスタンスです。

生地にほうれん草が練りこまれていても、中身があんこだろうとクリームだろうとたい焼きですよね。


可視性(難しい人はSKIPしてください)

可視性は、開発をするようになったら、必ず理解しなければならないものですが、最初のつまづきポイントなので、難しい人はSKIPでよいと思います。前段のところで、クラスは「たい焼きの型」のようなものと紹介しましたが、これはプログラム上ではクラス定義といって、「たい焼きの型」がどのようなものかを定義しています。可視性とはそのクラス定義の外部(他のクラス)から属性または操作にアクセスできるかどうかを示したものです。

可視性
表記
説明

private
-
このクラスの内部定義からのみアクセス出来る

protected
#
このクラス、およびこのクラスを継承するクラスからのみアクセス出来る

package private
~
このクラスを含むパッケージ内、および明示的に型をインポートする全てのパッケージ内でアクセス出来る

public
+
他の全てのクラスからアクセス出来る

なんとなく雰囲気だけでも分かるように説明してみましょう。

以下のようなクラスがあります。


可視性

ーー属性ーー

名前
package private

性別
public

体重
package private

自分だけの秘密
private

家族しか知らない思い出
protected

ーー操作ーー

あいさつをする
public

名前を教える
package private

体重を教える
private

可視性をニュアンスで伝えるとしたら


  • private


    • 自分しか知らない。



  • protected


    • 親しか知らない。



  • package private


    • 知り合いは知っている。



  • public


    • 見た目で分かる。知っていても問題ない。



のようなものだと思ってください。

実際に開発する際は、これは可視性は大事なものになるので、しっかりと考えた上で使い分けましょう。


あとがき

この資料は「UMLまでの道」と題して、UMLでも比較的多用するダイアグラムを書けるように、構成していきます。

【新人教育 資料】UMLまでの道 〜オブジェクト指向編〜でオブジェクト指向やオブジェクトについて、今回でクラスやインスタンスについて説明したので、次回はUMLのダイアグラムについて説明したいと思います。UMLのダイアグラムについて説明した後は、PlantUMLを使ってUMLモデリングしていきます。