Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Preview
Start a free Courses trial
to watch this video
Properties can be used the same way fields are, but they're really more like methods.
This video doesn't have any notes.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
With the setter of the location
property being private,
0:00
the only way it can be set is
from within the invader class.
0:03
Right now, we don't have anything
that sets the location property.
0:07
The default value of an uninitialized
map location is null.
0:11
We don't want users of the invader
class getting null when they ask for
0:15
the invader's location.
0:18
We need to initialize it to some starting
value when the object's created.
0:19
That's the purpose of the constructor.
0:23
So let's add a constructor.
0:25
So we'll type public Invader.
0:28
The constructor will set
the location property to the first
0:31
location on the path.
0:33
So the constructor needs
to have the path passed in.
0:35
We'll get the GetLocation method of the
path object to get the first location on
0:38
the path and assign it to location.
0:42
So now, all invaders will start
on the first step of the path.
0:49
[SOUND] In the tree house defense game,
0:53
invaders move down the path while
towers attempt to neutralize them.
0:55
If the invader successfully reaches the
end of the path, then the game is over and
1:00
the player will have lost.
1:04
It would be the responsibility of each
invader object to keep track of how far
1:06
down the path they are.
1:10
So, we'll need to add another field
called _pathStep to keep track of this.
1:11
No other classes will need
to know this information.
1:16
So we'll make it private.
1:18
This field will change over time.
1:22
So we don't want to make it read-only.
1:24
We'll also give this field
an initial value of 0.
1:27
Because all invaders will
start on step 0 of the path.
1:30
In fact we can use this _pathStep
field in our call to GetLocationAt,
1:34
instead of using 0 twice.
1:38
The reason we can do this is
because the _pathStep field is
1:40
set to 0 before the Invader
constructor is called.
1:43
The fields of a class are always
1:46
initialized before
the constructor is called.
1:48
Of course, the default value
of an integer is always 0,
1:50
so initializing it to 0 here is redundant.
1:54
But it's a good practice
to initialize it to 0.
1:58
By doing this we're saying that we've
thought about what we want this initial
2:01
value to be, and we want it to be 0.
2:04
Now we'll create a method called move
that'll advance the invader down the path.
2:08
This will be called by code outside the
invader class, so it needs to be public.
2:13
We'll strictly use this method
to tell the invader to move, so
2:18
we don't need anything back from it.
2:21
Let's give it a void return type.
2:23
When the move method is called,
2:27
it will advance the invader
one step down the path.
2:29
To do that, we just need to
increase the _pathStep by 1.
2:33
Now that we've changed what
step the invader is on,
2:37
we need to update its location.
2:40
We can do this using
path.GetLocationAt method.
2:42
The only problem is, we don't have
a path object here to refer to.
2:46
It looks like we need to store an instance
of the path object in the invader object
2:50
so that it can be accessed later.
2:54
To do this, we just need to create
another field in the Invader class and
2:57
assign it the path that was
passed into the constructor.
3:00
The path object is just for
the Invader class to use.
3:03
So we'll make it private readonly.
3:06
Then in the constructor we'll set
it to the path that was passed in,
3:12
and I'll change this to
use the field instead.
3:17
Now we can go back to the move method and
use the object's instance of the path
3:23
to update the location property
to the invader's new location.
3:27
So we'll say location =
_path.GetLocationAt(_pathStep).
3:31
There we go.
3:43
Finally, a note about terminology.
3:45
We've now created classes that have
fields, properties, methods, and
3:47
constructors.
3:52
Each of these things are called
members of the class.
3:53
We can refer to the path and
pathStep fields, the location property and
3:57
the Move method collectively as
members of the Invader class.
4:02
Members that are treated like variables
in the class, such as fields and
4:07
properties, are often referred
to as member variables.
4:11
In other courses we'll learn about other
types of members that a class can have.
4:15
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up