Classes, Types and Objects Data Structures Chapter 1 Prof. Vidya Manian Dept. of Electrical and Comptuer Engineering ICOM 4035 ECE, UPRM Java Programming Basics Overview • • • • Objects, classes expressions Control flow Arrays ICOM 4035 ECE, UPRM 2 Objects • Objects –store data and provide methods for accessing and modifying data • An object is an instance (member) of a class • Class – specifies type of objects, operations that it performs • Data of objects are stored as instance variables (fields) (of types e.g. integers, floating point numbers, Booleans) ICOM 4035 ECE, UPRM 3 Operations • Methods :constructors, procedures, and functions • Example: class declaration ICOM 4035 ECE, UPRM 4 • Counter class is public-other class can create and use a counter object • Instance variable –count • Constructor method initializes it to 0 • Accessor method, get Count • Update methods, incrementCount, decrementCount ICOM 4035 ECE, UPRM 5 Class modifiers • Abstract-empty methods with abstract keyword • Final – cannot have subclasses • Public – can be instantiated by anything that imports the class • Base types (primitve types (boolean, char, byte, short, int, long, float, double) • Int x, x=14 or x=195 • Float, y=3.1415 ICOM 4035 ECE, UPRM 6 Example of base types ICOM 4035 ECE, UPRM 7 • Comments: /** **/ or // • ‘new’ creates a new object and returns reference to that object ICOM 4035 ECE, UPRM 8 new operator • A new object is dynamically allocated in memory, initialized to default values ‘null’ • Constructor is called • The new operator returns a reference (a memory address) to the newly created object ICOM 4035 ECE, UPRM 9 Number classes • • • • • • Byte Short Integer Long Float Double ICOM 4035 n.byteValue() n.shortValue() n.intValue() n.longValue() n.floatValue() n.doubleValue() ECE, UPRM 10 String objects • String is a sequence of characters that comes form some alphabet (set of possible characters) • P = “barney the bear” • Length 15 • Concatenation • String s = “kilo” + “meters” ICOM 4035 ECE, UPRM 11 Object reference • Reference variable is a pointer to some object ICOM 4035 ECE, UPRM 12 Dot operator • Can have many references to the same object • Dot operator”.”-access methods and instance variables associated with an object • Examples of signatures (methods name with parameters) • oven.cookDinner(); • oven.cookDinner(food); • oven.cookDinner(food,seasoning); • Note: Java doesn not allow 2 methods with the same signature to return different types ICOM 4035 ECE, UPRM 13 Instance Variables • Instance variables must have a type (int, float, double) or a reference type : class such as String, an array • A referrence variable v, points to object o, we can access any of the instance variables fo o that the access rules allow • Public instance variables are accessible by everyone • Dot operator can get and set the value of any instance variable (v.i) ICOM 4035 ECE, UPRM 14 • gnome.name =“professor smith”; • gnome.age=35; • gnome –reference to a Gnome object, with public instance variables name and age • Variable modifiers • Public: anyone can access • Protected: only methods of the same package or of its subclasses can access protected instance variables • Private: only methods of the same class can access it ICOM 4035 ECE, UPRM 15 • Static: variables are used to store “global” information about a class • Final: a final instance variable is one that must be assigned an initial value, and can never be assigned a new value after that (MAX_HEIGHT) ICOM 4035 ECE, UPRM 16 ICOM 4035 ECE, UPRM 17 • • • • What are the base types ? What is variable gnomeBuddy ? What is variable name ? Note: Constant values associated with a class should be declared to be both static and final ICOM 4035 ECE, UPRM 18 Enum Types • Take on values from a specified set of names • Modifier enum name {value_name0, value_name1,….}; • Modifer – black, public, protected or private • Name – any legal Java identifier • public enum Day {MON,TUE,WERD,THU,FRI,SAT,SUN} ICOM 4035 ECE, UPRM 19 • • • • Output: Initially d is MON Then it is WED I say d and t are the same: true ICOM 4035 ECE, UPRM 20 Methods • Similar to functions and procedures • Method has 2 parts: body and signature modifiers type name(type0 parameter0, …typen-1 parametern-1) { // method body… } • type is the return type of the method, name – name of the method • When a method of a class is called, it is invoked on a specific instance of the class and can change the state of the object ICOM 4035 ECE, UPRM 21 • Similar to instance variables, Method modifiers can be public, protected, private or abstract • Note: All parameters are passed by value, changing the internal reference inside a method will not change the reference that was passed in ICOM 4035 ECE, UPRM 22 Constructors • A constructor is a special kind of method that is used to initialize newly created objects • Note: name of constructor, name, must be same as the name of the class it constructs • Return type not specified for constructor ICOM 4035 ECE, UPRM 23 • Constructor definition and invocation • Return statements are not allowed in a constructor body • A new instance of this class is created and its constructor is used to initialize its isntance variables • Must be called using new operator • Fish myFish = new Fish(y, “Wally”); • Classes that define Stand – alone Java program has the main method ICOM 4035 ECE, UPRM 24 • Java Aquarium //system looks for compiled version of Aquarium class and invokes the special main method in that class ICOM 4035 ECE, UPRM 25 Statement blocks and local variables • Two ways of declaring local variables • type name; • type name = initial_value; ICOM 4035 ECE, UPRM 26 Expressions • Expressions involve the use of literals, variables and operators • Variables and constants are used expressions to define new values/modify variables • Literal: is any “constant” value – Null object reference – Boolean: true and false – Integer: type int, (32-bit integer), long iteger: 176L or -52l (64-bit integer) – Floating point: default for floating point numbers is double, 3.14E2 or .19e10 ICOM 4035 ECE, UPRM 27 – Character, ‘a’, ‘?’ are character constants – Special characters – String literal: sequence of characters “have a nice day” ICOM 4035 ECE, UPRM 28 Operators • • • • Assignment operator : variable=expression i = j = 25; Arithmetic operators: +, -, *, /, % Increment and decrement operators – int i=8; – int j=i++; – int k=++i; – int m=i--; – int n = 9+i++; ICOM 4035 ECE, UPRM 29 Logical operators • • • • < , <=, ==, !=, >=, > Boolean: ! Not && conditional and, || conditional or Bitwise operators: ~ bitwise complement, & bitwise and, | bitwise or, ^ bitwise exclusive or, <<, >>, >>> • Operational assignment operators: variable op = expression • Variable = variable op expression ICOM 4035 ECE, UPRM 30 Arrays ICOM 4035 ECE, UPRM 31 ICOM 4035 ECE, UPRM 32 Declaring arrays • Element_type[] array_name = {init_val_0, init_value_1,.., init_val_N-1} • int[] primes = {2,3,5,7,11} • element_type[] array_name; • new element_type[length] ICOM 4035 ECE, UPRM 33 Arrays are objects ICOM 4035 ECE, UPRM 34 Cloning an array ICOM 4035 ECE, UPRM 35 // Example 1 // --------- // First declare //reference and then construct it. int[] ExampleArray1; ExampleArray1 = new int[24]; // Example 2 // --------- // This can be considered //the short form for declaring and construction. int[] ExampleArray2 = new int[24]; ICOM 4035 ECE, UPRM 36 // Example 3 // --------- // Construct and assign //an array using a single command. String[] ExampleArray3 = { "Sun Solaris" , "HPUX" , "Linux" , "MS Windows" , "Macintosh" }; int[] array = null; int[] arr = new int[] {1,2,3}; int[][] twoDimArray = { {1,2,3}, {4,5,6}, {7,8,9} }; int[][] myArray = new int[5][]; ICOM 4035 ECE, UPRM 37 Testing 2D array class TestTwoDimArrays { // initialize # of rows static int [][] myArray = new int[3][]; public static void main(String[] args) { myArray[0] = new int[3]; // initialize # of cols myArray[1] = new int[4]; // in each row myArray[2] = new int[5]; for(int i=0; i<3; i++) // fill and print the array fillArray(i, i+3); System.out.println(); } // end main() private static void fillArray(int row, int col) { for( int i=0; i<col; i++) myArray[row][i] = i; for( int i=0; i<col; i++) System.out.print(myArray[row][i]); System.out.println(); } } ICOM 4035 ECE, UPRM 38 Exercises in group • Suppose that we create an array A of GameEntry objects, with integer scores field, we cloe A and store the result in an array B. If we set A[4].score =550, what is the score value of GameEntry object referenced by B[4]? • Write a Java method that takes an array of int values and determines if all the numbers are different from each other. ICOM 4035 ECE, UPRM 39