Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Defining classes and methods Recitation – 09/(25,26)/2008 CS 180 Department of Computer Science, Purdue University Announcements Project 4 is out 2 week project Milestone Due October 1, 10:00pm Final Submission Due October 8, 10:00pm Exam 1 Wednesday, October 1, 6:30 – 7:30 pm, CL50 224 Covers chapters 1-5 Sample exam on course webpage. Exam review at the study group meeting: Tuesday, September 30, 5-7 pm, LWSN B116 Announcements (contd.) Consulting hours Students are expected to go through the project spec in detail before approaching the TAs for help. Do not approach TAs during help hours with errors in programs unless you have tried enough to fix the problem yourself. Recall the way to go about fixing errors: Syntax error – check the highlighted line carefully Logic error – Use print statements to identify the problem Runtime error – Check the line where the exception is being thrown. Classes Ways to organize data Use to create objects containing data Contain methods to perform certain operations Data can be of primitive type and objects of other classes. Accessors Mutators Java program consists of objects of class type Objects can interact with one another Program objects can represent objects in real world Terminology Class – a blueprint for an object Object – an instance of a class Real world analogy – Your TA’s hummer is an instance of a class Car Method/function – means to perform operations with the class Instance variables – data held within an object of a class Methods Used to provide an interface to the class Helper methods – break up your code into understandable chunks Types of methods Void - do not return anything Methods returning a value Return statements are optional E.g - return; Mandatory return statements Usage: Name of the object followed by a dot followed by the name of the method. E.g: keyboard.nextInt() or myCar.getCarType() Methods - example public class Car { private int carType; Return type Parameters public int getCarType(int n) { …… return carType; //mandatory return statement } } Car myCar = new Car(); ....... int type = myCar.getCarType(5); Scope Can only use variables within the current scope Loop/conditional scope: if a variable is declared within an if/else block or any type of loop, it is not accessible outside the block Method scope: local variables declared within a method are not accessible outside the method Includes any declarations in the for loop declaration Includes argument list Class scope: manageable with public/private modifiers When given the choice, Java will always choose the variable with closest scope If you have a class variable x and a local variable x declared, x refers to the local variable, this.x refers to the class variable this keyword this is a pointer to an object’s self Always used implicitly, but sometimes useful to be used explicitly In case of ambiguity resulting from having a local variable with the same name as a class variable, use this to refer to the class’s variable. class A { private int a; public int add(int a) { return this.a + a; } } A more clear version avoids ambiguity class A { private int a; public int add(int b) { return a + b; } } The public and private modifiers Type specified as public Any other class can directly access that variable/method by name Classes generally specified as public Instance variables usually specified as private Private members not directly accessible from outside the class Mutators and accessors Mutator Method to modify the value of a private instance variable. public void setCarType(int carType) { this.carType = carType; } Accessor Method to access the value of a private instance variable. public int getCarType() { return carType; } Mutators and accessors Note: Obviously, mutators and accessors should be declared as public methods. Accessor methods Mutator methods Usually no parameter Return type same as that of the variable to be accessed. Usually one parameter with the new value of the instance variable. Usually of void return type What about instance variables that we do not want to be accessed or changed from outside? Do not have to write an accessor or mutator method Variables of a Class Type Data of primitive type stored in the memory location assigned to the variable For class type, the object itself is not stored in the instance variable Stored elsewhere in memory Variable contains address of where it is stored (i.e the reference to the object) Car a = new Car(“hummer”); Car b = new Car(“hummer”); d The two variables might contain the same data, but in different locations. The value of each variable is the address of the memory location where the objects are stored – which is different. Recall that (a==b) will only compare the addresses, resulting in the value false. More on class types Assignment operator used with objects Only memory address is copied This creates an alias. Parameters of class type Car a = new Car(“hummer”); Car b = a; // Now b and a refer to the same object in the memory E.g Memory address of actual parameter passed to formal parameter Actual parameter thus can be changed by class methods Return type of a method as class type When a method returns a class object, only the memory address is returned. Equality Comparison For primitives, compare for equality with == For objects, when to use ==, when to use equals() method? When using ==, you are comparing addresses True: if they are aliases The two variables refer to the same object in the memory False: if they are not aliases (even if they hold the same data) Write your own equals method for your classes. For example, for class Car, compare if they belong to the same make, same model, etc. Exam review Chapter 1: Introduction to Computers and Java Object-oriented programming principles Programming Languages and Compilers Java Byte-Code etc. Chapter 2 : Basic Computation Java data types, variables assignment statements, variables and expressions Class String – string processing Keyboard and Screen I/O Exam review Chapter 3: Flow of Control: Branching branching statements - Boolean type and expressions If-else and switch statements Enumerations Chapter 4 : Flow of Control: Loops Use while, do, and for in a program Use the for-each with enumerations Exam review Chapter 5: Defining classes and methods Define a Java class, its methods Describe use of parameters in a method Use modifiers public, private Define accessor, mutator class methods