1 CS1110 lecture 4 9 Sept. Customizing a class & testing Classes: fields; getter & setter methods. Secs 1.4.2 (p. 45) & 3.1 (pp. 105–110 only) Constructors.

Slides:



Advertisements
Similar presentations
Microsoft ® Office 2007 Training Security II: Turn off the Message Bar and run code safely P J Human Resources Pte Ltd presents:
Advertisements

1 For more info: CS Sep 2008 In 1968, the Defense Department hired Bolt Beranek and Newman (BBN) of Boston to.
TOPIC 12 CREATING CLASSES PART 1 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,
1 CS100J. Lecture 2, 25 January 2007 Today’s topic: Objects and classes Reading for this lecture: Section 1.3. It’s most important that you study this.
CS/ENGRD 2110 SPRING 2015 Lecture 4: The class hierarchy; static components 1.
1 CS Sept. Customizing a class & testing Quiz 2 on Tuesday 15 Sept Purpose of a constructor (slide 5) Evaluating a new expression (slide 6) Fields;
CS 206 Introduction to Computer Science II 09 / 09 / 2009 Instructor: Michael Eckmann.
1 CS100J 1 February Customizing a class & testing Quote for the day: There is no reason anyone would want a computer in their home. - -Ken Olson,
1 Review of classes and subclasses M fast through this material, since by now all have seen it in CS100 or the Java bootcamp First packages Then classes.
CS100J 11 September 2003 Course Management System for CS100J is now populated with students who were pre-registered. Look at course web page to see how.
1 CS100J 05 February 2005 Today’s topic: Customizing a class (continued) Quiz 1 is today Quiz 2 is next Tuesday Quote for the day: There is no reason anyone.
1 CS1130 Spring 2011: David Gries & Walker White Transition to Object-Oriented Programming Assumes programming knowledge in a language like Matlab, C,
CS/ENGRD 2110 FALL 2014 Lecture 3: Fields, getters and setters, constructors, testing 1.
Quote for the day: Computational thinking: a fundamental skill for everyone … [It] is … choosing an appropriate representation for a problem or modeling.
Introduction to VB.NET Tonga Institute of Higher Education.
Working with Numbers in Alice - Converting to integers and to strings - Rounding numbers. - Truncating Numbers Samantha Huerta under the direction of Professor.
Information guide.
CS/ENGRD 2110 SPRING 2015 Lecture 3: Fields, getters and setters, constructors, testing 1.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Summary and Exam COMP 102.
1 CS Sept 2010 Customizing a class Quote for the day: I have traveled the length and breadth of this country and talked with the best people, and.
Introduction to Arrays. definitions and things to consider… This presentation is designed to give a simple demonstration of array and object visualizations.
CS1110 lecture 5 14 Sept 2010 Testing; the class Object; toString; static variables & methods Reading for this lecture: Testing with JUnit (Appendix I.2.4.
Basics of Java IMPORTANT: Read Chap 1-6 of How to think like a… Lecture 3.
1 CS Sept 2010 Inside-out rule; use of this, super Developing methods (using Strings). Read sec. 2.5, stepwise refinement Listen to Plive, 2.5.1–2.5.4.
CS/ENGRD 2110 SPRING 2012 Lecture 2: Objects and classes in Java 1.
(1) Unit Testing and Test Planning CS2110: SW Development Methods These slides design for use in lab. They supplement more complete slides used in lecture.
Topic 1 Object Oriented Programming. 1-2 Objectives To review the concepts and terminology of object-oriented programming To discuss some features of.
CSC1401 Classes - 2. Learning Goals Computing concepts Adding a method To show the pictures in the slide show Creating accessors and modifiers That protect.
CS1110 lecture 5 8 Feb 2010 Testing; class Object; toString; static variables/methods Reading for this lecture: Testing with JUnit (Appendix I.2.4 & pp.
1 CS1110 lecture 4 9 Sept. Customizing a class & testing Classes: fields; getter & setter methods. Secs (p. 45) & 3.1 (pp. 105–110 only) Constructors.
1 On (computational) simplicity We are trying to teach not just Java, but how to think about problem solving. Computer science has its field called computational.
1 CS1100 Fall Instructor: David Gries CS100M: Matlab No prior programming experience One semester of calculus Math & engineering type problems CS100J:
CS/ENGRD 2110 FALL 2013 Lecture 4: The class hierarchy; static components 1.
1 CS November Testing/Debugging. And Applications Read chapter 14, pp. 385–401 Prelim 2 Max 100 Median 82 Mean 78.3 Min * ***************************
CreatingClasses-SlideShow-part31 Creating Classes part 3 Barb Ericson Georgia Institute of Technology Dec 2009.
Static?. Static Not dynamic class Widget { static int s; int d; // dynamic // or instance // variable }
1 CS100J 08 September 2005 Today’s topic: Customizing a class (continued) Quote for the day: There is no reason anyone would want a computer in their home.
1 Class 1 Lecture Topic Concepts, Definitions and Examples.
CIT 590 Intro to Programming Lecture 13. Some Eclipse shortcuts CTRL + SHIFT + F – format file (proper indentation etc). Please do this before you submit.
1 For more info: CS100J 7 February 2006 In 1968, the Defense Department hired Bolt Beranek and Newman (BBN) of Boston.
1 CS September 2008 Discussion of Methods: Executing method calls.If-statements. The return statement in a function. Local variables. For this and.
CS/ENGRD 2110 SPRING 2016 Lecture 2: Objects and classes in Java 1.
1 For more info: CS100J 08 February 2005 In 1968, the Defense Department hired Bolt Beranek and Newman (BBN) of Boston.
1 CS1110 Thursday, 10 Feb 2011 Discussion of Methods: Executing method calls. If-statements. The return statement in a function. Local variables. For this.
1 CS100J Spring Instructor: David Gries CS100M: Matlab No prior programming experience One semester of calculus Math & engineering type problems.
1 For more info: CS February 2009 In 1968, the Defense Department hired Bolt Beranek and Newman (BBN) of Boston.
CS/ENGRD 2110 FALL 2013 Lecture 3: Fields, getters and setters, constructors, testing 1.
1 CS Sep 2011 Miscellaneous points about classes. More on stepwise refinement. Next: wrapper classes. Section 5.1 of class text Need Help? Make.
1 CS February 2009 Inside-out rule; use of this and super Developing methods (using String ops). Read sec. 2.5 on stepwise refinement Listen to.
1 CS Sept 2010 Customizing a class Quote for the day: I have traveled the length and breadth of this country and talked with the best people, and.
CS100Lecture 61 Announcements Homework P1 due on Thursday Homework P2 handed out.
1 CS Sept Customizing a class & testing Quote for the day: There is no reason anyone would want a computer in their home. - -Ken Olson, founder.
CS/ENGRD 2110 FALL 2016 Lecture 3: Fields, getters and setters, constructors, testing 1.
CS/ENGRD 2110 Fall 2017 Lecture 2: Objects and classes in Java
Appendix A Barb Ericson Georgia Institute of Technology May 2006
CS/ENGRD 2110 Fall 2017 Lecture 3: Fields, getters and setters, constructors, testing
CS100J. Lecture 2, 24 September Objects & classes
CS/ENGRD 2110 Spring 2018 Lecture 2: Objects and classes in Java
CS/ENGRD 2110 Spring 2018 Lecture 3: Fields, getters and setters, constructors, testing
Some Tips for Using Eclipse
Debugging with Eclipse
Creating Objects in a Few Simple Steps
Sit next to someone. Today, we do some work in pairs.
CS/ENGRD 2110 Fall 2018 Lecture 3: Fields, getters and setters, constructors, testing
Sit next to someone. Today, we do some work in pairs.
CS/ENGRD 2110 Spring 2019 Lecture 3: Fields, getters and setters, constructors, testing
Barb Ericson Georgia Institute of Technology Oct 2005
Debugging with Eclipse
For more info: CS100J 13 September 2005 In 1968, the Defense Department hired Bolt Beranek and Newman (BBN) of Boston.
Workshop for Programming And Systems Management Teachers
Presentation transcript:

1 CS1110 lecture 4 9 Sept. Customizing a class & testing Classes: fields; getter & setter methods. Secs (p. 45) & 3.1 (pp. 105–110 only) Constructors. Sec (p. 111–112) Testing methods. Appendix I.2.4 (p. 486) Next time: Testing using Junit.(Appendix I.2.4 (p. 486) and pp 385— 388) Object: the superest class of them all. (pp 153–154). Function toString (pg ). Static components Sec. 1.5 (p. 47). Organizational tip #652: For classes with a lot of handouts (like CS1110), get a 3-ring binder and a 3-hole punch. Punch holes in the handouts and store them in the binder; this makes accessing them much easier. You can easily interleave other notes and papers, too. A “must see” about academic integrity (on youtube):

2 Quiz 2 on Tuesday 14 Sept Purpose of a constructor (slide 6); Evaluating a new expression (slide 8) Assignment A1 out today, due Sat., 18 Sept. on the CMS. Submit A1 earlier if you can so that we can start the iterative feedback process going. Labs and one-on-ones (schedule yours on CMS) will help you with it. Collaboration rules for assignment A1 Work alone or with one partner –partners “group themselves” on the CMS well before submission; only one person submits the files. Partners must do the work together, sit next to each other, with each taking turns “driving” (handling the mouse and keyboard). It is against the rules for one partner to develop code and later show it to the other. Never look at someone else’s code or show yours to someone else. Never be in possession of someone else’s code (except your partner).

3 3 One-on-One Sessions (optional) Next 1.5 weeks, we are holding 1/2-hour one-on-one sessions on a computer with each student in CS1110. Purpose: Help you develop a class as preparation for A1, give you a chance to ask questions. Not counted in final course grade. Sign up on the course CMS ( ): Click on assignment One-on-one, find the schedule of times/instructors. Choose one. Bring to the 1-on-1: the book; laptop w. DrJava if you have one. Students with little or no programming experience report that these sessions are extremely helpful! Office hours: Already started: Prof Gries & Prof Lee (Tu/Th 10:10-10:55 Hollister 202), consultants TAs: will begin the week of Sept. 20; check the URL then

What would you say if you asked someone what it meant and they replied: First, make sure the bowl is clean. Make sure the flour is unbleached, the salt has to be from the Himalayas, and the baking power organic. Then the chef takes the ingredients one at a time and pours each into the bowl, making sure not to spill. How do you execute the assignment statement: y= x + y – 1; You have to declare x and y and assign initial values. Then you type the assignment into the interactions pane and hit enter. And the computer does it. int x; x= 9; int y; y= 4; y= x + y -1; 4 Quiz 1 on assignment Suppose we had a recipe language, with statements like this: bowl <-- 1 cup flour + 1 tsp salt + baking powder; Meaning: Put the flour and salt and baking powder in the bowl.

5 Field: a variable that is in each folder of a class. a0 Worker lname … ssn … boss … Usually, fields are private, so methods that are outside the class can’t reference them. (Exception: private fields are accessible in the DrJava Interactions pane. Also, note that the definition means that objects of the same class can access the private fields of different objects of the same class.) public class Worker { } /** An instance is a worker in a certain organization. */ private String lname; // Last name (“” if none; never null) private int ssn; // Social security #: in private Worker boss; // Immediate boss (null if none) Declarations of fields Class invariant: describe field meanings, constraints

6 Getter and setter methods In the definition of Worker (full code on the website): /** = worker’s last name */ public String getName() { return lname; } /** Set worker’s last name to n (can’t be null, can be “”) */ public void setName(String n) { lname= n; } /** = last 4 SSN digits, as an int*/ (Try writing it yourself. Should there also be a setter? What about for boss?) Getter methods (functions) get or retrieve values from a folder. Setter methods (procedures) set or change fields of a folder a0 Worker lname … ssn … boss … getName() setName(String t) parameter declaration

7 Initialize fields when a folder is first created We would like to be able to use something like new Worker(“Obama”, 1, null) to create a new Worker, set the last name to “Obama”, the SSN to , and the boss to null. For this, we use a new kind of method, the constructor. Purpose of a constructor: to initialize (some) fields of a newly created object This initialization should make the class invariant true.

8 In the class definition of Worker: /** Constructor: an instance with last name n (can’t be null, can be “”), SSN s (an int in ), and boss b (null if none) */ public Worker(String n, int s, Worker b) lname= n; ssn= s; boss= b; } a0 Worker lname … ssn … boss … getName() … Worker( String n, int s, Worker b ) Do not put a type or void here Example constructor The name of a constructor: the name of the class.

9 New description of evaluation of a new-expression new Worker(“Obama”, 1, null) 1.Create a new folder of class Worker, with fields initialized to default values (e.g. 0 for int) –of course, put the folder in the file drawer. 2. Execute the constructor call Worker(“Obama”, 1, null) 3. Use the name of the new object as the value of the new-expression. a0 Worker lname … ssn … boss … getName() setName(String n) Worker(String n, int s, Worker b) … Memorize this new definition! Today! Now!

10 Testing —using JUnit Bug: Error in a program. Testing: Process of analyzing, running program, looking for bugs. Test case: A set of input values, together with the expected output. Debugging: Process of finding a bug and removing it. Get in the habit of writing test cases for a method from the method’s specification --- even before writing the method’s body. A feature called Junit in DrJava helps us develop test cases and use them. You have to use this feature in assignment A1.

11 1. w1= new Worker(“Obama”, 1, null); Name should be: “Obama”; SSN: 1; boss: null. 2. w2= new Worker(“Biden”, 2, w1); Name should be: “Biden”; SSN: 2; boss: w1. To create a testing framework: select menu File item new Junit test case…. At prompt, put in class name WorkerTester. This creates a new class with that name. Save it in same directory as class Worker. The class imports junit.framework.TestCase, which provides some methods for testing. Need a way to run these test cases, to see whether the fields are set correctly. We could use the interactions pane, but then repeating the test is time-consuming. Here are two test cases

12 /** A JUnit test case class. * Every method starting with "test" will be called when running * the test with JUnit. */ public class WorkerTester extends TestCase { /** A test method. * (Replace "X" with a name describing the test. Write as * many "testSomething" methods in this class as you wish, * and each one will be called when testing.) */ public void testX() { } One method you can use in testX is assertEquals(x,y) which tests whether expected value x equals computed value y. Test case template created by DrJava

13 A testMethod to test constructor (and getter methods) /** Test first constructor (and getter methods getName, getSSN4, and getBoss) */ public void testConstructor() { Worker w1= new Worker(“Obama", , null); assertEquals(“Obama”, w1.getName(), ); assertEquals(6789, w1.getSSN4()); assertEquals(null, w1.getBoss()); Worker w2= new Worker(”Biden", 2, w1); assertEquals(“Biden”, w2.getName()); assertEquals(2, w2.getSSN4()); assertEquals(w1, w2.getBoss()); } Every time you click button Test in DrJava, this method (and all other testX methods) will be called. first test case second test case assertEquals(x,y): test whether x (expected) equals y (computed); print an error message and stop the method if they are not equal. A few other methods that can be used are listed on page 488.