James Tam CPSC 233: Introduction to Classes and Objects, Part I Attributes and methods Creating new classes References: Dynamic memory allocation and.

Slides:



Advertisements
Similar presentations
James Tam Linked Lists in Pascal Linked Lists In this section of notes you will learn how to create and manage a dynamic list.
Advertisements

Basic -2 Classes and Objects. Classes and Objects A class is a complex data TYPE An object is an instance of a class. Example: Class: Person Objects:
Based on Java Software Development, 5th Ed. By Lewis &Loftus
Written by: Dr. JJ Shepherd
Abstract Data Types Data abstraction, or abstract data types, is a programming methodology where one defines not only the data structure to be used, but.
James Tam CPSC 233: Introduction to Classes and Objects, Part I Attributes and methods Creating new classes References: Dynamic memory allocation and.
James Tam Exception handling in Java Java Exception Handling Dealing with errors using Java’s exception handling mechanism.
James Tam CPSC 233: Introduction to Classes and Objects Attributes and methods Creating new classes References: Dynamic memory allocation and automatic.
James Tam Java Exception Handling Handling errors using Java’s exception handling mechanism.
James Tam Intermediate Pascal to Java examples Pascal To Java: The Transition Documentation Variables and constants Advanced input and output Decision.
James Tam Object-Oriented Design Approaches to object-oriented design Some principles for good design Benefits and Drawbacks of the Object-Oriented Approach.
James Tam Data structures in Java Data Structures In Java In this section of notes you will learn about two common types of data structures: Queues Stacks.
Road Map Introduction to object oriented programming. Classes
James Tam Advanced Java Programming After mastering the basics of Java you will now learn more complex but important programming concepts as implemented.
James Tam CPSC 233: Introduction to Classes and Objects, Part II More on Java methods Relations between classes Association Aggregation Multiplicity Issues.
1 Chapter 4 Language Fundamentals. 2 Identifiers Program parts such as packages, classes, and class members have names, which are formally known as identifiers.
James Tam Java Exception Handling Handling errors using Java’s exception handling mechanism.
James Tam Introduction To Object-Oriented Programming Encapsulation Defining classes and instantiating objects Attributes and methods References and parameter.
James Tam Java Exception Handling Handling errors using Java’s exception handling mechanism.
James Tam Introduction To Object-Oriented Programming This section includes introductions to fundamental object-oriented principles such as information.
Terms and Rules Professor Evan Korth New York University (All rights reserved)
James Tam Object-Oriented Design And Software Testing In this section of notes you will learn about principles of good design as well how testing is an.
James Tam CPSC 233: Introduction to Classes and Objects Attributes and methods Creating new classes References: Dynamic memory allocation and automatic.
James Tam Introduction To Object-Oriented Programming This section includes introductions to fundamental object-oriented principles such as information.
James Tam Object-Oriented Principles in Java: Part I Encapsulation Information Hiding Implementation Hiding Creating Objects in Java Class attributes.
Applying OO Concepts Using Java. In this class, we will cover: Overriding a method Overloading a method Constructors Mutator and accessor methods The.
James Tam Introduction To Data Structures This section introduces the concept of a data structure as well as providing the details of a specific example:
James Tam Object-Oriented Design And Software Testing In this section of notes you will learn about principles of good design as well how testing is an.
Java Exception Handling Handling errors using Java’s exception handling mechanism.
James Tam Introduction To Object- Oriented Programming This section includes introductions to fundamental object-oriented principles such as encapsulation,
Programming Languages and Paradigms Object-Oriented Programming.
Writing Classes (Chapter 4)
James Tam Advanced Java Programming After mastering the basics of Java you will now learn more complex but important programming concepts as implemented.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
An Introduction to Java Chapter 11 Object-Oriented Application Development: Part I.
French Territory of St. Pierre CSE 114 – Computer Science I Arrays.
James Tam Introduction To Object- Oriented Programming Basic Object-Oriented principles such as encapsulation, overloading as well the object-oriented.
Spring 2008 Mark Fontenot CSE 1341 Principles of Computer Science I Note Set 2.
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
James Tam Introduction To Object-Oriented Programming This section includes introductions to fundamental object-oriented principles such as information.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 13: Introduction to Classes.
Chapter 13. Procedural programming vs OOP  Procedural programming focuses on accomplishing tasks (“verbs” are important).  Object-oriented programming.
Object Based Programming Chapter 8. 2 In This Chapter We will learn about classes Garbage Collection Data Abstraction and encapsulation.
An Object-Oriented Approach to Programming Logic and Design Chapter 3 Using Methods and Parameters.
JAVA Classes Review. Definitions Class – a description of the attributes and behavior of a set of computational objects Constructor – a method that is.
OOP in Java : © W. Milner 2005 : Slide 1 Java and OOP Part 2 – Classes and objects.
Topic 1 Object Oriented Programming. 1-2 Objectives To review the concepts and terminology of object-oriented programming To discuss some features of.
Java Exception Handling Handling errors using Java’s exception handling mechanism.
Chapter 10 Defining Classes. The Internal Structure of Classes and Objects Object – collection of data and operations, in which the data can be accessed.
Chapter 6 Introduction to Defining Classes. Objectives: Design and implement a simple class from user requirements. Organize a program in terms of a view.
AP Computer Science edition Review 1 ArrayListsWhile loopsString MethodsMethodsErrors
Copyright © 2002 W. A. Tucker1 Chapter 10 Lecture Notes Bill Tucker Austin Community College COSC 1315.
CIS 270—Application Development II Chapter 8—Classes and Objects: A Deeper Look.
CMSC 202 Advanced Section Classes and Objects: Object Creation and Constructors.
James Tam Introduction To Object-Oriented Programming This section includes introductions to fundamental object-oriented principles such as information.
In this class, we will cover: Overriding a method Overloading a method Constructors Mutator and accessor methods The import statement and using prewritten.
1 Introduction to Computer Science for Majors II CPSC 233, Winter 2013 CPSC 233, winter 2013 Tutorial 7, Feb 6/7, 2013.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 13: Introduction to Classes.
James Tam Introduction To Object-Oriented Programming This section includes introductions to fundamental object-oriented principles such as information.
CPSC 252 ADTs and C++ Classes Page 1 Abstract data types (ADTs) An abstract data type is a user-defined data type that has: private data hidden inside.
Classes CS 162 (Summer 2009). Parts of a Class Instance Fields Methods.
Chapter 3: Using Methods, Classes, and Objects
Introduction to Classes
Introduction To Data Structures
Applying OO Concepts Using Java
Introduction To Data Structures
Advanced Java Programming
Introduction To Object-Oriented Programming
Java Exception Handling
Presentation transcript:

James Tam CPSC 233: Introduction to Classes and Objects, Part I Attributes and methods Creating new classes References: Dynamic memory allocation and automatic garbage collection Encapsulation and information hiding Constructors Shadowing Arrays

James Tam What Does Object-Oriented Mean? Procedural approach (CPSC 231) Design and build the software in terms of actions (verbs) Object-Oriented approach (CPSC 233) Design and build the software in terms of things (nouns)

James Tam An Example Of The Procedural Approach FileEditHelp … Creating new document Opening a document Saving a document … Exiting program PowerPoint

James Tam An Example Of The Object-Oriented Approach Mummy Scorpion Dragon Screamer Ghost Knight Monsters Weapons Armour Broadsword Longbow Rapier Dungeon Master :

James Tam Example Objects: Monsters From Dungeon Master Dragon Scorpion Couatl

James Tam Ways Of Describing A Monster What can the dragon do? What are the dragon’s attributes?

James Tam Monsters: Attributes Represents information about the monster: Name Damage it inflicts Damage it can sustain Speed :

James Tam Monsters: Operations Represents what each monster can do (verb part): Dragon Scorpion Stinger

James Tam Monsters: Operations Couatl Serpent (poison) Wings

James Tam Pascal Records Vs. Java Objects Composite type (Records) Information (attributes) What the variable “knows” 18’ 25’

James Tam Pascal Records Vs. Java Objects Composite type (Objects) Information (attributes) What the variable “knows” Operations (methods 1 ) What the variable “can do” 1 A method is another name for a procedure or function in Java 18’ 25’

James Tam Information Hiding An important part of Object-Oriented programming Protects the inner-workings (data) of a class Only allow access to the core of an object in a controlled fashion (use the public parts to access the private sections)

James Tam Illustrating The Need For Information Hiding: An Example Creating a new monster: “The Critter” Attribute: Height (must be 60” – 72”)

James Tam Illustrating The Need For Information Hiding: An Example Creating a new monster: “The Critter” Attribute: Height (must be 60” – 72”)

James Tam Working With Objects In Java I) Define the class II) Create an instance of the class (instantiate an object) III) Using different parts of an object

James Tam I) Defining A Java Class Format of class definition: class { instance fields/attributes instance methods }

James Tam Defining A Java Class (2) Format of instance fields: 1 ; Format of instance methods: 1 ( …) { } 1) Can be public or private but typically instance fields are private while instance methods are public 2) Valid return types include the simple types (e.g., int, char etc.), predefined classes (e.g., String) or new classes that you have defined in your program. A method that returns nothing has return type of “void”.

James Tam Defining A Java Class (3) Example: class Foo { private int num; public void greet () { System.out.println(“Hello”); }

James Tam II) Creating Instances Of A Class Format: = new (); Example: Foo f = new Foo (); Note: “f” is not an object of type “Foo” but a reference to an object of type “Foo”.

James Tam References It is a pointer that cannot be de-referenced by the programmer Automatically garbage collected when no longer needed

James Tam De-Referencing Pointers: Pascal Example I numPtr var numPtr : ^ integer; numPtr ^ begin new(numPtr);

James Tam De-Referencing Pointers: Pascal Example II type Client = record firstName : array [1..24] of char; lastName : array [1..24] of char; income : real; array [1..50] of char; end; (* Declaration of record Client *) NodePointer = ^ Node; Node = record data : Client; nextPointer : NodePointer; end; (* Declaration of record Node *):: writeln('First name: ':20, currentNode^.data.firstName);

James Tam III) Using The Parts Of A Class Format:. ; Example: Foo f = new Foo (); f.greet(); Note: In order to use the dot-operator “.” the instance field or method cannot have a private level of access

James Tam Java References It is a pointer that cannot be de-referenced by the programmer Automatically garbage collected when no longer needed

James Tam Garbage Collection And Pointers: Pascal Example numPtrnumPtr ^

James Tam Garbage Collection And Pointers: Pascal Example numPtrnumPtr ^ dispose(numPtr);

James Tam Garbage Collection And Pointers: Pascal Example numPtrnumPtr ^ dispose(numPtr); numPtr := NIL; NIL

James Tam Automatic Garbage Collection Of Java References Dynamically allocated memory is automatically freed up when it is no longer referenced ReferencesDynamic memory f1 f2 Object (A “Foo”)

James Tam Automatic Garbage Collection Of Java References (2) Dynamically allocated memory is automatically freed up when it is no longer referenced e.g., f2 = null; ReferencesDynamic memory f1 f2 Object (A “Foo”) null

James Tam Automatic Garbage Collection Of Java References (2) Dynamically allocated memory is automatically freed up when it is no longer referenced e.g., f2 = null; ReferencesDynamic memory f1 f2 Object (A “Foo”) null

James Tam The public methods can be used do things such as access or change the instance fields of the class Public And Private Parts Of A Class private data public method set dataget data

James Tam Public And Private Parts Of A Class (2) Types of methods that utilize the instance fields: 1)Accessor methods “get” Used to determine the current value of a field Example: public int getNum () { return num; } 2)Mutator methods “set” Used to set a field to a new value Example: public void setNum (int n) { num = n; }

James Tam Laying Out Your Program Java program The program must contain a “driver” class Driver The driver class is the place where the program starts running (contains the one, and only one, main method) main () { } Foo Instances of other classes can be created here Foo f = new Foo ();

James Tam Points To Keep In Mind About The Driver Class Contains the only main method of the whole program (where execution begins) Do not instantiate instances of the Driver 1 For now avoid: Defining instance fields / attributes for the Driver 1 Defining methods for the Driver (other than the main method) 1 1 Details will be provided later in this course

James Tam Putting It Altogether: First Object-Oriented Example Example (The complete example can be found in the directory /home/233/examples/classes_objects/firstExample class Driver { public static void main (String [] args) { Foo f = new Foo (); f.setNum(10); System.out.println("Current value of num = " + f.getNum()); }

James Tam Putting It Altogether: First Object-Oriented Example (2) class Foo { private int num; public void setNum (int n) { num = n; } public int getNum () { return num; }

James Tam UML 1 Representation Of A Class Foo -num: int +setNum () +getNum () - : + () UML = Unified Modeling Language

James Tam Common Errors When Using References Forgetting to initialize the reference Using a null reference

James Tam Error: Forgetting To Initialize The Reference Foo f; f.setNum(10); Compilation error! > javac Driver.java Driver.java:14: variable f might not have been initialized f.setNum(10); ^ 1 error

James Tam Error: Using Null References Foo f = null; f.setNum(10); Run-time error! > java Driver Exception in thread "main" java.lang.NullPointerException at Driver.main(Driver.java:14)

James Tam Encapsulation Grouping data methods together within a class definition to allow the private attributes to be accessible only through the public methods.

James Tam How Does Hiding Information Protect The Class? Protects the inner-workings (data) of a class e.g., range checking for inventory levels (0 – 100) The complete example can be found in the directory /home/233/examples/classes_objects/secondExample

James Tam Showing The Need For Information Hiding: An Example class Driver { public static void main (String [] args) { Inventory chinookInventory = new Inventory (); int menuSelection; int amount;

James Tam Showing The Need For Information Hiding: An Example (2) do { System.out.println("\n\nINVENTORY PROGRAM: OPTIONS"); System.out.println("\t(1)Add new stock to inventory"); System.out.println("\t(2)Remove stock from inventory"); System.out.println("\t(3)Display stock level"); System.out.println("\t(4)Check if stock level is critically low"); System.out.println("\t(5)Quit program"); System.out.print("Selection: "); menuSelection = Console.in.readInt(); Console.in.readChar(); System.out.println();

James Tam Showing The Need For Information Hiding: An Example (3) switch (menuSelection) { case 1: System.out.print("No. items to add: "); amount = Console.in.readInt(); Console.in.readChar(); chinookInventory.stockLevel = chinookInventory.stockLevel + amount; System.out.println(chinookInventory.getInventoryLevel()); break; case 2: System.out.print("No. items to remove: "); amount = Console.in.readInt(); Console.in.readChar(); chinookInventory.stockLevel = chinookInventory.stockLevel - amount; System.out.println(chinookInventory.getInventoryLevel()); break;

James Tam Showing The Need For Information Hiding: An Example (4) case 3: System.out.println(chinookInventory.getInventoryLevel()); break; case 4: if (chinookInventory.inventoryTooLow()) System.out.println("Stock levels critical!"); else System.out.println("Stock levels okay"); System.out.println(chinookInventory.getInventoryLevel()); break; case 5: System.out.println("Quitting program"); break;

James Tam Showing The Need For Information Hiding: An Example (5) default: System.out.println("Enter one of 1, 2, 3, 4 or 5"); } } while (menuSelection != 5); }

James Tam Showing The Need For Information Hiding: An Example (6) class Inventory { public int stockLevel; public void addToInventory (int amount) { stockLevel = stockLevel + amount; } public void removeFromInventory (int amount) { stockLevel = stockLevel - amount; }

James Tam Showing The Need For Information Hiding: An Example (7) public boolean inventoryTooLow () { final int CRITICAL = 10; if (stockLevel < CRITICAL) return true; else return false; } public String getInventoryLevel () { return("No. items in stock: " + stockLevel); }

James Tam Utilizing Information Hiding: An Example The complete example can be found in the directory /home/233/examples/classes_objects/thirdExample class Driver { public static void main (String [] args) { Inventory chinookInventory = new Inventory (); int menuSelection; int amount;

James Tam Utilizing Information Hiding: An Example (2) do { System.out.println("\n\nINVENTORY PROGRAM: OPTIONS"); System.out.println("\t(1)Add new stock to inventory"); System.out.println("\t(2)Remove stock from inventory"); System.out.println("\t(3)Display stock level"); System.out.println("\t(4)Check if stock level is critically low"); System.out.println("\t(5)Quit program"); System.out.print("Selection: "); menuSelection = Console.in.readInt(); Console.in.readChar(); System.out.println();

James Tam Utilizing Information Hiding: An Example (3) switch (menuSelection) { case 1: System.out.print("No. items to add: "); amount = Console.in.readInt(); Console.in.readChar(); chinookInventory.addToInventory(amount); System.out.println(chinookInventory.getInventoryLevel()); break; case 2: System.out.print("No. items to remove: "); amount = Console.in.readInt(); Console.in.readChar(); chinookInventory.removeFromInventory(amount); System.out.println(chinookInventory.getInventoryLevel()); break;

James Tam Utilizing Information Hiding: An Example (4) case 3: System.out.println(chinookInventory.getInventoryLevel()); break; case 4: if (chinookInventory.inventoryTooLow()) System.out.println("Stock levels critical!"); else System.out.println("Stock levels okay"); System.out.println(chinookInventory.getInventoryLevel()); break; case 5: System.out.println("Quitting program"); break;

James Tam Utilizing Information Hiding: An Example (5) default: System.out.println("Enter one of 1, 2, 3, 4 or 5"); } } while (menuSelection != 5); }

James Tam Utilizing Information Hiding: An Example (6) class Inventory { private int stockLevel; public void addToInventory (int amount) { final int MAX = 100; int temp; temp = stockLevel + amount; if (temp > MAX) { System.out.println(); System.out.print("Adding " + amount + " item will cause stock "); System.out.println("to become greater than " + MAX + " units (overstock)"); }

James Tam Utilizing Information Hiding: An Example (7) else { stockLevel = stockLevel + amount; } } // End of method addToInventory

James Tam Utilizing Information Hiding: An Example (8) public void removeFromInventory (int amount) { final int MIN = 0; int temp; temp = stockLevel - amount; if (temp < MIN) { System.out.print("Removing " + amount + " item will cause stock "); System.out.println("to become less than " + MIN + " units (understock)"); } else { stockLevel = temp; }

James Tam Utilizing Information Hiding: An Example (9) public boolean inventoryTooLow () { final int CRITICAL = 10; if (stockLevel < CRITICAL) return true; else return false; } public String getInventoryLevel () { return("No. items in stock: " + stockLevel); } }// End of class Inventory

James Tam A method that is used to initialize the attributes of an object as the objects are instantiated (automatically called) Creating Objects With The Constructor Constructor Object xyzxyz x = 1 y = 2 z = 3

James Tam Creating Objects With The Constructor (2) If no constructor is specified then the default constructor is called e.g., Sheep jim = new Sheep();

James Tam Writing Your Own Constructor Format (Note: Constructors have no return type): public ( ) { // Statements to initialize the fields of the class } Example: public Sheep () { System.out.println("Creating \"No name\" sheep"); name = "No name"; }

James Tam Overloading The Constructor Creating different versions of the constructor Each version is distinguished by the number, type and order of the parameters public Sheep () public Sheep (String n) Things to avoid when overloading constructors 1)Distinguishing constructors solely by the order of the parameters 2)Overloading constructors but having identical bodies for each

James Tam Constructors: An Example The complete example can be found in the directory /home/233/examples/classes_objects/fourthExample class Driver { public static void main (String [] args) { Sheep nellie, bill, jim; System.out.println(); System.out.println("Creating flock..."); nellie = new Sheep ("Nellie"); bill = new Sheep("Bill"); jim = new Sheep();

James Tam Constructors: An Example (2) jim.changeName("Jim"); System.out.println("Displaying updated flock"); System.out.println("\t"+ nellie.getName()); System.out.println("\t"+ bill.getName()); System.out.println("\t"+ jim.getName()); System.out.println(); }

James Tam Constructors: An Example (3) class Sheep { private String name; public Sheep () { System.out.println("Creating \"No name\" sheep"); name = "No name"; } public Sheep (String n) { System.out.println("Creating the sheep called " + n); name = n; }

James Tam Constructors: An Example (4) public String getName () { return name; } public void changeName (String n) { name = n; }

James Tam Shadowing 1)When a variable local to the method of a class has the same name as an attribute of that class. Be cautious of accidentally doing this. class Sheep { private String name; public Sheep (String n) { String name; System.out.println("Creating the sheep called " + n); name = n; }

James Tam Arrays In Java Important points to remember for arrays in Java: An array of n elements will have an index of zero for the first element up to (n-1) for the last element The array index must be an integer Arrays employ dynamic memory allocation (references) Several error checking mechanisms are available

James Tam Arrays In Java Important points to remember for arrays in Java: An array of n elements will have an index of zero for the first element up to (n-1) for the last element The array index must be an integer Arrays employ dynamic memory allocation (references) Several error checking mechanisms are available

James Tam Arrays In Java Important points to remember for arrays in Java: An array of n elements will have an index of zero for the first element up to (n-1) for the last element The array index must be an integer Arrays employ dynamic memory allocation (references) Several error checking mechanisms are available

James Tam Declaring Arrays Arrays in Java involve a reference to the array so declaring an array requires two steps: 1)Declaring a reference to the array 2)Allocating the memory for the array

James Tam Declaring A Reference To An Array Format: [] ; Example: int [] arr; int [][] arr;

James Tam Allocating Memory For An Array Format: = new [ ]; Example: arr = new int[SIZE]; arr = new int[SIZE][SIZE]; (Or combining both steps together): int [] arr = new int[SIZE];

James Tam Arrays: An Example int i, len; int [] arr; System.out.print("Enter the number of array elements: "); len = Console.in.readInt(); arr = new int [len]; System.out.println("Array Arr has " + arr.length + " elements."); for (i = 0; i < arr.length; i++) { arr[i] = i; System.out.println("Element[" + i + "]=" + arr[i]); }

James Tam Arrays In Java Important points to remember for arrays in Java: An array of n elements will have an index of zero for the first element up to (n-1) for the last element The array index must be an integer Arrays involve dynamic memory allocation (references) Several error checking mechanisms are available Using a null array reference Array bounds checking

James Tam Using A Null Reference int [] arr = null; arr[0] = 1; NullPointerException

James Tam Exceeding The Array Bounds int [] arr = new int [4]; int i; for (i = 0; i <= 4; i++) arr[i] = i; ArrayIndexOutOfBoundsException (when i = 4)

James Tam Arrays Of Objects (References) An array of objects is actually an array of references to objects e.g., Foo [] arr = new Foo [4]; The elements are initialized to null by default arr[0].setNum(1); NullPointerException

James Tam Arrays Of References To Objects: An Example The complete example can be found in the directory /home/233/examples/classes_objects/fourthExample class Driver { public static void main (String [] args) { Foo [] arr = new Foo [4]; int i; for (i = 0; i < 4; i++) { arr[i] = new Foo (i); System.out.println(arr[i].getNum()); }

James Tam Arrays Of References To Objects: An Example (2) class Foo { private int num; public Foo () { num = 0; } public Foo (int no) { num = no; }

James Tam Arrays Of References To Objects: An Example (3) public void setNum (int n) { num = n; } public int getNum () { return num; }

James Tam You Should Now Know The difference between the Object-Oriented and the Procedural approaches to software design How to use classes and objects in a Java program Defining new classes Creating references to new instances of a class Using the attributes and methods of a object What is information hiding and what are the benefits of this approach in the design a classes How to write a Java program with multiple classes (driver and with an additional class) How to write and overload constructors How to declare and manipulate arrays