Newer
Older
ASD2023 / src / Onigiri.java
@Your Name Your Name on 17 Oct 2023 2 KB Singleton
import java.util.ArrayList;

public class Onigiri extends Object{
    static int count = 0 ; // Onigiri.count = 9 ; 
    static ArrayList<Onigiri> list;
    static {
        list = new ArrayList<Onigiri>(); 
    }
	static private Onigiri onlyone;
	static Onigiri getOnigiri(){
		if (onlyone != null) return onlyone;
		else {
			onlyone = new Onigiri();
			return onlyone;
		}
	}
    // フィールド/メンバ=データの詳細
	String gu ; /* おにぎりの具名 */
	boolean withNori; /* 海苔がついているか? true / false */
	int shape ;  /* 0:丸, 1:俵型, 3:三角形 */

	//コンストラクタ=データ製造機
	private Onigiri() {
		gu = "無し(塩むすび)"; 
		withNori = false;
		shape = 3;
        count++ ;  list.add(this);
	}
	public Onigiri(String _gu) {
		this();
		gu = _gu; 
	}
	public Onigiri(String gu, int shape) {
		this(gu);
		this.shape = shape;
	}
	public Onigiri(String gu, boolean wnori) {
		this(gu);
		withNori = wnori;
	}
	public Onigiri(String gu, boolean wnori, int shape) {
		this(gu, wnori);
		this.shape = shape;
	}
	//メソッドの役割:(1) データの修正・更新をする (2) データに関する情報を出力 (3) データに関する処理
	public void setWithNori(boolean wnori) {
		withNori = wnori;
	}
	public String toString() { // オーバーライド
		String str = "具は "+gu+" で,";
		switch(shape){
		case 0: 
			str = str+"丸型で,";
			break;
		case 1:
			str = str+"俵型で,";
			break;
		case 3:
			str = str+"三角形で,";
			break;
		}
		str = str + (withNori ? "海苔付き" : "海苔なし");
		return str;	
	}
	
	public static void main(String[] args) {
		//基本のおにぎりをつくる
		//コンストラクタを呼び出し,インスタンスを生成
		Onigiri siomusubi = new Onigiri();
		System.out.println("siomusubi = " + siomusubi.toString());

		Onigiri ume = new Onigiri("梅", true);
		System.out.println("ume = " + ume.toString());
		
		Onigiri marusake = new Onigiri("鮭", 0);
		System.out.println("marusake = " + marusake.toString());
		
		Onigiri mentai = new Onigiri("明太子", true, 1);
		System.out.println("mentai = " + mentai.toString());
      
      Onigiri okaka = new Onigiri("おかか", false, 3);
      System.out.println("okaka = " + okaka.toString() ); 
		
      System.out.println(Onigiri.count);
      for(Onigiri oni : list){
        System.out.println(oni.toString());
      }
      YakiOnigiri yaki = new YakiOnigiri();
      yaki.setWithNori(true);
      System.out.println(yaki.getClass().getName());
      System.out.println(yaki.toString());
	}
}
class YakiOnigiri extends Onigiri {
    boolean koge = false;
    public String toString(){
        String mes = super.toString();
        String kogemes = (koge)? "焦げあり" : "焦げなし";
        return mes+kogemes;
    }
}
class NikumakiOnigiri extends Onigiri {
    String niku;
}