2017-06-15 6 views
0

私は、ボタンが押された回数を保存し、その情報でさまざまなタスクを実行する電卓アプリケーションを作成しようとしています。私はそれが参照するすべてのオブジェクトとその情報で別々のJavaファイルを作成することが最善であると思った。私は主な活動で以前に設定したオブジェクトを呼び出す際にいくつかの問題を抱えています。私はオブジェクトを初期化しなければならないことを知っていますが、どこでそれを行うべきかわかりませんし、実際には1つのクラス内に複数のオブジェクトを作成することができます。オブジェクトはどこで初期化しますか?

パブリッククラスPriceObjects {

public class valuesA { 
    public int freqDayA = 0; 
    public int freqWeekA = 0; 
    public int totalDayA = freqDayA*2; 
    public int totalWeekA = freqWeekA*2; 
} 

public class valuesB { 
    int freqDayB = 0; 
    int freqWeekB = 0; 
    int totalDayB = freqDayB*3; 
    int totalWeekB = freqWeekB*3; 
} 
public class valuesC { 
    int freqDayC = 0; 
    int freqWeekC = 0; 
    int totalDayC = freqDayC*4; 
    int totalWeekC = freqWeekC*4; 
} 
public class valuesD { 
    int freqDayD = 0; 
    int freqWeekD = 0; 
    int totalDayD = freqDayD*5; 
    int totalWeekD = freqWeekD*5; 
} 
public class valuesCustom { 
    int freqDayCustom = 0; 
    int freqWeekCustom = 0; 
    int totalDayCustom = freqDayCustom*40; 
    int totalWeekCustom = freqWeekCustom*40; 
} 

}

は、このコードは、任意の良いですか、私はちょうどMainActivityでそれをすべて維持する必要がありますか? ありがとう!

+2

これは、コンストラクタがある理由です。https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html – Zakir

+0

@ zakirが正しいです。 1つのクラスの値(クラスは大文字で始まります)を作成し、必要に応じて新しいものでインスタンス化するか、またはシナリオに適したものを工場で作成します:https://www.tutorialspoint.com/design_pattern/factory_pattern.htm – sorencito

+0

Byところで、誰もあなたをdownvoteする必要はありません。あなたは新しく、学びたいと思っています。質問を続けて、あなたの研究をして、あなたはそこに着くでしょう。 ;) –

答えて

2

何かはModel View Controllerかもしれません。アイデアは、ビジネスロジック/オブジェクトがモデルであり、実際のビューがXMLレイアウトファイルであり、ビューを「制御する」コントローラがアクティビティクラスであるということです。いくつかのオブジェクト指向設計を使用してクラスを少しきれいにすることができるようです。特に値クラス。価値の種類ごとに別々のクラスを作成するのではなく、そのように再利用できる汎用的なものを作成してみませんか?

List<Values> myValues = new ArrayList<Values>(); 
myValues.add(new Values()); 

これらは完璧なソリューション/コードはありませんが、それだけです:あなたは値の複数のセットを保存できるようにしたい場合は

public class Values { 
    public int freqDay = 0; 
    public int freqWeek = 0; 

    public int totalDay; 
    public int getTotalDay(){ 
     totalDay = freqDay*2; 
     return totalDay; 
    } 

    public int totalWeek; 
    public int getTotalWeek(){ 
     totalWeek = freqWeek*2; 
     return totalWeek; 
    } 
} 

そのように、あなたはそうのようなリストでそれらを保持することができますオブジェクト/動的で再利用可能なコードについてもっと考えさせるための少しのものです。これがあなたのどこかで見始めることを望みます!

0

ここではクラス内にクラスを作成しましたが、これはOOPSコードを書き込む最良の方法ではありません。ベスト

public class Calculator{ 

    public void Sum(){ 
    // Enter the logic 
    } 

    public void diff(){ 
    // Enter the login 
    } 
} 

のようなさまざまな方法で行うことで、論理calculaterすべてのあなたを置く1クラスの2クラスが、今あなたが電卓クラスのオブジェクトを作成し、合計してそれとの差分などのさまざまなメソッドにアクセスするメインクラスを作成しますですオブジェクト

public class mainClass(){ 
    public static void main(string args[]){ 
    Calculator obj = new Calculator(); // Object creation 
    obj.Sum(); // Accessing the sum method 
    } 
} 

このようにすることができます。それは完全なコードではありませんが、これはすべてのoopsに従うアプローチです

関連する問題