ACM init() Day 5

Post on 02-Jul-2015

173 views 1 download

description

Slides from day 5 of ACM init()

Transcript of ACM init() Day 5

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.