diff options
Diffstat (limited to 'lib/person.rb')
| -rw-r--r-- | lib/person.rb | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/person.rb b/lib/person.rb index 8571754..9a3dcb6 100644 --- a/lib/person.rb +++ b/lib/person.rb @@ -2,27 +2,47 @@ require_relative 'nil_person' +# Person class representing an individual with a name, gender, and spouse. class Person attr_accessor :name, :gender, :spouse + # Initializes a new Person object. + # + # @param name [String] The name of the person. + # @param gender [String] The gender of the person. + # @param spouse [Person, NilPerson] The spouse of the person, defaults to NilPerson. def initialize(name, gender, spouse = NilPerson.new) @name = name @gender = gender @spouse = spouse end + # Checks equality with another object. + # + # @param other [Object] The object to compare with. + # @return [Boolean] True if the other object is a Person with the same name, gender, and spouse, false otherwise. def ==(other) other.is_a?(Person) && name == other.name && gender == other.gender && spouse == other.spouse end + # Checks equality with another object (alias for ==). + # + # @param other [Object] The object to compare with. + # @return [Boolean] True if the other object is a Person with the same name, gender, and spouse, false otherwise. def eql?(other) self == other end + # Computes the hash code for the Person object. + # + # @return [Integer] The hash code based on the name, gender, and spouse. def hash [name, gender, spouse].hash end + # Returns a string representation of the Person. + # + # @return [String] The string representation in the format "name (gender)". def to_s "#{name} (#{gender})" end |
