アプリ版:「スタンプのみでお礼する」機能のリリースについて

Javaにオブジェクトとかインスタンスってあるじゃん。これを作るときの文法は決まっていて、
new コンストラクター(型 引数,型 引数,・・・);
です。

ただ、モノには色々な属性(メタデータ、フィールド)があります。多いと数百数千のメタデータがあるでしょうし、今はビッグデータの時代ですから、数万数億の属性があるのかもしれません。この属性はコンストラクターの引数に相当すると思いますが、オブジェクト生成時にコンストラクター書いて引数を代入していくのでしょうか?

/////
class T図書 {
String タイトル,出版社,著者,用紙サイズ;
int ページ数,販売額,印刷費用,重量mg,総文字数,初回発行部数,表紙の厚さmm;
java.util.Calendar 発行年月日,作成年月日,構想年月日,認可年月日;

T図書(
String タイトル,
String 出版社,
String 著者,
String 用紙サイズ,
int ページ数,
int 販売額,
int 印刷費用,
int 重量mg,
int 総文字数,
int 初回発行部数,
int 表紙の厚さmm,
java.util.Calendar 発行年月日,
java.util.Calendar 作成年月日,
java.util.Calendar 構想年月日,
java.util.Calendar 認可年月日){}
}

class H発行{public static void main(String[] args){
java.util.Calendar h1821_11_4=java.util.Calendar.getInstance();
h1821_11_4.set(1821,11,4);//(日付セット繰り返し中略)
new T図書("白い巨塔","新潮出版社","山崎豊子","A5",
345,2000,60,716,34569,20000,7,
h1821_11_4,h1823_11_4,h1820_1_4,h1821_10_4);
}}
/////
この例だと15個です。許容範囲といえばそれまでですが、どこか違和感を感じております。そして、薬がクラスで、具体的な薬品がオブジェクトで、成分含有量がフィールドだとすると、コンストラクターの引数が莫大になると思う。
薬 ai00kity=new 錠剤薬(リプナビックスX,0,0,0,12,776,98.45,54,・・・・・);
こんな感じ?

A 回答 (2件)

ものには限度というものはあるし、使う方も使いずらいので、そんな無茶な引数にも、フィールドにもしないのが普通です。



別に、コンストラクタだけがフィールド設定の方法ではありません。
後から設定すればよいでしょう。


> 今はビッグデータの時代ですから、数万数億の属性があるのかもしれません

コンストラクタで指定したりせずに、データベース等から読み取るのが普通でしょう。
コンストラクタでは、データベースへのアクセスに必要な情報だけ、とか。
フィールドを持たずに、今計算で必要とする属性だけを、その都度データベースから読み出し、とするのがよいでしょう。



> 薬がクラス

なら、成分クラスを作って、成分クラスの配列やリストを使うのが現実的でしょう。
    • good
    • 0

Mapに入れて渡しちゃう

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!