2017-01-16 21 views
3

私は今、学校でオブジェクト指向プログラミングを学習していますが、それについてはまだ分かりません。私は、名前と誕生日を持つユーザーのデータベースを作成するプログラムを持っています。だから私は3つのクラスを持っています:Person、PersonProgram(メイン)、そしてDate。 Personクラスには、名前と生年月日のコンストラクター、セッター、ゲッターがあります。 Dateクラスは適切な日付とうるう年などのエラーチェックをしています。メインプログラムでは5人を作成し、名前と日付を変更および変更するメニューオプションを与えます。たとえば、ユーザーが名前を変更したい場合、私のコードは次のようになります:JAVAの別のクラスのコンストラクタからセッターに値を渡すにはどうすればよいですか?

System.out.println("Enter new first name:"); 
people[choice-1].setFirstName(input.next()); 

そしてそれは私には合っています。しかし、私は日付を正しく変更する方法を知りたいですか? Dateコンストラクタは日、年、月の3つの整数をとるので、メインプログラムでは、ユーザに日、月、年の整数に格納された3つの新しい日付を入力するように促します。だから、私の理解では、私はDateコンストラクタにそれらの3つの整数を渡すそこからです。私は上の混乱していますがどこそこから行くことです

new Date(month, day, year); 

。 Dateコンストラクタは新しいDateコールを取得し、それをセッタに渡します。この新しく作成された日付オブジェクトをPersonプログラムにどのように戻すことができるのですか?PersonのPersonterの設定者は、対応するPersonオブジェクトを更新できますか?私の質問で明らかでない場合は私に教えてください、私は私がすべてのコードを投稿せずに尋ねようとしていることを明確にすることができると思った。

+0

日付を保存し、それをPersonクラスのコンストラクタに渡します。 –

+0

または、まずPersonオブジェクトを作成し、Personクラスセッターメソッドを使用して、Personオブジェクトの日付を保存した日付から設定します。 –

+4

たとえば、 'Date savedDate = new Date(月、日、年);人々[選択肢1] .setDate(savedDate); ' –

答えて

1

OOPで始まっています。ここで重要な概念、カプセル化、Personクラスは、birthDateのようなフィールドへの自由なアクセスを制限し、それらとの対話のためのルールを設定します。たとえば、日付が割り当てられていないかどうかを確認することができます。

public void setBirthDate(Date birthDate){ 
    if(birthDate != null) { 
     this.birthDate = birthDate; 
    } else { 
     //Whatever you wanna do here (throw an Exception, etc, etc) 
    } 
} 

コメント質問

別の質問作成する方がよいでしょうけれども:

私は私のPersonクラスにDateクラスのインスタンスを作成する必要がありますか?それともどこにいても問題ありませんか?

いいえ、プロパティ/フィールドbirthDateには参照が残されなくなるまで、メモリに格納されるDateオブジェクトへの参照あります。そしてそれはどこに作成するのかはあなたに任せますが、作成パターンデザインパターンのファミリがあります。

+0

返事をありがとう、それはこれまでの私のコードのようになります。私はインスタンスに関する質問がある。 PersonクラスにDateクラスのインスタンスを作成する必要がありますか?それともどこにいても問題ありませんか? –

+0

@Konovoloffが答えを更新しました –

0

生年月日タイプの「生年月日」ですか?

もしそうなら、クラスDateのインスタンスを作成し、必要なコントロールを行い、perssonインスタンスの生年月日のコンストラクタまたは設定者に渡す必要があります。

public class Person { 

    private Date birthDate; 

    public Date getBirthDate() { 
     return birthDate; 
    } 

    public void setBirthDate(Date birthDate){ 
     this.birthDate = birthDate; 
    } 
} 

そして、あなたにbirthDateは次のように設定します::

そのあなたを考慮すると
person[choice-1].setBirthDate(new Date(month,day,year)); 

あなたはこのような何かを持っている必要があり、あなたのPersonクラスで

Date birthDate = new Date(month, day, year); 
// Some controls 
people[choice-1].setBirthDate(birthDate); 
0
Date the_birth_date = new Date(mounth, day, year); 
people[choice - 1].setBirthDate(the_birth_date); 
0

people[choice-1].setBirthday(new Date(month, day, year));のように設定できます。人を最初に選択するオプションを与える必要があります。