Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

【新人教育 資料】第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モデリングしていきます。

devopsCoordinator
テモナ株式会社のCTO。 詳細はこちら(https://www.wantedly.com/users/105935) 電子から強電、情報の世界までが守備範囲。元教師なので、教える事が好きです。毎日楽しい日々を過ごしています。会社は渋谷近郊なので、勉強会や講演、インタビュー依頼、オフィスに遊びにいきたいなど、あればいつでもFacebookでメッセージください
http://temona.co.jp/
temona
"てもなく"とは「簡単に、たやすく」という意味を持った古語です。 テモナの社名にはIT技術で世の中を便利にしたいという想いが込められています。
http://temona.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away