200 likes | 374 Views
COMP 14 Introduction to Programming. Miguel A. Otaduy May 28, 2004. Today. Defining classes, using objects public, private, static Assignment operator and objects jGRASP projects, multiple files, Java archives. Multiple Classes. So far, we have added methods to the main class
E N D
COMP 14Introduction to Programming Miguel A. Otaduy May 28, 2004
Today • Defining classes, using objects • public, private, static • Assignment operator and objects • jGRASP projects, multiple files, Java archives
Multiple Classes • So far, we have added methods to the main class • Classes extend the concept of data types: data + operations • Define new classes and instantiate objects
Multiple Classes • Concept: Basketball team • players (objects of class Player) • coach (object of class Coach) • games • … • Define each class in one file, and instantiate objects in other classes or in the main method
Basketball.java • Create main class: Basketball • Define Player class • player name • year • + operations
Multiple files • Good style: 1 class per file • Store all files in 1 directory • Create jGRASP project (.gpj)
BasketballProject.gpj • Example of project creation
Multiple Objects • A class has 1 single definition • We can instantiate multiple objects of 1 class • Each object keeps its own copy of the data members • Objects are accessed using reference variables • To perform operations on objects: referenceVariable.method (parameter1, parameter2, …)
Basketball.java • Instantiate multiple Player objects • Call methods of the Player objects from Basketball.main() • Demonstrate flow through different methods with the debugger
Visibility Modifiersprivate and public • Public • For members that should be accessible outside the class (i.e. from other classes or the main method) • Usually employed with methods • Private • For members that should not be accessed outside the class • Usually employed with data members • Also for methods that are only used internally • Typically, data members are declared as private, so we need methods to set and get data values
Player.java • Make data members private • Make methods public • Demonstrate accessibility from Basketball.main()
Assignment Operator • Assignment expressions that involve reference variables do not copy object data!! • In order to copy object data, we need additional methods Player player1 = new Player(“Felton”); Player player2 = new Player(); player2 = player1; //player2 points to the same obj. public void Player.copy(Player otherPlayer)
Player.java • Write Player.copy()
Visibility Modifiersstatic • static data members • Data related to a class that does not need to be defined for each object public class Player { static final int FRESHMAN = 1; static final int SOPHOMORE = 2; private int year; … }
Visibility Modifiersstatic • static methods • Operations that do not use object-dependent data • They can only use static data members!! (besides local variables) public static int factorial(int x) { … } static BufferedReader keyboard = … public static void main(…) { String str=keyboard.readLine(); … }
Visibility Modifiersstatic • To access static data members and methods from outside the class: • To access non-static data members and methods from outside the class: • In general, from inside the class, no need to write class name or reference variable. double res = Math.pow(2.0, 3.0); //ClassName.method(); player1.printInfo(); //referenceVariable.method();
Player.java • Add static data members and methods
The toString Method • Special method in Java classes • Produces a String object based on the current object, suitable for printing • Mapped to the '+' operator (concatenation) • Also called when the object is a parameter in a print() or println() method • There is a default toString method, but it's better if we write our own
Player.java • Write Player.toString()
To do • Homework 5 (due Wednesday night) • Don’t wait till Tuesday!! • Homework 6 is going to be rather long • Read ch. 9