2. From last time
• More about arrays
• Method
• Parameters
• Return Values
• Blocks
• How to use a block
• Parameters
3. Area Methods HW
I wanted you to make a program that uses methods to
calculate the area of various shapes. It was to be called like
this:
4. First step
We called a method called "area", using the shape name and
two side lengths as arguments.
5. Second step
The area method then called a method that calculates and
prints the area of each shape.
6. A new data type
We know that an array is a list of variables. However, arrays are
indexed using numbers. There is another data type that can
change this: a hash
A Hash is a dictionary-like collection of unique keys and their
values. While an array uses integers as its index, a Hash
allows you to use any object type.
9. Hash syntax
In general, a hash looks like this:
A hash consists of key-value pairs. Each key maps to a value.
10. Creating a hash
There is more than one way to make a hash. We already saw
the first way: typing out key and value pairs in brackets.
How would we make an empty hash?
my_hash = Hash.new
This will create a completely empty hash. Make sure to
capitalize Hash!
11. Adding to a hash
Say we create an empty hash called pets. Now we want to add
our pets to it!
12. Accessing a hash
We can access elements of a hash just like elements of an
array.
13. Your turn!
Create a hash called about_me. In the hash, put your name,
your age, and your favorite color.
15. Iterating over hashes
Last week we went over how to iterate over arrays:
We can iterate over hashes in a very similar way.
16. Iterating over hashes
Iterating over a hash is very similar to iterating over an array,
but we have to print out two different things: the key and the
value.
19. Now we get to do the cool
stuff... Object Oriented
Programming.
20. Object-Oriented
Programming
So far in Ruby we've seen a lot of variables and data types.
Numbers, strings, booleans, arrays, hashes, etc.
We can do even more!
21. Object-Oriented
Programming
In Ruby, almost everything is an object.
!
What is an object? Objects have methods, which you've seen
before, and attributes, which are just data.
!
We've even used them before without even knowing it! Take a
look.
22. Strings as objects
We have set strings to certain values before:
name = "Kelly"
!
We can also use methods with strings:
name.length
!
In this case "name" is a string object with a .length method and
a length attribute of 5.
!
"name" is now part of something called the string Class.
23. What is a class?
A class is just a way of organizing and producing objects with
similar attributes and methods.
24. What is a class?
We're going to build our own class. Let's think of a student.
Some things a student has:
name
ID
major
!
Let's define a class called Student!
25. Defining a class
First, we need to make a class for our student. Here's how to
start:
Now we have an empty class!
26. Initializing a class
Every class needs a method called initialize. When the class is
created, the initialze method will automatically be called.
!
Create an empty initialize method in the Student class:
27. Initializing a class
We wanted our student to have a name, an ID, and a major.
Let's do that!
28. Initialzing a class
In Ruby, we use @ before a variable to signify that it's an
instance variable. This means that the variable is attached to
the instance of the class.
!
Any variable defined withing the initialize function must have
an @ in front of it. This variable is now a member variable of
the class.
29. Creating objects
Our class is defined enough to create an object now! Let's
create a new student:
I just created a new Student object with name set to "Kelly",
idNum set to "123456789", and major set to "CS".
30. Creating objects
We can create a bunch of Student objects! Each one will have
its own name, ID, and major.
31. Let's make our Students do
things
What does a student do? Let's add some methods to our
Student class. A student can:
Say hi
Take a test
Freak out
32. Adding methods to classes
We added a method called sayHi! Now how do we use it?
33. Using classes
To call a method that is part of a class, just type in the name of
the class variable, then a period, then the method name:
variable_name.method_name
34. Using classes
I had a Student class called "me" and a student class called
"other". Calling the "sayHi" method on both of them will print
out:
!
Kelly says hi!
Bob says hi!
41. What we did today
• Hashes
• Creating hashes
• Putting information in hashes
• Iterating over hashes
• Classes
• Creating classes
• Putting variables and methods in classes
• Using methods in classes
42. Homework
On the next page is a very simple game that uses a class called
Player. I wrote the code to play the game for you, but you have
to write the class. You can write the methods in the class
however you want, but all the methods that are in the loop I
wrote for you have to be present.
!
The idea of the game is that two players take turns either
attacking or healing. On each turn they can choose to attack the
other player or heal themselves. You should define a variable
called health in your Player class to keep track of this. If you
want you can make the game more interesting and add in
different types of attacks that have different effects on health.