Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Fujio Kojima
PPTX, PDF
4,532 views
F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~
2007/07/21 わんくま同盟 東京勉強会 #10 オブジェクト指向分科会 #1
Technology
◦
Read more
8
Save
Share
Embed
Embed presentation
Download
Downloaded 11 times
1
/ 140
2
/ 140
3
/ 140
4
/ 140
5
/ 140
6
/ 140
7
/ 140
8
/ 140
9
/ 140
10
/ 140
11
/ 140
12
/ 140
13
/ 140
14
/ 140
15
/ 140
16
/ 140
17
/ 140
18
/ 140
19
/ 140
20
/ 140
21
/ 140
22
/ 140
23
/ 140
24
/ 140
25
/ 140
26
/ 140
27
/ 140
28
/ 140
29
/ 140
30
/ 140
31
/ 140
32
/ 140
33
/ 140
34
/ 140
35
/ 140
36
/ 140
37
/ 140
38
/ 140
39
/ 140
40
/ 140
41
/ 140
42
/ 140
43
/ 140
44
/ 140
45
/ 140
46
/ 140
47
/ 140
48
/ 140
49
/ 140
50
/ 140
51
/ 140
52
/ 140
53
/ 140
54
/ 140
55
/ 140
56
/ 140
57
/ 140
58
/ 140
59
/ 140
60
/ 140
61
/ 140
62
/ 140
63
/ 140
64
/ 140
65
/ 140
66
/ 140
67
/ 140
68
/ 140
69
/ 140
70
/ 140
71
/ 140
72
/ 140
73
/ 140
74
/ 140
75
/ 140
76
/ 140
77
/ 140
78
/ 140
79
/ 140
80
/ 140
81
/ 140
82
/ 140
83
/ 140
84
/ 140
85
/ 140
86
/ 140
87
/ 140
88
/ 140
89
/ 140
90
/ 140
91
/ 140
92
/ 140
93
/ 140
94
/ 140
95
/ 140
96
/ 140
97
/ 140
98
/ 140
99
/ 140
100
/ 140
101
/ 140
102
/ 140
103
/ 140
104
/ 140
105
/ 140
106
/ 140
107
/ 140
108
/ 140
109
/ 140
110
/ 140
111
/ 140
112
/ 140
113
/ 140
114
/ 140
115
/ 140
116
/ 140
117
/ 140
118
/ 140
119
/ 140
120
/ 140
121
/ 140
122
/ 140
123
/ 140
124
/ 140
125
/ 140
126
/ 140
127
/ 140
128
/ 140
129
/ 140
130
/ 140
131
/ 140
132
/ 140
133
/ 140
134
/ 140
135
/ 140
136
/ 140
137
/ 140
138
/ 140
139
/ 140
140
/ 140
More Related Content
PDF
デジタルメディア創作部勉強会「オブジェクト指向入門1」
by
Hokuto Tateyama
PDF
ゼロから始める自然言語処理 【FIT2016チュートリアル】
by
Yuki Arase
PDF
【FIT2016チュートリアル】ここから始める情報処理 ~音声編~ by 東工大・篠崎先生
by
Toshihiko Yamasaki
PDF
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
by
Yuki Arase
PPTX
Neural Architecture for Named Entity Recognition
by
Hiroki Nakayama
PDF
子供の言語獲得と機械の言語獲得
by
Yuya Unno
PDF
NIP2015読み会「End-To-End Memory Networks」
by
Yuya Unno
PDF
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
by
Yuki Arase
デジタルメディア創作部勉強会「オブジェクト指向入門1」
by
Hokuto Tateyama
ゼロから始める自然言語処理 【FIT2016チュートリアル】
by
Yuki Arase
【FIT2016チュートリアル】ここから始める情報処理 ~音声編~ by 東工大・篠崎先生
by
Toshihiko Yamasaki
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
by
Yuki Arase
Neural Architecture for Named Entity Recognition
by
Hiroki Nakayama
子供の言語獲得と機械の言語獲得
by
Yuya Unno
NIP2015読み会「End-To-End Memory Networks」
by
Yuya Unno
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
by
Yuki Arase
What's hot
KEY
集合知プログラミング勉強会キックオフMTG LT用資料
by
tetsuro ito
PDF
最先端NLP勉強会“Learning Language Games through Interaction”Sida I. Wang, Percy L...
by
Yuya Unno
PDF
Chainerのテスト環境とDockerでのCUDAの利用
by
Yuya Unno
PPTX
最近の自然言語処理
by
naoto moriyama
PPTX
ニューラルチューリングマシン入門
by
naoto moriyama
PPTX
Deep forest
by
naoto moriyama
PDF
【CVPR 2019】DeepSDF: Learning Continuous Signed Distance Functions for Shape R...
by
cvpaper. challenge
PPTX
Unsupervised Object Discovery and Localization in the Wild:Part-Based Match...
by
Yoshitaka Ushiku
PDF
ピーFIの研究開発現場
by
Yuya Unno
PDF
Gakusei lt
by
TomoyukiHirose2
PDF
自然言語処理における意味解析と意味理解
by
Kanji Takahashi
PPTX
Learning Cooperative Visual Dialog with Deep Reinforcement Learning(関東CV勉強会 I...
by
Yoshitaka Ushiku
集合知プログラミング勉強会キックオフMTG LT用資料
by
tetsuro ito
最先端NLP勉強会“Learning Language Games through Interaction”Sida I. Wang, Percy L...
by
Yuya Unno
Chainerのテスト環境とDockerでのCUDAの利用
by
Yuya Unno
最近の自然言語処理
by
naoto moriyama
ニューラルチューリングマシン入門
by
naoto moriyama
Deep forest
by
naoto moriyama
【CVPR 2019】DeepSDF: Learning Continuous Signed Distance Functions for Shape R...
by
cvpaper. challenge
Unsupervised Object Discovery and Localization in the Wild:Part-Based Match...
by
Yoshitaka Ushiku
ピーFIの研究開発現場
by
Yuya Unno
Gakusei lt
by
TomoyukiHirose2
自然言語処理における意味解析と意味理解
by
Kanji Takahashi
Learning Cooperative Visual Dialog with Deep Reinforcement Learning(関東CV勉強会 I...
by
Yoshitaka Ushiku
Viewers also liked
PDF
関数型言語とオブジェクト指向言語(序章)
by
tadaaki hayashi
PDF
バージョン管理#01 -Subversion編-
by
hakoika-itwg
PDF
第2回勉強会 オブジェクト指向
by
hakoika-itwg
ODP
オブジェクト指向勉強会(基礎)
by
nomuken
PDF
第1回 モデリング勉強会
by
hakoika-itwg
PDF
オブジェクト指向プログラミング再入門
by
Ryo Miyake
PDF
Phpではじめるオブジェクト指向(公開用)
by
VOYAGE GROUP
PDF
06 オブジェクト指向の基礎
by
文樹 高橋
PDF
第2回 モデリング勉強会
by
hakoika-itwg
PPTX
本当のオブジェクト指向は可読性を上げる
by
Wataru Terada
PPTX
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
by
Satoru Kodaira
PPTX
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
by
Satoru Kodaira
PDF
だいたい30分で分かるオブジェクト指向
by
Anto Mioyama
PDF
オブジェクト指向ワークショップ 201507版
by
Mao Ohnishi
PDF
第3回勉強会 オブジェクト指向
by
hakoika-itwg
PDF
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
by
hakoika-itwg
PDF
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
関数型言語とオブジェクト指向言語(序章)
by
tadaaki hayashi
バージョン管理#01 -Subversion編-
by
hakoika-itwg
第2回勉強会 オブジェクト指向
by
hakoika-itwg
オブジェクト指向勉強会(基礎)
by
nomuken
第1回 モデリング勉強会
by
hakoika-itwg
オブジェクト指向プログラミング再入門
by
Ryo Miyake
Phpではじめるオブジェクト指向(公開用)
by
VOYAGE GROUP
06 オブジェクト指向の基礎
by
文樹 高橋
第2回 モデリング勉強会
by
hakoika-itwg
本当のオブジェクト指向は可読性を上げる
by
Wataru Terada
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
by
Satoru Kodaira
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
by
Satoru Kodaira
だいたい30分で分かるオブジェクト指向
by
Anto Mioyama
オブジェクト指向ワークショップ 201507版
by
Mao Ohnishi
第3回勉強会 オブジェクト指向
by
hakoika-itwg
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
by
hakoika-itwg
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
Similar to F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~
PDF
デザインパターンとともに学ぶオブジェクト指向のこころ
by
jum paku
PDF
2018年度 若手技術者向け講座 オブジェクト指向01
by
keki3
PDF
オブジェクト指向できていますか?
by
Moriharu Ohzu
PDF
2019年度 若手技術者向け講座 オブジェクト指向
by
keki3
PPT
第1回java実習(helloworld)2011
by
デジタルシープラーニング
PDF
Umlモデリングの勘所
by
Yoshihiro Furukawa
PDF
Scrum alliance regional gathering tokyo 2013 pub
by
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
PDF
2010 icse-an analysis of the variability in forty preprocessor-based software...
by
n-yuki
PDF
Cpp v3
by
Yukinobu Yoshihara
PDF
「コンテキストの理解による技法、事例の分析」森崎 修司
by
Shuji Morisaki
PDF
オブジェクト指向
by
iPride Co., Ltd.
PDF
TDD を自分の道具にしよう
by
yujiorama
PDF
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
by
アシアル株式会社
PDF
オブジェクト指向プログラミング教育法序説
by
seastar orion
PDF
コード共通化
by
Ryuhei Ishibashi
PDF
第2回c#画像処理講習
by
Koshiro Miyauchi
PPTX
関数型言語&形式的手法セミナー(3)
by
啓 小笠原
PDF
テスト勉強会よしおか100311 1
by
Hiro Yoshioka
PDF
Howtoよいデザイン
by
Hiroki Yagita
PPT
オブジェクト指向入門1
by
Kenta Hattori
デザインパターンとともに学ぶオブジェクト指向のこころ
by
jum paku
2018年度 若手技術者向け講座 オブジェクト指向01
by
keki3
オブジェクト指向できていますか?
by
Moriharu Ohzu
2019年度 若手技術者向け講座 オブジェクト指向
by
keki3
第1回java実習(helloworld)2011
by
デジタルシープラーニング
Umlモデリングの勘所
by
Yoshihiro Furukawa
Scrum alliance regional gathering tokyo 2013 pub
by
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
2010 icse-an analysis of the variability in forty preprocessor-based software...
by
n-yuki
Cpp v3
by
Yukinobu Yoshihara
「コンテキストの理解による技法、事例の分析」森崎 修司
by
Shuji Morisaki
オブジェクト指向
by
iPride Co., Ltd.
TDD を自分の道具にしよう
by
yujiorama
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
by
アシアル株式会社
オブジェクト指向プログラミング教育法序説
by
seastar orion
コード共通化
by
Ryuhei Ishibashi
第2回c#画像処理講習
by
Koshiro Miyauchi
関数型言語&形式的手法セミナー(3)
by
啓 小笠原
テスト勉強会よしおか100311 1
by
Hiro Yoshioka
Howtoよいデザイン
by
Hiroki Yagita
オブジェクト指向入門1
by
Kenta Hattori
More from Fujio Kojima
PDF
「C# ドキドキ Live Coding 対決!! 出張版」 小島の分 @ CLR札幌 #111
by
Fujio Kojima
PDF
[C#. NET] AIエージェントの作り方 @ .NET Conf 2025 Fukuoka x Tokyo x Osaka
by
Fujio Kojima
PDF
[C#/.NET] ITエンジニア (Developer) 向け AIエージェント開発ハンズオンセミナー
by
Fujio Kojima
PDF
AIエージェント勉強会~マイクロソフトの最新技術発表を受けて~ (2025/07)
by
Fujio Kojima
PDF
ITエンジニア (Developer) 向けAIエージェント勉強会 (2025/06/13)
by
Fujio Kojima
PDF
Burikaigi 2023「C# Live Coding!」 小島の分
by
Fujio Kojima
PDF
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
by
Fujio Kojima
PDF
.NET 6 時代のデスクトップ アプリケーション開発
by
Fujio Kojima
PDF
BuriKaigi 2022 「C# Live Coding!」 小島の分
by
Fujio Kojima
PDF
C#勉強会 ~ C#9の新機能 ~
by
Fujio Kojima
PDF
.NET 5 勉強会 ~.NET Framework から .NET へ~
by
Fujio Kojima
PDF
.NETラボ 勉強会 2021年1月 「C#で機械学習」
by
Fujio Kojima
PDF
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
by
Fujio Kojima
PDF
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
by
Fujio Kojima
PDF
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
by
Fujio Kojima
PDF
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
by
Fujio Kojima
PDF
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
by
Fujio Kojima
PDF
機械学習 (AI/ML) 勉強会 #2 IoT編
by
Fujio Kojima
PDF
機械学習 (AI/ML) 勉強会 #1 基本編
by
Fujio Kojima
PPTX
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
by
Fujio Kojima
「C# ドキドキ Live Coding 対決!! 出張版」 小島の分 @ CLR札幌 #111
by
Fujio Kojima
[C#. NET] AIエージェントの作り方 @ .NET Conf 2025 Fukuoka x Tokyo x Osaka
by
Fujio Kojima
[C#/.NET] ITエンジニア (Developer) 向け AIエージェント開発ハンズオンセミナー
by
Fujio Kojima
AIエージェント勉強会~マイクロソフトの最新技術発表を受けて~ (2025/07)
by
Fujio Kojima
ITエンジニア (Developer) 向けAIエージェント勉強会 (2025/06/13)
by
Fujio Kojima
Burikaigi 2023「C# Live Coding!」 小島の分
by
Fujio Kojima
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
by
Fujio Kojima
.NET 6 時代のデスクトップ アプリケーション開発
by
Fujio Kojima
BuriKaigi 2022 「C# Live Coding!」 小島の分
by
Fujio Kojima
C#勉強会 ~ C#9の新機能 ~
by
Fujio Kojima
.NET 5 勉強会 ~.NET Framework から .NET へ~
by
Fujio Kojima
.NETラボ 勉強会 2021年1月 「C#で機械学習」
by
Fujio Kojima
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
by
Fujio Kojima
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
by
Fujio Kojima
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
by
Fujio Kojima
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
by
Fujio Kojima
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
by
Fujio Kojima
機械学習 (AI/ML) 勉強会 #2 IoT編
by
Fujio Kojima
機械学習 (AI/ML) 勉強会 #1 基本編
by
Fujio Kojima
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
by
Fujio Kojima
F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~
1.
F流 『オブジェクト指向の 考え方の基礎の基礎』 ~ソフトウェア開発の原則編~ 小島 富治雄 (Fujiwo) わんくま同盟 東京勉強会
#10 オブジェクト指向分科会 #1 2007/07/21
2.
自己紹介。
3.
fkojima 小島 富治雄 (Fujiwo)
4.
福井コンピュータ株式会社勤務。 福井県在住。
5.
こみゅぷらす(COMU+) 所属。 http://comuplus.net 唯一わんくま同盟外。
6.
アウェイ感。
7.
小島 富治雄 (Fujiwo) 偏愛マップ 映画 ソフトウェア開発 音楽 クラシック ベートーベン ドヴォルザーク第九交響曲 第九交響曲 Jazz 演奏アコースティック ギター マトリックス 読書 夏目漱石我輩は猫である 中島らも SF 酒 ビール ヱビス 日本酒
福井の地酒 梵 アウトドア 自転車 クロスバイク キャンプ焚き火 スポーツ 家族 妻 X歳 子 息子 十歳 娘 四歳 娘 二歳 バーボン 焼酎 ワイン ドイツ ワイン イタリア ワイン やるスポーツ卓球 オブジェクト指向 アジャイル開発 .NET NAgile プログラミング言語 C# C++ その他 ジャグリング ボール ジャグリング コミュニティ 芋焼酎 泡盛 ギネス Suntory The Premium Malt's 黒 WILD TURKEY ダイエット 15kg 昨年9/6より 北陸 ジョニー ジョニ男 風に吹かれて豆腐屋ジョニー Microsoft 系 『こみゅぷらす (COMU+)』 『VSUG (Visual Studio Users Group)』 『Micosoft MVP』 アジャイル系 INETA 所属 Culminis所属 代表 「開発プロセス」ボードリーダー Visual Developer - Visual C# 『NAgile』 『日本XPユーザーズ グループ』 オブジェクト指向系 『(社)情報処理学会 ソフトウェア工学研究会 パターンワーキンググループ』 地域系 『FITEA - 福井情報技術者協会』 福井 代表
8.
オブジェクト指向 が好きです。
9.
注: オブジェクト原理主義者 (謎) ではありません。
10.
補足: オブジェクト原理主義者 (謎) •
昨今は、C++ や Java、C# 等、ハ イブリッド (謎) オブジェクト指向言 語によるプログラミングが流行。 • それを潔しとせず,純粋にオブジェ クト指向をされている方々 (尊敬)。 ※ Smalltalker など。
11.
オブジェクト原理主義 (謎) 1. 汝,オブジェクト以外の何者もプロ グラムの構成要素とする事勿れ。 2.
汝,オブジェクトへはメッセージを 渡す以外のことをする事勿れ。 3. 汝,みだりに公開する事勿れ。 4. 汝,みだりに結合する事勿れ。
12.
オブジェクター (*1) です。 (*1)
オブジェクト指向好き。
13.
ここで、 突然ですが… 予告編を。
14.
次回予告。
15.
次回予告 EI (ERO Injection) とは何か?
16.
次回予告 ERO とは無縁だったIT業界に 今も注入されつつある 六つ目の価値 “ERO” その正体とは!!? The
sixth value
17.
次回予告 IT業界に暗躍する注入者達 ―黒幕は果たして誰なのか? ― インジェクター
18.
次回予告 そして、EI から業界を守る POP の正体とは!?
19.
次回予告 POP ―Platonic Oriented Programming (プラトニック指向プログラミング)―
20.
次回予告 LOW COUPLING (疎結合) の極致。 ―カップルになっても良いが結合は許さん!!!―
21.
次回予告 深い関係になるのはダメだが、 精神的なつながりは No Problem! (疎結合)
22.
次回予告 “Don't talk to stranger.” 紹介もされてないのに声をかけ るなんて失礼。
23.
Coming Soon.
24.
というのは嘘で… ほんとの 予告編。
25.
2007年 8月21日(火) 15:25-16:40。
26.
パシフィコ横浜。
27.
at Tech・Ed 2007 in Yokohama
28.
BoF (Birds of a
Feather in Yokohama)
29.
『今改めて語り合いたい。 オブジェクト指向プログラミングを マスタするコツ』 8/21(火) 15:25-16:40 Tech・Ed 2007
in Yokohama
30.
Coming Soon.
31.
F流 『オブジェクト指向の 考え方の基礎の基礎』 ~ソフトウェア開発の原則編~
32.
注: 基礎編です。
33.
Agenda 1. 何故改めて語りたいか? 2. 習得できない理由。 3.
考え方とコツ。 4. 仕組みから入るオブジェクト指向。 5. 概念から入るオブジェクト指向。 6. 参考になるもの。
34.
1. 何故改めて語りたいか?
35.
オブジェクト指向について、 これまで語られてきたこと。
36.
NIFTY •プログラマーズ・ フォーラム –1996~99頃盛ん。
37.
書籍 • 『オブジェクト指向に強くなる』~ソフトウェア開 発の必須技術~ – 青山
幹夫氏、中谷多哉子氏 編著 • 『オブジェクト脳のつくり方』 – 牛尾 剛氏 • 『オブジェクト指向でなぜつくるのか』 – 平澤 章氏 • 『いちばんやさしい オブジェクト指向の本』 – 井上 樹氏 • 『オブジェクト指向入門 第二版』原則・コンセプ ト – バートランド・メイヤー氏
38.
昨年、とあるイベントで… オブジェクト指向のパネ ル ディスカッションが…
40.
昨年、とあるイベントで… • 「今更オブジェクト指向について語ること はあまりない」 – OO厨時代。 •
はしかみたいなもの。 – 一度はかかる。 – 今はあえて注目の必要はない。 • 普通に使ってるし… • もう空気のようなもの。 • 米のようなもの。 – なければ困るが… – 毎日は熱狂しない。
41.
昨年、とあるイベントで… •そうなの? –もう語るべきことがない くらい、 •分かったの? •語りつくした?
42.
かつての否定派の意見 • 大したことはない。 • 上手く行く筈がない。 •
自分の遣り方と大差ない。 • うちは特殊だから、うちでは使えない。 • 単なる流行りものでしょ。 → 新しい方法論に出会ったときのお決 まりの反応。
43.
新しくはないかも知れないが…
44.
必須かつ基礎技術。
45.
他にもパラダイムは色々あるが… • コア構造はやっぱオブジェ クト指向で。 • 他のパラダイムをそこに差 し込んでいく。 –アスペクト。 –関数型。 –Generic。
46.
というわけで… たまには語りたいよね? オブジェクト指向。
47.
例えば…
48.
ちょっと考察 オブジェクト (*1) って? •
オブジェクト=クラスのインスタンス? • 型がクラスな変数? (*1) 中国語でいうと「対象」。
49.
オブジェクト=クラスのインスタンス? • オブジェクト指向入門 第2版
原則・ コンセプト』にもそう書いてある。
50.
オブジェクト=クラスのインスタンス? • でも… 1. クラスがなくてもオブジ ェクトは存在できる。 プロトタイプベースOO。 –JavaScript
など。
51.
オブジェクト=クラスのインスタンス? • でも… 2. クラスもメッセージによって振 る舞うのでは?
クラス メソッド。 new ― Foo foo = new Foo(); – クラスがオブジェクトでないのなら new メッセージを受け取るものは何?
52.
クラスだってオブジェクト? 広義の オブジェクト 狭義の オブジェクト クラス +new <<instance of>> Message
53.
2.習得できない理由。
54.
手続き型の呪縛。
55.
手続き型の呪縛 • データとは別に「手続きを 」記述するパラダイムに捕 われてしまっている。 • プログラミングをするとき つい処理の流れで考えてし まう。
56.
手続き型の呪縛 オブジェクト指向の方が 自然なのに。
57.
コンピュータの方が異常。 「フォン・ノイマンの呪い」 フォン・ノイマン型コンピュータ。 –コンピュータに、手続きを教え てやる。 –コードとデータは別。
58.
3.考え方とコツ。
59.
ここで考察。
60.
クラスと class って一緒? 継承と派生って一緒?
61.
継承 (= kind-of 関係) 集約 (=
has-a 関係) 仕様レベル (=設計の視点) 派生クラス オブジェクト の内包 実装レベル (by C++)
62.
概念の話と 仕組みの話は別。
63.
Fowler の観点の オブジェクト • 概念レベル 責任の集合。 •
仕様レベル 他のオブジェクトや振舞いの集合。 • 実装レベル コードとデータと相互の処理。
64.
What と How
を分ける。
65.
概念の話と 実装の話を切り分ける。
66.
概念の話と実装の話を切り分ける。 • クラスと C#/C++
の class は少し 異なった概念。 例.class がない言語でクラスが作れな いわけじゃない。 • 継承と C#/C++ の派生は別。 「ポリモーフィズム=複数の派生クラス でvirtual メソッドをオーバーライド」 じゃない。
67.
どちらも重要。 • オブジェクト指向のキー概念 を実装と切り分けて話す。 • オブジェクト指向のキー概念 を実装例で話す。
68.
オブジェクト指向のキー概念 • 「カプセル化」 • 「継承」 •
「ポリモーフィズム」 をそれぞれ、 • 実装と切り分けて話す。 • 実装例で話す。
69.
仕組みと概念。
70.
4.仕組みから入る オブジェクト指向。
71.
オーバーライドの仕組みなど。 例. •「virtual 関数は関数ポ インタのテーブルだよ」 •「オーバーライドは関数 ポインタの上書きだよ」
72.
例. C → C#
へと理解。
73.
例. C でオブジェクト指向。
74.
C でオブジェクト指向を やってみる。 •カプセル化 struct とそれを扱う関数群を xxx.c
へ。 public なものだけを一つの xxx.h へまとめる。
75.
C でオブジェクト指向を やってみる。 • 継承 struct
のメンバーのトップに別 の struct を。
76.
C でオブジェクト指向を やってみる。 •ポリモーフィズム 関数ポインタで。
77.
デモ。
78.
5.概念から入る オブジェクト指向。
79.
大前提。
80.
オブジェクト指向の目的 • 開発を楽にしたい。 ソフトウェア開発は大変。 –ソフトウェア開発の複雑さ。 –問題の複雑さ。 –解の複雑化。 –時間による複雑化。 単純にして楽にしたい。 –考え方 (見方=視点)
を変えて単純に。 –考え方や視点 (=パラダイム) の変換 (=シフ ト)。
81.
オブジェクト指向の目的 • 良いものを作りたい。 品質を上げる。 –内部的品質。 保守しやすい。 · 分かりやすい。 ·
全体把握しやすい。 · 俯瞰しやすい。 拡張しやすい。 再利用しやすい。
82.
ソフトウェア開発を楽に するコツ。
83.
オブジェクト指向でも 構造化手法でも同じ。
84.
問題の解き方 •分ける。 (= Divide and
Conquer) 複雑な大きな問題 →切り分けて 単純な問題の集まりに。
85.
問題の解き方 •名前を付ける。 (=Name and Conquer) 新しい概念を作る。 概念の範囲を決める。 概念を共有できるようにする。
86.
どう分ける/名前を付ける のが良いか?
87.
問題の切り分け。 切り分けて単純にする方 法の一つ → モデル化。
88.
キー概念のひとつ。 モデル。
89.
モデル •抽象化を行うのが特徴。 •物理学などでいうモデル と同じ。
90.
モデル • 「関心の外のものを取り去 ってシンプルにしたもの」 • 「関心の分離」 関心事だけを考える。 関心事だけを伝える。 複雑さの排除。 視点によって関心事は変わる。
91.
視点によって関心事は変わる 例.AsIsモデルとToBeモデル • AsIs モデル: →問題をモデル化。 分析モデルなど。 •
ToBe モデル: →解をモデル化。 設計モデルや実装モデルなど。
92.
おまけ: メタボリックのモデル。
93.
おまけ: メタボリックとは ボリック メタ
ボリック <<instance of>> UML で描くと多分こんな感じ?
94.
どう分ける/名前を付ける のが良いか?
95.
分け方が重要。
96.
うまく分けると、それに は良い名前がつく。
97.
もっとも大切で基本的な 考え方。
98.
「関心の分離」 (Separation of concerns)
99.
高凝集 (high cohesion) 且つ 疎結合 (low coupling)
100.
その他の考え方。
101.
「単一責務の原則」 (Single Responsibility Principle) 「プログラムの或る部分 は一つの責務を持つべき 変更が起こる理由は一つ であるべき。
102.
「一度、たった一度だけ」 ("Once and Only
Once") 同じものを重複して書か ない 守らないと、変更 によって同じ修正を複数 箇所で行うことに。
103.
今回のキー概念 「責務の 割り当て」 …に焦点を当てます。
104.
どう責務に分割するか?
105.
それの オブジェクト指向 でのやり方。
106.
…の前に、 手続き指向 でのやり方。
107.
手続き指向での サブルーチンの意義は?
108.
サブルーチンとは: •或る粒度の責務を切り出 すこと。 •その文脈での「書きたい こと (関心事)」を書く。
109.
サブルーチン: •文脈重要。 なんの話をしてるか? どの関心の話をしてるのか? その文脈での抽象度で。 どう考えているか? の通りに。 「フローチャートを描くように」
110.
手続き指向では: •機能を書く。 •それをブレークダウン。 •サブルーチンによって。
111.
「責務」で分割。 • 或る責務に、名前を付けることで 範囲を決めて切り出す。 • 設計視点。 •
どの部分 (サブルーチン) の仕事 ( ということにする?) • → 責務を「手続き」に割り当て。 • クライアントから見たサービスの名 前を付ける (クライアント視点)。
112.
「責務」に名前を付ける • 的確な名前。 • サブルーチンの名前等。 •
その関心とその他との境界が生ま れる。 • 抽象化 → 概念の誕生。
113.
つまり…
114.
1. どこで分けると分かりや すい? かを考え、そこで 分ける
(ことにする)。 2. その塊をなんて呼ぶ? (か を決める) 分割と名前付け
115.
「フローチャートを描くように」
116.
せめて心の中に フローチャート。
117.
デモ。
118.
手続き指向の欠点 •関心事の分散が多発。 データに関して。 ユーザーインタフェイスに関して。 イベント駆動型だと特に。 オブジェクト指向の方は工夫すれば ずっとマシ。
119.
オブジェクト指向 の場合。
120.
手続き型の場合と 基本は同じ。
121.
「責務」で分割 •どの部分 (オブジェクト) の仕事 (ということにす る?) •設計視点で。
122.
名前を付ける。 責務を的確な 名前で切り出す。
123.
違うところ。
124.
手続き型と違うところ • 責務はオブジェクトに割り当てる。 • 或る関心をまとめて記述しやすい。 •
だが、オブジェクトを横断する関心 事もある。 • 別の方法やパラダイムで何とか (謎)す る。 → Generic、アスペクト、関数型パラダイム
125.
•オブジェクトに分ける。 •オブジェクト毎に考える。 •クラス (*1) 毎じゃない! (*1)
中国語でいうと「類」。 手続き型と違うところ
126.
• 「それはどのオブジェクトの?」 と考える。 • 「それは、どのオブジェクトの責 務?
(ということにする?)」 • 「それは、どのオブジェクトの状 態? (ということにする?)」 手続き型と違うところ
127.
デモ。
128.
6.参考になるもの。
129.
UML • 「オブジェクト設計の視点」 以外を排除。 • 考え方のフレームワーク。 •
思考ツール。 • コミュニケーション ツール。 •“UML for Sketch”
130.
UML •語彙セットとして。 • 「今何の話をしたいのか?」 =関心の分離。
131.
ソフトウェア パターン •デザインパターン 特に有名な23個のパターン –State パターン、 Factory
Method パターン、 Command パターン、 Observer パターンなど。
132.
ソフトウェア パターン •アーキテクチャ パター ン 重要な二つの分けるパター ン –縦に分ける
― MVC パターン –横に分ける ― レイヤー パター ン
133.
133 リファクタリング。
134.
134 リファクタリングとは?
135.
135 参考書 「リファクタリング: プログラミングの体質改善テク ニック」 マーチン・ファウラー著 児玉/友野/平澤/梅澤訳
136.
136 リファクタリング (Refactoring) と は何か? •
外部からみたときの振る舞い を保ちつつ、理解や修正が簡 単になるように、ソフトウェ アの内部構造を改善。 • 設計の繰り返し。
137.
まとめ。
138.
まとめ。 1. 何故改めて語りたいか? 2. 習得できない理由。 3.
考え方とコツ。 4. 仕組みから入るオブジェクト指向。 5. 概念から入るオブジェクト指向。 6. 参考になるもの。
139.
『今改めて語り合いたい。 オブジェクト指向プログラミングを マスタするコツ』 8/21(火) 15:25-16:40 Tech・Ed 2007
in Yokohama
140.
ありがとうございました。
Download