# 2019/10/21 class等 ## 再利用、カプセル化、Classの分割、自動販売機、MVC、Singletonパターン、デザインパターン  - 再利用するためにまとめる。 - methodやfunction。pythonだとdef。 - def をまとめたものを class という。 - 例えば、誰かが退職してパスワードを変えるとき、数カ所を変更するのはだるいので、一つの場所に書いておき、それを参照するようにする。そうすれば一箇所変更すれば良くなる。 #### なぜclassにするのか - Dataはいじらない方が良い ```python def plus(num): a = 10 return a + num def minus(num): a = 10 return a - num ``` 上記コードだと、`a = 10`を2箇所で使用している。 それを下記のようにする。 ```python class calc(object): def __init__(self): a = 10 def plus(self, num): return self.a + num def minus(self, num): return self.a - num ``` このように、データをいじらず外から処理するのを、**データカプセル化**という。 ``` pでもそう。 例えば、targetmanager.py 誰がマッチしてメッセージして、みたいなデータがある。 そこに、マッチさせるdefやメッセージさせるdefで外から処理している。 classにしているのは、「マッチしたらメッセージ、マッチしていなかったらメッセージを送れない」 というようなことをしないといけないから。 ``` ## オブジェクト指向(自動販売機) 自動販売機で考えてみる - 自動販売機を使う人は中がどうなっているか知る必要はない。 #### 自動販売機を使う人に必要なことは何か? ``` - コインを入れる - ドリンクを選択する - ドリンクが出てくる ``` 上記それぞれを**UI**といい、それらを**view**という。 #### 自動販売機に必要なものは何か? ``` - coin - 10 - 50 - 100 - 500 - 1000 - bottle - name - size - price ``` 上記を**model**という。 #### 自動販売機を動かすにはどうすれば良いか? ``` - coinが投入される - 買えるかどうか - bottleを選択する . . . ``` 上記を**controller**という。 このように、model, view, controller に分けるのを**MVC**という。 ★良いコードほど、「どうしてそう書いたのか」がわかるので、いろんなコードを見ると良い。 ------- ## デザインパターン - 例えば一回しか処理してはいけないとき。 - singleton という書き方がある。 - singleton のようなものをデザインパターンという。 ###### tags: `knowledge`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up