COMP 110: Introduction to Programming Tyler Johnson Feb 16, 2009 MWF 11:00AM-12:15PM Sitterson 014
COMP 110: Spring Announcements Program 2 due Wednesday by midnight Lab 4 Part 2 is now extra credit
COMP 110: Spring Lab 2
COMP 110: Spring Questions?
COMP 110: Spring Today in COMP 110 Classes & Methods Read Section 5.1 in text
COMP 110: Spring Classes Java programs consists of objects of various class types interacting with one another You have already been using classes System, String, Scanner, Math
COMP 110: Spring 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
COMP 110: Spring 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
COMP 110: Spring Classes & Objects Class Car Make Model Year Owner Location focus object Make = Ford Model = Focus Year = 2001 Owner = Samantha Smart Location = School camry object Make = Toyota Model = Camry Year = 2000 Owner = John Doe Location = Garage
COMP 110: Spring Classes & Objects Important: classes do not have data; individual objects have data Classes specify what kind of data objects have 10 Class Car Make Model Year Owner Location camry object Make = Toyota Model = Camry Year = 2000 Owner = John Doe Location = Garage
COMP 110: Spring 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
COMP 110: Spring 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()
COMP 110: Spring String Methods string.length() string.charAt(index) string.substring(index1, index2) string.toLowerCase() string.equals(A_String)
COMP 110: Spring UML A UML class diagram can be useful in describing classes UML stands for Universal Modeling Language
COMP 110: Spring UML Car - make: String - model: String - year: int - owner: String - location: String + accelerate(double pedalPressure): void + brake(double pedalPressure): void + sell(String newOwner): void + start(): void Class name Attributes Methods (actions) A UML class diagram for the class “Car”
COMP 110: Spring 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 { … }
COMP 110: Spring 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”
COMP 110: Spring 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
COMP 110: Spring The Student Class Student - name: String - year: int - gpa: double - major: String - credits: int - gpaSum: double + getName(): String + getMajor(): String + printData(): void + increaseYear(): void + calculateGPA(double grade): void
COMP 110: Spring Defining the Class Student public class Student { public String name; public int year; public double GPA; public String major; //... public String getMajor() { return major; } public void increaseYear() { year++; } // … } Class name Data (instance variables) Methods
COMP 110: Spring Instance Variables The data members of a class are called instance variables public String name; public int year; public double gpa; public String major; public No restrictions on how these instance variables are used (more details later)
COMP 110: Spring Creating Objects Declaring/Initializing Primitives int i = 0; double area = 10.5; Declaring/Creating Objects Scanner keyboard = new Scanner(System.in);
COMP 110: Spring Creating Objects Create an object called “jack” of class “Student” Student jack = new Student(); Create an object Assign memory address of object to variable
COMP 110: Spring Using Instance Variables: Inside the Class Definition public class Student { public String name; public int year; public double GPA; public String major; //... public String getMajor() { return major; } public void increaseYear() { year++; } // … }
COMP 110: Spring 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
COMP 110: Spring Methods Two kinds of methods Methods that return a value Examples – string.substring() – string.charAt() Methods that return nothing Example –System.out.println()
COMP 110: Spring Methods public String getMajor() { return major; } public void increaseYear() { year++; } returns a String returns nothing return type
COMP 110: Spring 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++; }
COMP 110: Spring 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); }
COMP 110: Spring Methods All method definitions must appear inside the definition of the class to which they belong! public class Student { // … public String getMajor() { return major; } public void increaseYear() { year++; } // … }
COMP 110: Spring Methods When you use a method such as keyboard.nextInt() you are said to call or invoke the method
COMP 110: Spring Calling Methods that Return Nothing Syntax object.method(); Use them like Java statements Student jack = new Student(); jack.year = 1; jack.increaseYear(); //year = 2 jack.increaseYear(); //year = 3 System.out.println("Jack’s class year is " + jack.year); Jack’s class year is 3 Output
COMP 110: Spring 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; }
COMP 110: Spring 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 Methods that Return a Value public String getClassYear() { if(year == 1) return "Freshman"; else if(year == 2) return "Sophomore"; else if... }
COMP 110: Spring 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 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 year++; } 37
COMP 110: Spring The Return Statement Typically, you want to write your methods to contain only one return statement It will make your programs easier to read
COMP 110: Spring 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
COMP 110: Spring 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
COMP 110: Spring 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 public static void main(String[] args) { int size; //a local variable // … }
COMP 110: Spring 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
COMP 110: Spring Programming Demo Counter class A class used to count things Define a class that records a count as a non- negative 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
COMP 110: Spring Counter Class No methods should allow the count to become negative Write a program to test the class
COMP 110: Spring Programming Demo Programming
COMP 110: Spring Wednesday More about Classes