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
COMP 110: Introduction to Programming Tyler Johnson Feb 16, 2009 MWF 11:00AM-12:15PM Sitterson 014 Announcements Program 2 due Wednesday by midnight Lab 4 Part 2 is now extra credit 2 COMP 110: Spring 2009 Lab 2 3 COMP 110: Spring 2009 Questions? 4 COMP 110: Spring 2009 Today in COMP 110 Classes & Methods Read Section 5.1 in text 5 COMP 110: Spring 2009 Classes Java programs consists of objects of various class types interacting with one another You have already been using classes System, String, Scanner, Math 6 COMP 110: Spring 2009 Classes A class is a definition of a kind of object It describes a general template or blueprint for creating objects of that class A class “Car” is a definition of what a “Car” is and what it can do 7 COMP 110: Spring 2009 Classes & Objects Objects of the class Car might have the following attributes Make Model Year Owner Location All objects of the class Car have these attributes, but with potentially different values 8 COMP 110: Spring 2009 Classes & Objects Class Car Make Model Year Owner Location camry object Make = Toyota Model = Camry Year = 2000 Owner = John Doe Location = Garage 9 focus object Make = Ford Model = Focus Year = 2001 Owner = Samantha Smart Location = School COMP 110: Spring 2009 Classes & Objects Important: classes do not have data; individual objects have data Classes specify what kind of data objects have Class Car Make Model Year Owner Location 10 camry object Make = Toyota Model = Camry Year = 2000 Owner = John Doe Location = Garage COMP 110: Spring 200910 Classes & Objects Both the “camry” and “ford” objects satisfy the definition of the class “Car” They are said to be instances of the “Car” class When we create an object of a certain class, we are said to instantiate it 11 COMP 110: Spring 2009 Methods Classes also define the actions that objects of its type can perform These are called methods All objects of the same class have the same methods The class “Car” might have the following methods accelerate() brake() sell() start() 12 COMP 110: Spring 2009 String Methods string.length() string.charAt(index) string.substring(index1, index2) string.toLowerCase() string.equals(A_String) 13 COMP 110: Spring 2009 UML A UML class diagram can be useful in describing classes UML stands for Universal Modeling Language 14 COMP 110: Spring 2009 UML A UML class diagram for the class “Car” Car - make: String model: String year: int owner: String location: String + + + + 15 accelerate(double pedalPressure): void brake(double pedalPressure): void sell(String newOwner): void start(): void Class name Attributes Methods (actions) COMP 110: Spring 2009 Defining Classes You have already been defining your own classes! Every program you have written defines a class //define the class TipCalculator public class TipCalculator { … } 16 COMP 110: Spring 2009 Class Files & Separate Compilation Each Java class definition goes in its own, SEPARATE .java file ClassName ClassName.java The class “Car” must be saved in a file called “Car.java” 17 COMP 110: Spring 2009 Class Files & Separate Compilation What happens when you compile a .java file? .java file gets compiled into a .class file • .class file contains Java bytecode • Car.java is compiled into Car.class You can compile a Java class before you have a program that uses it 18 COMP 110: Spring 2009 The Student Class Student - name: String year: int gpa: double major: String credits: int gpaSum: double + + + + + 19 getName(): String getMajor(): String printData(): void increaseYear(): void calculateGPA(double grade): void COMP 110: Spring 2009 Defining the Class Student public class Student { public public public public // ... String name; int year; double GPA; String major; public String getMajor() { return major; } } 20 Class name Data (instance variables) Methods public void increaseYear() { year++; } // … COMP 110: Spring 2009 Instance Variables The data members of a class are called instance variables public public public public String name; int year; double gpa; String major; public No restrictions on how these instance variables are used (more details later) 21 COMP 110: Spring 2009 Creating Objects Declaring/Initializing Primitives int i = 0; double area = 10.5; Declaring/Creating Objects Scanner keyboard = new Scanner(System.in); 22 COMP 110: Spring 2009 Creating Objects Create an object called “jack” of class “Student” Student jack = new Student(); Assign memory address of object to variable 23 Create an object COMP 110: Spring 2009 Using Instance Variables: Inside the Class Definition public class Student { public public public public // ... String name; int year; double GPA; String major; public String getMajor() { return major; } } 24 public void increaseYear() { year++; } // … COMP 110: Spring 2009 Using public Instance Variables Outside a Class public static void main(String[] args) { Student jack = new Student(); jack.name = "Jack Smith"; jack.major = "Computer Science"; System.out.println(jack.name + " is majoring in " + jack.major); Student sam = new Student(); sam.name = "Samantha Smart"; sam.major = "Biology"; } System.out.println(sam.name + " is majoring in " + sam.major); “jack.name” and “sam.name” are two different variables because they belong to different objects 25 COMP 110: Spring 2009 Methods Two kinds of methods Methods that return a value • Examples – string.substring() – string.charAt() Methods that return nothing • Example – System.out.println() 26 COMP 110: Spring 2009 Methods returns a String public String getMajor() { return major; } return type returns nothing public void increaseYear() { year++; } 27 COMP 110: Spring 2009 Defining Methods that Return Nothing Method heading: keywords public: no restriction on how to use the method (more details later) void: the method returns nothing Method body: statements executed when the method is called (invoked) Must be inside a pair of braces public void increaseYear() { year++; } 28 COMP 110: Spring 2009 Method printData As usual, inside a block (defined by braces), you can have multiple statements public void printData() { System.out.println("Name: " + name); System.out.println("Major: " + major); System.out.println("GPA: " + gpa); } 29 COMP 110: Spring 2009 Methods All method definitions must appear inside the definition of the class to which they belong! public class Student { // … public String getMajor() { return major; } } 30 public void increaseYear() { year++; } // … COMP 110: Spring 2009 Methods When you use a method such as keyboard.nextInt() you are said to call or invoke the method 31 COMP 110: Spring 2009 Calling Methods that Return Nothing Syntax object.method(); Use them like Java statements Student jack = new Student(); jack.year = 1; Output Jack’s class year is 3 jack.increaseYear(); //year = 2 jack.increaseYear(); //year = 3 System.out.println("Jack’s class year is " + jack.year); 32 COMP 110: Spring 2009 Defining Methods that Return a Value Method heading: keywords public: no restriction on how to use the method (more details later) Type: the type of value the method returns Method body: statements executed Must be inside a pair of braces Must have a return statement public String getMajor() { return major; } 33 COMP 110: Spring 2009 The Return Statement A method that returns a value must have at least one return statement Terminates the method, and returns a value to the caller Syntax: return Expression; Expression can be any expression that produces a value of the return type 34 COMP 110: Spring 200934 Methods that Return a Value public String getClassYear() { if(year == 1) return "Freshman"; else if(year == 2) return "Sophomore"; else if ... } 35 COMP 110: Spring 2009 Calling Methods that Return a Value Syntax object.method(); Use as a variable of the method’s return type Student jack = new Student(); jack.name = "Jack Smith"; jack.major = "Computer Science"; String m = jack.getMajor(); System.out.println("Jack’s full name is " + jack.getName()); System.out.println("Jack’s major is " + m); 36 COMP 110: Spring 200936 The Return Statement Can also be used in methods that return nothing Terminates the method Syntax: return; public void increaseYear() { if(year >= 4) return; //exit the method } 37 year++; COMP 110: Spring 200937 The Return Statement Typically, you want to write your methods to contain only one return statement It will make your programs easier to read 38 COMP 110: Spring 2009 The Main Method The main method is a method like any other public static void main(String[] args) { // … } The main method is not invoked by you, but invoked automatically by the system when you run a program 39 COMP 110: Spring 2009 The Main Method Classes that have a main method can be run as a program Not all classes have a main method Some are used inside the main method of other classes 40 COMP 110: Spring 2009 Local Variables Variables declared inside a method are called local variables As opposed to instance variables, which are declared in the class definition public class Student { public double gpa; //an instance variable } 41 public static void main(String[] args) { int size; //a local variable // … } COMP 110: Spring 2009 Local/Instance variables Instance variables Declared in a class • Can be used anywhere in the class that declares the variable, including inside the class’ methods Local variables Declared in a method • Can only be used inside the method that declares the variable 42 COMP 110: Spring 2009 Programming Demo Counter class A class used to count things Define a class that records a count as a nonnegative whole number Include methods for the following Reset counter to 0 Increment the count Decrement the count Get the current count Display the current count 43 COMP 110: Spring 2009 Counter Class No methods should allow the count to become negative Write a program to test the class 44 COMP 110: Spring 2009 Programming Demo Programming 45 COMP 110: Spring 2009 Wednesday More about Classes 46 COMP 110: Spring 2009