kazubotのブログ

日曜プログラミング、都市伝説、METALなどなど!

BABYMETALと一緒にJAVAのお勉強

「新わかりやすいJava オブジェクト指向徹底解析」を読んでjavaを勉強しています。

新わかりやすいJava オブジェクト指向徹底解説

新わかりやすいJava オブジェクト指向徹底解説

 

 

 オブジェクト指向について、理解を深めたい思いで
ぼくなりの浅い知識でBABYMETALをjavaで表現してみようと思います。

なお、このプログラムは何の機能も持ち合わせません。


まずBABYMETALの設定を下記の通りとします。

  • 三姫 =  救世主(SaVior)
  • 神バンド = ギター、ベース、ドラムの神様
  • ツネ様 = 創造主

三姫と神バンドはBAYBYMETALを実態として表現するための要素として考えます。
そして、キツネ様がBABYMETALに曲を与え、BABYMETALをコントロールします。

それでは、三姫を表すクラスです。

         Savior.java

package Savior;

public class Savior {
final String name;
String Clothing;
Object sound;
Object action;
public Savior(String name, String clothing) {
//コンストラク
this.name = name;
this.Clothing = clothing;
}
public Object sing() {
//歌う
this.sound = null;
return sound;
}
public Object dance() {
//踊る
this.action = null;
return action;
}
public Object getClothing() {
return Clothing;
}
public void setClothing(String clothing) {
Clothing = clothing;
}
public Object getSound() {
return sound;
}
public void setSound(Object sound) {
this.sound = sound;
}
public Object getAction() {
return action;
}
public void setAction(Object action) {
this.action = action;
}
public String getName() {
return name;
}

 救世主クラスは、名前,衣装を引数としてインスタンスを生成します。

メソッドは、歌う、踊るです。(内容薄くて申し訳ありません!)

次に、神バンドクラスを作成してみます。
ギター、ベース、ドラムの神様クラスを作成します。
            GuiterGod.java

package
KamiBand;

public


class GuiterGod {
final String name;
Object sound;
final Object Guiter;

public GuiterGod(String name, Object Guiter) {
// コンストラク
this.name = name;
this.Guiter = Guiter;
}
public Object riff() {
// リフ
this.sound = null;


return sound;
}
public
Object
read()
{
// リード
this.sound = null;
return sound;
}
public
Object
headbang()
{
// ヘドバン
this.sound = null;
return sound;
}
public
Object
getSound()
{
return sound;
}
public
void
setSound(Object
sound) {
this.sound = sound;
}
public
String
getName()
{
return name;
}
}

 

  BassGod.java

package KamiBand;

public class BassGod {
final String name;
Object sound;
final Object bass;
public BassGod(String name,Object bass) {
//コンストラク
this.name = name;
this.bass = bass;
}
public Object riff() {
//リフ
this.sound = null;
return sound;
}
public Object read() {
//リード
this.sound = null;
return sound;
}
public Object headbang() {
//ヘドバン
this.sound = null;
return sound;
}
public Object getSound() {
return sound;
}
public void setSound(Object sound) {
this.sound = sound;
}
public String getName() {
return name;
}

}

 

  DrumGod.java

package KamiBand;

public class DrumGod {
final String name;
Object rizm;
Object sound;
Object funny;
final Object drum;
public DrumGod(String name,Object drum) {
//コンストラク
this.name = name;
this.drum = drum;
}
public Object fill() {
//フィル
this.rizm = null;
this.sound = this.rizm;
return sound;
}
public Object read() {
//リード
this.rizm = null;
this.sound = this.rizm;
return sound;
}
public Object backing() {
//バッキングリズム
this.rizm = null;
this.sound = this.rizm;
return sound;
}
public Object hengao() {
//変顔
this.funny = null;
return funny;
}
}

 神バンドクラスは、名前とギアを引数として受け取りインスタンスを生成します。

そして神演奏メソッドを持ちます。ドラムのみ隠れメソッドとして変顔を持ちます。

最後に創造主であるキツネ様クラスをメインクラスとして作成します。

 FoxGod.java

package Kitsunesama;

import java.util.ArrayList;
import java.util.List;

import KamiBand.BassGod;
import KamiBand.DrumGod;
import KamiBand.GuiterGod;
import Savior.Savior;

public class FoxGod {
static List<String> babymetal = new ArrayList<>();
static String song;

public static void main(String[] args) {
//キツネ様のおつげ
System.out.println("~キツネ様~");
String hime = Hime();
String kamiband = Kamiband();
babymetal.add(hime);
babymetal.add(kamiband);
System.out.println("BABYMETALが誕生した!");
song = "[BABYMETALDETH]";
babymetal.add(song);
System.out.println("キツネ様よりお告げ" + "\n" + babymetal.get(2));
//各種メソッド

}

public static String Hime() {
//メタル救世主の降臨
String name1 = "SU";
String name2 = "YUI";
String name3 = "MOA";

String clothing = "darkside";

Savior SU = new Savior(name1,clothing);
Savior YUI = new Savior(name2,clothing);
Savior MOA = new Savior(name3,clothing);

System.out.println("SUが降臨した!" + "\n" + "YUIが降臨した!" + "\n" + "MOAが降臨した!" + "\n");
String hime = "3人のMETAL救世主";
return hime;
}
public static String Kamiband() {
//神バンドの降臨
String gt1name = "大村";
String gt2name = "藤岡";
String guiter = "ESP";

GuiterGod GuiterGod1 = new GuiterGod(gt1name,guiter);//大神様降臨
GuiterGod GuiterGod2 = new GuiterGod(gt2name,guiter);//小神様降臨

String bassname = "BOH";
String bass = "不明";

BassGod BassGod = new BassGod(bassname,bass);//BOHさん降臨

String drumname = "青山";
String drum = "TAMA";

DrumGod DrumGod = new DrumGod(drumname,drum);//青山さん降臨

System.out.println("神バンドが降臨した!" + "\n");
String kamiband = "神バンド";
return kamiband;
}
}

 キツネ様が創造主であるので、姫達を降臨させるメソッドと神バンドを降臨させるメソッドを持ちます。それらの力を用いてBABYMETALを誕生させます。

そして曲目をBABYMETALに与えることで命を吹き込みます。

これを実行するとコンソールに下記のように表示されます。

~キツネ様
SUが降臨した!
YUIが降臨した!
MOAが降臨した!

神バンドが降臨した!

BABYMETALが誕生した!
ツネ様よりお告げ
[BABYMETALDETH]

 
お分かりになったでしょうか?
そう。。
なんの意味も持ちません!
型宣言も適当です!
オブジェクト指向ということを意識して書いてみただけです。

もっと拡張すれば、カプセル化に拘ってみたり、救世主クラスを継承して三姫個々のメソッドを定義したりということも考えることができますね。

専門の方々からはいろいろ指摘があろうかと思いますが、大きな目でみてやって下さい!