CSC240 Computer Science III

Slides:



Advertisements
Similar presentations
1 Value vs. reference semantics. Recall: Value semantics value semantics: Behavior where variables are copied when assigned to each other or passed as.
Advertisements

Java Syntax Primitive data types Operators Control statements.
Introduction to Java Appendix A. Appendix A: Introduction to Java2 Chapter Objectives To understand the essentials of object-oriented programming in Java.
Copyright 2006 by Pearson Education 1 Building Java Programs Chapters 3-4: Using Objects.
By Nicholas Policelli An Introduction to Java. Basic Program Structure public class ClassName { public static void main(String[] args) { program statements.
Spring 2008 Mark Fontenot CSE 1341 Principles of Computer Science I Note Set 2.
1 © 2002, Cisco Systems, Inc. All rights reserved. Arrays Chapter 7.
Property of Jack Wilson, Cerritos College1 CIS Computer Programming Logic Programming Concepts Overview prepared by Jack Wilson Cerritos College.
Java Programming: From Problem Analysis to Program Design, 4e Chapter 2 Basic Elements of Java.
1 CIS 2168 Data Structures and Algorithms in JAVA Brief Introduction to JAVA.
Objects.
CSC 142 Computer Science II Zhen Jiang West Chester University
Chapter 3 Syntax, Errors, and Debugging Fundamentals of Java.
CS305j Introduction to Computing Classes 1 Topic 23 Classes – Part I "A 'class' is where we teach an 'object' to behave." -Rich Pattis Based on slides.
CSC 142 Computer Science II Zhen Jiang West Chester University
Attribute - CIS 1068 Program Design and Abstraction Zhen Jiang CIS Dept. Temple University SERC 347, Main Campus 12/24/2016.
Lecture 3: More Java Basics Michael Hsu CSULA. Recall From Lecture Two  Write a basic program in Java  The process of writing, compiling, and running.
1 reading: 3.3 Using objects. Objects So far, we have seen: methods, which represent behavior variables, which represent data (categorized by types) It.
Chapter 1.2 Introduction to C++ Programming
Computer Organization and Design Pointers, Arrays and Strings in C
Winter 2009 Tutorial #6 Arrays Part 2, Structures, Debugger
Object - CIS 1068 Program Design and Abstraction
Chapter 2 Basic Computation
Java Programming: From Problem Analysis to Program Design, 3e Chapter 7 User-Defined Methods.
Chapter 1.2 Introduction to C++ Programming
“Interview coding is not the same skill as coding in real life where you have Stack Overflow, reference materials, and an editor. ”
Chapter 3 Syntax, Errors, and Debugging
Java Primer 1: Types, Classes and Operators
Documentation Need to have documentation in all programs
Object Oriented Programming
Selenium WebDriver Web Test Tool Training
Primitive Data, Variables, Loops (Maybe)
Java Review: Reference Types
Java Programming: From Problem Analysis to Program Design, 4e
CSC115 Introduction to Computer Programming
Instance Method Review - CIS 1068 Program Design and Abstraction
CSC240 Computer Science III
CSC240 Computer Science III
Subroutines Idea: useful code can be saved and re-used, with different data values Example: Our function to find the largest element of an array might.
Arrays, For loop While loop Do while loop
Building Java Programs Chapter 2
Starting JavaProgramming
Topics Introduction to File Input and Output
Defining Classes and Methods
Introduction to Abstract Data Types
Variables ICS2O.
Chapter 2: Basic Elements of Java
Programming Funamental slides
Introduction to Primitive Data types
Variables Title slide variables.
Introduction C is a general-purpose, high-level language that was originally developed by Dennis M. Ritchie to develop the UNIX operating system at Bell.
Building Java Programs
Building Java Programs Chapter 2
Building Java Programs
Chapter 2: Introduction to C++.
Session 2: Introduction to Object Oriented Programming
Introduction to Data Structure
Chapter 2 Programming Basics.
Building Java Programs
Instance Method – CSC142 Computer Science II
Suggested self-checks: Section 7.11 #1-11
Defining Classes and Methods
Defining Classes and Methods
Classes, Objects and Methods
CS2013 Lecture 7 John Hurley Cal State LA.
Building Java Programs Chapter 2
Topics Introduction to File Input and Output
Introduction to Primitive Data types
SPL – PS2 C++ Memory Handling.
Presentation transcript:

CSC240 Computer Science III Zhen Jiang Dept. of Computer Science West Chester University West Chester, PA 19383 zjiang@wcupa.edu 12/7/2018

Table of Contents Introduction to object Class and object Representing objects Calling methods Fields Remarks Value vs. reference Summary 12/7/2018

Objects See the execution of ShowButtonDemo: Can you know what to build after each button is clicked? -- No need to care how to build it now because you will learn it later Can you imagine how to develop the whole program if we solely depend on loop and if-block? How to handle different order of button clicking? Programming – non-sequential, object-oriented Providing the support Leaving the sequence to user All kinds of use (now considering your support?) 12/7/2018

data type: A category of data values. Example: integer, real number, string Java data types are divided into two sets: primitive types: Java's 8 built-in simple data types for numbers, text characters, and logic. boolean, char, byte, short, int, long, float, double object types: All other types! e.g., Scanner, System, String, Math

object: An variable that contains data and behavior. There are variables inside the object, representing its data. There are methods inside the object, representing its behavior. class: Basic building block of Java programs (what we have seen so far)‏ AND Types for objects

Theoretical examples: A class Person could represent objects that store a name, height, weight, hair color, IQ, etc… and those values’ change A class Laptop could represent objects that store speed, screen size, color, dimensions, brand, etc… and the variety of status’ change Examples from Java: The class String represents objects that store text characters. The class Scanner represents objects that can tokenize streams of characters.

Class and objects (Dog) Source directory http://www.cs.wcupa.edu/~zjiang/Dog.pdf http://www.cs.wcupa.edu/~zjiang/DogDemo.pdf How to run multi-class program

How Dog class is used in DogDemo Type of object variable What is provided in Dog How are they used with the variable of Dog class Attribute and method

Data stored in each Dog object: Useful methods/behaviors in each Dog object: Field , attribute, data name breed age Method, behavior, function, status change Description writeOutput ( ) Display data status getAgeInHumanYears ( ) Calculate with current status

construct: To create a new object. Objects are constructed with the new keyword. Constructing objects, general syntax: <class> <name> = new <class>(<arguments>); Examples: Dog scooby = new Dog( ); Scanner console = new Scanner(System.in); Q: Wait a minute! Why don’t we construct strings with new? A1: Strings are one of the most commonly used objects, so they have special syntax (quotation marks) to simplify their construction. A2: Also, you can if you want to: String s = new String(“hi”);

So far, I have drawn primitive types like this: int x = 7; 7 X:

Representing objects I will represent object types like this: ? ? Dog balto = new Dog(); balto.name = “Balto”; Fields name: breed: age: balto: “Balto” ? ? Variable, with slot in memory Reference, a pointer to the object’s data Data, in another part of memory

Object variables are references to the location in memory where their data resides. We draw references as pointers. Actually, balto stores the address of the location in memory where its data is. Fields name: breed: age: balto: “Balto” ? ? Variable, with slot in memory Reference, a pointer to the object’s data Data, in another part of memory

null is a value for all object types that says, “this object is a reference to nothing at all” We draw null objects with a slash Note that null objects have no memory reserved for their data! Dog p1 = null; p1:

Calling methods on objects Since the methods are bundled in the objects, calling these methods requires specifying which object we are talking to. Calling a method of an object, general syntax: <variable>.<method name>(<arguments>)‏ The results may vary from one object to another. Examples: String s1 = “Homey da Clown”; String s2 = “Bubbles the clown”; System.out.println(s1.length()); // prints 14 System.out.println(s2.length()); // prints 17 int humanYears = scooby.getAgeInHumanYears ( );

When we use the “.” operator on an object, we access the stuff (methods and/or data) that the object references (or points to). This is called dereferencing. The “.” operator is the dereferencing operator.

<class>.<method> We have seen three ways to call methods: Type: No ‘.’ used <class>.<method> <variable>.<method> When it’s used: For methods defined in the same class as they’re called For static methods defined in another class For non-static or instance methods defined in another class Examples: myMethod(); Math.max(a,b) myString.length() Integer.parseInt(“6”) console.nextInt() Server.gcd(15,12) myPoint.translate(2,2)

Fields Fields are variables that contain data for an object. Since the fields are bundled in the objects, referring to fields requires specifying an object. Referring to the field of an object, general syntax: <variable>.<field name> Examples: scooby.name = “Scooby”; Scooby.age = 42; // displays dog’s age System.out.println(“He is“ + scooby.age + “ years old, or “);

Remarks NullPointerException Point p = null; p.x = 7; // Error! p.setLocation(0,0); // Error! If you try to dereference a null object, it will cause a NullPointerException. Why? This is a very common error, but one nice thing about Java is that it is often fairly easy to fix this kind of error (in my experience).

Concept: An object is an instance of its class. Each instance has its own local copy of the state and behavior defined in the class template. Example: each Dog object has its own name, and its own getAgeInHumanYears method.

state: String name, breed int age Dog class state: String name, breed int age behavior: writeOutput ( ) getAgeInHumanYears ( )‏ Point object balto state: “Balto” (name) 8 (age) “Siberian Husky” (breed) behavior: getAgeInHumanYears ( ) writeOutput ( ) Point object scooby state: “Balto” (name) 8 (age) “Siberian Husky” (breed) behavior: getAgeInHumanYears ( ) writeOutput ( )

Value vs. Reference value semantics: Behavior where variables are copied when assigned to each other or passed as parameters. Primitive types in Java use value semantics. Modifying the value of one variable does not affect other. Example: int x = 5; int y = x; // x = 5, y = 5 y = 17; // x = 5, y = 17 x = 8; // x = 8, y = 17

reference semantics: Behavior where variables refer to a common value when assigned to each other or passed as parameters. Object types in Java use reference semantics. Object variables do not store an object; they store the address of an object's location in the computer memory. We graphically represent addresses as arrows. Example: Dog balto = new Dog ( ); balto.name = “Balto”; balto.age = 8; balto.breed = “Siberian Husky”; Balto 8 Siberian Husky balto

If two object variables are assigned the same object, the object is NOT copied; instead, the object’s address is copied. As a result, both variables will point to the same object. Calling a method on either variable will modify the same object. Example: Dog balto = new Dog(); Dog myDog = balto; Balto 8 Siberian Husky balto myDog

Objects have reference semantics for several reasons: efficiency: Objects can be large and bulky. Having to copy them every time they are passed as parameters would slow down the program. sharing: Since objects hold important state, it is often more desirable for them to be shared by parts of the program when they're passed as parameters. Often we want the changes to occur to the same object.

BAD Objects store references, or addresses. Comparing two objects with == will test if they have the same address. This is NOT what you want. DO NOT DO THIS BAD Dog balto = …; Dog scooby = …; if(balto == scooby) { … }

Dog scooby = new Dog ( ); Dog mydog = new Dog ( ); Is mydog == scooby true or false? It’s false: they point to different spots in memory. So they store different addresses. But we want it to be true , obviously!

All classes in Java have a built-in equals method For the Dog class: mydog.equals(scooby) This returns true if mydog and scooby have the same data It doesn’t matter if they reference different locations in memory Likewise, use !mydog.equals(scooby) instead of mydog != scooby

Summary Object types Primitive types Constructed with the new keyword Values don’t need to be constructed References to memory location that stores their data Store data directly in memory slot Can be null (have no data) Cannot be null Can cause NullPointerExceptions Cannot cause NullPointerExceptions Contain state and behavior Contain state only Use reference semantics Use value semantics Use equals() method Use ==, !=

Class & object, UML representation, Multiple file project, lab class Representing object Sample program to explain the declaration (construction), method call, (attribute) field, and reference of object (value change and comparison), Dog.java & DogDemo.java, 12/7/2018