学習記録 2020/5/12(火)RaiseTech AWSフルコース 第2回の課題作成(後半)

・実施事項:RaiseTechのAWSフルコース第2回の課題(後半)
・学習時間:3時間程

正直なところ、RubyはProgateやSkillHacksで事前にそこそこは学習していましたが、知識や理解が不足している部分が多く大苦戦しました。
インスタンスの使い方や例外処理の部分は、かなり間違った使い方をしていると思います。(それでも一応思惑通りに動きはしましたが・・・)

講師に下記のコードを提出しましたので、修正してまた明日以降に公開したいと思います。(かなり汚く意味不明なコード部分もあると思います)

#課題2
# •Communicationというクラスを作ってみよう。
# •greetというメソッドを定義してみよう。
# •クラスを継承して新しいサブクラスを作ってみよう。WorkplaceCommunication(職場)とか。
# •greetというメソッド内でHelloという言葉を受けたら、Helloと返す処理を実装してみよう。
# •職場かどうかを判断するメソッドを作って、職場じゃなければ挨拶しないようにしてみよう(酷い)

#課題3
# •Communicationクラスに新しく話しかけてきた人が誰か(同僚とか上司とか)で
#  応答を返すか、例外を返すような処理を作ってみよう。
# •例外の条件や例外じゃなかった場合にどういった応答を返すかは好きなように作ってOK。
# •メソッドの使い方、if文や例外処理の使い方に慣れてみよう
# •例外クラスは自作も可能。何か面白い例外を継承して、勝手に自作してもいいし、
#  既存の例外クラスを使ってもいい。とにかく例外をraiseしてみよう。

#コメント
#動きとしては思っていた通りに動くが、
#正直、例外処理とインスタンスは間違った使い方をしていると思う。


class TypeError < StandardError #StandardErrorクラスを継承
   
   def typeerror_who #typeerroe_whoメソッドの定義
       begin #例外処理
           if @w_inputwho != "上司" || "同僚" || "先輩" || "後輩" || "その他"
               raise RuntimeError,"入力間違いのエラー"
           end
       rescue => e
           puts "選択肢にない人を選んでいます"
           puts e
       end
   end
   
end

class Communication #コミュニケーションクラス

   def place_input #place_inputメソッドの定義
       puts "今どこにますか?"
       puts "職場・プライベートのどちらかを入力してください:"
       inputplace = gets.chomp #「場所」を受け取る
       if inputplace == "職場" #条件分岐
           puts "ここは職場ですね"
           greet
       elsif inputplace == "プライベート"
           puts "職場ではないので挨拶はしません。"
       else
           puts "もう一度入力してください"
           place_input #place_inputメソッドに戻す
       end
   end

   def greet #greetメソッドの定義
       puts "誰かが喋りかけてきました。"
       puts "なんと言っていますか?(Helloと入力してください)"
       inputgreet = gets.chomp #「挨拶」を受け取る
       if inputgreet == "Hello" #条件分岐
           puts "誰か:Hello"
           puts "あなた:Hello"
           workplacecommunication = WorkplaceCommunication.new
           workplacecommunication.w_greet #WorkplaceCommunicationクラスのw_greetメソッド発動
       else
           puts "もう一度入力してください"
           greet #greetメソッドに戻す
       end
   end

end

class WorkplaceCommunication < Communication #Communicationクラスを継承
   def w_greet #w_greetメソッドの定義
       puts "職場で話しかけてきたのはだれですか?"
       puts "次の内から選んで入力してください"
       puts "上司、同僚、先輩、後輩、その他:"
       @w_inputwho = gets.chomp #「人物」を受け取る
       if @w_inputwho == "上司" #条件分岐
           puts "あなた:山田課長おはようございます。今日中に資料を提出します。"
       elsif @w_inputwho == "同僚"
           puts "あなた:田中おはよう。昨日の飲み会お疲れ様。また飲みに行こう。"
       elsif @w_inputwho == "先輩"
           puts "あなた:高橋先輩おはようございます。後で資料のアドバイスをください。"
       elsif @w_inputwho == "後輩"
           puts "あなた:山本おはよう。今日暇なら飲みに行く?奢るよ。"
       elsif @w_inputwho == "その他"
           puts "社外の人がなぜ会社にいるのですか?お引き取りください。"
       else
           typeerror = TypeError.new
           typeerror.typeerror_who #TypeErrorクラスのtypeerror_whoメソッド発動(例外処理)
       end
   end
end

communication = Communication.new
workplacecommunication = WorkplaceCommunication.new
communication.place_input #Communicationクラスのplace_inputの発動

#終わり

以上




いいなと思ったら応援しよう!