Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
BIT 115: Introduction To Programming LECTURE 3a Instructor: Craig Duckett [email protected] Lecture 3 Announcements • By now everyone should be up and running with Java, jGRASP, and the Becker Robots on their home or personal computers. • Any Problems? • Has everyone had a chance to work with the Java programs and the Becker Robots? Reading Assignment for Today • Appendix F.1 – Extending a Class • Chapter 2.1, 2.2 – Extending Robot Class • Chapter 2.4 – Coding Style BIT 115: Introduction To Programming 2 H Assignment 1 is due LECTURE 4 th • Wednesday, July 15 O M – It’s posted on the website under Assignments menu – It will be due by midnight E • If unsure how to upload to StudentTracker, then bring your work to class, in electronic form, and we will go over how to W hand in the homework: Student Tracker O How to Use Student Tracker R • If you’re stuck, seek help – Talk to the Instructor or a classmate K – Email me BIT 115: Introduction To Programming 3 Assignment Announcements • Assignment 1 DUE Lecture 4, Wednesday, July 15th, by midnight • Assignment 2 DUE Lecture 7, Monday, July 27th, by midnight • Assignment 1 Revision DUE Lecture 8, Wednesday, July 29th, by midnight • Assignment 2 Revision DUE Lecture 10, Wednesday, August 5th, by midnight • Assignment 3 DUE Lecture 11, Monday, August 10th, by midnight • Assignment 3 Revision DUE Lecture 13, Monday, August 17th, by midnight • Assignment 4 DUE Lecture 15, Monday, August 24th, by midnight NO REVISION AVAILABLE • Extra Credit 01 DUE Lecture 15, Wednesday, August 26th, by midnight 4 Lecture Setup Strategy Some Lecture we will have one long lecture followed by one long ICE period, so the class will basically only be divided into two parts: Lecture and ICE. Other Lectures, like today’s lecture, will be divided into four (4) parts: Lecture, ICE, Lecture, ICE. You can tell if it is going to be a four part class by seeing if there are two lecture PowerPoints offered (for example , Lecture 03a and Lecture 03b) The schedule for four part classes will be as such (approximately): • Lecture (a): 45 minutes – 11:30am-12:15pm • ICE (a): 45 minutes – 12:15pm-1:00pm • Lecture (b): 45 minutes – 1:00pm-1:45pm • ICE (b) 45 minutes – 1:45pm-2:30pm NOTE: Times may vary according to this scheme, although this is the working plan on how I will try to divide the class when there are two lecture points. 5 And Now…. The First Quiz! • You each get a hand-out: Put your name on it • When your program works, raise your hand – 5 minute limit BIT 115: Introduction To Programming 6 Lecture 3 Buckle up! This could really zoom-zoom-zoom! • Extending a Class : Creating a new type of Robot (Predicting What A Program Will Do BEFORE you Run It) • Style and Java Coding Conventions (If time) BIT 115: Introduction To Programming 7 Appendix F.1, Chapter 2.1, 2.2 Extending a Class • • • • • Extension (B extends A) Extending the Robot Class Superclass and Subclass Constructor Adding a Service • turnAround(); • turnRight(); • The This Keyword (Implicit Parameter) • Putting It All Together BIT 115: Introduction To Programming 8 Constructor Here, when we create a new instance (an object) of the Robot class, a ‘hidden’ default constructor works in the background to make sure that Kelsey inherits all the attributes and methods available to Robots, including its placement on a particular Street and Avenue and Direction in a particular City, and that it can use all of the actions (methods) available to the Robot class (including move(), pickThing(), turnLeft(), putThing(), frontIsClear(), etc.) http://faculty.cascadia.edu/cduckett/bit115/Becker/Documentation/index.html BIT 115: Introduction To Programming 9 Constructor Constructors have one purpose in life. To create an instance of a class. This can also be called creating an object, as in: The purpose of a method, by contrast is much more general. The purpose of a method is to execute Java code, to allow the object to do something. BIT 115: Introduction To Programming 10 BIT 115: Introduction To Programming 11 Now … what if these is an action that you might want Kelsey to do that isn’t found in the Robot class? For instance, instead of invoking the the turnLeft() method three times, you could just call up a turnRight() ? The problem is, the Robot class does not have a turnRight() command (method). The Robot class has been finalized. You cannot add to it. The good news is, you can create a new method like turnRight() that will do what you want the robot to do! But in order to make this happen, you need to extend the Robot class … BIT 115: Introduction To Programming 12 Extending a Class: Where ClassB extends ClassA In Plain Ol’ English: Where ClassB “inherits” the attributes and actions of ClassA … then adds new functionality to them. When we’re not interested in extending a class because we’re happy with the methods that come with that class just the way they are, then we declare our class the ‘normal’ default way: public class Example extends Object Object is the top class of all class hierarchies. When a new instance of anything is made in Java, then it inherits all the attributes and actions of the Object class. You can’t get a new object without Object. Object Class Hierarchy However, if we want to add new functionality (methods) to the Robot class (like turnRight) then we need to extend the Robot class (which is itself an extension of Object) public class MrRoboto extends Robot BIT 115: Introduction To Programming 13 Extending a Class: Where ClassB extends ClassA Instance vs. Extension? Instance creates a new object from a class, but extension extends a new class from a class through inheritance, allowing for an improved class that might offer additional attributes and services (methods) not available in the original class … BIT 115: Introduction To Programming 14 Extending the Robot Class public class MrRoboto extends Robot MrRoboto extends inherits Robot MrRoboto “inherits” all of the Robot attributes and services and then can have additional attributes and services of its own (i.e., those not shared by Robot). BIT 115: Introduction To Programming 15 Superclass and Subclass Robot Superclass MrRoboto Subclass BIT 115: Introduction To Programming 16 Constructor import becker.robots.*; public class MrRoboto extends Robot { public MrRoboto(City theCity, int street, int avenue, Direction aDirection) { super(theCity, street, avenue, aDirection); } //New service or services go here } BIT 115: Introduction To Programming 17 Constructor import becker.robots.*; public class MrRoboto extends Robot { // This declares the parameters used by Robot “inside” of MrRoboto public MrRoboto(City theCity, int street, int avenue, Direction aDirection) // This passes on information received by the parameters used by Robot ‘inside” of MrRoboto { super(theCity, street, avenue, aDirection); //Instead of Robot here, Java uses the keyword super } //New service or services go here } Constructors fulfill a special roll. They are responsible for ensuring an object is set up properly when it is created, and that it can be immediately used once it is created. This construction process is known as initialization. Two other details about constructors: they must have the same name as the class and they do not have a return type, not even a void. NOTE: We will talk briefly about return types in just a few minutes, and go over them in greater detail in an upcoming lecture. BIT 115: Introduction To Programming 18 Constructor public class MrRoboto extends Robot { public MrRoboto(City theCity, int street, int avenue, Direction aDirection) { super(theCity, street, avenue, aDirection); } } MrRoboto Robot BIT 115: Introduction To Programming 19 Constructor public class MrRoboto extends Robot { public MrRoboto(City theCity, int street, int avenue, Direction aDirection) { super(theCity, street, avenue, aDirection); } } MrRoboto Robot super BIT 115: Introduction To Programming 20 Constructor public class MrRoboto extends Robot { public MrRoboto(City theCity, int street, int avenue, Direction aDirection) { super(theCity, street, avenue, aDirection); } } MrRoboto imagine a conduit … super BIT 115: Introduction To Programming 21 Constructor public class MrRoboto extends Robot { public MrRoboto(City theCity, int street, int avenue, Direction aDirection) { super(theCity, street, avenue, aDirection); } } bothell, 3, 2, Direction.SOUTH MrRoboto super BIT 115: Introduction To Programming Since MrRoboto is inheriting the Robot parameters, the Robot still needs those parameters in order for MrRoboto to inherit them. This is why it appears as if there are two sets of parameters: one set to pass through MrRoboto, a second set for Robot to receive them, where Robot sends them back to MrRoboto by extension. 22 Adding New Services public void turnAround() { this.turnLeft(); this.turnLeft(); } public void move3() { this.move(); this.move(); this.move(); } . public void turnRight() { this.turnAround(); this.turnLeft(); } 23 The this keyword The new Java feature in the new services we created is the use of the this keyword. The keyword this is useful when you need to refer to an instance of the class from its method, but without having to refer to it by a specific name. Why? Because when you create the new method, you don’t know the name of the particular robot that is going to use it, so ‘this’ is a kind of placeholder name. The this keyword helps us to avoid name conflicts, and also creates a shortcut to having to invent a unique name for each field in the different methods. public void turnAround() { this.turnLeft(); this.turnLeft(); } 24 Putting It All Together Two Ways of Doing the Same Thing Version 1: One Class MrRoboto.java Version 2: Two Classes MrRobotoMain.java 25 Putting It All Together MrRoboto2.java MrRoboto.java MrRobotoTest2.java All on One File On Two Separate Files 26 Chapter 2.4 – Coding Conventions (Style) http://www.oracle.com/technetwork/java/codeconv-138413.html BIT 115: Introduction To Programming 27 ICE Strategy For the BIT115 class, you do not have to submit the ICES, rather you will show me InCLASS that you have finished with them and I will give you credit for them right then and there. If you worked on the ICEs in-class, but did not finish them, you will still get full credit for working on them as long as you were in class trying. The In-Class Exercises have been designed to help you acquire the coding know-how you need to successfully complete the Assignments. As such, if you do not finish your ICEs in class, it is HIGHLY RECOMMENDED that you finish the ICEs outside of class on your own time because it will make your problem-solving of the Assignments that much easier. Starting with today’s ICE 03b I will start posting “solutions” to the ICEs two days after the ICE. This means I will post solutions to Monday ICEs by Wednesday, and solutions to Wednesday ICEs by Friday. Please use these “solutions” as you see fit. Once again, they have been designed to help you specifically “solve” the upcoming Assignment. Finally, going forward, the ICE number will not coincide with the Lecture number, as some lectures have multiple ICEs and the ICEs are numbered in consecutive order to follow one after the other. As the quarter progresses the ICE number will move further and further away from the Lecture number. For example, Lecture 14 has an ICE 19. Lecture 3a ICE: Creating a New Type of Robot Approximate Time: 12:15 to 1:00pm •ICE_03_Demo_1.java DEMO •In-Class Exercise Directions •ICE_03_01_Trace.java •ICE_03_02_CompileErrors.java •ICE_03_03_WalkDownWalls.java BIT 115: Introduction To Programming 29