SlideShare a Scribd company logo
1 of 10
ジーノ先生の 
文系的オブジェクト指向 
(1) ジーノ誕生 
class / object / constructor
自己紹介 
• オブジェクト指向はむしろ文系向けと考える職業プログラマ 
• 受託系IT企業、ゲーム開発会社などで働く 
• 主な使用言語 
• Java / C/C++ / C# / VB 
• html / css / javascript / php / mysql 
• 趣味でゲームアプリを作ったりもするので、絵も描く 
• ジーノ先生はLine のスタンプ 
http://line.me/S/sticker/1015414
ジーノ先生は『ヒツジでジーノ』 
• 作りたい物から考える 
本講座ではプログラムが必要な場面ではJava で説明しますが、必要以 
上に文法の説明はしません。 
プログラム的考え方をすると文系的(自然言語的)な考え方から遠のくと 
思います。 
• 今回作りたいモノは『ジーノという名前のヒツジ』 
mName というproperty を持つ、ヒツジclass を設計します。
ヒツジのジーノ 
• 一言でヒツジと言っても個体差があります。 
• 「ひつじ」とgoogle 検索すると「ショーン」がサジェストされます。 
• シープだと、「ストレイ」などが出てきます。 
正直、うらやましいです。 
→ヒツジである、ショーンでもストレイでもないジーノを表現する 
設計を考えます。
ヒツジクラスの名前属性 
• ヒツジがクラス 
• クラスとは分類のことで、犬、猫、羊なんかをクラスとして定義します。 
• 「ジーノ」「ショーン」「ストレイ」などは属性 
• 属性というと、某パズルゲームの火属性とか水属性とかが有名。 
• その物体が、どのような特性を持つかを定義するのが、特性や属性。 
• 火属性などの属性はもちろん、名前も特性や属性の一部。 
• 教科書用語としては、アトリビュートやプロパティが使われています。 
• 属性:アトリビュート/ attribute 
• 特性:プロパティ/ property 
Sheep 
名前
ヒツジclass を設計 
class Sheep { 
String mName;// 名前 
// コンストラクタ。オブジェクト生成時に呼び出される 
public Sheep() { 
} 
// 名前取得 
public String getName() { 
return mName; 
} 
} 
作ってみましたが、このままではジーノと名付けられなそうです。
名付ける 
• 生まれた時から名前はついているの? 
• もしそうなら、コンストラクタに実装 
• 名前は後でつくの? 
• もしそうなら、名前付けメソッドを実装 
• 女性なら結婚したら名前変わるよね? 
• 名前つけではなく、名前変更メソッドを実装 
• 使われる場所が限定されているのが分かる様に。
ヒツジclass を設計(2) 
class Sheep { 
String mName; // 名前 
// コンストラクタ。オブジェクト生成時に呼び出される 
public Sheep(String name) { 
mName = name; 
} 
// 名前取得 
public String getName() { 
return mName; 
} 
// 名前変更 
public void rename(String name) { 
mName = name; 
} 
}
ではジーノ先生(他)を作りましょう 
Sheep jino = new Sheep(“ジーノ”); 
Sheep stray = new Sheep(“ストレイ”); 
Sheep shone = new Sheep(“ショーン”); 
System.out.println(“私の名前は” + jino.getName()); 
System.out.println(“私の名前は” + stray.getName()); 
System.out.println(“私の名前は” + shone.getName()); 
• jino / stray / shone がobject 
class は作りたいモノの定義で、実際に作られたものをobject と言います。 
object の事をinstance と言い、生成することをinstance 化と言うことも。 
Sheep 
名前 
Sheep 
ジーノ 
Sheep 
ストレイ 
Sheep 
ショーン 
生成(instance化) 
class object (instance)
まとめ 
• いわゆる技術書と異なる切り口での解説でした。 
• 大事なのは丸暗記しようとしないことです。 
• 仕様を整理整頓して分解、再構築してください。 
• 結果としてプログラムができるイメージを。

More Related Content

What's hot

アプリでもオブジェクト指向エクササイズ(Potatotips#3)
アプリでもオブジェクト指向エクササイズ(Potatotips#3)アプリでもオブジェクト指向エクササイズ(Potatotips#3)
アプリでもオブジェクト指向エクササイズ(Potatotips#3)Shoichi Matsuda
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 
設計してますか?
設計してますか?設計してますか?
設計してますか?ke-m kamekoopa
 
Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)VOYAGE GROUP
 
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?実践的な設計って、なんだろう?
実践的な設計って、なんだろう?増田 亨
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツShunji Konishi
 
デジタルメディア創作部勉強会「オブジェクト指向入門1」
デジタルメディア創作部勉強会「オブジェクト指向入門1」デジタルメディア創作部勉強会「オブジェクト指向入門1」
デジタルメディア創作部勉強会「オブジェクト指向入門1」Hokuto Tateyama
 
オブジェクト指向設計の原則
オブジェクト指向設計の原則オブジェクト指向設計の原則
オブジェクト指向設計の原則Toru Koido
 
クイズ・Python勝ち抜きバトル pycon jp_2017
クイズ・Python勝ち抜きバトル pycon jp_2017クイズ・Python勝ち抜きバトル pycon jp_2017
クイズ・Python勝ち抜きバトル pycon jp_2017Motohiro Ueki
 
データモデリング入門【実習編】-astah*を使って、TMの手法を使う-
データモデリング入門【実習編】-astah*を使って、TMの手法を使う-データモデリング入門【実習編】-astah*を使って、TMの手法を使う-
データモデリング入門【実習編】-astah*を使って、TMの手法を使う-Koichi Inami
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門増田 亨
 
データモデリング入門-astah*を使って、TMの手法を使う-
データモデリング入門-astah*を使って、TMの手法を使う-データモデリング入門-astah*を使って、TMの手法を使う-
データモデリング入門-astah*を使って、TMの手法を使う-Koichi Inami
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるpospome
 
ジーノ先生の文系的オブジェクト指向(5) - ジーノ先生、殴る
ジーノ先生の文系的オブジェクト指向(5) - ジーノ先生、殴るジーノ先生の文系的オブジェクト指向(5) - ジーノ先生、殴る
ジーノ先生の文系的オブジェクト指向(5) - ジーノ先生、殴るSatoru Kodaira
 
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!Yuji Nojima
 
Web技術勉強会 20110514
Web技術勉強会 20110514Web技術勉強会 20110514
Web技術勉強会 20110514龍一 田中
 
Rとpythonとjuliaで機械学習レベル4を目指す
Rとpythonとjuliaで機械学習レベル4を目指すRとpythonとjuliaで機械学習レベル4を目指す
Rとpythonとjuliaで機械学習レベル4を目指すyuta july
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する増田 亨
 
JavaScript超入門 基礎
JavaScript超入門 基礎JavaScript超入門 基礎
JavaScript超入門 基礎tetsu6
 

What's hot (20)

アプリでもオブジェクト指向エクササイズ(Potatotips#3)
アプリでもオブジェクト指向エクササイズ(Potatotips#3)アプリでもオブジェクト指向エクササイズ(Potatotips#3)
アプリでもオブジェクト指向エクササイズ(Potatotips#3)
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
設計してますか?
設計してますか?設計してますか?
設計してますか?
 
Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)
 
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
 
デジタルメディア創作部勉強会「オブジェクト指向入門1」
デジタルメディア創作部勉強会「オブジェクト指向入門1」デジタルメディア創作部勉強会「オブジェクト指向入門1」
デジタルメディア創作部勉強会「オブジェクト指向入門1」
 
オブジェクト指向設計の原則
オブジェクト指向設計の原則オブジェクト指向設計の原則
オブジェクト指向設計の原則
 
クイズ・Python勝ち抜きバトル pycon jp_2017
クイズ・Python勝ち抜きバトル pycon jp_2017クイズ・Python勝ち抜きバトル pycon jp_2017
クイズ・Python勝ち抜きバトル pycon jp_2017
 
データモデリング入門【実習編】-astah*を使って、TMの手法を使う-
データモデリング入門【実習編】-astah*を使って、TMの手法を使う-データモデリング入門【実習編】-astah*を使って、TMの手法を使う-
データモデリング入門【実習編】-astah*を使って、TMの手法を使う-
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
 
データモデリング入門-astah*を使って、TMの手法を使う-
データモデリング入門-astah*を使って、TMの手法を使う-データモデリング入門-astah*を使って、TMの手法を使う-
データモデリング入門-astah*を使って、TMの手法を使う-
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
ジーノ先生の文系的オブジェクト指向(5) - ジーノ先生、殴る
ジーノ先生の文系的オブジェクト指向(5) - ジーノ先生、殴るジーノ先生の文系的オブジェクト指向(5) - ジーノ先生、殴る
ジーノ先生の文系的オブジェクト指向(5) - ジーノ先生、殴る
 
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!
 
Web技術勉強会 20110514
Web技術勉強会 20110514Web技術勉強会 20110514
Web技術勉強会 20110514
 
Rとpythonとjuliaで機械学習レベル4を目指す
Rとpythonとjuliaで機械学習レベル4を目指すRとpythonとjuliaで機械学習レベル4を目指す
Rとpythonとjuliaで機械学習レベル4を目指す
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
 
JavaScript超入門 基礎
JavaScript超入門 基礎JavaScript超入門 基礎
JavaScript超入門 基礎
 

Viewers also liked

バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-hakoika-itwg
 
第2回 モデリング勉強会
第2回 モデリング勉強会第2回 モデリング勉強会
第2回 モデリング勉強会hakoika-itwg
 
オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門Ryo Miyake
 
06 オブジェクト指向の基礎
06 オブジェクト指向の基礎06 オブジェクト指向の基礎
06 オブジェクト指向の基礎文樹 高橋
 
オブジェクト指向ワークショップ 201507版
オブジェクト指向ワークショップ 201507版オブジェクト指向ワークショップ 201507版
オブジェクト指向ワークショップ 201507版Mao Ohnishi
 
だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向Anto Mioyama
 
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数Satoru Kodaira
 
関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)tadaaki hayashi
 
F流 『オブジェクト指向の考え方の基礎の基礎』 ~ソフトウェア開発の原則編~
F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~
F流 『オブジェクト指向の考え方の基礎の基礎』 ~ソフトウェア開発の原則編~Fujio Kojima
 
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」hakoika-itwg
 

Viewers also liked (10)

バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
 
第2回 モデリング勉強会
第2回 モデリング勉強会第2回 モデリング勉強会
第2回 モデリング勉強会
 
オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門
 
06 オブジェクト指向の基礎
06 オブジェクト指向の基礎06 オブジェクト指向の基礎
06 オブジェクト指向の基礎
 
オブジェクト指向ワークショップ 201507版
オブジェクト指向ワークショップ 201507版オブジェクト指向ワークショップ 201507版
オブジェクト指向ワークショップ 201507版
 
だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向
 
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
 
関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)
 
F流 『オブジェクト指向の考え方の基礎の基礎』 ~ソフトウェア開発の原則編~
F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~
F流 『オブジェクト指向の考え方の基礎の基礎』 ~ソフトウェア開発の原則編~
 
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
 

Similar to ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生

Alluren of prototype-based OOP
Alluren of prototype-based OOPAlluren of prototype-based OOP
Alluren of prototype-based OOPazuma satoshi
 
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由Kohei Taniguchi
 
P5js web editorで、クリエイティブコーディングを!
P5js web editorで、クリエイティブコーディングを!P5js web editorで、クリエイティブコーディングを!
P5js web editorで、クリエイティブコーディングを!Suzuki Junko
 
(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#ssusera3d157
 
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)parrotstudio
 
C#erがF#に這い寄ってみた
C#erがF#に這い寄ってみたC#erがF#に這い寄ってみた
C#erがF#に這い寄ってみたHiroshi Maekawa
 
ガチリアルな修羅チーム開発
ガチリアルな修羅チーム開発ガチリアルな修羅チーム開発
ガチリアルな修羅チーム開発Atsushi Kojima
 
辛い開発を色々使って迂回した話
辛い開発を色々使って迂回した話辛い開発を色々使って迂回した話
辛い開発を色々使って迂回した話s2otsa
 
この中に1人、素人がいる!
この中に1人、素人がいる!この中に1人、素人がいる!
この中に1人、素人がいる!infinite_loop
 
Careerselect 3/30
Careerselect 3/30 Careerselect 3/30
Careerselect 3/30 saitojun2
 
Go 言語を語ってみるか
Go 言語を語ってみるかGo 言語を語ってみるか
Go 言語を語ってみるかAkihiko Matuura
 
TENTO 2012/01 筑波大学プレゼン資料
TENTO 2012/01 筑波大学プレゼン資料TENTO 2012/01 筑波大学プレゼン資料
TENTO 2012/01 筑波大学プレゼン資料Shinichi Kusano
 
Weekend Androidのススメ
Weekend AndroidのススメWeekend Androidのススメ
Weekend AndroidのススメSuzuki Junko
 
プログラミングはじめの一歩 先生:関根 元和
プログラミングはじめの一歩 先生:関根 元和プログラミングはじめの一歩 先生:関根 元和
プログラミングはじめの一歩 先生:関根 元和schoowebcampus
 
Windows ストアアプリを作ろう ~Metroスタイルアプリ入門~ (2012/09/29)
Windows ストアアプリを作ろう ~Metroスタイルアプリ入門~ (2012/09/29)Windows ストアアプリを作ろう ~Metroスタイルアプリ入門~ (2012/09/29)
Windows ストアアプリを作ろう ~Metroスタイルアプリ入門~ (2012/09/29)T. Kodaka
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方Yusuke Wada
 
実践アニメーション
実践アニメーション実践アニメーション
実践アニメーションNaoya Yunoue
 
CVPR2018 参加報告(速報版)2日目
CVPR2018 参加報告(速報版)2日目CVPR2018 参加報告(速報版)2日目
CVPR2018 参加報告(速報版)2日目Atsushi Hashimoto
 
Django と Wagtail で作る Headless CMS
Django と Wagtail で作る Headless CMSDjango と Wagtail で作る Headless CMS
Django と Wagtail で作る Headless CMSIosif Takakura
 
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7Hiroshi Toda
 

Similar to ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生 (20)

Alluren of prototype-based OOP
Alluren of prototype-based OOPAlluren of prototype-based OOP
Alluren of prototype-based OOP
 
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
 
P5js web editorで、クリエイティブコーディングを!
P5js web editorで、クリエイティブコーディングを!P5js web editorで、クリエイティブコーディングを!
P5js web editorで、クリエイティブコーディングを!
 
(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#
 
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
 
C#erがF#に這い寄ってみた
C#erがF#に這い寄ってみたC#erがF#に這い寄ってみた
C#erがF#に這い寄ってみた
 
ガチリアルな修羅チーム開発
ガチリアルな修羅チーム開発ガチリアルな修羅チーム開発
ガチリアルな修羅チーム開発
 
辛い開発を色々使って迂回した話
辛い開発を色々使って迂回した話辛い開発を色々使って迂回した話
辛い開発を色々使って迂回した話
 
この中に1人、素人がいる!
この中に1人、素人がいる!この中に1人、素人がいる!
この中に1人、素人がいる!
 
Careerselect 3/30
Careerselect 3/30 Careerselect 3/30
Careerselect 3/30
 
Go 言語を語ってみるか
Go 言語を語ってみるかGo 言語を語ってみるか
Go 言語を語ってみるか
 
TENTO 2012/01 筑波大学プレゼン資料
TENTO 2012/01 筑波大学プレゼン資料TENTO 2012/01 筑波大学プレゼン資料
TENTO 2012/01 筑波大学プレゼン資料
 
Weekend Androidのススメ
Weekend AndroidのススメWeekend Androidのススメ
Weekend Androidのススメ
 
プログラミングはじめの一歩 先生:関根 元和
プログラミングはじめの一歩 先生:関根 元和プログラミングはじめの一歩 先生:関根 元和
プログラミングはじめの一歩 先生:関根 元和
 
Windows ストアアプリを作ろう ~Metroスタイルアプリ入門~ (2012/09/29)
Windows ストアアプリを作ろう ~Metroスタイルアプリ入門~ (2012/09/29)Windows ストアアプリを作ろう ~Metroスタイルアプリ入門~ (2012/09/29)
Windows ストアアプリを作ろう ~Metroスタイルアプリ入門~ (2012/09/29)
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
実践アニメーション
実践アニメーション実践アニメーション
実践アニメーション
 
CVPR2018 参加報告(速報版)2日目
CVPR2018 参加報告(速報版)2日目CVPR2018 参加報告(速報版)2日目
CVPR2018 参加報告(速報版)2日目
 
Django と Wagtail で作る Headless CMS
Django と Wagtail で作る Headless CMSDjango と Wagtail で作る Headless CMS
Django と Wagtail で作る Headless CMS
 
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
 

ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生

  • 1. ジーノ先生の 文系的オブジェクト指向 (1) ジーノ誕生 class / object / constructor
  • 2. 自己紹介 • オブジェクト指向はむしろ文系向けと考える職業プログラマ • 受託系IT企業、ゲーム開発会社などで働く • 主な使用言語 • Java / C/C++ / C# / VB • html / css / javascript / php / mysql • 趣味でゲームアプリを作ったりもするので、絵も描く • ジーノ先生はLine のスタンプ http://line.me/S/sticker/1015414
  • 3. ジーノ先生は『ヒツジでジーノ』 • 作りたい物から考える 本講座ではプログラムが必要な場面ではJava で説明しますが、必要以 上に文法の説明はしません。 プログラム的考え方をすると文系的(自然言語的)な考え方から遠のくと 思います。 • 今回作りたいモノは『ジーノという名前のヒツジ』 mName というproperty を持つ、ヒツジclass を設計します。
  • 4. ヒツジのジーノ • 一言でヒツジと言っても個体差があります。 • 「ひつじ」とgoogle 検索すると「ショーン」がサジェストされます。 • シープだと、「ストレイ」などが出てきます。 正直、うらやましいです。 →ヒツジである、ショーンでもストレイでもないジーノを表現する 設計を考えます。
  • 5. ヒツジクラスの名前属性 • ヒツジがクラス • クラスとは分類のことで、犬、猫、羊なんかをクラスとして定義します。 • 「ジーノ」「ショーン」「ストレイ」などは属性 • 属性というと、某パズルゲームの火属性とか水属性とかが有名。 • その物体が、どのような特性を持つかを定義するのが、特性や属性。 • 火属性などの属性はもちろん、名前も特性や属性の一部。 • 教科書用語としては、アトリビュートやプロパティが使われています。 • 属性:アトリビュート/ attribute • 特性:プロパティ/ property Sheep 名前
  • 6. ヒツジclass を設計 class Sheep { String mName;// 名前 // コンストラクタ。オブジェクト生成時に呼び出される public Sheep() { } // 名前取得 public String getName() { return mName; } } 作ってみましたが、このままではジーノと名付けられなそうです。
  • 7. 名付ける • 生まれた時から名前はついているの? • もしそうなら、コンストラクタに実装 • 名前は後でつくの? • もしそうなら、名前付けメソッドを実装 • 女性なら結婚したら名前変わるよね? • 名前つけではなく、名前変更メソッドを実装 • 使われる場所が限定されているのが分かる様に。
  • 8. ヒツジclass を設計(2) class Sheep { String mName; // 名前 // コンストラクタ。オブジェクト生成時に呼び出される public Sheep(String name) { mName = name; } // 名前取得 public String getName() { return mName; } // 名前変更 public void rename(String name) { mName = name; } }
  • 9. ではジーノ先生(他)を作りましょう Sheep jino = new Sheep(“ジーノ”); Sheep stray = new Sheep(“ストレイ”); Sheep shone = new Sheep(“ショーン”); System.out.println(“私の名前は” + jino.getName()); System.out.println(“私の名前は” + stray.getName()); System.out.println(“私の名前は” + shone.getName()); • jino / stray / shone がobject class は作りたいモノの定義で、実際に作られたものをobject と言います。 object の事をinstance と言い、生成することをinstance 化と言うことも。 Sheep 名前 Sheep ジーノ Sheep ストレイ Sheep ショーン 生成(instance化) class object (instance)
  • 10. まとめ • いわゆる技術書と異なる切り口での解説でした。 • 大事なのは丸暗記しようとしないことです。 • 仕様を整理整頓して分解、再構築してください。 • 結果としてプログラムができるイメージを。