View
176
Download
1
Embed Size (px)
DESCRIPTION
Slides from day 5 of ACM init()
Citation preview
ACM init()Day 5: November 20, 2014
From last time• More about arrays
• Method
• Parameters
• Return Values
• Blocks
• How to use a block
• Parameters
Area Methods HWI wanted you to make a program that uses methods to
calculate the area of various shapes. It was to be called like this:
First stepWe called a method called "area", using the shape name and
two side lengths as arguments.
Second stepThe area method then called a method that calculates and
prints the area of each shape.
A new data typeWe 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.
Hash example
Hash example continued
What will this print? Make your own hash!
Hash syntaxIn general, a hash looks like this:
A hash consists of key-value pairs. Each key maps to a value.
Creating a hashThere 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!
Adding to a hashSay we create an empty hash called pets. Now we want to add
our pets to it!
Accessing a hashWe can access elements of a hash just like elements of an
array.
Your turn!
Create a hash called about_me. In the hash, put your name, your age, and your favorite color.
AnswerThere are two ways to do this:
Iterating over hashesLast week we went over how to iterate over arrays:
We can iterate over hashes in a very similar way.
Iterating over hashesIterating 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.
Prints out...
Any questions on hashes?
Now we get to do the cool stuff... Object Oriented
Programming.
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!
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.
Strings as objectsWe 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.
What is a class?
A class is just a way of organizing and producing objects with similar attributes and methods.
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!
Defining a class
First, we need to make a class for our student. Here's how to start:
Now we have an empty class!
Initializing a classEvery 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:
Initializing a classWe wanted our student to have a name, an ID, and a major.
Let's do that!
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.
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".
Creating objectsWe can create a bunch of Student objects! Each one will have
its own name, ID, and major.
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
Adding methods to classes
We added a method called sayHi! Now how do we use it?
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
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!
Let's add more methods!
Let's add more methods!
Using the new methodsThese new methods can be called the same way as the first
one! What will the following print out?
Answer
Let's create our own class together!
Any questions on classes (so far)?
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
HomeworkOn 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.