# 16-11. オブジェクト指向プログラミング ## オブジェクト指向って何? https://hackmd.io/v1lj9XzRTtWB-gWqg_TJnA ## カプセル化って何? - 例: 自動販売機 - ユーザがすること - コインを入れて - ドリンクを選択して - ドリンクを手に入れる - 自動販売機の中の処理を変えたところで、ユーザには影響がない #### メリットは? - 実装方法を修正しても、影響が少ない ## クラスとインスタンスって何? #### クラスって何? - 設計図のようなもの ``` 自動販売機クラス 【Data】 - coin - drink - color 【method】 - 選択されたドリンクを取得する処理 - 投入額を確認する処理 - 買えるかどうか判定するう処理 - ドリンクやお釣りなどをユーザに返す処理 ``` #### インスタンスって何? - 設計図をもとに、実体化したもの ``` - 赤い自販機 - 白い自販機 - 水だけ売る自販機 - 100円しか使用できない自販機 ``` ## クラスの階層構造って何? - クラスに階層をもたせること - 下位クラスは上位クラスのデータやメソッドなどの構造を受け継ぐことができる - 上位クラスを**スーパークラス**、下位クラスを**サブクラス**という ``` - 自販機クラス(スーパークラス) - 一般的な自販機クラス(サブクラス) - コーヒー自販機クラス(サブクラス) ``` ## 汎化と特化って何? #### 汎化って何? - **下位のクラスが持つ共通の性質**を抽出して上位クラスとして定義する #### 特化って何? - **抽象的な上位クラスをより具体的に**して下位クラスを定義する ``` 【汎化】 一般的な自販機クラス/コーヒー自販機クラス → 自販機クラス 【特化】 自販機クラス → 一般的な自販機クラス/コーヒー自販機クラス ``` ## 集約と分解って何? - 「下位クラスは上位クラスの一部である」という関係 - 下位クラスは上位クラスを**分解**して定義したもの - 上位クラスは下位クラスを**集約**して定義したもの ``` 【分解】 自販機クラス → ボタンクラス/コイン投入口クラス 【集約】 ボタンクラス/コイン投入口クラス → 自販機クラス ``` ## 多態性って何? - 同じメッセージを複数のオブジェクトに送ると、それぞれが独立した固有の処理を行うこと ``` 「選択した飲み物を出す処理」 - 一般的な自動販売機 - 下の受け取り口から飲み物を出す - コーヒー自販機 - カップを用意して、飲み物を注いで出す ``` ###### tags: `基本情報技術者試験`
×
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