オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
あなたと Java
〜今すぐアンインストール〜
Nomuken - @nomuken
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
つらみ
● 90 …………分
※ 直していただきました
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
つらみ
● 初心者いないっぽくないですか
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
Agenda
1. 自己紹介
2. Java のアンインストール方法(重要)
3. オブジェクト指向の話(くどい)
4. Java での書き方
5. このセッションの後に何をするべきか
6. ちょこっと発展的な話
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
自己紹介 (@nomuken)
● C 科に所属
● 好きなものは ArchLinux
● なんか怖い人が来ると聞いて昨日オブジェクト指向勉強した
● Java 歴 -32768 日
● プログラミング初心者
→証明として 1 年次配当のコンピュータ基礎 I (プログラミン
グの初歩の初歩)を落としている
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
……なので今日は
初心者がやるので非常に簡単な話をします
(間違ったことも言うかもです)
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
0. Java のアンインストール方法
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
そもそも Java とは
● 「 30 billion devices run Java 」
→ 30 億のデバイスで動く「さいきょう の げんご」
→一節には「 30 億 ( ドル ) のデバイスしか動かない」と言われ
ている(要出典)
● 人間を苦しめる闇の言語
→( I 科)サバプロ,( C 科)アルゴリズム
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
真面目な話では
● 仮想マシンを PC 上に作りその上で動くもの
→だから一度コンパイルしたら, Mac でも Linux でも Windows
でも動く
● 大量のライブラリを持っている巨大な言語
→だから他からライブラリを入手する必要がない
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
ともあれ,アンインストール
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
よくある OS ( ArchLinux )の場合
1. ターミナルを開きます
2. yaourt もしくは pacman から消します
→ yaourt : % yaourt -Rdn java-common
→ pacman : # pacman -Rdn java-common
( Oracle な場合→ archlinux-java )
3. お手持ちの Java の本を図書館とか寄贈とかして手元から消し
ます
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
次に多い OS ( Ubuntu )の場合
● ターミナルを起動します
● apt-get から消します
→ $ sudo apt-get purge default-jre
(Oracle な場合は知りません )
● お手持ちの Java に関するものを手元から消します
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
終わり
( openjre ……なら消す理由ないのだが )
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
1. くどいオブジェクト指向の話
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
避けては通れぬオブジェクト指向
● 2 年次配当の以下の教科は Java
インターネットプログラミング(失笑)
基礎プログラミング
● 不十分な教育
→オブジェクト指向の説明不足(インターネッツプログラミン
グ)
→基礎プログラミングは数値計算が主
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
避けては通れぬオブジェクト指向
● I 科はしっかりやるっぽいです
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
……そもそもオブジェクトとは
物
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
ではオブジェクト指向とは?
● プログラミングの処理(とか)を「物」として考える手法
→人間の世界で使われてるから簡単?
→でゎなぃ
● それではどのように考えるべきか
→単に慣習であると思うべき
→ ……これを使えば良いプログラム ではない!
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
閑話休題
(んなことどうでも良い)
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
オブジェクト指向の定義
● 言語によって考え方が違っている
→例えば Ruby では全てがオブジェクトと考える
(オブジェクトの定義はこの後で)
→ Java は全てがオブジェクトではない
● オブジェクト指向を考えた人からすれば重要なのは「メッセー
ジング」
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
オブジェクト指向であることの条件
● 「隠蔽性(カプセル化)」……だけ!!
→ 物事全てを隠す.自分の持っているデータも隠すし,どう
やっているかも教えない
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
…… つまり?
● 以下のようなプログラムを考える
#include<stdio.h>
int main(void){
int a,b,result;
printf("ab =>");
scanf("%d %d",&a,&b);
result=a+b;
printf("ans=>%dn",result);
return 0;
}
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
……つまり
● 入力された値の和を出力するだけのプログラム
→ 2 つの値の和を知りたいときはいつでもこれを実行すれば良
い.
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
ちょっと待って!
● 必要としているのは結果だけという事実
→その処理に関しては見てもしょうがない
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
理想図
何か
3,9
12
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
……つまり
「多くの機能をプログラムの中に含めるときに,機能を自分で作
るではなく,既にある機能から結果だけを得る」
既にある機能
= 隠蔽(カプセル化)したもの
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
やった!終わり!!
● でゎなぃ
→ オブジェクトって?
→メッセージングって?
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
オブジェクトの定義
● 「データ」と「機能」を持つ
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
メッセージング
● 会話のようなもの.
→オブジェクトに「値を渡す」
→オブジェクトから「値が返ってくる」
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
……あれ?もしかして ?
オブジェクト
3,9
12
メッセージング
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
完
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
で,終わりたかったが
● 自分のセッションでは Java の話だった
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
2. Java での書き方
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
Java でオブジェクト指向
● 実は「クラス」がキーワード
→オブジェクトの設計図の役割を持つ
……→こんな感じのもの「クラスベース」とか言ったり
● クラスからオブジェクトが生成される
→これをインスタンス化という
→ということは設計図を元に別の個体が存在する
● さらにオブジェクトを強める別の性質が追加されている
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
……ところでクラスとは
● 設計図以上のなんでもない
→例えば RPG のキャラクターについて考えてみる.
→キャラクターは冒険者という意味では共通だが,職も違うし
能力値も違う
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
……えっと
● クラスはあくまで「概念」的な存在
→実際に使うにはデータを決めなくてはならない
……(概念の概念もあるんですが )
● ここから実体を作る
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
……つまり
ボーカロイド
名前 = 初音ミク 名前 = 亞北ネル
名前を持っている
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
さて
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
Java ……でのオブジェクト指向では
さらに以下が追加されている
1. 継承
2. 多態性
これらはオブジェクト = 物という意味を強めている
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
継承とは
● 日本語そのままの意味→「引き継ぐ」
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
……えっと
とある「オブジェクト」からその全て(データと機能)を引き継
いだ「オブジェクト」を作れるということ!!
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
……えっと
● 継承を使えばツンデレだけを実装してミクの機能を利用できる
1.歌える
2.可愛い
継承!!
1.歌える
2.可愛い
3.ツンデレ(← New! )
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
_人人人人人人人人人人_
> 逆に分かりづらい <
 ̄ Y^Y^Y^Y^Y^Y^Y^Y^Y  ̄
……他の人説明してるし,いいよね
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
多態性
● 多態性とは「どのようなものにでも適したものになれる」とい
うこと.(原義的には違うかも?)
● Java ではそれとして 2 つの機能がある
オーバーライド(上書き)
オーバーロード(多重定義)
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
この 2 ……つの説明をしたいのだが
● C 科では前期配当のコン基礎 I では「関数」を扱わないので説
……明できない
● ……しかし,説明しないとサボったと言われそう
● …… やるか
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
関数とは
● C 言語において関数とは今までの説明での「機能」にあたる
→ C ……言語では機能という言葉を使いたくはないのだが
● (実は printf ……も関数なのだが )
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
関数の実例
#include<stdio.h>
int sum(int a,int b){
returna+b;
}
int main(void){
int num1=3,num2=9,result;
result=sum(num1,num2);
printf("%dn",result);
return0;
}
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
C での関数のルール
● 予約語は使えない( if,int,void,return..... )
= 同名の関数は作れない(例では sum をもうひとつ作るのは無
理)
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
で, Java にもっていく
● Java では関数ではなく「メソッド」
● そういえば以下の 2 つの話であった
オーバーライド(上書き)
オーバーロード(多重定義)
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
オーバーライド(上書き)
● 継承した機能(メソッド)を書き換える(上書き)することが
できる.
歌う 歌う
可愛らしく真面目に歌う ダルそうに歌う
継承
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
オーバーロード(多重定義)
● ……同名の機能(メソッド)を作れる(語弊があるが )
→ 与えられるものによって同名の処理を依頼しても,正しい処
理をできる
歌う( KAITO に)
ダルそうに歌う
歌う(レンに)
ちょっと照れながら歌う
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
で,ようやくこの章の本題に入れるわけで
● この章の本題→ Java での書き方
● とりあえず,実際にコードを読んでみましょう
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
の前に模式図こんな感じです
1) 機能
歌う
踊る
2)データ
年齢
身長
1) 機能
歌う
踊る
レンを想う
2)データ
年齢
身長
寝た回数
HatsuneMiku クラス AkitaNeru クラス
継承
…… 本当はクラス図を使うのですがそちらは分かりづらいので
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
Demo
(手元に欲しい? github:nomuken/TDU_OOP_study )
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
軽くポイント
● 継承→ extends というので表している
● オーバーロード→単純に同名のメソッドを作り,引数を得るこ
とにより別物になっている
● オーバーライド→踊るメソッドを再定義している
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
と,注意!
● このコードはこの章の理解のために作りました
→実はカプセル化(隠蔽)してないんです.
(アクセスの話はもっとできるようになってから)
● それ以前にプログラマとして失格なコード
● 謎の package
→ これは include ……に近いものと思えば (本当は違う)
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
3. このセッションの後に何をすべきか
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
今まで解説したこと
● 全てではない
→ Java での前にオブジェクト指向とは何かに力を入れてみた
→なので,省略に省略を重ねた
→(作るの疲れた)
● オブジェクト指向について
→ これも全てではない
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
Java をやる上で次に知るべきこと
● ライブラリ理解
● データ構造理解
● アクセス
● デザインパターン
● コーディング規則
● Java のダメなところ
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
Any question......?
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
そういえば
● Agenda 全部やってませんね
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
4. ちょっと発展的な話
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
betterClass の話
● なんかサンプルで示したコードをそのままにするのは恥という
か嫌なので,しっかり書いておきました.
Git : https://github.com/nomuken/TDU_OOP_study
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
個人的 Java のダメなところ
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
何故 Java はダメなのか
● 製品には完全に向かない
→仮想マシンで解釈し直すので,デコンパイルしやすい
……→技術の漏洩?(法律的にはダメなのだが )
● 多いセキュリティホール
→しょうが無いといえばそこまでだが,多くの危険性が指摘さ
れている
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
何故 Java はダメなのか
● 安定性と速度の問題
→ Java はやっぱり重い
→安定性にも疑問がある
● 実質的に Android 位しか良さがない?
→ Web 系を Java で書くのはほぼ罰ゲーム,デスクトップはデ
コンパイルの容易性を考えると微妙.
→ Jenkins が Java ……であるとはいえ
オブジェクト指向勉強会 ( 基礎 )
TwitterHashTag - #OOP_study
何故 Java はダメなのか
● 言語が巨大すぎる
→だからデバッグが大変(自分のコードが悪いのですが)
→ Javadoc が必須

オブジェクト指向勉強会(基礎)

  • 1.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study あなたと Java 〜今すぐアンインストール〜 Nomuken - @nomuken
  • 2.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study つらみ ● 90 …………分 ※ 直していただきました
  • 3.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study つらみ ● 初心者いないっぽくないですか
  • 4.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study Agenda 1. 自己紹介 2. Java のアンインストール方法(重要) 3. オブジェクト指向の話(くどい) 4. Java での書き方 5. このセッションの後に何をするべきか 6. ちょこっと発展的な話
  • 5.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 自己紹介 (@nomuken) ● C 科に所属 ● 好きなものは ArchLinux ● なんか怖い人が来ると聞いて昨日オブジェクト指向勉強した ● Java 歴 -32768 日 ● プログラミング初心者 →証明として 1 年次配当のコンピュータ基礎 I (プログラミン グの初歩の初歩)を落としている
  • 6.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study ……なので今日は 初心者がやるので非常に簡単な話をします (間違ったことも言うかもです)
  • 7.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 0. Java のアンインストール方法
  • 8.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study そもそも Java とは ● 「 30 billion devices run Java 」 → 30 億のデバイスで動く「さいきょう の げんご」 →一節には「 30 億 ( ドル ) のデバイスしか動かない」と言われ ている(要出典) ● 人間を苦しめる闇の言語 →( I 科)サバプロ,( C 科)アルゴリズム
  • 9.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 真面目な話では ● 仮想マシンを PC 上に作りその上で動くもの →だから一度コンパイルしたら, Mac でも Linux でも Windows でも動く ● 大量のライブラリを持っている巨大な言語 →だから他からライブラリを入手する必要がない
  • 10.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study ともあれ,アンインストール
  • 11.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study よくある OS ( ArchLinux )の場合 1. ターミナルを開きます 2. yaourt もしくは pacman から消します → yaourt : % yaourt -Rdn java-common → pacman : # pacman -Rdn java-common ( Oracle な場合→ archlinux-java ) 3. お手持ちの Java の本を図書館とか寄贈とかして手元から消し ます
  • 12.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 次に多い OS ( Ubuntu )の場合 ● ターミナルを起動します ● apt-get から消します → $ sudo apt-get purge default-jre (Oracle な場合は知りません ) ● お手持ちの Java に関するものを手元から消します
  • 13.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 終わり ( openjre ……なら消す理由ないのだが )
  • 14.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 1. くどいオブジェクト指向の話
  • 15.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 避けては通れぬオブジェクト指向 ● 2 年次配当の以下の教科は Java インターネットプログラミング(失笑) 基礎プログラミング ● 不十分な教育 →オブジェクト指向の説明不足(インターネッツプログラミン グ) →基礎プログラミングは数値計算が主
  • 16.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 避けては通れぬオブジェクト指向 ● I 科はしっかりやるっぽいです
  • 17.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study ……そもそもオブジェクトとは 物
  • 18.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study ではオブジェクト指向とは? ● プログラミングの処理(とか)を「物」として考える手法 →人間の世界で使われてるから簡単? →でゎなぃ ● それではどのように考えるべきか →単に慣習であると思うべき → ……これを使えば良いプログラム ではない!
  • 19.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 閑話休題 (んなことどうでも良い)
  • 20.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study オブジェクト指向の定義 ● 言語によって考え方が違っている →例えば Ruby では全てがオブジェクトと考える (オブジェクトの定義はこの後で) → Java は全てがオブジェクトではない ● オブジェクト指向を考えた人からすれば重要なのは「メッセー ジング」
  • 21.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study オブジェクト指向であることの条件 ● 「隠蔽性(カプセル化)」……だけ!! → 物事全てを隠す.自分の持っているデータも隠すし,どう やっているかも教えない
  • 22.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study …… つまり? ● 以下のようなプログラムを考える #include<stdio.h> int main(void){ int a,b,result; printf("ab =>"); scanf("%d %d",&a,&b); result=a+b; printf("ans=>%dn",result); return 0; }
  • 23.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study ……つまり ● 入力された値の和を出力するだけのプログラム → 2 つの値の和を知りたいときはいつでもこれを実行すれば良 い.
  • 24.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study ちょっと待って! ● 必要としているのは結果だけという事実 →その処理に関しては見てもしょうがない
  • 25.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 理想図 何か 3,9 12
  • 26.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study ……つまり 「多くの機能をプログラムの中に含めるときに,機能を自分で作 るではなく,既にある機能から結果だけを得る」 既にある機能 = 隠蔽(カプセル化)したもの
  • 27.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study やった!終わり!! ● でゎなぃ → オブジェクトって? →メッセージングって?
  • 28.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study オブジェクトの定義 ● 「データ」と「機能」を持つ
  • 29.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study メッセージング ● 会話のようなもの. →オブジェクトに「値を渡す」 →オブジェクトから「値が返ってくる」
  • 30.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study ……あれ?もしかして ? オブジェクト 3,9 12 メッセージング
  • 31.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 完
  • 32.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study で,終わりたかったが ● 自分のセッションでは Java の話だった
  • 33.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 2. Java での書き方
  • 34.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study Java でオブジェクト指向 ● 実は「クラス」がキーワード →オブジェクトの設計図の役割を持つ ……→こんな感じのもの「クラスベース」とか言ったり ● クラスからオブジェクトが生成される →これをインスタンス化という →ということは設計図を元に別の個体が存在する ● さらにオブジェクトを強める別の性質が追加されている
  • 35.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study ……ところでクラスとは ● 設計図以上のなんでもない →例えば RPG のキャラクターについて考えてみる. →キャラクターは冒険者という意味では共通だが,職も違うし 能力値も違う
  • 36.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study ……えっと ● クラスはあくまで「概念」的な存在 →実際に使うにはデータを決めなくてはならない ……(概念の概念もあるんですが ) ● ここから実体を作る
  • 37.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study ……つまり ボーカロイド 名前 = 初音ミク 名前 = 亞北ネル 名前を持っている
  • 38.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study さて
  • 39.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study Java ……でのオブジェクト指向では さらに以下が追加されている 1. 継承 2. 多態性 これらはオブジェクト = 物という意味を強めている
  • 40.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 継承とは ● 日本語そのままの意味→「引き継ぐ」
  • 41.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study ……えっと とある「オブジェクト」からその全て(データと機能)を引き継 いだ「オブジェクト」を作れるということ!!
  • 42.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study ……えっと ● 継承を使えばツンデレだけを実装してミクの機能を利用できる 1.歌える 2.可愛い 継承!! 1.歌える 2.可愛い 3.ツンデレ(← New! )
  • 43.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study _人人人人人人人人人人_ > 逆に分かりづらい <  ̄ Y^Y^Y^Y^Y^Y^Y^Y^Y  ̄ ……他の人説明してるし,いいよね
  • 44.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 多態性 ● 多態性とは「どのようなものにでも適したものになれる」とい うこと.(原義的には違うかも?) ● Java ではそれとして 2 つの機能がある オーバーライド(上書き) オーバーロード(多重定義)
  • 45.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study この 2 ……つの説明をしたいのだが ● C 科では前期配当のコン基礎 I では「関数」を扱わないので説 ……明できない ● ……しかし,説明しないとサボったと言われそう ● …… やるか
  • 46.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 関数とは ● C 言語において関数とは今までの説明での「機能」にあたる → C ……言語では機能という言葉を使いたくはないのだが ● (実は printf ……も関数なのだが )
  • 47.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 関数の実例 #include<stdio.h> int sum(int a,int b){ returna+b; } int main(void){ int num1=3,num2=9,result; result=sum(num1,num2); printf("%dn",result); return0; }
  • 48.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study C での関数のルール ● 予約語は使えない( if,int,void,return..... ) = 同名の関数は作れない(例では sum をもうひとつ作るのは無 理)
  • 49.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study で, Java にもっていく ● Java では関数ではなく「メソッド」 ● そういえば以下の 2 つの話であった オーバーライド(上書き) オーバーロード(多重定義)
  • 50.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study オーバーライド(上書き) ● 継承した機能(メソッド)を書き換える(上書き)することが できる. 歌う 歌う 可愛らしく真面目に歌う ダルそうに歌う 継承
  • 51.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study オーバーロード(多重定義) ● ……同名の機能(メソッド)を作れる(語弊があるが ) → 与えられるものによって同名の処理を依頼しても,正しい処 理をできる 歌う( KAITO に) ダルそうに歌う 歌う(レンに) ちょっと照れながら歌う
  • 52.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study で,ようやくこの章の本題に入れるわけで ● この章の本題→ Java での書き方 ● とりあえず,実際にコードを読んでみましょう
  • 53.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study の前に模式図こんな感じです 1) 機能 歌う 踊る 2)データ 年齢 身長 1) 機能 歌う 踊る レンを想う 2)データ 年齢 身長 寝た回数 HatsuneMiku クラス AkitaNeru クラス 継承 …… 本当はクラス図を使うのですがそちらは分かりづらいので
  • 54.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study Demo (手元に欲しい? github:nomuken/TDU_OOP_study )
  • 55.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 軽くポイント ● 継承→ extends というので表している ● オーバーロード→単純に同名のメソッドを作り,引数を得るこ とにより別物になっている ● オーバーライド→踊るメソッドを再定義している
  • 56.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study と,注意! ● このコードはこの章の理解のために作りました →実はカプセル化(隠蔽)してないんです. (アクセスの話はもっとできるようになってから) ● それ以前にプログラマとして失格なコード ● 謎の package → これは include ……に近いものと思えば (本当は違う)
  • 57.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 3. このセッションの後に何をすべきか
  • 58.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 今まで解説したこと ● 全てではない → Java での前にオブジェクト指向とは何かに力を入れてみた →なので,省略に省略を重ねた →(作るの疲れた) ● オブジェクト指向について → これも全てではない
  • 59.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study Java をやる上で次に知るべきこと ● ライブラリ理解 ● データ構造理解 ● アクセス ● デザインパターン ● コーディング規則 ● Java のダメなところ
  • 60.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study Any question......?
  • 61.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study
  • 62.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study そういえば ● Agenda 全部やってませんね
  • 63.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 4. ちょっと発展的な話
  • 64.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study betterClass の話 ● なんかサンプルで示したコードをそのままにするのは恥という か嫌なので,しっかり書いておきました. Git : https://github.com/nomuken/TDU_OOP_study
  • 65.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 個人的 Java のダメなところ
  • 66.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 何故 Java はダメなのか ● 製品には完全に向かない →仮想マシンで解釈し直すので,デコンパイルしやすい ……→技術の漏洩?(法律的にはダメなのだが ) ● 多いセキュリティホール →しょうが無いといえばそこまでだが,多くの危険性が指摘さ れている
  • 67.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 何故 Java はダメなのか ● 安定性と速度の問題 → Java はやっぱり重い →安定性にも疑問がある ● 実質的に Android 位しか良さがない? → Web 系を Java で書くのはほぼ罰ゲーム,デスクトップはデ コンパイルの容易性を考えると微妙. → Jenkins が Java ……であるとはいえ
  • 68.
    オブジェクト指向勉強会 ( 基礎) TwitterHashTag - #OOP_study 何故 Java はダメなのか ● 言語が巨大すぎる →だからデバッグが大変(自分のコードが悪いのですが) → Javadoc が必須