こんにちは。「Javaを復習する初心者」です。
今回はEclipse入門の続きを書きました。前回4回目はクラスを使って、商品名と価格をまとめました。今回は税込み価格の計算クラスを作ろうと思います。
消費税が異なる場合
例として消費税3%と消費税5%の場合、それぞれで価格100円の税込み価格を計算することを考えます。lesson4パッケージにItemクラス(Item.javaファイル)を作ったのでそれを使ってみると次のようなプログラムになると思います。商品名は「商品A」とします。
ソース
package lesson5;
import lesson4.Item;
public class Test {
public static void main(String[] args) {
Item item = new Item();
item.name = "商品A";
item.price = 100;
System.out.println(item.name);
System.out.println("消費税3%の場合、" + calcPriceIncludedTax3(item.price));
System.out.println("消費税5%の場合、" + calcPriceIncludedTax5(item.price));
}
public static int calcPriceIncludedTax3(int price) {
double taxRate = 0.03;
return (int) (price + price * taxRate);
}
public static int calcPriceIncludedTax5(int price) {
double taxRate = 0.05;
return (int) (price + price * taxRate);
}
}
結果
商品A
消費税3%の場合、103
消費税5%の場合、105
クラスを作る
上記プログラムでは2つのメソッドでtaxRateの値を変えてます。仮引数にtaxRateを定義すれば一つにまとめられますが、今回はクラスを作ってまとめようと思います。lesson5パッケージを作成し、IncludedTaxクラスを新規作成してください。ここで、「public static void main(String[] args)」のチェックはしなくてよいです。以下の通り、入力してください。多分、コピーアンドペーストで大丈夫です。
ソース
package lesson5;
public class IncludedTax {
double taxRate;
public IncludedTax(double taxRate) {
this.taxRate = taxRate;
}
public int calcPriceIncludedTax(int price) {
return (int) (price + price * taxRate);
}
}
このクラスは「public static void main(String[] args)」がありません。なのでこのクラス自体は実行させることができませんが、他のクラスから呼び出されて使うことは可能です。では、次に実際の使用例です。lesson5パッケージにMainクラスを作成し、以下のソースを入力し、実行してみてください。この例では「商品A、価格100円」、「商品B、200円」について、消費税3%、5%で税込み価格を計算しています。
ソース
package lesson5;
import lesson4.Item;
public class Main {
public static void main(String[] args) {
Item item1 = new Item();
item1.name = "商品A";
item1.price = 100;
Item item2 = new Item();
item2.name = "商品B";
item2.price = 200;
IncludedTax includedTax;
// 3%で計算
includedTax = new IncludedTax(0.03);
System.out.println("消費税3%設定");
System.out.println(item1.name + ": " + includedTax.calcPriceIncludedTax(item1.price));
System.out.println(item2.name + ": " + includedTax.calcPriceIncludedTax(item2.price));
// 5%で計算
includedTax = new IncludedTax(0.05);
System.out.println("消費税5%設定");
System.out.println(item1.name + ": " + includedTax.calcPriceIncludedTax(item1.price));
System.out.println(item2.name + ": " + includedTax.calcPriceIncludedTax(item2.price));
}
}
結果
消費税3%設定
商品A: 103
商品B: 206
消費税5%設定
商品A: 105
商品B: 210
「IncludedTax includedTax;」でIncludedTax型の変数を宣言してます。この時点では入れ物を用意したのみです。この変数に格納するものはIncludedTaxクラスのインスタンスです。
「includedTax = new IncludedTax(0.03);」でインスタンスを生成し、格納しています。実引数に0.03を指定してるので、フィールドに0.03が格納されます。このインスタンスは消費税3%の税込み価格を計算するインスタンスです。
「includedTax = new IncludedTax(0.05)」で新しくインスタンスを生成し、格納してます。このインスタンスは消費税5%で税込み価格を計算するインスタンスです。
クラスを使うことによって、税率とメソッドをひとつのクラスにまとめることができました。「includedTax.calcPriceIncludedTax([価格])」の形で税込み価格を計算できます。消費税何%の税込み価格が計算されるかはincludedTaxに格納されたインスタンスによって変わります。