質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

3回答

4843閲覧

javaでセッター・ゲッター・カプセル化について

khr0404

総合スコア43

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2016/04/13 05:05

編集2016/04/13 05:59

###前提・実現したいこと

こんにちは。
今年度から社会人となりプログラミングを勉強しているのですが表題のセッター・ゲッター・カプセル化がうまくいきません。

使っているのはeclipseで言語はjavaです。

現在のソースで消費税率と商品価格をセッターで設定し消費税率、商品価格、税込みの価格、を出力したいです。

よろしくお願いします。

###発生している問題・エラーメッセージ

消費税率と商品価格をカプセル化してセッターで値を出力する書き方がわかりません。

###該当のソースコード

java

1 2 3 4public class Price { 5 6 7 private int price; 8 9 private double tax; 10 11 12 13 public void setTax( double tax1 ) { 14 15 this.tax = tax1; 16 tax1 = 0.08; 17 18 } 19 20 21 public void setPrice( int price1 ) { 22 23 this.price = price1; 24 price1 = 100; 25 } 26 27 28 public double getTax() { 29 30 return this.tax; 31 } 32 33 34 35 public int getPrice() { 36 37 return this.price; 38 } 39 40 41 public int getPriceIncludingTax() { 42 43 return (int) ( this.price * ( 1.0 + tax ) ); 44 45 46 } 47 48 49} 50public class PriceExamMain extends Price { 51 52 53 public static void main( String[] args ) { 54 55 System.out.println( "価格を" + price + "に設定" ); 56 System.out.println( "税率を" + tax + "に設定" ); 57 58 59 } 60} 61

###発生している問題・エラーメッセージ
この状態で実行したところこのようなエラーがでました。

Exception in thread "main" java.lang.Error: Unresolved compilation problems: フィールド Price.price は不可視です フィールド Price.tax は不可視です

###ソースコードを編集しました

もう一度やり直してみました

java

1 2public class Price { 3 4 5 private static int price; 6 7 private static double tax; 8 9 10 public void setTax( double tax1 ) { 11 12 this.tax = tax1; 13 tax1 = 0.08; 14 System.out.println( "税率を" + tax + "に設定" ); 15 16 } 17 18 19 public void setPrice( int price1 ) { 20 21 this.price = price1; 22 price1 = 100; 23 } 24 25 26 public double getTax() { 27 28 return this.tax; 29 } 30 31 32 public int getPrice() { 33 34 return this.price; 35 } 36 37 38 public int getPriceIncludingTax() { 39 40 return (int) ( this.price * ( 1.0 + tax ) ); 41 42 43 } 44 45 46 public static void main( String[] args ) { 47 48 System.out.println( "価格を" + price + "に設定" ); 49 System.out.println( "税率を" + tax + "に設定" ); 50 51 52 } 53} 54 55

###発生している問題・エラーメッセージ
上のソースだとこのような回答になりました。

価格を0に設定 税率を0.0に設定

###試したこと
private修飾子なので違うクラスからアクセスできないのはわかるのですがそのような場合にどこにメインクラスを置けばよいのでしょうか?

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaputaros

2016/04/13 05:20 編集

system.outで一番下で実行しようとした部分のソースもつけてください。回答してもらいやすくなります。 あと、markdownを使うと、ソースが見やすくなります。
coco_bauer

2016/04/13 05:29

setTaxのプログラムで、 this.tax = tax1; とすべきところが、 tax = tax1; となっているのが気になります。getTaxで、ちゃんと税率が返されていますか? また、getPriceIncludingTax() で消費税込みの価格を計算するなら、 return (int) ( this.price * (1.0 + tax) ); とすべきです。
kaputaros

2016/04/13 06:09 編集

> coco_vauerさん this.は自分のクラスということを明示的にしているので、親クラスやローカル変数に同じものがない場合、省略しても問題ありませんよ?
khr0404

2016/04/13 06:16

>kaputarosさん アドバイスありがとうございます。初めての質問だったので戸惑いましたが無事解決しそうです。
khr0404

2016/04/13 06:18

>coco_bauerさん 回答ありがとうございます。taxの部分訂正し税込み価格の計算式も直したら上手くいきそうです。ありがとうございました。
guest

回答3

0

ベストアンサー

問題にとりかかる前に、下記のように記述を統一したいですね。
シンプルな問題が複雑に見えます。

Java

1public class Price { 2 3 private int price; 4 5 private double tax; 6 7 public void setTax( double tax1 ) { 8 9// tax = tax1; 10 this.tax = tax1; 11 12 } 13 14 public void setPrice( int price1 ) { 15 16 this.price = price1; 17 18 } 19 20// setなのに引数がないですし、getしています。また、同様の処理が既にあります。 21// public int setPriceIncludingTax() { 22// 23// return (int) ( this.price * tax ); 24// 25// } 26 27 public double getTax() { 28 29 return this.tax; 30 } 31 32 public int getPrice() { 33 34 return this.price; 35 } 36 37 public int getPriceIncludingTax() { 38 39// return (int) ( this.price * tax ); 40 return (int) ( price * tax ); 41 } 42}

このクラスを使うときは以下のように使うでしょう。

Java

1 2Price price = new Price(); 3price.setPrice(1000); // 価格は1000円 4price.setTax(1.08); // 税率は8% 5System.out.println("税込み価格は、" + price.getPriceIncludingTax() + "円です。");

とりあえず、これで動くと思います。

ただ、そもそも
price.setTax(1.08);
の部分に違和感を感じたり、引数ありのコンストラクタがあった方が良いのではないかなど、
違和感が多々出てくると思いますが、勉強しながら、拡張or修正されていったらいいと思います。

投稿2016/04/13 06:01

編集2016/04/13 06:06
Odacchi

総合スコア907

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

khr0404

2016/04/13 06:36

回答ありがとうございます。 わかりやすい説明で無事動きました。 税率の部分とコンストラクタはもう一度勉強しなおします。 ありがとうございました。
guest

0

taxに何か値をセットしましたか?していない場合は0になると思います。

ソースコードの一部分だけではわからないのでPriceをインスタンス化しているクラスのコードも追記してください。
また、ソースコードは専用の記述方法があるので質問を修正してください。

投稿2016/04/13 05:21

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Odacchi

2016/04/13 05:49

謎の理不尽なマイナス評価を0に戻しましたw
khr0404

2016/04/13 06:34

回答ありがとうございます。 アドバイスありがとうございます。 これからも質問する際には気をつけていきたいと思います。
guest

0

java

1public int setPriceIncludingTax()

そもそもテーマが「セッター・ゲッター・カプセル化」なのに、この部分の記述が気持ち悪いです。
setしてるのに、intが返ってくるの???
「getPriceIncludingTax()」だけで十分では?

あと、「PriceIncludingTax」なのに、なんで税引価格と税率をかけてるの?

追記:

フィールド Price.price は不可視です

Priceクラスの中で「private int price」と定義してますね。
これでは定義したクラスからしかアクセスできません。
サブクラスからはsetPrice(), getPrice()を介してではないとpriceにはアクセスできません。

投稿2016/04/13 05:27

編集2016/04/13 06:00
tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

khr0404

2016/04/13 06:29

回答ありがとうございます。 考えてみたらおかしかったです。 追記分がわかりやすい説明ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問