Skip to content

Instantly share code, notes, and snippets.

@rikas
Created April 25, 2018 09:49
Show Gist options
  • Save rikas/d29f999d3989fde58d141925a2f07d47 to your computer and use it in GitHub Desktop.
Save rikas/d29f999d3989fde58d141925a2f07d47 to your computer and use it in GitHub Desktop.
Classes & instances
# car.rb
# filename - lower_snake_case
# class name - UpperCamelCase
class Car
attr_reader :brand
# attr_reader :brand
# attr_writer :color
# same as attr_writer + attr_reader
attr_accessor :color
# contructor or initializer
def initialize(color, brand)
# puts "VROOOOOM"
# DATA (instance variables)
@engine_started = false # boolean
@color = color # String
@brand = brand # String
end
# BEHAVIOUR (instance methods)
def engine_started?
@engine_started
end
def start_engine
spark_sparkplugs
inject_fuel
make_vroom_sound
@engine_started = true
puts "BOOOOOM"
end
# from this point on every method is private
private
def inject_fuel
puts "PSSSSSSSSS"
end
def spark_sparkplugs
puts "TSSKKKKKK"
end
def make_vroom_sound
puts "VROOOOOOOOM"
end
# explicit getter / reader
# exactly the same as attr_reader :color
# def color
# @color
# end
# def brand
# @brand
# end
# explicit setter / writer
# exactly the same as attr_writer :color
# def color=(color)
# @color = color
# end
end
# car_test.rb
require_relative 'car'
# create a new Car instance
my_car = Car.new('blue', 'peugeout')
#your_car = Car.new('red')
puts "Car is running? -> #{my_car.engine_started?}"
puts "My car is #{my_car.color} #{my_car.brand}"
# paint my car
# my_car.color=("green")
my_car.color = "green"
# my_car.brand = 'fiat'
#p my_car
#puts "My car is #{your_car.color}"
#my_car.start_engine
#my_car.inject_fuel
#my_car.spark_sparkplugs
#my_car.make_vroom_sound
# puts "Car is running? -> #{my_car.engine_started?}"
require 'pry-byebug'
# 1. gem install pry-byebug
# 2. require 'pry-byebug'
# 3. binding.pry
#
# commands:
# * help - list commands
# * next - stops at next line of code
# * continue - stops at the end or at another binding.pry
def full_name(first, last)
first_name = first.capitalize
# p first_name
# binding.pry or byebug
last_name = last.capitalize
"#{first_name} #{last_name}"
end
puts full_name('ricardo', 'otero')
binding.pry
puts "FINISH!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment