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

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

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

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

Eclipse

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

Q&A

解決済

5回答

5719閲覧

【JAVA】インスタンスの作成方法

zawazawa

総合スコア20

Java

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

Eclipse

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

0グッド

0クリップ

投稿2016/07/10 16:56

初投稿です。
全くの未経験の状態で一ヶ月前から
eclipseを使い、JAVAの課題を行っております。

課題内容について質問させていただきます。

下記のDogクラスに次の条件を追加し、それを実行するプログラムを作成してください。

・Dogクラスのインスタンスを作成する。

・setNameメソッドで名前を設定する。

・showProfileメソッドで名前を表示する

まず初めに、Dogクラスの「インスタンスを作成」の意味が分からず
調べたところ、「設計書を作成」という意味なのか?と考えております。

しかし、設計書を作成と言われても、何をどうすればいいのか全く分からず
とりあえず以下の雛形をeclipseにコピペして、そこからは一文字も打てません。
手も足も出ません。

もし、やり方や、解答がお分かりになる方が居ましたら
ご指導をお願いいたします。

以下は、課題に添付されていた雛形です。

Dogクラス

class Dog

{

private String name;

public void setName (String inputName)

{

this.name = inputName;

}

public void showProfile()

{

System.out.println( "名前は、" + name + "です。" );

}

}

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

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

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

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

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

guest

回答5

0

単純にmainメソッドの中で、Dogをnewしろって意味だと思いますがね…
で、他2つの条件はこのインスタンスに対して操作しろ、という意味ではないかとも思うのですが、
しかしそうだとしたら、このDogクラス、特に弄る必要なさそうなんですよね…
出題者の意図がよくわからないのでなんとも言えません。

投稿2016/07/10 17:04

swordone

総合スコア20649

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

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

zawazawa

2016/07/10 17:19

解答ありがとうございます。 ・Dogクラスのインスタンスを作成する。 というのは雛形をコピペした時点で解決しており、 ・setNameメソッドで名前を設定する。 ・showProfileメソッドで名前を表示する。 というのは雛形の下にメソッドを追加し、 ( "名前は、" + name + "です。" ); の部分に名前を設定して、表示させるという認識でいいのでしょうか?
swordone

2016/07/10 17:30

クラスを書いただけでは設計書を作ったに過ぎず、これを実際に作らないと実行できません。なので、実際にこの設計書(クラス)に基づいてインスタンスを作成し、そのメソッドを使って値を設定・表示しろ、という意味だと思います。 そのために、Dogをnewして、そのインスタンスに対してメソッドを実行するmainメソッドが必要になります。
zawazawa

2016/07/11 04:09

解答ありがとうございます。 問題の意味をなんとなくですが わかってきました。
guest

0

Java初心者のみならず、オブジェクト指向言語の初心者が突っかかる所ですね。
まだオブジェクト指向の用語もなんとなく分からない程度とお見受けします。

「Dogのインスタンスを生成しなさい」とは、「Dogプログラムをメモリに配置しなさい」という意味と考えてもらって結構です。

少し昔話をしましょう。
Javaが主流の言語となる前にC言語というプログラム言語がありました。そのC言語には「ポインタ」というメモリアクセス機能があり、この機能こそオブジェクト指向の原型です。
ポインタは一言で言うと「メモリへのショートカット」です。
1.「メモリの行先」を決めて、
そのメモリに対して、
2.領域を確保せよ、というような使い方をします。

この機能は優れた機能でしたが、確保していない領域にアクセスしたり、(俗に言う「ぬるぽ」)メモリ領域がプログラムの使用後も残る、という自体が多発しました。

Javaの話に戻ります。
オブジェクト指向の「クラス」と「インスタンスの生成」とは、このポインタへのアクセスをより安全に扱えるようにしたものです。
内部的には「クラスを書く事」とは「使う機能へのショートカットを宣言したこと」と同じなのです。これをオブジェクト指向の考え方では「設計書を作る」と言っているのです。

java

1class Dog 2 3{ 4 5 private String name;//フィールド(データを入れる保管箱)を宣言 6 7 public void setName (String inputName)//メソッド(機能)を宣言 8 9{ 10 11 this.name = inputName; 12 13} 14 15public void showProfile()//別の機能も使いたいので宣言 16 17{ 18 19 System.out.println( "名前は、" + this.name + "です。" ); 20 21}

これが、これから使う機能へのショートカット。オブジェクト指向的に言うと「設計図」です。
そして、これがプログラムとして動くためにはメモリに配置する必要があります。それを「インスタンス化」「オブジェクト化」と言います。

では実際にクラスをメモリに配置してみましょう。

java

1class Start 2{ 3 public static void main(String[] args) 4 { 5 Dog dog = new Dog(); 6 } 7}

これがインスタンス化です。newをすることで、クラスをメモリに配置し、それを変数の中に入れました。(語弊がありますが、こういう言い方をします。)

少々長くなりましたが、これが「クラス」と「インスタンス」の関係です。
(良く見たら昔の質問だったけど・・・)良ければ見直してみてくださいね

投稿2017/03/10 05:47

pratula

総合スコア16

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

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

0

ベストアンサー

作成したDOGクラスをnewすればよいと思います。
DOGクラスには「name」という要素を持っていますが、「private String name;」となっているため、
直接nameを設定することができません。
実行用のDogNew.javaというファイルを作成し、以下のように記述し、実行すれば、
「名前は、Taroです。」と表示されます。

public class DogNew { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Dog Dog =new Dog(); Dog.setName("Taro"); Dog.showProfile(); } }

投稿2016/07/11 02:56

tomo.ina

総合スコア357

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

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

zawazawa

2016/07/11 04:14

回答ありがとうございます。 使わさせていただきます。
mpyw

2016/07/11 07:57

変数名をクラス名と同じにしてしまうのは,可読性の面からちょっとどうかと思います.そのために私の回答では,「dog」と明示的に先頭を小文字にしてます.
tomo.ina

2016/07/11 08:11

mpywさんのおっしゃる通りですね。 ご指摘ありがとうございます。
guest

0

最初に実行されるmainメソッドを持つクラスが書かれたファイルがMain.javaだとすると

java

1class Main 2{ 3 public static void main(String[] args) 4 { 5 Dog dog = new Dog(); 6 /* ここに変数 dog を使った続きの処理を書く */ 7 } 8}

こういうことを意図しているんじゃないかと思います.ちょっと問題文の日本語に語弊がありますね.なおあまり推奨はされませんが,もし簡易的にDog.javaの1ファイルのみで済ませたい場合は

java

1class Dog 2{ 3 private String name; 4 5 public void setName(String inputName) 6 { 7 name = inputName; 8 } 9 10 public void showProfile() 11 { 12 System.out.println("名前は、" + name + "です。"); 13 } 14 15 public static void main(String[] args) 16 { 17 Dog dog = new Dog(); 18 /* ここに変数 dog を使った続きの処理を書く */ 19 } 20}

と書くのもナシではないです.もし「最初に実行されるmainメソッド」の意味がわからない場合,もう少しご自分で調べてみてください.

投稿2016/07/10 18:15

mpyw

総合スコア5223

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

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

zawazawa

2016/07/11 04:13

回答ありがとうございます。 色々な書き方があって勉強になります。
guest

0

とりあえず「インスタンスの生成」とは、当該クラスの変数を作ることです。

極論、これだけなら「new Dog()」という式一つで大丈夫です。 といっても、これだけでは意味をもった処理にならないですし、「どこに書くか」という問題もあります。そもそも課題の文面を見直したほうがいいと思いますよ。

投稿2016/07/10 17:32

HogeAnimalLover

総合スコア4830

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

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

zawazawa

2016/07/11 04:10

解答ありがとうございます。 もう一度問題文を読み直してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問