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

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

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

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

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

3回答

1421閲覧

何の情報をreturnしているのかを知りたい

ypk

総合スコア83

Java

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

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

1クリップ

投稿2021/01/07 12:52

初めまして。
現在Javaの学習をしているものです。

こちらのサイトに掲載されているソースコードについて、どういう意味なのか分かる方がいればぜひ教えていただけたらと思い投稿します。

https://www.fe-siken.com/kakomon/26_aki/pm11.html

プログラム1について以下2つの。

public Date getStart(){ return start; }

こちらのソースコードについて。
このソースコードの存在意義がわかりません。

なぜこのようなメソッドを記述しているのでしょうか。
startを返して、何がしたいのでしょうか。

public long getLength(){ return end.getTime() - start.getTime(); }

これは開始の時刻と終わりの時刻の差分をreturnしているものと解釈しているのですが、returnされたものがどこで活用されるのかが不明です。
(どこかに値を代入するわけでもないですし、取った差分をどうするのかがさっぱりわかりません。また、差分を変数委代入するわけでもないので利用方法が疑問です)

お手数をおかけしますが、どなたかこの2つのソースコードの

・役割や存在意義
・returnされた値の行き先

についてご教授いただければ幸いです。
どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

これは考え方が逆です。
メソッド名は、getStartです。
この、getというのは、誰にとってのgetなのか?と考えるとわかります。
自分が今書いているクラスからの視点ではありません。
これは、メソッドを呼び出す側からの視点で書かれたネーミングです。
呼び出す側は、xxx.getStart()という風に呼び出すわけです。
xxxに対して、getStart()、つまり、「startgetするぞ。」と言っているわけです。

外部からgetStart()=「お前のstartを教えろ」と言われたので、

クラスの中では、
return startとして「こちらが私のstartになります」と返しているのです。

なので、何故startを返すのか? という質問には**『それが要求されたから』**となります。

startを渡して何がしたいのか? という質問には**『それをどうするかは要求した側の勝手』**となります。

投稿2021/01/07 13:48

amiya

総合スコア1218

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

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

ypk

2021/01/07 20:38

ご丁寧にありがとうございます! > この、getというのは、誰にとってのgetなのか?と考えるとわかります。 自分が今書いているクラスからの視点ではありません。 これは、メソッドを呼び出す側からの視点で書かれたネーミングです。 なるほどと思いました。 外から呼び出された時にいつでも要求に対応することができるように記述をしているだけという話なのですね、、、 ありがとうございました????
ypk

2021/01/07 21:00

最後に一つだけ聞いてもよろしいでしょうか? xxxというのは、インスタンス名という認識で間違いないでしょうか? どうぞよろしくお願いいたします。
amiya

2021/01/07 23:24

それで大丈夫です。 (厳密に言うと、インスタンスへの参照を格納した変数名、とかになりますが)
guest

0

returnされたものがどこで活用されるのかが不明です。

それは呼び出した側で考える範疇です。呼ばれるメソッドには関係のない話です。

投稿2021/01/07 13:09

maisumakun

総合スコア146018

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

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

ypk

2021/01/07 13:29

なるほど、、、 もう少し詳しく教えていただいてもいいですか? ちょっと質問の仕方がよくなかったのかもしれませんが、結局 return を記述することで何を実現したいソースコードなのでしょうか?????
maisumakun

2021/01/07 13:43

> どこかに値を代入するわけでもないですし、取った差分をどうするのかがさっぱりわかりません。 差分が欲しいときに呼ぶ、それだけの話なのですが、何が疑問なのでしょうか?
maisumakun

2021/01/07 13:53 編集

> 結局 return を記述することで何を実現したいソースコードなのでしょうか? こちら単体では何も実現できません。「呼ぶ側のコードでその値を使って実現したいことがある(もしくはそれが予想される)」から用意してあるだけです。
ypk

2021/01/07 20:21

ご丁寧にありがとうございます。 私のモヤモヤがはっきり晴れたわけではないですが、おかげでイメージが湧きました。 少し難しく考え過ぎていたようです、、、
guest

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

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

ypk

2021/01/07 13:37

うーん、ということは、結局これは開始の時刻を取得して return をしている!? 確認してみたのですが、やっぱりちょっとわからないです????
shiketa

2021/01/07 14:03

カプセル化、が目的。件の例題ではsetterは定義されておらず、コンストラクタでstartの値を渡している。コンストラクタで設定された値を外部から勝手に変更されてはたまらないので、インスタンス変数はprivateスコープとする。privateスコープなインスタンス変数は外部から直接参照できないのでgetterを提供する。 > startを返して、何がしたいのでしょうか。 さぁ?きっとどこかに、コンストラクタで設定されたstartの値が必要な場面があるのでは?
ypk

2021/01/07 20:28

ご丁寧にありがとうございます、、、! 最後に一つ、聞いてもよろしいですか⁇ > 件の例題ではsetterは定義されておらず、コンストラクタでstartの値を渡している。 という話ですが、そのコンストラクタとは public Date getStart(){ return start; } という認識でよろしいでしょうか⁇ (メソッドではなく) どうぞよろしくお願いいたします。
momon-ga

2021/01/08 00:59

↑それは、コンストラクタでなくメソッドです。 問題文でいうと、外部仕様の「(2):メソッド getStart: 始点を返す。」
shiketa

2021/01/08 01:12

> という話ですが、そのコンストラクタとは ふむー。そこですか。問題にありますけど。「(1):コンストラクタは、云々」 public Period(Date start, Date end){..}
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問