// Mediaクラス : 抽象的なメディアをあらわす class Media { } // Playerクラス : 抽象的なオーディオ再生装置をあらわす public class Player { public void set( Media media ) { } public Media eject() { return null; } public void cue(int millisec) { } public void rewind(int millisec) { } public void pause() { } public void restart() { } public void play() { } public void stop() { } }
// DVDDiskクラス : メディアの一例 DVDのディスク class DVDDisk extends Media { } // DVDDeckクラス : オーディオ再生機器の一例 DVDデッキ public class DVDDeck { @Overrides public void set( Media tape ) { } @Overrides public Media eject() { return null; } @Overrides public void cue(int millisec) { } @Overrides public void rewind(int millisec) { } @Overrides public void pause() { } @Overrides public void restart() { } @Overrides public void play() { } @Overrides public void stop() { } }
// VideoTapeクラス : メディアの一例 ビデオのテープ class VideoTape extends Media { }
// VideoDeckクラス : オーディオ再生機器の一例 ビデオデッキ public class VideoDeck { @Overrides public void set( Media tape ) { } @Overrides public Media eject() { return null; } @Overrides public void cue(int millisec) { } @Overrides public void rewind(int millisec) { } @Overrides public void pause() { } @Overrides public void restart() { } @Overrides public void play() { } @Overrides public void stop() { } }
Javaの いろいろな考え方 --- class interface abstract class や 内部class 無名 class etc.etc は 西洋哲学の思想を脈々と受け継いでいます。 ですから、普段からこういう考え方をしなれていないと、プログラミング技術をひとつひとつ勉強して知ったとしても、その技術がどうやって使うものなのかさっぱり見当もつかないということになります。