職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

例外とエラー処理

2022年08月14日 | ruby 3.1.2
例外とエラー処理


開発環境】
OS:Win11(64ビット)
Ruby 3.1.2

・例外とは
プログラム中で発生するエラーの事。そのままでは実行が停止し、プログラムが進まない!

【例外の実例】
・「例外1.rb」
1.to_s('2')

・コマンド
C:\Users\Owner>ruby D:\pg\Ruby31-x64\サンプルプログラム\例外1.rb
D:/pg/Ruby31-x64/サンプルプログラム/例外1.rb(ファイル名):1(行数):in `to_s': no implicit conversion of String into Integer (エラーメッセージ) (TypeError)(例外の種類)
from D:/pg/Ruby31-x64/サンプルプログラム/例外1.rb:1:in `
'(呼び出し元の箇所)

・例外の種類
SytaxError→Rubyの文法エラー
NameError→変数やメソッドが存在しない
NoMethodError→オブジェクトにメソッドが存在しない
ArgumentError→メソッドの引数の数が一致しない
TypeError→メソッドの引数に指定されたオブジェクトのクラスが一致しない
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

クラスの継承

2022年08月13日 | ruby 3.1.2
クラスの継承


【開発環境】
OS:Win11(64ビット)
Ruby 3.1.2

・クラスの継承とは
Rubyでは、定義済みのクラスを継承して新しいクラスを作成できます。 継承元のクラスをスーパークラス(親クラス)、継承して作成したクラスをサブクラスといいます。

・サブクラスの構文
class 子クラス<親クラス
・・・・
end

・「サブクラス.rb」ファイルのコードを書く
# sleepメソッドを持つAnimalクラスを定義
class Animal
def initialize(type)
@type = type
end

def sleep
p "#{@type} is sleeping."
end
end

# Animalクラスを継承したDogクラスを定義
class Dog < Animal
def shake_tail
p "#{@type} is shaking the tail."
end
end

dog = Dog.new('Dog')
dog.sleep
dog.shake_tail

・コマンドを実行する
C:\Users\Owner>ruby D:\pg\Ruby31-x64\サンプルプログラム\サブクラス.rb
"Dog is sleeping."
"Dog is shaking the tail."

C:\Users\Owner>
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

アクセサメソッド

2022年08月11日 | ruby 3.1.2
アクセサメソッド


【開発環境】
OS:Win11(64ビット)
Ruby 3.1.2

・アクセサメソッド
クラスの中で使われているインスタンス変数はクラスの外からは参照したり値を変更したりすることが出来ません。参照する場合も変更したい場合もインスタンスメソッド経由して行う必要があります。
そこで、用意されているのがアクセスメソッド

「アクセサメソッド.rb」ファイルにコードを書く
class Car
def initialize(carname="未定義")
@name = carname
end

attr_accessor :name
end

car = Car.new()
car.name = "civic"
print(car.name)

コマンドを実行する
Microsoft Windows [Version 10.0.22000.856]
(c) Microsoft Corporation. All rights reserved.

C:\Users\Owner>ruby D:\pg\Ruby31-x64\サンプルプログラム\アクセサメソッド.rb
civic
C:\Users\Owner>
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

クラス定数

2022年08月10日 | ruby 3.1.2
クラス定数


【開発環境】
OS:Win11(64ビット)
Ruby 3.1.2

■定数
・書き換えられたくない場合に使用する。使用に当たって、文字はすべて大文字にする

1.「定数.rb」ファイルをコーデングする
#消費税額を計算するクラス
class TaxCalc
TAX_RATE = 0.08
#インスタンス変数の初期化
def initialize(price)
@price = price

end

#消費税計算の実処理
def execute
@price * TAX_RATE
end
end

# executeメソッドを実行
calculator = TaxCalc.new(100)
p calculator.execute
p TaxCalc::TAX_RATE


2.コマンドを実行する
C:\Users\Owner>ruby D:\pg\Ruby31-x64\サンプルプログラム\定数.rb
8.0
0.08

C:\Users\Owner>
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

クラスのプライベートメソッド

2022年08月09日 | ruby 3.1.2
クラスメソッドの種類


【開発環境】
OS:Win11(64ビット)
Ruby 3.1.2

【メソッドの種類】
class クラス名
 def メソッドA
  処理
 end

private
def メソッドB
  処理
 end
end

実行
インスタンスA  =  クラス名.new
インスタンスA.メソッドB→呼び出し不可能

「プライベート.rb」ファイルを書く
class Kingofclass
#インスタンスメソッドを定義
def call_public_method
p 'publicメソッドが呼ばれました'
call_private_method
end

# クラスメソッドを定義
def self.call_class_method
p 'クラスメソッドが呼ばれました'
end

#プライベートメソッドを定義
private
def call_private_method
p 'privateメソッドが呼ばれた'
end
end

#インスタンスメソッドを呼び出す
instance = Kingofclass.new
instance.call_public_method

#クラスメソッドを呼び出す
Kingofclass.call_class_method

#プライベートメソッドを呼び出す
instance.call_private_method

2.コマンドを実行する
Microsoft Windows [Version 10.0.22000.795]
(c) Microsoft Corporation. All rights reserved.

C:\Users\Owner>ruby D:\pg\Ruby31-x64\サンプルプログラム\プライベート.rb
"publicメソッドが呼ばれました"
"privateメソッドが呼ばれた"
"クラスメソッドが呼ばれました"
D:/pg/Ruby31-x64/サンプルプログラム/プライベート.rb:28:in `
': private method `call_private_method' called for #<Kingofclass:0x000001c912915ac8> (NoMethodError)

instance.call_private_method
^^^^^^^^^^^^^^^^^^^^
Did you mean? call_public_method

C:\Users\Owner>call_private_method
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする