400 likes | 662 Views
Classes, Types and Objects. Data Structures Chapter 1 Prof. Vidya Manian Dept. of Electrical and Comptuer Engineering. Overview. Objects, classes expressions Control flow Arrays. Objects. Objects –store data and provide methods for accessing and modifying data
E N D
Classes, Types and Objects Data Structures Chapter 1 Prof. VidyaManian Dept. of Electrical and Comptuer Engineering ECE, UPRM
Overview • Objects, classes • expressions • Control flow • Arrays ECE, UPRM
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) ECE, UPRM
Operations • Methods :constructors, procedures, and functions • Example: class declaration ECE, UPRM
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 ECE, UPRM
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 ECE, UPRM
Example of base types ECE, UPRM
Comments: /** **/ or // • ‘new’ creates a new object and returns reference to that object ECE, UPRM
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 ECE, UPRM
Number classes • Byte n.byteValue() • Short n.shortValue() • Integer n.intValue() • Long n.longValue() • Float n.floatValue() • Double n.doubleValue() ECE, UPRM
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” ECE, UPRM
Object reference • Reference variable is a pointer to some object ECE, UPRM
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 ECE, UPRM
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) ECE, UPRM
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 ECE, UPRM
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) ECE, UPRM
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 ECE, UPRM
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} ECE, UPRM
Output: • Initially d is MON • Then it is WED • I say d and t are the same: true ECE, UPRM
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 ECE, UPRM
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 ECE, UPRM
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 ECE, UPRM
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 ECE, UPRM
Java Aquarium //system looks for compiled version of Aquarium class and invokes the special main method in that class ECE, UPRM
Statement blocks and local variables • Two ways of declaring local variables • type name; • type name = initial_value; ECE, UPRM
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 ECE, UPRM
Character, ‘a’, ‘?’ are character constants • Special characters • String literal: sequence of characters “have a nice day” ECE, UPRM
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++; ECE, UPRM
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 ECE, UPRM
Arrays ECE, UPRM
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] ECE, UPRM
Arrays are objects ECE, UPRM
Cloning an array ECE, UPRM
// 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]; ECE, UPRM
// Example 3 // --------- // Construct and assign //an array using a single command. String[] ExampleArray3 = { "Sun Solaris" , "HP-UX" , "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][]; ECE, UPRM
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(); } } ECE, UPRM
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. ECE, UPRM