20120609 java oo道場(ネタのメモ)
- 4. 今回も、
シンプル」
「シンプル」
Surtout faites simple
(出来る限り単純に作りなさい)
エスコフィエの料理の哲学より
- 6. その前に 軽くJavaの文法の復習を(その1)
Java 言語において「データ型」と呼ばれるものは3種類存在する
基本データ型 プリミティブ型
基本データ型(プリミティブ型)
データ
・・・boolean, char, byte, short, int, long, float, double の
8種類
参照型(リファレンス型
参照型(リファレンス型)
・・・String、Date 等のJavaのライブラリに含まれたものや
それぞれの開発者が作成したクラス
配列型 これには次のシートの
・・・若干特殊な参照型 3種類が存在する
- 7. その前に 軽くJavaの文法の復習を(その2)
Java 言語において「クラス」と呼ばれるものは3種類存在する
イ
ン 高 Interface(インタフェース)
(インタフェース)
ス
タ
ン ・・・定数と抽象メソッドのみを持つ
ス
生
成 抽
不
可
象 AbstractClass(抽象クラス)
(抽象クラス)
クラス
能 度
・・・定数と変数、抽象メソッド・具象メソッドを持つ
可
能 低 Class(クラス or 具象クラス)
( 具象クラス
クラス)
・・・定数と変数、具象メソッドのみを持つ
(※)「抽象メソッド」・・・「実装を持たない(≠実装が空)メソッド」
持たない
- 8. さっきの内容を表にすると・・・
フィールド メソッド
定数 変数 抽象メソッド 具象メソッド
Interface
(インタフェース)
インタフェース)
○ × ○ ×
AbstractClass
○ ○ ○ ○
(抽象クラス)
抽象クラス)
クラス
Class
(クラス or 具象クラス)
具象クラス
クラス)
○ ○ × ○
- 15. 「継承」についてのコーディング(番外編)
●「Ko」に対して、2つ以上の親クラスを継承させようとするとどうなるでしょう?
Oya1 Oya2
printOya() printOya()
printZaisan() printZaisan()
Ko
printKo()
printZaisan()
●「Oya1」が「Oya2」を継承し、「Oya2」が「Oya3」を継承するような関係の
場合、「Oya1」を継承した「Ko」の動きはどうなるでしょう?
Oya3 Oya2 Oya1
printOya3() printOya2() printOya()
printZaisan() printZaisan() printZaisan()
Ko
printKo()
後は、各メソッドのアクセス修飾子を printZaisan()
変えてみたりしても面白いかも
- 17. 「継承」のおまけ(単一継承と多重継承)
単一継承(Java とか) 多重継承(C++とか)
Oya Oya1
printOya() printOya()
printZaisan() printZaisan()
Ko1 Ko2
printKo() printKo() Oya1 Oya2
printZaisan() printZaisan() printOya() printOya()
printZaisan() printZaisan()
Ko3 Ko4 Ko
printKo() printKo() printKo()
printZaisan() printZaisan() printZaisan()
(※)「親」「子」というのはそれぞれの相対
的な関係において定義されます。 ダイヤモンド継承問題
- 23. 白板で説明したネタのメモです
<Comedian> <Writer>
uses
performance() write()
Publisher
main()
99
Mr.M
performance()
performance()
uses Mr.K
write()
Hall produce() write()
main()
- 26. 例外について(階層構造)
Object
Throwable
Error 非チェック例外
Exception
RuntimeException
チェック例外 その他
その他のException
(参考)「Java言語プログラミングレッスン 下巻」(結城浩著)
- 27. 例外について(処理方法)
●「try~catch」して処理する
●「throws」で呼び出し元に処理を任せる
例外は例外発生時のみの処理とする
のみの処理
⇒ いずれにせよ「例外は例外発生時のみの処理とする」のが重要!
∵例外発生時以外の処理を含めると、「ホントに例外か?」という状況に。。。
(そもそも「例外」なんて無いに越したことは無い)
「例外による脱出口が沢山ある」=「メソッドからの返り値が複数ある」
という事に繋がりかねず、設計が複雑になってしまう(シンプルさ、重要!)
(個人的経験としては「例外」についてのポリシーがイケてないシステムは、
大概その他もイケてないので要注意!)
(参考)「Java言語プログラミングレッスン 下巻」
「達人プログラマー」「Javaの格言」