The Demons Command Each Other
From Huben's Wiki
Line 1: | Line 1: | ||
+ | <!-- | ||
+ | This needs to be extended to explain the idea of execution flow during a call, especially the idea of returning to where you were called. Then the test can also be extended. | ||
+ | Have some code they can run, explaining how to step through a program in Dr. Java. | ||
+ | --> | ||
+ | [[Image:Gort.jpeg]] | ||
+ | |||
We have penetrated the mysteries of finding demon commands. Now we must seek to use those commands, and thus control our demons. | We have penetrated the mysteries of finding demon commands. Now we must seek to use those commands, and thus control our demons. | ||
− | ==First Call== | + | ==(A) First Call== |
Place this class into Dr.Java, save, compile and run it. | Place this class into Dr.Java, save, compile and run it. | ||
<pre> | <pre> | ||
Line 33: | Line 39: | ||
* Create another method, named speakThrice(), that calls speak() three times. Change main() to call speakThrice() two times. How many times is the world saved? Why? | * Create another method, named speakThrice(), that calls speak() three times. Change main() to call speakThrice() two times. How many times is the world saved? Why? | ||
− | ==Calling Between Classes== | + | ==(B) Calling Between Classes== |
Click the New button to start a new Java class, place this code in it, save it and compile it. | Click the New button to start a new Java class, place this code in it, save it and compile it. | ||
<pre> | <pre> | ||
public class Nietzsche | public class Nietzsche | ||
{ | { | ||
− | public void speak() | + | static public void speak() |
{ | { | ||
System.out.println("Thus spake Zarathustra!"); | System.out.println("Thus spake Zarathustra!"); | ||
Line 60: | Line 66: | ||
* The third line of main() shows another way to invoke the speak() of DayTheEarthStoodStill. Why does this work? | * The third line of main() shows another way to invoke the speak() of DayTheEarthStoodStill. Why does this work? | ||
* What rule would you make to explain why sometimes you can call with just the name of a method and other times you need something more complex? | * What rule would you make to explain why sometimes you can call with just the name of a method and other times you need something more complex? | ||
+ | * If you are looking at Nietzsche and hit run, for once the error message makes sense. Why does this give an error? | ||
− | ==Method Calls In Real Programs== | + | ==(C) Method Calls In Real Programs== |
It is easy to identify method calls in the toy programs on this page. It is also easy to identify them in real programs. | It is easy to identify method calls in the toy programs on this page. It is also easy to identify them in real programs. | ||
Line 86: | Line 93: | ||
* aTypeOfSound and volume are variables that are arguments for makeSound(). | * aTypeOfSound and volume are variables that are arguments for makeSound(). | ||
* sound is a variable where we store the result of animal.makeSound(aTypeOfSound, volume). | * sound is a variable where we store the result of animal.makeSound(aTypeOfSound, volume). | ||
+ | * We can be calling methods of different classes by using objects of different classes to make the calls. Notice the dot! Just like the dot when we call with a Class name. | ||
Let's look at some real code now. Here is the main from a class Cryptogram: | Let's look at some real code now. Here is the main from a class Cryptogram: | ||
Line 104: | Line 112: | ||
* How many arguments does setBounds() have? | * How many arguments does setBounds() have? | ||
* Do these 3 last method calls return any values? | * Do these 3 last method calls return any values? | ||
+ | |||
+ | ==(D) Do you get it?== | ||
+ | |||
+ | Look at studentdisk/Ch07/Craps/RollingDie.java. | ||
+ | * List the methods of class RollingDie. | ||
+ | * How many arguments does each of those methods need? | ||
+ | * Where are each of those methods called in class RollingDie (0 to many places.) | ||
+ | * What is the name of the constructor method? Is there a coincidence involved? | ||
+ | * How many different methods of class Math are called? | ||
All you need now are variables, objects, arguments and conditionals: then you shall understand most of the wiles of these demons in Java code. | All you need now are variables, objects, arguments and conditionals: then you shall understand most of the wiles of these demons in Java code. |