Enviar pesquisa
Carregar
Webの勉強会#9
•
3 gostaram
•
286 visualizações
M
MarlboroLand
Seguir
オブジェクト指向について簡単にまとめました
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 192
Baixar agora
Baixar para ler offline
Recomendados
2019年度 若手技術者向け講座 オブジェクト指向
2019年度 若手技術者向け講座 オブジェクト指向
keki3
Sistema de gestion ambiental
Sistema de gestion ambiental
eliannys sanchez
Welcome!
Welcome!
steph shanks
Pramod Kumar Pandey
Pramod Kumar Pandey
Pramod Pandey
Bridge.program.overview
Bridge.program.overview
University of sargodha
What is my house like
What is my house like
fredyalejandro86
Now is the Time to Become a Maaco Franchisee
Now is the Time to Become a Maaco Franchisee
MaacoFranchising2015
LAS DROGAS_99
LAS DROGAS_99
bryan_99
Recomendados
2019年度 若手技術者向け講座 オブジェクト指向
2019年度 若手技術者向け講座 オブジェクト指向
keki3
Sistema de gestion ambiental
Sistema de gestion ambiental
eliannys sanchez
Welcome!
Welcome!
steph shanks
Pramod Kumar Pandey
Pramod Kumar Pandey
Pramod Pandey
Bridge.program.overview
Bridge.program.overview
University of sargodha
What is my house like
What is my house like
fredyalejandro86
Now is the Time to Become a Maaco Franchisee
Now is the Time to Become a Maaco Franchisee
MaacoFranchising2015
LAS DROGAS_99
LAS DROGAS_99
bryan_99
Diseño
Diseño
Fabricio Calderón
GetFile.cfm
GetFile.cfm
Andrew Sharp, PhD
sudarsan resume - updated
sudarsan resume - updated
sudarsan motapothula
Marketing midterm33
Marketing midterm33
madisonhaga
Leancamp Franfurt 2015 Session Lean/Agile Self-Organization
Leancamp Franfurt 2015 Session Lean/Agile Self-Organization
Simon Klaiber
PHILIPPINES
PHILIPPINES
Marriane Angel Mandariaga
JulianRyanResume
JulianRyanResume
Julian Ryan
Resume-L2015 - Admin
Resume-L2015 - Admin
Vijay Pandharkar
Mahmoud Ibrahim Morshed c.v
Mahmoud Ibrahim Morshed c.v
Mahmoud Morshed
Discourse as dialogue
Discourse as dialogue
mhdhk
досягнення дітей
досягнення дітей
Елена Оносова
Propiedades del Diseño
Propiedades del Diseño
Fabricio Calderón
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
オブジェクト指向講座
オブジェクト指向講座
Kaito Sato
~PHPで学ぶ~ オブジェクト指向プログラミング
~PHPで学ぶ~ オブジェクト指向プログラミング
JunRails
2018年度 若手技術者向け講座 オブジェクト指向01
2018年度 若手技術者向け講座 オブジェクト指向01
keki3
javaオブジェクトシステム
javaオブジェクトシステム
Di Ai
第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向
hakoika-itwg
第1回 プログラマのための計算機科学
第1回 プログラマのための計算機科学
Shinya Hayakawa
知識創造型学習支援システムと開発と研究活動への適用
知識創造型学習支援システムと開発と研究活動への適用
Kotaro Miura
論文に関する基礎知識2016
論文に関する基礎知識2016
Mai Otsuki
さくさくテキストマイニング入門セッション
さくさくテキストマイニング入門セッション
antibayesian 俺がS式だ
Mais conteúdo relacionado
Destaque
Diseño
Diseño
Fabricio Calderón
GetFile.cfm
GetFile.cfm
Andrew Sharp, PhD
sudarsan resume - updated
sudarsan resume - updated
sudarsan motapothula
Marketing midterm33
Marketing midterm33
madisonhaga
Leancamp Franfurt 2015 Session Lean/Agile Self-Organization
Leancamp Franfurt 2015 Session Lean/Agile Self-Organization
Simon Klaiber
PHILIPPINES
PHILIPPINES
Marriane Angel Mandariaga
JulianRyanResume
JulianRyanResume
Julian Ryan
Resume-L2015 - Admin
Resume-L2015 - Admin
Vijay Pandharkar
Mahmoud Ibrahim Morshed c.v
Mahmoud Ibrahim Morshed c.v
Mahmoud Morshed
Discourse as dialogue
Discourse as dialogue
mhdhk
досягнення дітей
досягнення дітей
Елена Оносова
Propiedades del Diseño
Propiedades del Diseño
Fabricio Calderón
Destaque
(12)
Diseño
Diseño
GetFile.cfm
GetFile.cfm
sudarsan resume - updated
sudarsan resume - updated
Marketing midterm33
Marketing midterm33
Leancamp Franfurt 2015 Session Lean/Agile Self-Organization
Leancamp Franfurt 2015 Session Lean/Agile Self-Organization
PHILIPPINES
PHILIPPINES
JulianRyanResume
JulianRyanResume
Resume-L2015 - Admin
Resume-L2015 - Admin
Mahmoud Ibrahim Morshed c.v
Mahmoud Ibrahim Morshed c.v
Discourse as dialogue
Discourse as dialogue
досягнення дітей
досягнення дітей
Propiedades del Diseño
Propiedades del Diseño
Semelhante a Webの勉強会#9
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
オブジェクト指向講座
オブジェクト指向講座
Kaito Sato
~PHPで学ぶ~ オブジェクト指向プログラミング
~PHPで学ぶ~ オブジェクト指向プログラミング
JunRails
2018年度 若手技術者向け講座 オブジェクト指向01
2018年度 若手技術者向け講座 オブジェクト指向01
keki3
javaオブジェクトシステム
javaオブジェクトシステム
Di Ai
第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向
hakoika-itwg
第1回 プログラマのための計算機科学
第1回 プログラマのための計算機科学
Shinya Hayakawa
知識創造型学習支援システムと開発と研究活動への適用
知識創造型学習支援システムと開発と研究活動への適用
Kotaro Miura
論文に関する基礎知識2016
論文に関する基礎知識2016
Mai Otsuki
さくさくテキストマイニング入門セッション
さくさくテキストマイニング入門セッション
antibayesian 俺がS式だ
小学校プログラミング教育教員向け研修<基礎知識>
小学校プログラミング教育教員向け研修<基礎知識>
Asakura Megumi
ロジカルシンキング1st スライド抜粋
ロジカルシンキング1st スライド抜粋
epidotos
Semelhante a Webの勉強会#9
(12)
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向講座
オブジェクト指向講座
~PHPで学ぶ~ オブジェクト指向プログラミング
~PHPで学ぶ~ オブジェクト指向プログラミング
2018年度 若手技術者向け講座 オブジェクト指向01
2018年度 若手技術者向け講座 オブジェクト指向01
javaオブジェクトシステム
javaオブジェクトシステム
第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向
第1回 プログラマのための計算機科学
第1回 プログラマのための計算機科学
知識創造型学習支援システムと開発と研究活動への適用
知識創造型学習支援システムと開発と研究活動への適用
論文に関する基礎知識2016
論文に関する基礎知識2016
さくさくテキストマイニング入門セッション
さくさくテキストマイニング入門セッション
小学校プログラミング教育教員向け研修<基礎知識>
小学校プログラミング教育教員向け研修<基礎知識>
ロジカルシンキング1st スライド抜粋
ロジカルシンキング1st スライド抜粋
Mais de MarlboroLand
Gitの使い方
Gitの使い方
MarlboroLand
web開発環境
web開発環境
MarlboroLand
Webの勉強会#14
Webの勉強会#14
MarlboroLand
Webの勉強会#12
Webの勉強会#12
MarlboroLand
Webの勉強会#11
Webの勉強会#11
MarlboroLand
Webの勉強会#10
Webの勉強会#10
MarlboroLand
Webの勉強会#8
Webの勉強会#8
MarlboroLand
Webの勉強会#6
Webの勉強会#6
MarlboroLand
Webの勉強会#5
Webの勉強会#5
MarlboroLand
初心者向け、プログラムのお話
初心者向け、プログラムのお話
MarlboroLand
Webサイト制作の環境構築(for Windows)
Webサイト制作の環境構築(for Windows)
MarlboroLand
CSS設計のお勉強
CSS設計のお勉強
MarlboroLand
Mais de MarlboroLand
(12)
Gitの使い方
Gitの使い方
web開発環境
web開発環境
Webの勉強会#14
Webの勉強会#14
Webの勉強会#12
Webの勉強会#12
Webの勉強会#11
Webの勉強会#11
Webの勉強会#10
Webの勉強会#10
Webの勉強会#8
Webの勉強会#8
Webの勉強会#6
Webの勉強会#6
Webの勉強会#5
Webの勉強会#5
初心者向け、プログラムのお話
初心者向け、プログラムのお話
Webサイト制作の環境構築(for Windows)
Webサイト制作の環境構築(for Windows)
CSS設計のお勉強
CSS設計のお勉強
Último
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
Último
(8)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Webの勉強会#9
1.
2016/11/16 Ver.1.0 Hirotaka Ichimura 1 クラスって何だ
2.
クラスって何だ? プログラミングのパラダイム
オブジェクト指向 クラス、オブジェクト、 メソッド、プロパティ オブジェクト指向3つの原則 2 アジェンダ 簡単なプログラム 参考
3.
01 クラスって何だ? 3
4.
4 そもそも クラスって何だろう?
5.
5 クラスは オブジェクト指向で 出てくる言葉
6.
6 じゃあ オブジェクト指向って何だ?
7.
7 Wikipediaで調べると オブジェクト指向とは、 オブジェクト同士の相互作用として、 システムの振る舞いをとらえる 考え方である。
8.
8 考え方? 振るまい?
9.
9 さらに調べてみると オブジェクト指向は プログラミング言語のパラダイム
10.
10 パラダイム?
11.
11 パラダイムとは いままで作られてきたプログラミング言語 には、その言語なりの開発思想があり、パ ラダイムと呼ばれている。 考え方、捉え方、概念などとも呼ばれる。
12.
12 クラスという言葉を知る前に プログラミング言語の 開発思想(パラダイム)を 知る必要がある
13.
13 じゃ、 「プログラミングのパラダイム」を ちょっと見てみよう
14.
02 プログラミング のパラダイム 14
15.
15 パラダイムは開発思想なので プログラミング言語ではなく 思想によりまとめられる
16.
16 パラダイムの種類 1. 手続き型プログラミング 2. 構造化プログラミング 3.
オブジェクト指向プログラミング 4. イベント駆動型(ドリブン)プログラミング 5. 関数型プログラミング
17.
17 手続き型プログラミング 自分のやりたい事を 順番に処理していく 一番簡単な考え方 1
18.
18 誰かに物事を教えるとき 教える項目を順番に表して 説明していくよね 1. だしを取る 2. スープを作る 3.
野菜を炒める 4. 麺をゆでる 5. 全部合わせる
19.
19 手続き型には他に 条件判断と分岐処理があり これでもプログラムが書けた IF GOTO
20.
20 けど、こんな方法じゃやっぱり限界があるわけで 何だこれ?
21.
21 構造化プログラミング 3つの制御構造をベースに プログラミングしていく 手法 2
22.
22 順構造 分岐構造 繰り返し構造
23.
23 さらに考え方が進化して オブジェクト指向プログラミング と続く
24.
24 ちなみに
25.
25 イベント駆動型プログラミング 起動すると共にイベントを待機し 起こったイベントに従って処理を 行う 4 Wikipediaより
26.
26 関数型プログラミング すごく昔からあるパラダイム 関数を数珠つなぎに記述して、必要な処理を呼び出 していく形で、ラムダ式とかで調べると出てくる 最近見直され、オブジェクト指向に続く次世代のパ ラダイムになるかもしれない 5
27.
03 オブジェクト指向 27
28.
28 さて プログラミングのパラダイムを 通じて開発思想を 見てきた
29.
29 その中で オブジェクト指向プログラミングが 出てきた
30.
30 ので このプログラミングのパラダイム について説明しよう
31.
31 オブジェクト指向とは Object Oriented(OO) プログラミングパラダイムの1つ 簡単に言うと、「対象をものとして捉えた ときの、その振るまい」
32.
32 うん、よくわらかんね
33.
33 手続き型のプログラミン グでは、処理を順番 (ステップごと)に行う という縛りがあったけど
34.
34 オブジェクト指向では処理の順番ではなく やりたいことやその情報をまとめた 「モノ」が単位となり モノがお互いをやり取りして プログラムを実行していく
35.
35 例を挙げよう
36.
36 サッカーの試合が行われる。 監督は自分だとします。
37.
37 手続き型だと
38.
38 ボールを取る ボールを 受け取る ドリブルで 上がる シュートする
39.
39 キーパーが ボールを投げて DFが 受け取って MFが 前線を上げて FWが シュート!!
40.
40 これを監督が指示する!!
41.
41 当たり前ですが すごく疲れますね
42.
42 オブジェクト指向だと
43.
43 ボールを取る ボールを 受け取る ドリブルで 上がる シュートする
44.
44 FWが シュート!! 頑張れ
45.
45 各選手に任せる
46.
46 試合の場面で 行いたい事ができる選手に任せ 選手は自分の役割でもって 行動し結果を出す
47.
47 時間軸にとらわれず そのとき行いたい事柄があれば 専門家にお願いする という考え方なんです
48.
48 結局、この開発思想を基に プログラミングすると 効率よく開発できるようになる
49.
49 その概念を基に作られた プログラミング言語が 「オブジェクト指向プログラミング」 (OOP)Javaが有名ね
50.
50 プログラミング言語は パラダイムの歴史に沿っているため 新しいプログラミング言語は 過去のプログラミングパラダイムの 機能を持ってるものがほとんど 注意
51.
04 クラス、オブジェクト メソッド、プロパティ 51
52.
52 ようやくここで一番最初の 「クラスってなに?」の 答えが返ってくる 長かった…
53.
53 クラス クラスとは クラス(class)は、クラスベースのオブ ジェクト指向においてオブジェクトの設計 図にあたるもの。抽象データ型の一つ。 Wikipediaより
54.
54 オブジェクト? 設計図?
55.
55 やっぱり なんだそれって感じ?
56.
56 クラスを説明するには オブジェクト指向の概念で用意されている 「オブジェクト」それと「インスタンス」 「インスタンス化」という言葉と その関係性を知らないといけない。
57.
57 ●クラス オブジェクトの設計図に あたるもの ●インスタンス クラスを基に 実体化したもの ●インスタンス化 クラスからインスタンスを 生成する行為 ●オブジェクト すべてのモノや事柄 言葉の説明
58.
58 オラ 余計よく分からなく なってきたぞ
59.
59 例を挙げよう
60.
60 家を建てたいと思った
61.
61 プロでも何も考えずに 家を建てたら危険だよね
62.
62 家を建てる設計図は必要
63.
63 この図面には家を建てるための 必要最低限の項目がある • 砂利 • 基礎コン •
土台 • 間取り
64.
64 これがクラスなんだ 設計図=クラス
65.
65 設計図を使った作り上げた家は 全く同じものでなくてもよい 骨組みが決まっていれば 外装や内装が違ってもいいんです
66.
66 関数は結果は基本同じ クラスは違う結果を 出力できる 関数 クラス
67.
67 次はオブジェクト
68.
68 オブジェクト オブジェクトとは 関連するデータを束ね、代入、演算、手続 き(関数やメソッドなど)を介した受け渡 しといった操作の対象にでき、またメッ セージの受け手になれる実体 Wikipediaより
69.
69 家をモデルにした場合 家=オブジェクト
70.
70 家という言葉は 人によって解釈が大きく異なる
71.
71 すべてが 家!!
72.
72 家、というものを表現するための 大雑把な共通項があって、 その項目に該当する「モノ」を まとめて家、と呼んでいる
73.
73 この大きなグループが オブジェクトなんだ
74.
74 インスタンス インスタンスとは クラスと呼ばれるものを元に作成したオブ ジェクトの実体を指す。 Wikipediaより
75.
75 さっき説明した、家=オブジェクトは 実際には存在していないよね
76.
76 項目に当てはまる事柄を 勝手にまとめただけで 物体としてここにあるわけではない
77.
77 そのため 家を物理的に存在させるには 設計図を基に建てていく必要がある
78.
78 この完成した状態にした結果を インスタンスと呼ぶ
79.
79 インスタンス化 インスタンス化とは インスタンスを生成するプロセス Wikipediaより
80.
80 設計図を基に家を完成させる 流れまで行う行為そのものを インスタンス化と呼ぶ
81.
81 ●クラス モノを作り上げるために用 意された骨組み ●インスタンス 骨組みを基にモノを実際に 完成させて存在させること ●インスタンス化 インスタンスまでの流れ ●オブジェクト モノを指している大きなグ ループの総称 まとめると
82.
82 これで、クラスを初めとする オブジェクト指向の 4つの言葉について説明した けど、これで終わらない
83.
83 次は、クラスを構成するときに 出てくる言葉 「メソッド」と「プロパティ」について 説明するよ
84.
84 ●メソッド メンバ関数とも呼ばれる いわゆる関数 ●プロパティ メンバ変数、フィールドとも呼ばれる いわゆる値 言葉の意味
85.
85 プログラムの基本である 処理をまとめた関数を オブジェクト指向で使うときにはメソッド という名前で 変数をプロパティと呼ぶんだ
86.
86 クラスを作るときには 必要な分だけ関数と変数を 用意しておくってことだね
87.
87 ただ、ここで気になることが1つ 関数は分かるんだけど 変数をクラスに入れる 理由は何だ?
88.
88 この部分に関しては、 先ほど説明した サッカーで考えてみるよ
89.
89 サッカーの監督(自分)が 選手に指示を出すとき、 選手にも違いがあるよね
90.
90 「ドリブルして前線を上げる」 という采配をしても 選手によって能力がまちまち キープ力 ドリブル時の速さ キック力
91.
91 この選手によって持っている ゲームみたいなステータス パラメーターの様な情報が プロパティなんだ
92.
92 これがないと 皆同じパラメーターの選手になっちゃう 全員顔も背格好も同じ ちょっと気持ち悪いかもね
93.
93 というわけで、クラスにはやりたい事 処理とオブジェクトが持つ情報 状態はセットにしておくんだ
94.
94 次は、オブジェクト指向を学ぶ上で 挙げられている特徴の説明をするよ
95.
05 オブジェクト指向 3つの原則 95
96.
96 オブジェクト指向を学ぶ上で 3つの原則というのがあって これが目玉だよ
97.
97 カプセル化 複雑な部分を隠し、無駄な操作をしなくて も良い状態にそのものを洗練させ、 分かりやすい状態にする
98.
98 たとえば 世の中にいる多くの社会人がいて この人が車を持っている
99.
99 車を運転だけするなら車の鍵があればいいよね 鍵を差し込んで回すだけでエンジンがかかる シフトをドライブにしてアクセル踏めばいい
100.
100 けど、興味本位で車を分解したら 元に戻すことはできないよね
101.
101 車の中身を全部知ってて 組み立てられる人なんて ほとんどいないでしょ
102.
102 当たり前だね!
103.
103 車の内部構造が 誰でもいじれるようにしてあったら 車を壊してしまうかもしれない
104.
104 それを防ぐために 車を使う操作は 誰でも出来るようにして
105.
105 詳しい事は車の事を全部分かる 専門の技術者だけがいじる それがカプセル化なんだ
106.
106 プログラムのコアは 開発者が 分かっていればいい 操作する人は中身を 知らなくていい 役割 分担
107.
107 次は継承
108.
108 継承 inheritance(インヘリタンス) 親クラスの機能を受け継ぐ機能
109.
109 RPGに出てくるキャラクターで 例を挙げてみるよ
110.
110 勇者という職業をもつ キャラクターが主人公のゲーム クラスチェンジして強くなる 勇者 超勇者 クラスチェンジ
111.
111 勇者は攻撃する手段を持っている 超勇者になったら 強力な攻撃手段が追加される 勇者 攻撃 超勇者 攻撃 超攻撃
112.
112 この2つをクラスに見立てたとき 2つのクラスを別々に作ると簡単なんだけど 問題が発生する 勇者クラス 攻撃(メソッド) 超勇者クラス 攻撃(メソッド) 超攻撃(メソッド)
113.
113 同じ処理を2度記述する 処理を間違ってしまう 勇者 攻撃 超勇者 呪文 超攻撃 超勇者 超攻撃 攻撃 2つ 書かないと 間違ってる
114.
114 これらの問題を 解決するのが継承
115.
115 自分がやりたい事を クラスとして用意 クラスA やりたい事A クラスB やりたい事A やりたい事B 別な機能が欲しいけど 元々の機能も使いたい まとめると
116.
116 一番最初のクラスの機能を 引っ張ってきて 新しいクラスに引き継いで使えるようにする これが継承 クラスA やりたい事A クラスB やりたい事A やりたい事B やりたい事を 持ってくる
117.
117 そして、基になるクラスを 「親クラス」「スーパークラス」 継承したクラスを 「子クラス」「サブクラス」って呼ぶ
118.
118 図で表すとこんな感じ 子クラス 親クラス サブクラス スーパークラス 矢印の 向きに 注意!
119.
119 継承を上手に使えると 効率よく開発できるようになる
120.
120 最後はポリモーフィズム
121.
121 ポリモーフィズム プログラミング言語の各要素についてそれ らが複数の型に属することを許すという性 質を指す。 Wikipediaより
122.
122 色々呼び方が違って ポリモルフィズム 多態性とか多様性とか呼ばれてる
123.
123 これもネットにあった 例を基に説明してみるよ
124.
124 音楽が聞きたいとき ラジカセの再生ボタンを押したら カセットテープが動いて音楽が再生される ♪♪
125.
125 映画を観たいとき ビデオデッキの再生ボタンを押したら DVDが再生され動画が流れる
126.
126 今、説明した2つのやりたい事には 共通する事がある それが「再生される」という行動
127.
127 「再生される」という行動は同じだけど その結果は違うよね 再生というメソッドは同じでも 返される結果(答え)が変わるのが ポリモーフィズムなんだ
128.
128 機器が違っても再生ボタンがあれば これを押せば「再生される」 というのが誰が見てもわかる
129.
129 クラスが違っても 同じメソッド名を使って 違う動作をさせることができる クラスA メソッドA クラスB メソッドA
130.
130 さらに例を挙げると 横幅と高さを持つ クラスがあって Figure 横幅 高さ
131.
131 これをベースに 三角形の面積を出力する クラスを作る Figure 横幅 高さ Triangle 面積 底辺×高さ÷2
132.
132 さらに 長方形の面積を出力する クラスを作る Figure 横幅 高さ Square 面積 底辺×高さ
133.
133 この2つの 面積を出すメソッドは 名称が同じだけど処理は違う Square 面積(メソッド) 底辺×高さ Triangle 面積(メソッド) 底辺×高さ÷2 メソッド名 は同じ
134.
134 メソッドの名称を統一する事で 新しいクラスを作るときに メソッドの名称から やりたい事を持ってくる事ができる
135.
06 簡単なプログラム 135
136.
136 じゃ、今まで話したことを踏まえて プログラムを書いてみるよ
137.
137 クラスの記述 クラスを書くにはclass クラス名
{ } クラス名の一番最初は大文字 ファイルの名称もクラス名と同じ 一つのファイルには一つの処理
138.
138 今回は人間を表す Humanクラスを作りましょう Human
139.
139 クラスを実行するPHPファイルを用意 クラスを外部ファイルから使うには インクルード
オブジェクト名 = new クラス名 で インスタンス化
140.
140 実行ファイル名はindex.php クラスには何もないので プロパティを作ります Human クラス index 実行 実行
141.
141 クラスの中に public
プロパティ名
142.
142 人間には 名前という情報があるので プロパティ名はnameにしましょう Human name:NULL
143.
143 public(パブリック)は クラスにアクセスするために必要な単語 アクセス装飾子と呼ぶ アクセス装飾子を書かないとエラーになる publicって 何だ?
144.
144 Humanクラスに nameプロパティができたので 実行ファイルから 名前をつけて表示してみよう Human クラス index 実行 実行
145.
145 オブジェクト名 =
new クラス名 で インスタンス化 オブジェクト-> プロパティ名 で インスタンス化したオブジェクトのプロパ ティにアクセス
146.
146 -> はアロー演算子と呼びます 矢印に似てるから これでオブジェクトに用意した プロパティにアクセスできます このときアクセスするプロパティに $はつけません
147.
147 初期値がないので入れてみます 山田とかにしてみましょう 名前をつけたので、表示します Human name:NULL 山田
148.
148 オブジェクト名 ->
プロパティ名 = '山田'; echoオブジェクト名-> プロパティ名;
149.
149 この状態だと大きな問題があります プロパティが誰でも いじれるようになってます なので、これをいじれないようにします カプセル化してみる
150.
150 public プロパティ名
を private プロパティ名 に直す プロパティに空文字を入れて初期化
151.
151 これで誰でもいじれないようになります けど、実行ファイルを見ると エラーになります
152.
152 private(プライベート)にすると 外からは完全にいじれないように なるからなんですよ!
153.
153 じゃ、どうするかって? メソッドを使うんですよ!
154.
154 名前をつけるための メソッドを書きましょう メソッドにもアクセス権を指定します 外部からいじれるようpublic メソッドを書く
155.
155 クラス内に public function
メソッド名( ) { }
156.
156 メソッド名は プロパティにセットする 意味からsetName 括弧の中に引数として $nameを入れます
157.
157 function内に $this ->
name = $name;
158.
158 $thisは自分自身を指す特別な変数 インスタンス化したオブジェクトと 同じものを指すようになります。 インスタンス化 したオブジェクト = $this
159.
159 初期値を設定しましたが プロパティにはアクセスできないので メソッドからアクセスして 名前をつけるようにします Human name:'' 山田名前をつける
160.
160 オブジェクト名 ->
プロパティ名 = '名前'; 削除して下記に修正 オブジェクト名 -> メソッド名('名前');
161.
161 これで名前がセットできます が、できるだけで表示はまだ 名前を表示させるには セット名前を取り出す必要があります
162.
162 Getter/Setterパターン 取り出すためのメソッドを用意 取り出すのでメソッド名はgetName 引数はなし 処理はつけた名前を返すだけなので すぐreturnします
163.
163 function getName(
) { return $this -> プロパティ名; }
164.
164 これで実行ファイルで取り出すメソッドを echoしてあげれば 名前を表示できるようになります Human name:'' 山田名前をつける 名前を取り出す 山田
165.
165 echo $name
-> getName();
166.
166 何かをセットする事をsetterと呼び 関数名はsetXXとつけることが推奨 セットする関数の総称を setterメソッドと呼びます
167.
167 何かを取り出す(ゲット)することを getterと呼び 関数名はgetXXとつけることが推奨 ゲットする関数の総称を getterメソッドと呼びます
168.
168 これらをまとめて Getter/Setterパターンと呼びます
169.
169 Getter/Setterパターンを使うメリット 実際のプログラミングでは外部から読めるけど プロパティを変更されたくないとき setterメソッドを消してしまえば可能 1)読み込み専用
170.
170 Getter/Setterパターンを使うメリット どうしてもプロパティ名を変更したいという状況 Getter/Setterパターンを使ってないと 関連するファイル全部のプロパティ名を 修正しないといけなくなる 2)プロパティ名の変更が楽
171.
171 オブジェクトが呼び出されたときに 自動的に呼び出されるメソッド コンストラクタメソッド
172.
172 今の状態だと 毎回名前をセットするので コンストラクタメソッドを 使うようにします
173.
173 public function
__construct(引数) { }
174.
174 特別な役割を持つメソッドの事を マジックメソッドと呼びます 他にも種類がありますが割愛
175.
175 インスタンス化せずに 直接メソッドやプロパティを 呼び出すこともできます これをスタティック(静的)メソッド、 プロパティと呼びます スタティックメソッド、プロパティ
176.
176 public static
function( ) { } public static プロパティ名; クラス名::メソッド名; クラス名::プロパティ名;
177.
177 :: はスコープ定義演算子と呼びます スタティックを使う状況は 継承をせずクラスに依存しない 簡単な計算などメソッドが多い
178.
178 値の変更ができない定数が ありますが クラスにも定数が使えます クラス定数
179.
179 const 定数名
= 値;
180.
180 オブジェクト指向は 変数をいじられないようにする 定数は固定値なのでいじられない スタティックプロパティはいじれる 結果クラス定数を使うケースが多い
181.
181 新しいクラスWorkersを作成 既にあるHumanクラスを 拡張して使います 継承 Human Workers
182.
182 class 子クラス
extends 親クラス{ }
183.
183 これでHumanに作った メソッド、プロパティが そのまま使えます Workers name:'' setName getName
184.
184 Workersクラスの nameプロパティを使って 名前を田中にしてみましょう Workers name:'' setName getName 田中
185.
185 Workersクラスをインスタンス化 引数を渡す
echoで表示
186.
186 Humanクラスに 歩くwalkメソッドを 追加してみましょう Human name:'' 名前をつける 名前を取り出す 歩く
187.
187 Humanクラスにwalkメソッドを記述 文字列を返す
188.
188 Workersクラスにも walkメソッドが 使えるようになりました Workers name:'' setName getName 歩く
189.
07 参考 189
190.
190 http://d.hatena.ne.jp/ryoasai/20110317/1300380540 http://www.itmedia.co.jp/im/articles/0703/06/news125.html
http://qiita.com/mpyw/items/41230bec5c02142ae691 http://qiita.com/lrf141/items/a2f764c8d87de26b6f45 http://php.net/manual/ja/language.oop5.magic.php http://php.vowshe.info/ポリモーフィズム/ http://www.cc9.ne.jp/~initialize/text/php/php_02.html http://kudox.jp/php/extends-class 07 参考
191.
191 http://kmaebashi.com/programmer/object/naze.html http://eng-entrance.com/what-oop
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q108353185 https://www.artonx.org/diary/20100604.html http://gooddays1.blog37.fc2.com/blog-entry-325.html スッキリわかるJava入門第2版 独習PHP 第3版 詳細! PHP 7+MySQL 入門ノート 07 参考
192.
192 以上!!
Baixar agora