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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

4回答

2019閲覧

データ構造のクラス定義について

takeroyasuhara

総合スコア15

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2015/07/28 13:55

Ruby初学者です。

Rubyテキスト内の演習問題として、「教師とコースそれぞれのデータ構造をクラスとして定義するとしたらどのようになるか、Ruby コードで記述せよ(クラス定義のみでよい)」という問題があるのですが、何を問われているのか理解できずにおります。

Ruby

1# コースリスト: コース ID => [ コース名, 単位数 ] 2courses = [ { 'M2001' => [ '数学2-1', 4 ] }, 3 { 'E1001' => [ '英語1', 2 ] }, 4 { 'H3001' => [ '歴史3-1', 3 ] } ] 5 6# 教師リスト: 教師 ID => [ 教師名, [ 担当コース ID のリスト ] ] 7teachers = [ { 1 => [ '佐藤', [ 'T4004', 'E1001' ] ] }, 8 { 2 => [ '鈴木', [ 'M2001', 'M2002' ] ] }, 9 { 3 => [ '田中', [ 'E1001', 'M2001' ] ] } ]

何か回答のヒントになるような考え方などご示唆いただけると助かります。

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

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

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

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

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

guest

回答4

0

ベストアンサー

おそらくですが

lang

1(ここと) 2teachers = (ここを頑張って書く) 3 4a_teacher = teachers[0] 5puts a_teacher.id # => 1 6puts a_teacher.name # => 佐藤

とできるようなプログラムを考えなさい。ということではないでしょうか。

投稿2015/07/29 06:51

hello-world

総合スコア1342

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

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

0

どのように考えていけば良いかという質問なら、アドバイスのしようもありますが、
何を問われているか理解出来ないということであれば、まずは復習しましょうとしか言いようが無いです。

クラス定義のサンプルをいくつも見ることで、なんとか、なにが問われているかが分かるようになるのではないでしょうか。

投稿2015/07/28 14:28

otn

総合スコア84533

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

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

takeroyasuhara

2015/07/28 14:35

回答ありがとうございます。 質問の仕方が具体的でなく失礼しました。 クラス定義のサンプルをたくさんみるようにします。 ハッシュとしてそれぞれのデータを保持し、かつハッシュの値が配列にするようなクラス定義のあり方を知らないというところが問題だと思い、どうように考えていけば良いかアドバイスをいただきたいと思い、ご質問させていただきました。
guest

0

... テキスト内の演習問題....

問題の前に、説明や例題があるはずです。その部分は理解できていますか?
どんな例が説明されていたかを示していただけますか?
(まとめを作っていく過程で、問題の答えがわかってしまう事を望んでいます...)

投稿2015/07/28 14:20

編集2015/07/28 22:28
katoy

総合スコア22324

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

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

takeroyasuhara

2015/07/28 14:31

回答いただきありがとうございます。 クラスの定義・インスタンス変数についての以下の例が書かれています。 クラス定義 ```Ruby class Myclass def method end end ``` インスタンス変数 ```Ruby class Employee def name=(name) @name = name end def name @name end end ``` 今回の問題は、データ構造として、ハッシュとしてそれぞれのデータを保持し、かつハッシュの値が配列になっているものと認識しているのですが、それをクラス定義するとはどうゆうことなのか、勉強不足でして理解できていない状況です。
katoy

2015/07/29 14:46

問題の前にある説明と、問題の内容にはだいぶ距離がある気がします。 それはさておき、私なりの回答をかいてみます。 class Course # コンストラクタ (名前と担当教師のインスタンスを指定する)  def initialize(name, teacher = nil) ... # コースの id を返す def id ... # コースの名前を得る。 def name ... # 担当の教師を設定する def teacher=(teacher)... # 担当の教師インスタンスを得る。 def teacher ... end class Teacher # コンストラクタ (名前を指定する) def initialize(name) ... # 教師の id を返す。 def id ... # 教師の名前を得る。 def name ... # 担当するコースを追加する。(コースのインスタンスの配列を渡す) def addCourses(courseArray) ... # 担当しているコースを配列で返す。(担当コースがなければ [] を返す) def getCourses ... # コースの担当をやめる。(担当をやめるコースのインスタンスの配列を渡す) def removeCourses(courseArray) ... end コースと教師に次の関係があると仮定して、それを処理できるようにかがえてみました。 コースは、 id で一意に区別される。(id はシステムが自動生成する) 名前を持つ。(途中で変更はできない。他のクラスと同じ名前のこともあり得る) 担当の教師を1人もつ。(未定の場合もある。途中で変更することもある) 教師は id で一意に区別される。(id はシステムが自動生成する) 名前を持つ (途中で変更できない。他の教師と同じ名前のこともあり得る) 担当コースを 0 個以上持つことができる。 担当コースは増減が可能。 現時点では 情報を保持するためのデータ構造 (ハッシュ、配列、....) については 未だ考えません。 ここでは あくまでもクラス名と メソッド名とパラメータだけを考えています。
guest

0

こんばんわ。

回答ですが、
Class定義、メンバ変数の定義。あたりを復習していただくと良いと思います。

投稿2015/07/28 14:11

tenraku

総合スコア148

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

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

takeroyasuhara

2015/07/28 14:19

こんばんわ、回答いただきありがとうございます。 メンバ変数という言葉を初めて知ったのですが、オブジェクトが持つパラメータを指し、Rubyでインスタンス変数・クラス変数とよばれる変数のことでしょうか?
tenraku

2015/07/28 14:49 編集

クラス変数と思っていただければよいかと思います。
takeroyasuhara

2015/07/28 15:02

ありがとうございます、復習してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問