Jhon Alexander LaitonD83527GC10 Sg2
Jhon Alexander LaitonD83527GC10 Sg2
Jhon Alexander LaitonD83527GC10 Sg2
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
Java
a n d leSE lic 8 Fundamentals
A lex ferab
n s
Jho n-tran
no Student Guide - Volume II
D83527GC10
Edition 1.0 | December 2016 | D87050
Authors Copyright © 2014, 2015, 2016 Oracle and/or its affiliates. All rights reserved.
Jill Moritz This document contains proprietary information and is protected by copyright and
Cindy Church other intellectual property laws. You may copy and print this document solely for your
own use in an Oracle training course. The document may not be modified or altered
Nick Ristuccia in any way. Except where your use constitutes "fair use" under copyright law, you
may not use, share, download, upload, copy, print, display, perform, reproduce,
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
publish, license, post, transmit, or distribute this document in whole or in part without
Technical Contributors the express authorization of Oracle.
and Reviewers
The information contained in this document is subject to change without notice. If you
Kenneth Somerville find any problems in the document, please report them in writing to: Oracle University,
500 Oracle Parkway, Redwood Shores, California 94065 USA. This document is not
Peter Fernandez warranted to be error-free.
Jill Moritz
Restricted Rights Notice
Cindy Church
Nick Ristuccia If this documentation is delivered to the United States Government or anyone using
the documentation on behalf of the United States Government, the following notice is
Tom McGinn applicable:
Mike Williams
U.S. GOVERNMENT RIGHTS
Matt Heimer The U.S. Government’s rights to use, modify, reproduce, release, perform, display, or
a
has
disclose these training materials are restricted by the terms of the applicable Oracle
license agreement and/or the applicable U.S. Government contract.
Editors )
Anwesha Ray
Trademark Notice
l ฺ c om ideฺ
Raj Kumar m ai t Gu
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names
t
o den
may be trademarks of their respective owners.
h
Graphic Designers
i t o n@ Stu
Divya Thallap
o n la this
Rajiv Chandrabhanu
n (jh o use
Daniel Milne
a i to se t
e r L en
Publishers
a n d le lic
lex ferab
Michael Sebastian
A
on trans
Veena Narasimhan
JhBrozowski
Nita
Sumesh
n-
noKoshy
Aula Matriz SฺAฺSฺ
Contents
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
1 Introduction
About This Course 1-2
Audience 1-3
Course Objectives 1-4
Schedule 1-6
Course Environment 1-9
Test Your Lab Machines 1-11
How Do You Learn More After the Course? 1-12
Quiz 1-13
a
Summary 1-14
) has
l ฺ c om ideฺ
2 What Is a Java Program?
t m ai t Gu
Objectives 2-2
h o den
Topics 2-3
i t o n@ Stu
Purpose of a Computer Program 2-4
o n la 2-5this
n (jh2-6 o use
Translating High-Level Code to Machine Code
a i to 2-7 se t
Linked to Platform-Specific Libraries
e r L en
Platform-Dependent Programs
Topics 2-8
a n d le lic
A l ex offthe
Key Features
e r ab Language 2-9
Java
o a n s
n Is Platform-Independent
Java 2-10
h -tr Run In a Java Virtual Machine 2-11
J JavanPrograms
n o
Procedural Programming Languages 2-12
Java Is an Object-Oriented Language 2-13
Topics 2-14
Verifying the Java Development Environment 2-15
Examining the Installed JDK (Linux Example): The Tools 2-16
Examining the Installed JDK (Windows Example): The Libraries 2-17
Topics 2-18
Compiling and Running a Java Program 2-19
Compiling a Program 2-20
Executing (Testing) a Program 2-21
Output for a Java Program 2-22
Exercise 2-1 2-23
iii
Aula Matriz SฺAฺSฺ
Quiz 2-24
Summary 2-25
Objectives 3-2
Topics 3-3
Java Classes 3-4
Program Structure 3-5
Java Packages 3-6
Using the Java Code Console 3-7
Using the Java Code Console: Creating a New Java Class 3-8
Using the Java Code Console: Creating a New Java Class for an Exercise 3-9
Exercise 3-1: Creating a Class 3-10
Topics 3-11
a
has
The main Method 3-12
A main Class Example 3-13 )
l ฺ c om ideฺ
ai t Gu
Output to the Console 3-14
Fixing Syntax Errors 3-15 t m
o den
h
n@ Stu
Exercise 3-2: Creating a main Method 3-16
i t o
la this
Quiz 3-17
o n
(jh o use
Summary 3-18
i n
to se t
4 Data in a Cart
r a
L en
Objectives 4-2 e
d le lic
Topics 4-3xan
A
Variablesle 4-4 ferab
on trTypes
JhVariable a ns 4-5
n on- a Variable 4-6
Naming
Uses of Variables 4-7
Topics 4-8
Variable Declaration and Initialization 4-9
String Concatenation 4-10
String Concatenation Output 4-11
Exercise 4-1: Using String Variables 4-12
Quiz 4-13
Topics 4-14
int and double Values 4-15
Initializing and Assigning Numeric Values 4-16
Topics 4-17
Standard Mathematical Operators 4-18
Increment and Decrement Operators (++ and --) 4-19
iv
Aula Matriz SฺAฺSฺ
Summary 4-26
i n
Declaring and Initializing an Array 5-16
to se t
r a
Accessing Array Elements 5-18
L en
e
d le lic
Exercise 5-2: Using an Array 5-19
n
a
lex ferab
Quiz 5-20
n A
Topics 5-22
s
Jho n-tran
Loops 5-23
v
Aula Matriz SฺAฺSฺ
i n
References and Objects in Memory 6-30
to se t
r a
Assigning a Reference to Another Reference 6-31
L en
e
d le lic
Two References, One Object 6-32
n
a
lex ferab
Exercise 6-2: Modify the ShoppingCart to Use Item Fields 6-33
n A
Topics 6-34
s
Jho n-tran
Arrays Are Objects 6-35
no
Declaring, Instantiating, and Initializing Arrays 6-36
Storing Arrays in Memory 6-37
Storing Arrays of Object References in Memory 6-38
Quiz 6-39
Topics 6-41
Java IDEs 6-42
The NetBeans IDE 6-43
Creating a Java Project 6-44
Creating a Java Class 6-45
Avoiding Syntax Problems 6-46
Compile Error: Variable Not Initialized 6-47
Runtime Error: NullPointerException 6-48
Compiling and Running a Program by Using NetBeans 6-49
Topics 6-50
vi
Aula Matriz SฺAฺSฺ
n A
StringBuilder Append 7-20
s
Jho n-tran
Quiz 7-21
vii
Aula Matriz SฺAฺSฺ
n o 8-10
Topics
Method Arguments and Parameters 8-11
Method Parameter Examples 8-12
Method Return Types 8-13
Method Return Types Examples 8-14
Method Return Animation 8-15
Passing Arguments and Returning Values 8-16
More Examples 8-17
Code Without Methods 8-18
Better Code with Methods 8-19
Even Better Code with Methods 8-20
Variable Scope 8-21
Advantages of Using Methods 8-22
Exercise 8-1: Declare a setColor Method 8-23
viii
Aula Matriz SฺAฺSฺ
Topics 8-24
Java Puzzle Ball 8-25
Java Puzzle Ball Debrief 8-26
Static Methods and Variables 8-27
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
n A
Exercise 8-2: Overload a setItemFields Method 8-50
s
Jho n-tran
Quiz 8-51
noSummary 8-52
Challenge Questions: Java Puzzle Ball 8-53
Practice 8-1 Overview: Using Methods 8-54
Practice 8-2 Overview: Creating Game Data Randomly 8-55
Practice 8-3 Overview: Creating Overloaded Methods 8-56
9 Using Encapsulation
Interactive Quizzes 9-2
Objectives 9-3
Topics 9-4
What Is Access Control? 9-5
Access Modifiers 9-6
Access from Another Class 9-7
Another Example 9-8
ix
Aula Matriz SฺAฺSฺ
x
Aula Matriz SฺAฺSฺ
a
has
11 Working with Arrays, Loops, and Dates
Interactive Quizzes 11-2 )
l ฺ c om ideฺ
ai t Gu
Objectives 11-3
Topics 11-4 t m
o den
h
n@ Stu
Displaying a Date 11-5
i t o
la this
Class Names and the Import Statement 11-6
o n
(jh o use
Working with Dates 11-7
i n
Working with Different Calendars 11-9
to se t
r a
Some Methods of LocalDate 11-10
L en
e
d le lic
Formatting Dates 11-11
n
a
lex ferab
Exercise 11-1: Declare a LocalDateTime Object 11-12
n A
Topics 11-13
s
Jho n-tran
Using the args Array in the main Method 11-14
no
Converting String Arguments to Other Types 11-15
Exercise 11-2: Parsing the args Array 11-16
Topics 11-17
Describing Two-Dimensional Arrays 11-18
Declaring a Two-Dimensional Array 11-19
Instantiating a Two-Dimensional Array 11-20
Initializing a Two-Dimensional Array 11-21
Quiz 11-22
Topics 11-23
Some New Types of Loops 11-24
Repeating Behavior 11-25
A while Loop Example 11-26
Coding a while Loop 11-27
while Loop with Counter 11-28
xi
Aula Matriz SฺAฺSฺ
xii
Aula Matriz SฺAฺSฺ
i n
Extending Abstract Classes 12-39
to se t
Summary 12-40
r a
L en
e
d le lic
Challenge Questions: Java Puzzle Ball 12-41
n
a
lex ferab
Practice 12-1 Overview: Creating a Class Hierarchy 12-43
n A
Practice 12-2 Overview: Creating a GameEvent Hierarchy 12-44
s
Jho n-tran
o Interfaces
13 Using
n
Interactive Quizzes 13-2
Objectives 13-3
Topics 13-4
The Object Class 13-5
Calling the toString Method 13-6
Overriding toString in Your Classes 13-7
Topics 13-8
The Multiple Inheritance Dilemma 13-9
The Java Interface 13-10
Multiple Hierarchies with Overlapping Requirements 13-11
Using Interfaces in Your Application 13-12
Implementing the Returnable Interface 13-13
Access to Object Methods from Interface 13-14
xiii
Aula Matriz SฺAฺSฺ
i n
to se t
14 Handling Exceptions a
L en
Objectives 14-2 er
a n d le lic
Topics 14-3 x rab
leExceptions?
o n A
What Are
n s fe 14-4
JhExamples
n - traof Exceptions 14-5
n o Example 14-6
Code
Another Example 14-7
Types of Throwable classes 14-8
Error Example: OutOfMemoryError 14-9
Quiz 14-10
Topics 14-11
Normal Program Execution: The Call Stack 14-12
How Exceptions Are Thrown 14-13
Topics 14-14
Working with Exceptions in NetBeans 14-15
The try/catch Block 14-16
Program Flow When an Exception Is Caught 14-17
When an Exception Is Thrown 14-18
Throwing Throwable Objects 14-19
xiv
Aula Matriz SฺAฺSฺ
Quiz 14-24
Exceptions in the Java API Documentation 14-25
Calling a Method That Throws an Exception 14-26
Working with a Checked Exception 14-27
Best Practices 14-28
Bad Practices 14-29
Somewhat Better Practice 14-30
Topics 14-31
Multiple Exceptions 14-32
Catching IOException 14-33
a
has
Catching IllegalArgumentException 14-34
Catching Remaining Exceptions 14-35 )
l ฺ c om ideฺ
ai t Gu
Summary 14-36
Interactive Quizzes 14-37 t m
o den
h
n@ Stu
Practice 14-1 Overview: Adding Exception Handling 14-38
i t o
15 Deploying and Maintaining the Soccer o n la this
(jh o use
Application
Objectives 15-2
i n
to se t
Topics 15-3 a
L en
Packages 15-4 er
a n d Structure
l e lic15-5
leinxNetBeans
Packages Directory
r a b
A
Packages
n s f e 15-6
o
JhPackages n
train Source Code 15-7
n -
o 15-8
n
Topics
SoccerEnhanced.jar 15-9
Set Main Class of Project 15-10
Creating the JAR File with NetBeans 15-11
Topics 15-13
Client/Server Two-Tier Architecture 15-14
Client/Server Three-Tier Architecture 15-15
Topics 15-16
Client/Server Three-Tier Architecture 15-17
Different Outputs 15-19
The Soccer Application 15-20
IDisplayDataItem Interface 15-21
Running the JAR File from the Command Line 15-22
Text Presentation of the League 15-23
xv
Aula Matriz SฺAฺSฺ
16 Oracle Cloud
Agenda 16-2
What is Cloud? 16-3
What is Cloud Computing? 16-4
History – Cloud Evolution 16-5
Components of Cloud Computing 16-6
a
has
Characteristics of Cloud 16-7
Cloud Deployment Models 16-8 )
l ฺ c om ideฺ
ai t Gu
Cloud Service Models 16-9
Industry Shifting from On-Premises to the Cloud 16-13 t m
o den
h
n@ Stu
Oracle IaaS Overview 16-15
i t o
la this
Oracle PaaS Overview 16-16
o n
(jh o use
Oracle SaaS Overview 16-17
Summary 16-18
i n
to se t
r a
L Cloud n Service Overview
17 Oracle ApplicationeContainer
l i c e
a nd ble
Objectives x17-2
OracleAApplication ra
le feContainer Cloud Service 17-3
o n n s
JhOracle
n - tra
Application Container Cloud 17-4
n o Platform 17-5
Polyglot
Open Platform 17-6
Container-based Application Platform as a Service 17-7
Elastic Scaling 17-8
Profiling 17-9
Manageable 17-10
Deploy—Application Archive (Zip) 17-12
Application Deployment 17-13
Application Container Cloud Architecture 17-14
Load Balancer 17-15
Oracle Developer Cloud Service 17-16
Developer Cloud Service – Easy Adoption/Integration 17-17
Application Container Cloud Service Advantages 17-19
Summary 17-20
xvi
Aula Matriz SฺAฺSฺ
Question 3 A-5
Question 4 A-6
Topics A-7
Question 1 A-8
Topics A-9
Question 1 A-10
Topics A-12
Question 1 A-13
Topics A-14
Question 1 A-15
a
has
Question 2 A-16
)
l ฺ c om ideฺ
ai t Gu
B Introducing the Java Technology
Java’s Place in the World B-2 t m
o den
h
n@ Stu
Java Desktops B-3
i t o
la this
Java Mobile Phones B-4
o n
(jh o use
Java TV and Card B-5
The Story of Java B-6
i n t B-7
to sGroups
a
Identifying Java Technology
L enProduct e
Java SE B-8 e r
d le lic
Java EE B-9 a n
x rab
Java MEA leB-10 fe
o n n s
JhJavanCard
- traB-11
no Life Cycle (PLC) Stages B-12
Product
xvii
Aula Matriz SฺAฺSฺ
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Aula Matriz SฺAฺSฺ
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Using Encapsulation
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Aula Matriz SฺAฺSฺ
Interactive Quizzes
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
Before you start today’s lessons, test your knowledge by answering some quiz questions that
o n A lessons.
relate to yesterday’s
n s fe Open your quiz file from labs > Quizzes > Java SE 8
J h -tra
Fundamentals Quiz.html. Click the links for the lessons titled “Describing Objects and
n o n
Classes,” “Manipulating and Formatting the Data in Your Program,” and “Creating and Using
Methods.”
Java SE 8 Fundamentals 9 - 2
Aula Matriz SฺAฺSฺ
Objectives
Java SE 8 Fundamentals 9 - 3
Aula Matriz SฺAฺSฺ
Topics
• Access control
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
• Encapsulation
• Overloading constructors
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 9 - 4
Aula Matriz SฺAฺSฺ
o n A the
distinguish between
n s fepublic interface of a class and the actual implementation of that
Jh n-tra
interface.
no interface is what you see when you look up a class in the JDK API
• The public
documentation. You get just the information you need in order to use a class. That is,
the signatures for public methods, and data types of any public fields.
• The implementation of a class is the code itself, and also any private methods or fields
that are used by that class. These are the internal workings of a class and it is not
necessary to expose them to another class.
Java SE 8 Fundamentals 9 - 5
Aula Matriz SฺAฺSฺ
Access Modifiers
o n A is often
field’s value. This
n s feproblematic. It could be that the field represents sensitive data, such
J h -tra
as a social security number, or that some type of logic or manipulation of the data may be
n to safely modify the data. In the code example, the shirt price is declared in a
required inoorder
n
private method. You would not want outside objects, such as a customer, to be able to freely
manipulate the price of an item.
Java SE 8 Fundamentals 9 - 6
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 9 - 7
Aula Matriz SฺAฺSฺ
Another Example
The data type of the field does not match the data type of the
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
o
A dashes,
including spaces,
n the n s fe and parentheses. If the phone number is represented internally as
an int,hthen
J - t r a method for the phone number will need to parse out spaces, dashes,
setter
Java SE 8 Fundamentals 9 - 8
Aula Matriz SฺAฺSฺ
no
Java SE 8 Fundamentals 9 - 9
Aula Matriz SฺAฺSฺ
Topics
• Access control
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
• Encapsulation
• Overloading constructors
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 9 - 10
Aula Matriz SฺAฺSฺ
Encapsulation
Java SE 8 Fundamentals 9 - 11
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 9 - 12
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 9 - 13
Aula Matriz SฺAฺSฺ
16 if (newCode == 'R'){
17 colorCode = newCode;
18 return;
19 }
16 if (newCode == 'G') {
17 colorCode = newCode;
18 return;
19 }
16 if (newCode == 'B') {
17 colorCode = newCode;
18 return;
s a
19 } a
)h ฺ
19 System.out.println("Invalid colorCode. Use R, G, or B"); m
co uide
i l ฺ
ma nt G
20 }
21}
o
h ude t
@
o is St
n
a i t
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab Shirt class. However, in this class, before setting the
In the slide is another version of the
o n A method
value, the setter
n s feensures that the value is valid. If it is not valid, the colorCode field
J n-tra an error message is printed.
remainshunchanged and
Note: Voidnotype methods can have return statements. They just cannot return any values.
Java SE 8 Fundamentals 9 - 14
Aula Matriz SฺAฺSฺ
Output: s a
)h ฺ a
Before call to setColorCode() – shows default value om
ide
ilฺcerrorGmessage
Color Code: U
call to setColorCode prints u
Invalid colorCode. Use R, G, or B
Color Code: U colorCode not modified by invalid argument passed t a
mto setColorCode()
t
h o e n
o n @ Stud
n l ait this
( j ho use
Copyright © 2014,
i t o n and/ortitsoaffiliates. All rights reserved.
Oracle
r L a nse
d e l i c e
e x
Building on the previous an slides,a b lebefore the call to setColorCode, the default color value of U
n Al If you
(unset) is printed.
s f ecallr setColorCode with an invalid code, the color code is not
modified
J hoand the
- t r an value, U, is still the value. Additionally, you receive an error message
default
Java SE 8 Fundamentals 9 - 15
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
• Open the Java
l e x rab and access 09-Encaps > Exercise1.
Code Console
•
o n fe the Solution link. To go back to your code, click the Exercise link
A help,sclick
If younneed
h Any
Jagain. - a
trchanges that you have made will have been saved.
no n
Java SE 8 Fundamentals 9 - 16
Aula Matriz SฺAฺSฺ
Topics
• Access control
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
• Encapsulation
• Overloading constructors
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 9 - 17
Aula Matriz SฺAฺSฺ
Explicitly:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s a
a
)h ฺ
Using a constructor: m
co uide
i l ฺ
o t ma 39.99); n t G
Shirt theShirt = new Shirt('R', "Outdoors shirt",
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r c e n
Assuming that youx a
now n d
haveb l e li for all the private fields of Shirt, you could now
setters
le fea rShirt
instantiate andAinitialize
a object by instantiating it and then setting the various fields
throughhthe
t r ns
n amethods.
J o setter
However, n on- provides a much more convenient way to instantiate and initialize an object by
Java
using a special method called a constructor.
Java SE 8 Fundamentals 9 - 18
Aula Matriz SฺAฺSฺ
Constructors
object.
– They can receive arguments.
– When you create a constructor with arguments, it removes
the default no-argument constructor.
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r c e n
a n
All classes have atxleast
d
one b l e li
constructor.
e fera
Alnot
If the code n
o does
a n s an explicit constructor, the Java compiler automatically supplies a
include
h
J n-tr
no-argument constructor. This is called the default constructor.
no
Java SE 8 Fundamentals 9 - 19
Aula Matriz SฺAฺSฺ
no
Java SE 8 Fundamentals 9 - 20
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r c e n
a
When you explicitlyxcreate
n d l e li
anboverloaded constructor, it replaces the default no-argument
constructor. A l e fe r a
o n n s
You may
- tra why you have been able to instantiate a Shirt object with Shirt
Jh be nwondering
myShirt o = new Shirt() even if you did not actually create that no-argument constructor.
n
If there is no explicit constructor in a class, Java assumes that you want to be able to
instantiate the class, and gives you an implicit default no-argument constructor. Otherwise,
how could you instantiate the class?
The example above shows a new constructor that takes arguments. When you do this, Java
removes the implicit default constructor. Therefore, if you try to use Shirt myShirt = new
Shirt(), the compiler cannot find this constructor because it no longer exists.
Java SE 8 Fundamentals 9 - 21
Aula Matriz SฺAฺSฺ
Overloading Constructors
2 ... //fields
3
4 // No-argument constructor
5 public Shirt() { If required, must be added explicitly
6 setColorCode('U');
7 }
8 // 1 argument constructor
9 public Shirt(char colorCode ) {
10 setColorCode(colorCode);
11 }
a
has
12 // 2 argument constructor
12 public Shirt(char colorCode, double price) {
)
14 this(colorCode);
Calling the 1 argument l ฺ c om ideฺ
15 setPrice(price);
constructor t m ai t Gu
16 }
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
The code in the slide
e a
x rathree
shows b overloaded constructors:
• A default
l
Ano-argumentfe constructor
o n n s
• J Ah trawith one parameter (a char)
constructor
n -
no
• A constructor with two parameters (a char and a double)
This third constructor sets both the colorCode field and the price field. Notice, however,
that the syntax where it sets the colorCode field is one that you have not seen yet. It would
be possible to set colorCode with a simple call to setColorCode() just as the previous
constructor does, but there is another option, as shown here.
You can chain the constructors by calling the second constructor in the first line of the third
constructor using the following syntax:
this(argument);
The keyword this is a reference to the current object. In this case, it references the
constructor method from this class whose signature matches.
This technique of chaining constructors is especially useful when one constructor has some
(perhaps quite complex) code associated with setting fields. You would not want to duplicate
this code in another constructor and so you would chain the constructors.
Java SE 8 Fundamentals 9 - 22
Aula Matriz SฺAฺSฺ
Quiz
Java SE 8 Fundamentals 9 - 23
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
• Open the Java
l e x rab and access 09-ManipulateFormat > Exercise2.
Code Console
• Follow
o n the
n s fe below the code editor to modify the Customer class and then
A instructions
h -traaCustomer object using the new constructor from the ShoppingCart class.
Jinstantiate
• If you n help, click the Solution link. To go back to your code, click the Exercise link
noneed
again. Any changes that you have made will have been saved.
Java SE 8 Fundamentals 9 - 24
Aula Matriz SฺAฺSฺ
Summary
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 9 - 25
Aula Matriz SฺAฺSฺ
Play Time!
Conditionals.”
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
x rab in the lesson titled “More on Conditionals.”
You will be asked this
e question
l
A sfe
n
Jh n-tran
o
no
Java SE 8 Fundamentals 9 - 26
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 9 - 27
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 9 - 28
Aula Matriz SฺAฺSฺ
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
More on Conditionals
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Aula Matriz SฺAฺSฺ
Objectives
Java SE 8 Fundamentals 10 - 2
Aula Matriz SฺAฺSฺ
Topics
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 10 - 3
Aula Matriz SฺAฺSฺ
no
Java SE 8 Fundamentals 10 - 4
Aula Matriz SฺAฺSฺ
Example:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
o n A sare
both object references
n fe the same (that is, do the String objects point to the same location
J h -tra
in memory). For a String it is likely that instead you want to find out whether the characters
n o nString objects are the same. The best way to do this is to use the equals
within the two
method.
Java SE 8 Fundamentals 10 - 5
Aula Matriz SฺAฺSฺ
Example:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Java SE 8 Fundamentals 10 - 6
Aula Matriz SฺAฺSฺ
Example:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Java SE 8 Fundamentals 10 - 7
Aula Matriz SฺAฺSฺ
Example:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
r L a
e n se
n d e lic
• a
When you initialize a Stringl e
x rab using the new keyword, you force Java to create a new
object inA l e fe in memory even if a String object containing the same
a new location
o n n s
h -tra
character
Jwould values already exists. Therefore in the following example, name1 == name2
n n false.
oreturn
• It makes sense then that the safest way to determine equality of two string values is to
use the equals method.
Java SE 8 Fundamentals 10 - 8
Aula Matriz SฺAฺSฺ
s a
NOT ! int i = 2; a
)h ฺ
(!(i < 3)) m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
Relational operators
l e x rab in conjunction with conditional operators. You might need
are often used
o n A decision
to make a single
n s fe based on more than one condition. Under such circumstances, you
J n-tra
can usehconditional operators to evaluate complex conditions as a whole.
o the slide lists the common conditional operators in the Java programming
The tablenin
language. For example, all of the examples in the table yield a boolean result of false.
Discussion: What relational and conditional operators are expressed in the following
paragraph?
• If the toy is red, I will purchase it. However, if the toy is yellow and costs less than a red
item, I will also purchase it. If the toy is yellow and costs the same as or more than
another red item, I will not purchase it. Finally, if the toy is green, I will not purchase it.
Java SE 8 Fundamentals 10 - 9
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 10 - 10
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 10 - 11
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
• In the Java Code
l e x rab
Console, access Lessons > 10-MoreConditions > Exercise1
• Follow
o n the
n s fe below the code editor to write a ternary statement that solves
A instructions
Jtheh same
n - ra as the if/else statement in this Java class (and shown above).
tproblem
• nothe result.
Print
• Run the file to test your code.
Note: If you need help, click the Solution link. To go back to your code, click the Exercise link
again. Any changes that you have made will have been saved.
Java SE 8 Fundamentals 10 - 12
Aula Matriz SฺAฺSฺ
Topics
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 10 - 13
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
e c
a
This is the questionxyou
ndwerebasked
l e li to think about before this lesson began. What
A
conclusions did
e reach?
lyou f e raIn this topic, some Java concepts and principles will be
discussed
n canahelp
Jhothat t r ns explain this behavior.
-
non
Java SE 8 Fundamentals 10 - 14
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
The logic driving the
l e x rab game is conditional upon what type of object the ball (or
behavior in the
blade) strikes.A
o nconstructs
n s fe introduces some new conditional constructs and some new ways
This lesson
J n-tra that you already know.
of usinghthe
no
Java SE 8 Fundamentals 10 - 15
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 10 - 16
Aula Matriz SฺAฺSฺ
o n A the number
determine
n s fe of days in a month.
• J h that,
Notice
n - traif the month is 2, a nested if is used to check whether it is a leap year.
no (covered later in this lesson) would reveal how every if/else statement is
Note: Debugging
examined up until a statement is found to be true.
Java SE 8 Fundamentals 10 - 17
Aula Matriz SฺAฺSฺ
Syntax:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
01 if <condition1> {
02 //code_block1
03 }
04 else if <condition2> {
05 // code_block2
06 }
07 else {
08 // default_code
s a
09 } a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
You can chain if and
l e x rab
else constructs together to state multiple outcomes for several
o n A sThe
different expressions.
n fe syntax for a chained if/else construct is shown in the slide
Jh n-tra
example, where:
• Eachoof the conditions is a boolean expression.
n
• code_block1 represents the lines of code that are executed if condition1 is true.
• code_block2 represents the lines of code that are executed if condition1 is false and
condition2 is true.
• default_code represents the lines of code that are executed if both conditions
evaluate to false.
Java SE 8 Fundamentals 10 - 18
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
• In the Java Code
l e x rab
Console, access Lessons > 10-MoreConditions > Exercise2.
•
o theAOrder tab
Click n
n s feand follow the instructions below the code editor to code the body of
n - tra
Jtheh calcDiscount method as described above.
• nothe ShoppingCart tab and click Run to test your code.
Click
Note: If you need help, click the Solution link. To go back to your code, click the Exercise link
again. Any changes that you have made will have been saved.
Java SE 8 Fundamentals 10 - 19
Aula Matriz SฺAฺSฺ
Topics
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 10 - 20
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 10 - 21
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 10 - 22
Aula Matriz SฺAฺSฺ
Syntax:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Java SE 8 Fundamentals 10 - 23
Aula Matriz SฺAฺSฺ
• A single value
• Against fixed known values at compile time
• The following data types:
– Primitive data types: int, short, byte, char
– String or enum (enumerated types)
– Wrapper classes (special classes that wrap certain primitive types):
Integer, Short, Byte and Character
Only a single (value can be tested. a
) has
Known values l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
e c
nd bleforliindividual
If you are not able xtoa
find values test cases, it would be better to use an
l e
A instead.
if/else construct fe r a
o n n s
Jh n-tra
no
Java SE 8 Fundamentals 10 - 24
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
• In the Java Code
l e x rabConsole, access Lessons > 10-MoreConditions > Exercise3.
• Follow
o n the
n s fe below the code editor to change the calcDiscount method of
A instructions
h Order
Jthe - t a to use a switch construct instead of the chained if construct. You
rclass
may o n
nwish to just comment out the chained if statement so that you will be able to
reference it in order to duplicate the logic.
• Use a ternary statement in each switch block to replace the nested if statement logic.
• Test it by running the ShoppingCart class.
Note: If you need help, click the Solution link. To go back to your code, click the Exercise link
again. Any changes that you have made will have been saved.
Java SE 8 Fundamentals 10 - 25
Aula Matriz SฺAฺSฺ
Quiz
in a switch construct?
a. The switch construct tests whether values are greater
than or less than a single value.
b. Variable or expression where the expression returns a
supported switch type.
c. The switch construct can test the value of a float,
double, boolean, or String.
d. The switch construct tests the outcome of a booleanas a
h
expression. m) ฺ co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
Answer: b
A l ex ferab
• Answer
o n s because you must test for a single value, not a range of values.
n a is aincorrect
h
JRelational r
-toperators are not allowed.
o n
n b is correct.
• Answer
• Answer c is incorrect. The switch construct tests the value of types char, byte,
short, int, or String.
• Answer d is incorrect. The switch construct tests of value of expressions that return
char, byte, short, int, or String—not boolean.
Java SE 8 Fundamentals 10 - 26
Aula Matriz SฺAฺSฺ
Topics
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 10 - 27
Aula Matriz SฺAฺSฺ
• Logic problems
– (Why am I not getting the result I expect?)
• Runtime errors
– (Why is there a NullPointerException?)
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
e
nd ble lic to print statements.
aa
Debugging can be x useful alternative
A le fera
n s
Jho n-tran
no
Java SE 8 Fundamentals 10 - 28
Aula Matriz SฺAฺSฺ
Debugger Basics
• Breakpoints:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Java SE 8 Fundamentals 10 - 29
Aula Matriz SฺAฺSฺ
Setting Breakpoints
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 10 - 30
Aula Matriz SฺAฺSฺ
1. Start debugger
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Viewing Variables
Breakpoint
Current
line of
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
execution
s a
) h a
m
o ofideฺ
cValue
i l ฺ
o t ma nvariables t Gu
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
Here you see a debug
l e x rab
session in progress. The debugger stopped at the breakpoint line, but
o n A sbegan
then the programmer
n fe stepping through the code. The current line of execution is
Jh n-tra
indicated by the green arrow in the margin.
Notice thatothe isLeapYear variable on the current line appears in the Variables tab at the
n
bottom of the window. Here you can view the value or even change it to see how the program
would react.
Note: Debugging reveals why the switch statement offers better performance compared to
an if/else construct. Only the line containing the true case is executed in a switch
construct, whereas every if/else statement must be examined up until a statement is found
to be true.
Java SE 8 Fundamentals 10 - 32
Aula Matriz SฺAฺSฺ
Summary
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 10 - 33
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
When you have anxopportunity
l e r a b to play the game, see whether you can “pseudocode” the logic
o nseveral n fe of the ball when it has been turned into a blade. You are now
A thesbehavior
needed to control
familiarhwith
J - t r a conditional constructs. Choose the one that you think works best and is
on
easiest to read.
n
For some possible answers to these questions and more discussion, see “Appendix A: Java
Puzzle Ball Challenge Questions Answered.”
Java SE 8 Fundamentals 10 - 34
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 10 - 35
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 10 - 36
Aula Matriz SฺAฺSฺ
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Aula Matriz SฺAฺSฺ
Interactive Quizzes
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
Before you start today’s lessons, test your knowledge by answering some quiz questions that
o n A lessons.
relate to yesterday’s
n s fe Open your quiz file from labs > Quizzes > Java SE 8
J h -tra
Fundamentals Quiz.html. Click the links for the lessons titled “Using Encapsulation” and
non
“More on Conditionals.”
Java SE 8 Fundamentals 11 - 2
Aula Matriz SฺAฺSฺ
Objectives
After completing this lesson, you should be able to:
• Create a java.time.LocalDateTime object to show
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Java SE 8 Fundamentals 11 - 3
Aula Matriz SฺAฺSฺ
Topics
Feature!
• Parsing the args array
• Two-dimensional arrays
• Alternate looping constructs
• Nesting loops
• The ArrayList class
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
The first topic, “Working with dates,” focuses on the new Date Time API. This is a new feature
of Java SE 8. A
o n n s fe
Jh n-tra
no
Java SE 8 Fundamentals 11 - 4
Aula Matriz SฺAฺSฺ
Displaying a Date
Output: 2013-12-20
• LocalDate belongs to the package java.time.
• The now method returns today’s date.
• This example uses the default format for the default time
zone.
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
The now static method returns an object of type LocalDate. Of course,
A sfecalls the toString method of the LocalDate object. Its String
System.out.println
n
o an
Jh n-istr2013-12-20
representation in this example.
no
Java SE 8 Fundamentals 11 - 5
Aula Matriz SฺAฺSฺ
import java.time.LocalDate;
public class DateExample {
a
public static void main (String[] args) {
) h as
LocalDate myDate;
c o m eฺ
} a l ฺ
i Guid
m nt
} hot @ u de
n t
l a ito his S
h o n et
n ( o us
j
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
Classes in the Javaxprogramming
l e r a b language are grouped into packages depending on their
o n A example,
functionality. For
n s fe all classes related to the core Java programming language are in
J h -tra
the java.lang package, which contains classes that are fundamental to the Java
programming
n o nlanguage, such as String, Math, and Integer. Classes in the java.lang
package can be referred to in code by just their class names. They do not require full
qualification or the use of an import statement.
All classes in other packages (for example, LocalDate) require that you fully qualify them in
the code or that you use an import statement so that they can be referred to directly in the
code.
The import statement can be:
• For just the class in question
java.time.LocalDate;
• For all classes in the package
java.time.*;
Java SE 8 Fundamentals 11 - 6
Aula Matriz SฺAฺSฺ
java.time
• Main package for date and time classes
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
java.time.format
• Contains classes with static methods that you can use to
format dates and times
Some notable classes:
• java.time.LocalDate
• java.time.LocalDateTime
• java.time.LocalTime a
) h as
• java.time.format.DateTimeFormatter om ฺ
Formatting example: a ilฺc Guide
myDate.format(DateTimeFormatter.ISO_LOCAL_DATE); h otm dent
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
e
nd blepackage lic
e a
The Java API has axjava.time
a that offers many options for working with dates and
l
A classes
times. A few notable r
fe are:
o n n s
• J h -tra
java.time.LocalDate is an immutable date-time object that represents a date, often
n
no as year-month-day. Other date fields, such as day-of-year, day-of-week, and
viewed
week-of-year, can also be accessed. For example, the value “2nd October 2007” can be
stored in a LocalDate.
• java.time.LocalDateTime is an immutable date-time object that represents a date-
time, often viewed as year-month-day-hour-minute-second. Other date and time fields,
such as day-of-year, day-of-week, and week-of-year, can also be accessed. Time is
represented to nanosecond precision. For example, the value “2nd October 2007 at
13:45.30.123456789” can be stored in a LocalDateTime.
• java.time.LocalTime is an immutable date-time object that represents a time, often
viewed as hour-minute-second. Time is represented to nanosecond precision. For
example, the value “13:45.30.123456789” can be stored in a LocalTime. It does not
store or represent a date or time-zone. Instead, it is a description of the local time as
seen on a wall clock. It cannot represent an instant on the time-line without additional
information such as an offset or time zone.
Java SE 8 Fundamentals 11 - 7
Aula Matriz SฺAฺSฺ
• java.time.format.DateTimeFormatter provides static and nonstatic methods to
format dates using a specific format style. It also provides static constants (variables) that
represent specific formats.
• The example in the slide uses a static constant variable, ISO_LOCAL_DATE, from the
DateTimeFormatter class. It is passed as an argument into the format method of
Date object:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
myDate.format(DateTimeFormatter.ISO_LOCAL_DATE)
• A formatted String representing the LocalDateTime is returned from the format
method. For a more complete discussion of date formatting, see “Some Methods of
LocalDate” later in the lesson.
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 11 - 8
Aula Matriz SฺAฺSฺ
no
Java SE 8 Fundamentals 11 - 9
Aula Matriz SฺAฺSฺ
• Instance methods:
– myDate.minusMonths (15);
– myDate.plusDays (8); (long monthsToSubtract)
(long daysToAdd)
• Static methods:
– of(int year, Month month, int dayOfMonth)
– parse(CharSequence text, DateTimeFormatter
a
has
formatter)
– now() )
om ฺ
a ilฺc Guide
h otm dent
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
LocalDate has many
e a
x rab and fields. Here are just a few of the instance and static
methods
l
A might
methods that you feuse:
o n n s
• J h -tra returns a copy of this LocalDate with the specified period in months
minusMonths
non
subtracted.
• plusDays returns a copy of this LocalDate with the specified number of days added.
• of(int year, Month month, int dayOfMonth) obtains an instance of LocalDate
from a year, month, and day.
• parse(CharSequence text, DateTimeFormatter formatter) obtains an
instance of LocalDate from a text string using a specific formatter.
Read the LocalDate API reference for more details.
Java SE 8 Fundamentals 11 - 10
Aula Matriz SฺAฺSฺ
Formatting Dates
1 LocalDateTime today = LocalDateTime.now();
2 System.out.println("Today's date time (no formatting): "
3 + today);
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
4
Format the date in
5
6 String sdate =
standard ISO format.
7 today.format(DateTimeFormatter.ISO_DATE_TIME);
8 System.out.println("Date in ISO_DATE_TIME format: "
9 + sdate);
10 Localized date time in
11 String fdate = Medium format
12 today.format(DateTimeFormatter.ofLocalizedDateTime
14 (FormatStyle.MEDIUM));
15 System.out.println("Formatted with MEDIUM FormatStyle: "
s a
16 + fdate); a
)h ฺ
Output:
m
co uide
i
a tG l ฺ
Today's date time (no formatting): 2013-12-23T16:51:49.458 m
Date in ISO_DATE_TIME format: 2013-12-23T16:51:49.458 o t
h uden
Formatted with MEDIUM FormatStyle: Dec 23, 2013
o n @ 4:51:49
S t
PM
a i t i s
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
n d l e lic
The code examplex inathe slideb shows you some options for formatting the output of your
dates. l
A sfee r a
o n
h 1: Get aa nLocalDateTime object that reflects today’s date.
• J Line
- t r
• Linesno6n- 7: Get a String that shows the date object formatted in standard
ISO_DATE_TIME format. As you see in the output, the default format when you just print
the LocalDateTime object uses the same format.
• Lines 11 - 12: Call the ofLocalizedDateTime method of the DateTimeFormatter
to get a String representing the date in a medium localized date-time format. The third
line of the output shows this shorter version of the date.
Java SE 8 Fundamentals 11 - 11
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
• Open the Java
l e x rab and access 11-ArraysLoopsDates > Exercise1.
Code Console
• Follow
o n the
n s fe below the code editor.
A instructions
• JIf hyou need
- a click the Solution link. To go back to your code, click the Exercise link
trhelp,
n
noAny changes that you have made will have been saved.
again.
Java SE 8 Fundamentals 11 - 12
Aula Matriz SฺAฺSฺ
Topics
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 11 - 13
Aula Matriz SฺAฺSฺ
no class shown in the slide extracts two String arguments passed on the
The ArgsTest
command line and displays them.
To add parameters on the command line, you must leave one or more spaces after the class
name (in this case, ArgsTest) and one or more spaces between each parameter added.
NetBeans does not allow you a way to run a Java class from the command line, but you can
set command-line arguments as a property of the NetBeans project.
Java SE 8 Fundamentals 11 - 14
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 11 - 15
Aula Matriz SฺAฺSฺ
In this exercise, you parse the args array in the main method
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
• In the Java Code
e a
x rab access Lessons > 11-ArraysLoopsDates > Exercise2.
Console,
• Follow the
l fe below the code editor to parse the args array in the main
A instructions
o n n s
h -saving
Jmethod,n tra the arguments to local variables and then printing them.
• nocommand arguments as described in the slide above.
Enter
• Run the file to test your code.
• If you need help, click the Solution link. To go back to your code, click the Exercise link
again. Any changes that you have made will have been saved.
Java SE 8 Fundamentals 11 - 16
Aula Matriz SฺAฺSฺ
Topics
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 11 - 17
Aula Matriz SฺAฺSฺ
Wednesday
Thursday
Saturday
Tuesday
Monday
Sunday
Friday
Week 1
Week 2
Week 3
Week 4
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
You can store matrices of data by using multidimensional arrays (arrays of arrays, of arrays,
and so on). A A
o n s fe array (an array of arrays) is similar to a spreadsheet with
n two-dimensional
J n-tra column represents one array or list of items) and multiple rows.
multiplehcolumns (each
The diagram
n o in the slide shows a two-dimensional array. Note that the descriptive names
Week 1, Week 2, Monday, Tuesday, and so on would not be used to access the elements of
the array. Instead, Week 1 would be index 0 and Week 4 would be index 3 along that
dimension, whereas Sunday would be index 0 and Saturday would be index 6 along the other
dimension.
Java SE 8 Fundamentals 11 - 18
Aula Matriz SฺAฺSฺ
Example:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Syntax:
type [][] array_identifier;
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab additional set of brackets. The process of creating and
Two-dimensional arrays require an
using two-dimensional e is otherwise the same as with one-dimensional arrays. The
n A anastwo-dimensional
farrays
forodeclaring
syntax h
J typen[][]
- tr array_identifier;array is:
no
where:
• type represents the primitive data type or object type for the values stored in the array
• [][] informs the compiler that you are declaring a two-dimensional array
• array_identifier is the name you have assigned the array during declaration
The example shown declares a two-dimensional array (an array of arrays) called
yearlySales.
Java SE 8 Fundamentals 11 - 19
Aula Matriz SฺAฺSฺ
Syntax:
array_identifier = new type [number_of_arrays] [length];
Java SE 8 Fundamentals 11 - 20
Aula Matriz SฺAฺSฺ
yearlySales[0][0] = 1000;
yearlySales[0][1] = 1500;
yearlySales[0][2] = 1800;
yearlySales[1][0] = 1000;
yearlySales[3][3] = 2000;
Java SE 8 Fundamentals 11 - 21
Aula Matriz SฺAฺSฺ
Quiz
a. Shopping list
b. List of chores
c. Matrix
d. Bar chart containing the dimensions for several boxes
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
Answer: c
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 11 - 22
Aula Matriz SฺAฺSฺ
Topics
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 11 - 23
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 11 - 24
Aula Matriz SฺAฺSฺ
Repeating Behavior
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Woohoo!;
Get out of car;
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
A common requirement
l e x rab in a program is to repeat a number of statements. Typically, the code
continues to repeat
n e
A thesfstatements until something changes. Then the code breaks out of the
o
Jh n-tra
loop and continues nwith the next statement.
no example above, shows a while loop that loops until the areWeThereYet
The pseudocode
boolean is true.
Java SE 8 Fundamentals 11 - 25
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 11 - 26
Aula Matriz SฺAฺSฺ
Syntax:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
while (boolean_expression) {
code_block;
}
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
The while loop first
l e x rab
evaluates a boolean expression and, while that value is true, it repeats
o n ATo avoid
the code block.
n s fean infinite loop, you need to be sure that something will cause the
boolean
J h -tra
expression to return false eventually. This is frequently handled by some logic in the
n n
code blockoitself.
Java SE 8 Fundamentals 11 - 27
Aula Matriz SฺAฺSฺ
01 System.out.println("/*");
02 int counter = 0;
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Output:
/* s a
*
a
)h ฺ
m
co uide
*
i l ฺ
*
o t ma nt G
*/
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
Loops are often used
l e x rab
to repeat a set of commands a specific number of times. You can easily
o n A and
do this by declaring
n s feinitializing a counter (usually of type int), incrementing that variable
J h -tra
inside the loop, and checking whether the counter has reached a specific value in the while
on
boolean expression.
n
Although this works, the standard for loop is ideal for this purpose.
Java SE 8 Fundamentals 11 - 28
Aula Matriz SฺAฺSฺ
The standard for loop repeats its code block for a set number
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Output: i = 1; i = 2; i = 3; i = 4;
Syntax: a
h a s
01 for (<type> counter = n;
m )
02 <boolean_expression>;
i l ฺ co uideฺ
03 <counter_increment>){
t m a tG
04 code_block; o
h uden
@
on is St
05 }
a i t
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
The three essentialxelements
l e r a bof a standard for loop are the counter, the boolean expression,
A Allsoffethese are expressed within parentheses following the keyword for.
and the increment.
n
1. JAh o
counter
- t r aisndeclared and initialized as the first parameter of the for loop. (int i =
1) on
n
2. A boolean expression is the second parameter. It determines the number of loop
iterations. (i < 5)
3. The counter increment is defined as the third parameter. (i++)
The code block (shown on line 2) is executed in each iteration of the loop. At the end of the
code block, the counter is incremented by the amount indicated in the third parameter.
As you can see, in the output shown above, the loop iterates four times.
Java SE 8 Fundamentals 11 - 29
Aula Matriz SฺAฺSฺ
02 while (i < 3) {
03 System.out.println(" *");
04 i++;
05 }
Initialize Increment
counter counter
for loop
a
has
01 for (int num = 0; num < 3; num++){
02 System.out.println(" *"); )
boolean expression
m ฺ
03 } li ฺco ide
o t ma nt Gu
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
In this slide, you see
l e x rab example at the top of the slide. At the bottom, you see the
a while loop
A sfeusing a standard for loop.
same logic implemented
n
The three o
Jh essential
- t r anelements of a while loop are also present in the for loop, but in different
places. non
1. The counter (i) is declared and initialized outside the while loop on line 1.
2. The counter is incremented in the while loop on line 4.
3. The boolean expression that determines the number of loop iterations is within the
parentheses for the while loop on line 2.
4. In the for loop, all three elements occur within the parentheses as indicated in the
slide.
The output for each statement is the same.
Java SE 8 Fundamentals 11 - 30
Aula Matriz SฺAฺSฺ
boolean expression
Standard for loop
01 for (int idx = 0; idx < names.length; idx++){
02 System.out.println(names[idx]); s a
03 }
a
)h ฺ
m
o asithe
Counter
a i l ฺ cused u de
o t m ofnthe
index t Garray
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
This slide compares
l e x rab
the standard for loop to the enhanced for loop that you learned about
o n Athrough
in the lesson titled fe Multiple Items.” The examples here show each type of for loop
“Managing
n s
used tohiterate
J - t r a an array. Enhanced for loops are used only to process arrays, but
onloops can be used in many ways.
standard for
n
• The enhanced for loop example: A String variable, name, is declared to hold each
element of the array. Following the colon, the names variable is a reference to the array
to be processed. The code block is executed as many times as there are elements in
the array.
• The standard for loop example: A counter, idx, is declared and initialized to 0. A
boolean expression compares idx with the length of the names array. If idx <
names.length, the code block is executed. idx is incremented by one at the end of
each code block.
• Within the code block, idx is used as the array index.
The output for each statement is the same.
Java SE 8 Fundamentals 11 - 31
Aula Matriz SฺAฺSฺ
do/while Loop to
Find the Factorial Value of a Number
1 // Finds the product of a number and all integers below it
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s a
Outputs for two different targets: ) h a
Factorial value for 5: 120 m
co uideฺ
i l ฺ
o t ma nt G
Factorial value for 6: 720
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
The do/while loop
l e x rab
is a slight variation on the while loop.
The example
o n A s fe a do/while loop that determines the factorial value of a number,
above shows
n
h -tThe
calledJtarget.
n ra factorial value is the product of an integer, multiplied by each positive
no than itself. For example if the target parameter is 5, this method multiples 1
integer smaller
* 5 * 4 *3 * 2 * 1 resulting in a factorial value of 120.
do/while loops are not used as often as while loops. The code above could be rewritten
as a while loop like this:
while (target > 0) {
fact *= target--;
}
The decision to use a do/while loop instead of a while loop usually relates to code
readability.
Java SE 8 Fundamentals 11 - 32
Aula Matriz SฺAฺSฺ
Syntax:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
In a do/while loop,
l e x rab (shown at the bottom of the loop) is evaluated after the
the condition
code block has
n Aalreadys e executed once. If the condition evaluates to true, the code block
fbeen
o
Jh n-tra
is repeated n
continually until the condition returns false.
o the loop is, therefore, processed at least once. If you want the statement or
The bodynof
statements in the body to be processed at least once, use a do/while loop instead of a
while or for loop.
Java SE 8 Fundamentals 11 - 33
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 11 - 34
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 11 - 35
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
• In the Java Code
l e x rab
Console, access Lessons > 11-ArraysLoopsDates > Exercise3.
• Follow
o n the
n s fe below the code editor. Code the displayTotal method of the
A instructions
h -tra class so that it will iterate through the items array and print out the total
JShoppingCart
nonShopping Cart.
for the
• Skip any items that are back ordered. (You might want to examine the Item class to see
how this setting is determined.)
• If you need help, click the Solution link. To go back to your code, click the Exercise link
again. Any changes that you have made will have been saved.
Java SE 8 Fundamentals 11 - 36
Aula Matriz SฺAฺSฺ
Topics
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 11 - 37
Aula Matriz SฺAฺSฺ
Nesting Loops
How it works:
1st iteration of outer loop triggers:
Inner loop
a
has
nd
2 iteration of outer loop triggers:
Inner loop )
3 iteration of outer loop triggers:
rd
l ฺ c om ideฺ
Inner loop t m ai t Gu
and so on… h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 11 - 38
Aula Matriz SฺAฺSฺ
o n n fe local variables.
A in thesinitial
and width given
• J The
n ra loop produces the rows. It loops four times.
h outer-tfor
o for loop prints the columns for a given row. It loops ten times.
• Theninner
• Notice how the outer loop prints a new line to start a new row, whereas the inner loop
uses the print method of System.out to print an @ symbol for every column.
(Remember that, unlike println, print does not generate a new line.)
• The output is shown at the bottom: a table containing four rows of ten columns.
Java SE 8 Fundamentals 11 - 39
Aula Matriz SฺAฺSฺ
Example:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Java SE 8 Fundamentals 11 - 40
Aula Matriz SฺAฺSฺ
non
• The initArray method is called on line 2 to initialize the array with values.
• An opening message is printed on lines 3 and 4.
• On line 5, you see the outer for loop defined. The outer loop iterates through the three
years. Notice that i is used as the counter for the outer loop.
• On line 6, you see the inner for loop defined. The inner loop iterates through each
quarter of the year. It uses j as a counter. For each quarter of the year, it prints the
quarter number (Q1, Q2, …) plus the quarterly sales value in the element of the array
indicated by the row number (i) and the column number (j).
Note: The “\t” character combination creates a tab indent.
• Notice that the quarter number is calculated as j+1. Because array elements start with
0, the index number of the first element will be 0, the second element index will be 1,
and so on. To translate this into a quarter number, you add 1 to it.
• The output can be seen in the next slide.
Java SE 8 Fundamentals 11 - 41
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 11 - 42
Aula Matriz SฺAฺSฺ
Quiz
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
Answer: c
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 11 - 43
Aula Matriz SฺAฺSฺ
Quiz
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
Answer: c
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 11 - 44
Aula Matriz SฺAฺSฺ
Topics
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 11 - 45
Aula Matriz SฺAฺSฺ
ArrayList Class
Arrays are not the only way to store lists of related data.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Java SE 8 Fundamentals 11 - 46
Aula Matriz SฺAฺSฺ
• Dynamically resizes:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
r L a nse
d e l i c e
x
For lists that are very n blthe
adynamic, e ArrayList offers significant benefits such as:
• ArrayList
e
Al objects f a
erdynamically allocate space as needed. This can free you from
n s
ancode to:
ho to-write
Jhaving t r
- no n track of the index of the last piece of data added
Keep
- Keep track of how full the array is and determine whether it needs to be resized
- Increase the size of the array by creating a new one and copying the elements
from the current one into it
• When you declare an ArrayList, you have the option of specifying the object type that
will be stored in it using the diamond operator (<>). This technique is called “generics.”
This means that when accessing an element, the compiler already knows what type it is.
Many of the classes included in the collections framework support the use of generics.
• You may call methods on either the ArrayList or its individual elements.
- Assume that all 50 US states have already been added to the list.
- The examples show how to get the size of the list, or call a method on an
individual element (such as the length of a String object).
Java SE 8 Fundamentals 11 - 47
Aula Matriz SฺAฺSฺ
ArrayList.
• An ArrayList may contain any object type, including a
type that you have created by writing a class.
import java.util.ArrayList;
Java SE 8 Fundamentals 11 - 48
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 11 - 49
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 11 - 50
Aula Matriz SฺAฺSฺ
Summary
Java SE 8 Fundamentals 11 - 51
Aula Matriz SฺAฺSฺ
Play Time!
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
x rab in the lesson titled “Using Inheritance.”
You will be asked this
e question
l
A sfe
n
Jh n-tran
o
no
Java SE 8 Fundamentals 11 - 52
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 11 - 53
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 11 - 54
Aula Matriz SฺAฺSฺ
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Using Inheritance
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Aula Matriz SฺAฺSฺ
Objectives
r L a nse
d e l i c e
e x an able
n Al sfer
Jho n-tran
no
Java SE 8 Fundamentals 12 - 2
Aula Matriz SฺAฺSฺ
Topics
• Overview of inheritance
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 12 - 3
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 12 - 4
Aula Matriz SฺAฺSฺ
What is inheritance?
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
In this lesson, you x
l e will examine
r a b object-oriented concept of inheritance.
the
• Inheritance
o n n fe
A is a smechanism by which a class can be derived from another class, just as
h
J n-tr
a child a
derives certain characteristics from the parent.
• You o see this reflected in the game. When you drag an icon to the blue wheel, it
ncan
affects green objects as well as blue objects in the field of play. The green wheel derives
its characteristics from the blue wheel.
Java SE 8 Fundamentals 12 - 5
Aula Matriz SฺAฺSฺ
Inheritance Puzzle 1:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
• Methods for deflecting the ball that were originally assigned to Blue
Bumpers are also found on Green Bumpers.
Inheritance Puzzle 2:
• Green Bumpers contain methods from Blue Bumpers, PLUS methods
unique to Green Bumpers. a
a s
m )h ฺ
i l ฺ co uide
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
In the first image, both Blue Bumpers and Green Bumpers share the Triangle Wall.
In the second
o n n fe Blue Bumpers and Green Bumpers share the fan. In addition,
Aimage, sboth
h -truniquely
GreenJBumpers a have a Triangle Wall.
no n
Java SE 8 Fundamentals 12 - 6
Aula Matriz SฺAฺSฺ
Inheritance Puzzle 3:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
Green Bumpers have
e a
x rab the rotation wall with a blade.
overridden
l
A sfe
n
Jh n-tran
o
no
Java SE 8 Fundamentals 12 - 7
Aula Matriz SฺAฺSฺ
Implementing Inheritance
Java SE 8 Fundamentals 12 - 8
Aula Matriz SฺAฺSฺ
r L a
e n se
n d e lic
The subclass not only a
x rab
has accessl e to all of the public fields and methods of the superclass, but
l e
additionalfe
it can declare A fields and methods that are specific to its own requirements.
o n n s
Jh n-tra
no
Java SE 8 Fundamentals 12 - 9
Aula Matriz SฺAฺSฺ
Topics
• Overview of inheritance
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 12 - 10
Aula Matriz SฺAฺSฺ
getId() getId()
getPrice() getPrice()
getSize() getSize()
getColor() getColor()
getFit() getFit()
getGender()
setId() setId()
setPrice() setPrice()
setSize() setSize()
setColor() setColor() s a
setFit() setFit()
a
)h ฺ
setGender() m
co uide
i l ฺ
display() display()
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
The table in the slide
l e x rab
shows a set of behaviors for some classes belonging to the Duke’s
Choice shopping
o nencapsulated
n fe
A cartsapplication, the Shirt class and the Trousers class. The classes are
shown h
J fully
- t r a so that all field values are accessible only through setter and getter
n o n how both classes use many of the same methods; this may result in code
methods. Notice
duplication, making maintenance and further expansion more difficult and error-prone.
Java SE 8 Fundamentals 12 - 11
Aula Matriz SฺAฺSฺ
Code Duplication
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
getId() getId()
getId()
display() display()
display()
getPrice() getPrice()
getPrice()
getSize() getSize()
getSize()
getColor() getColor()
getColor()
getFit() getFit()
getGender()
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
If Duke's Choice decides to add a third item, socks, as well as trousers and shirts, you may
find even greater
n e
A codesfduplication. The diagram in the slide shows only the getter methods for
o
Jh n-tra
accessing the n
properties of the new objects.
no
Java SE 8 Fundamentals 12 - 12
Aula Matriz SฺAฺSฺ
Inheritance
Benefits:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Clothing
getFit() getFit()
getGender()
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab in the classes by implementing inheritance. Inheritance
You can eliminate code duplication
A stofeput common members (fields and methods) in one class (the
enables programmers
n
o
h -trhave
superclass)
J and an other classes (the subclasses) inherit these common members from
on
this new class.
n
An object instantiated from a subclass behaves as if the fields and methods of the subclass
were in the object. For example,
• The Clothing class can be instantiated and have the getId method called, even
though the Clothing class does not contain getId. It is inherited from the Item class.
• The Trousers class can be instantiated and have the display method called even
though the Trousers class does not contain a display method; it is inherited from the
Clothing class.
• The Shirt class can be instantiated and have the getPrice method called, even
though the Shirt class does not contain a getPrice method; it is inherited from the
Clothing class.
Java SE 8 Fundamentals 12 - 13
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 12 - 14
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 12 - 15
Aula Matriz SฺAฺSฺ
o n n s fe the call must be the first line of your constructor. This is done
A constructor,
call a superclass
J h -tra
using the keyword super, followed by the arguments to be passed to the superclass
on
constructor.
n
The constructor of the subclass sets variables that are unique to the subclass. The
constructor of the superclass sets variables that originate from the superclass.
Java SE 8 Fundamentals 12 - 16
Aula Matriz SฺAฺSฺ
s a
public class Clothing{ a
)h ฺ
private double price; m
co uide
i l ฺ
o t ma nt G
public Clothing(double price){
@ h ude
this.price = price;
a i t o is St
n
}}
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
Use the this keyword
l e x rabto call another constructor within the same class. This is how you call
an overloadedAconstructor.
o n n s fe
Jhsuper
Use the
n - ra to call a constructor in the superclass. When you have overloaded
tkeyword
o
subclassnconstructors, all of your constructors must eventually lead to the superclass
constructor. If you call a superclass constructor, the call must be the first line of your
constructor.
If your superclass constructors are overloaded, Java will know which superclass constructor
you are calling based on the number, type, and order of arguments that you supply.
Java SE 8 Fundamentals 12 - 17
Aula Matriz SฺAฺSฺ
In this exercise, you create the Shirt class, which extends the
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Item class.
• Add two fields that are unique to the Shirt class.
• Invoke the superclass constructor from the Shirt
constructor.
• Instantiate a Shirt object and call the display method.
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
• In the Java Code
l e x rab
Console, access Lessons > 12-Inheritance > Exercise1.
• Follow
o n the
n s fe below the code editor to create the Shirt class and then
A instructions
h -tritaand call the display method (in the Item class).
Jinstantiate
• Run onShoppingCart class to test your code. Your output should look similar to the
nthe
screenshot above.
• If you need help, click the Solution link. To go back to your code, click the Exercise link
again. Any changes that you have made will have been saved.
Java SE 8 Fundamentals 12 - 18
Aula Matriz SฺAฺSฺ
Topics
• Overview of inheritance
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 12 - 19
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 12 - 20
Aula Matriz SฺAฺSฺ
Overriding Methods
Access Modifiers:
• The method can only be overridden if it is accessible from
the subclass
• The method signature in the subclass cannot have a more
restrictive (stronger) access modifier than the one in the
superclass a
as )h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
Subclasses may implement methods that already have implementations in the superclass. In
methods finethe subclass are said to override the methods from the superclass.
this case, the A
• J Foro n
h example,
t r a ns the colorCode field is in the superclass, the color choices may
although
on- in each subclass. Therefore, it may be necessary to override the accessor
be different
n
methods (getter and setter methods) for this field in the individual subclasses.
• Although less common, it is also possible to override a field that is in the superclass.
This is done by simply declaring the same field name and type in the subclass.
Java SE 8 Fundamentals 12 - 21
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 12 - 22
Aula Matriz SฺAฺSฺ
o n Ahere.
of the getter methods
n fe one of the setter methods. The remaining getter and setter methods
and
s
J n-tra
are nothshown
Of course,o
n this display method prints out only the fields that exist in Clothing. You would
need to override the display method in Shirt in order to display all of the Shirt fields.
Java SE 8 Fundamentals 12 - 23
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 12 - 24
Aula Matriz SฺAฺSฺ
Overriding a Method:
What Happens at Run Time?
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
shirt1.display
Is it in
Shirt?
Yes No
Is it in
Call display in Clothing?
a
Shirt class.
) has
Yes om
i l ฺ c uideฺ
Call
o t ma ntinG
display
@ h udeclass.
Clothing
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
The shirt01.display
l e x rab code is called. The Java VM:
• Looksnfor
o
Adisplay
n s fein the Shirt class
a
Jh- Ifnit-istrimplemented in Shirt, it calls the display in Shirt.
o
- n If it is not implemented in Shirt, it looks for a parent class for Shirt.
• If there is a parent class (Clothing in this case), it looks for display in that class.
- If it is implemented in Clothing, it calls display in Clothing
- If it is not implemented in Clothing, it looks for a parent class for Clothing...
and so on.
This description is not intended to exactly portray the mechanism used by the Java VM, but
you may find in helpful in thinking about which method implementation gets called in various
situations.
Java SE 8 Fundamentals 12 - 25
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
• In the Java Code
l e x rab
Console, access Lessons > 12-Inheritance > Exercise12.
• Follow
o n the
n s fe below the code editor to override the display method.
A instructions
•
n - tra
h the ShoppingCart
JRun class to test your code. Your output should look similar to the
n o
screenshot above.
• If you need help, click the Solution link. To go back to your code, click the Exercise link
again. Any changes that you have made will have been saved.
Java SE 8 Fundamentals 12 - 26
Aula Matriz SฺAฺSฺ
Topics
• Overview of inheritance
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 12 - 27
Aula Matriz SฺAฺSฺ
Polymorphism
Java SE 8 Fundamentals 12 - 28
Aula Matriz SฺAฺSฺ
o
A Choice
• In thenDuke’s
n s fe shopping cart, shirts, trousers, hats, and socks are all types of
h -So
Jclothing.
n traClothing is a good candidate for the superclass to these subclasses
no of clothing.
(types)
• Duke’s Choice also sells equipment, but a piece of equipment is not a piece of clothing.
However, clothing and equipment are both items, so Item would be a good candidate
for a superclass for these classes.
Java SE 8 Fundamentals 12 - 29
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
Shirt is a (type of) Clothing. m
Trousers is a (type of) Clothing. i l ฺ co uide
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab this ability to use not only the class itself but any
A very important feature of Java is
superclass of A e its reference type. In the example shown in the slide, notice that
class fas
n totheboth s
J o
you canhrefer
t r a n a Shirt object and a Trousers object with a Clothing reference.
-
nona Clothing reference. Or a Clothing array can contain references to Shirt,
This means that a reference to a Shirt or Trousers object can be passed into a method
that requires
Trousers, or Socks objects as shown below.
• Clothing[] clothes = {new Shirt(), new Shirt(), new Trousers(),
new Socks()};
Java SE 8 Fundamentals 12 - 30
Aula Matriz SฺAฺSฺ
Polymorphism Applied
Java SE 8 Fundamentals 12 - 31
Aula Matriz SฺAฺSฺ
Clothing Trousers
getId() getId()
Only these display() display()
methods may getPrice() getPrice() Methods inherited
be called. getSize() getSize() from superclass
getColor() getColor()
Java SE 8 Fundamentals 12 - 32
Aula Matriz SฺAฺSฺ
Superclass reference
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Clothing
getId() Clothing c1 = new Trousers();
display()
getPrice()
getSize()
getColor()
Cast the
object.
The object
Trousers
s a
((Trousers)c1).getFit()
getId()
display() a
)h ฺ
getPrice() m
co uide
getSize()
i l ฺ
getColor()
o t ma nt G
getFit()
@ h ude
getGender()
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
Given that a superclass may not have access to all the methods of the object it is referencing,
o n A those
how can you access
n s fe methods? The answer is that you can do so by replacing the
Jh n-tra
superclass reference with:
no that is the same type as the object. The code in this example shows a
• A reference
Clothing reference being cast to a Trousers reference to access the getFit
method, which is not accessible via the Clothing reference. Note that the inner
parentheses around Trousers are part of the cast syntax, and the outer parentheses
around (Trousers)cl are there to apply the cast to the Clothing reference variable.
Of course, a Trousers object would also have access to the nonprivate methods and
fields in its superclass.
• An Interface that declares the methods in question and is implemented by the class of
the object. Interfaces are covered in the next lesson.
Java SE 8 Fundamentals 12 - 33
Aula Matriz SฺAฺSฺ
instanceof Operator
Possible casting error:
public static void displayDetails(Clothing cl) {
What if c1 is not a
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
cl.display();
Trousers object?
char fitCode = ((Trousers)cl).getFit();
System.out.println("Fit: " + fitCode);
}
n n
And if it is,o
for example, a Shirt, the attempt to cast it will cause a problem. (It will throw a
ClassCastException. Throwing exceptions is covered in the lesson titled “Handling
Exceptions.”)
You can code around this potential problem with the code shown in the second example in
the slide. Here the instanceof operator is used to ensure that cl is referencing an object of
type Trousers before the cast is attempted.
If you think your code requires casting, be aware that there are often ways to design code so
that casting is not necessary, and this is usually preferable. But if you do need to cast, you
should use instanceof to ensure that the cast does not throw a ClassCastException.
Java SE 8 Fundamentals 12 - 34
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
• In the Java Code
l e x rab
Console, access Lessons > 13-Interfaces > Exercise1.
• Follow
o n the
n s fe below the code editor to modify the Shirt class with a new
A instructions
h -and
Jmethod,n t rathe ShoppingCart to instantiate a Shirt object with an Item reference.
Thenocall the new method by casting the reference as a Shirt. You will need to test the
n
object type with the instanceof operator first.
• Run the ShoppingCart class to test your code. Test the use case where Item is not a
Shirt, too. Your output should look similar to the screenshot above.
• If you need help, click the Solution link. To go back to your code, click the Exercise link
again. Any changes that you have made will have been saved.
Java SE 8 Fundamentals 12 - 35
Aula Matriz SฺAฺSฺ
Topics
• Overview of inheritance
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 12 - 36
Aula Matriz SฺAฺSฺ
Abstract Classes
Clothing
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
getId()
Shirt display()
getPrice()
getFit()
getSize()
getColor()
Trousers
s a
getFit()
Socks
a
)h ฺ
getGender()
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
Sometimes a superclass
l e x rab makes sense as an object, and sometimes it does not. Duke's
n o n in each subclass (and thus can be in the superclass), but cannot really be
may be required
implemented in the superclass.
Java SE 8 Fundamentals 12 - 37
Aula Matriz SฺAฺSฺ
Abstract Classes
Java SE 8 Fundamentals 12 - 38
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 12 - 39
Aula Matriz SฺAฺSฺ
Summary
Java SE 8 Fundamentals 12 - 40
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
When you have anxopportunity
l e r a b to play the game, run any of the inheritance puzzles and
o n A sabove.
answer the questions
n fe
Jh possible
For some
n - traanswers to these questions and more discussion, see “Appendix A: Java
noChallenge Questions Answered.”
Puzzle Ball
Java SE 8 Fundamentals 12 - 41
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
When you have anxopportunity
l e r a b to play the game, run any of the inheritance puzzles and
o n A sabove.
answer the questions
n fe
Jh possible
For some
n - traanswers to these questions and more discussion, see “Appendix A: Java
noChallenge Questions Answered.”
Puzzle Ball
Java SE 8 Fundamentals 12 - 42
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 12 - 43
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
A game event is something that happens and that can be reported as game statistics by the
soccer leagueA
o n n s fe You create an abstract superclass from which all of the game
application.
Jh n-tra
event classes are inherited.
no
Java SE 8 Fundamentals 12 - 44
Aula Matriz SฺAฺSฺ
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Using Interfaces
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Aula Matriz SฺAฺSฺ
Interactive Quizzes
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
Before you start today’s lessons, test your knowledge by answering some quiz questions that
o n A lessons.
relate to yesterday’s
n s fe Open your quiz file from labs > Quizzes > Java SE 8
J h -tra
Fundamentals Quiz.html. Click the links for lessons titled “Working with Arrays, Loops, and
n n Inheritance.”
Dates” ando“Using
Java SE 8 Fundamentals 13 - 2
Aula Matriz SฺAฺSฺ
Objectives
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 13 - 3
Aula Matriz SฺAฺSฺ
Topics
• Using interfaces
• Using the List interface
• Introducing lambda expressions
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
n d lic
a
In this section, youxwill look atbale few examples of interfaces found in the foundation classes.
A le fera
n s
Jho n-tran
no
Java SE 8 Fundamentals 13 - 4
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
All classes have atxthe
l e very top
r a b of their hierarchy the Object class. It is so central to how
no have Object at the root of their hierarchy. This means that all classes have
So all classes
access to the methods of Object. Being the root of the object hierarchy, Object does not
have many methods―only very basic ones that all objects must have.
An interesting method is the toString method. The Object toString method gives very
basic information about the object; generally classes will override the toString method to
provide more useful output. System.out.println uses the toString method on an
object passed to it to output a string representation.
Java SE 8 Fundamentals 13 - 5
Aula Matriz SฺAฺSฺ
Object’s toString
method is used.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
StringBuilder
overrides Object’s
toString method.
First inherits
Object’s toString
method.
Second overrides
Object’s toString
method.
s a
a
)h ฺ
m
coto uide
The output for the i l ฺ
calls
the toString
o t mamethod n t G
of
eachh
n @ object
t u de
l a ito his S
h o n et
n ( o us
j
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
All objects have a toString method because it exists in the Object class. But the
o n A may
toString method
n s fereturn different results depending on whether or not that method has
J h -tra example in the slide, toString is called (via the println method of
been overridden. In the
System.out)
n on on four objects:
• An Object object: This calls the toString method of the base class. It returns the
name of the class (java.lang.Object), an @ symbol, and a hash value of the object
(a unique number associated with the object).
• A StringBuilder object: This calls the toString method on the StringBuilder
object. StringBuilder overrides the toString method that it inherits from Object to
return a String object of the set of characters it is representing.
• An object of type First, a test class: First does not override the toString method,
so the toString method called is the one that is inherited from the Object class.
• An object of type Second, a test class: Second is a class with one method named
toString, so this overridden method will be the one that is called.
There is a case for re-implementing the getDescription method used by the Clothing
classes to instead use an overridden toString method.
Java SE 8 Fundamentals 13 - 6
Aula Matriz SฺAฺSฺ
Output of System.out.println(shirt):
• Without overriding toString
examples.Shirt@73d16e93
s a
• After overriding toString as shown above )h ฺa
m
co Green
This shirt is a T Shirt; price: 29.99, color:
a i l ฺ u ide
o t m nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
The code examplex
l e here shows
r a b toString method overridden in the Shirt class.
the
When you override
n e
A thesftoString method, you can provide useful information when the
o n
h -trisaprinted.
objectJreference
non
Java SE 8 Fundamentals 13 - 7
Aula Matriz SฺAฺSฺ
Topics
• Using interfaces
• Using the List interface
• Introducing lambda expressions
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 13 - 8
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 13 - 9
Aula Matriz SฺAฺSฺ
o n A methods.
all of its abstract
n s fe Therefore, using an interface lets you enforce a particular public
interface
J h -tra
(set of public methods).
• In first
n onexample above, you see the declaration of the Printable interface. It contains
only one method, the print method. Notice that there is no method block. The method
declaration is just followed by a semicolon.
• In the second example, the Shirt class implements the Printable interface. The
compiler immediately shows an error until you implement the print method.
Note: A method within an interface is assumed to be abstract unless it uses the default
keyword. Default methods in an interface are new with SE 8. They are used with lambda
expressions. You will learn about lambda expressions a little later in this lesson; however,
default methods and lambda expressions are covered in even more depth in the Java SE8
New Features course.
Java SE 8 Fundamentals 13 - 10
Aula Matriz SฺAฺSฺ
getId()
display()
getPrice()
getSize()
getColor()
Outdoors
Shirt Trousers Custom Shirt
getId()
getFit() getFit() display()
getGender() getPrice()
getWeight()
s a
)h ฺa
m
co uStove
Returnable items Tent Camp Stove
a i l ฺ idefuel
getType()
o t m nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
A more complex set
l e x rab have items in two different hierarchies. If Duke's Choice
of classes may
Java SE 8 Fundamentals 13 - 11
Aula Matriz SฺAฺSฺ
Clothing
getId()
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
display()
getPrice()
getSize()
getColor()
Outdoors
Shirt Trousers Custom Shirt
getId()
doReturn() doReturn() display()
getFit() getFit() getPrice()
getGender() getWeight()
s a
)h ฺa
Camp Stove co
m Stovee
Tent
i l ฺ i d fuel
ma nt Gu
Returnable
doReturn()
doReturn()
getType() o
h ude t
doReturn()
@
o is St
n
a i t
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
The diagram in thexslide
l e shows
r a b returnable items implementing the Returnable interface
all
with its single A
o n n s fe
method, doReturn. Methods can be declared in an interface, but they cannot
J h -tra
be implemented in an interface. Therefore, each class that implements Returnable must
Java SE 8 Fundamentals 13 - 12
Aula Matriz SฺAฺSฺ
Returnable interface
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
o n A ansinfethe Returnable class are stub methods (that is, they contain only the
the abstract methods
methodhsignature).
J n-trclass, only the constructor and the doReturn method are shown.
• In theoShirt
n
• The use of the phrase “implements Returnable” in the Shirt class declaration
imposes a requirement on the Shirt class to implement the doReturn method. A
compiler error occurs if doReturn is not implemented. The doReturn method returns
a String describing the conditions for returning the item.
• Note that the Shirt class now has an “is a” relationship with Returnable. Another
way of saying this is that Shirt is a Returnable.
Java SE 8 Fundamentals 13 - 13
Aula Matriz SฺAฺSฺ
t1 has access to
getFit()
s a
Trousers and getGender()
h a
Clothing methods. Returnablem)
i l ฺ co uideฺ
r1 has access to doReturn()
t a tG
mdoReturn()
o
h uden
@
on is St
a i t
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l lic
eobject
The reference usedxto accessban determines the methods that can be called on it. So
in the case of A l e
the interfacer a
fe reference shown in the slide (r1), only the doReturn method can
o n n s
Jh n-tra
be called.
no
The t1 reference has access to all of the methods shown above. This is because of the “is a”
relationship. The Trousers class extends Clothing; therefore, a Trousers object is a
(type of) Clothing. It implements Returnable and, therefore, it is a Returnable. Clothing
is the root class and, consequently, the least specific. A reference of this type can only
access the methods of the Clothing class (and, of course Object, which is the root of all
classes).
Java SE 8 Fundamentals 13 - 14
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 13 - 15
Aula Matriz SฺAฺSฺ
Quiz
that it implements?
a. All the methods implemented in the object’s class
b. All the methods implemented in the object’s superclass
c. The methods declared in the interface
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
Answer: c
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 13 - 16
Aula Matriz SฺAฺSฺ
Quiz
a. By calling getReference
b. By casting
c. By declaring a new reference and assigning the object
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
Answer: b, c
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 13 - 17
Aula Matriz SฺAฺSฺ
Topics
• Using Interfaces
• Using the List interface
• Introducing lambda expressions
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 13 - 18
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
You were introduced
l e x rab
to the java.util package when you learned to use the ArrayList
class. Most ofA
o n the classes
n s fe and interfaces found in java.util provide support for working
Jh n-tra
with collections or lists of objects. You will consider the List interface in this section.
Java SE 8 Fundamentals 13 - 19
Aula Matriz SฺAฺSฺ
ArrayList Example
ArrayList extends
AbstractList, which in turn
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
extends AbstractCollection.
ArrayList
implements a
number of interfaces.
o n AJava API.
be found in the
n s fe
Jh n-tra
no
Java SE 8 Fundamentals 13 - 20
Aula Matriz SฺAฺSฺ
List Interface
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Many classes
implement the
List interface.
s a
a
)h ฺ
All of these object types can be assigned to a List variable: m
i l ฺ co uide
1 ArrayList<String> words = new ArrayList();
t m a tG
2 List<String> mylist = words; o
h uden
@
on is St
a i t
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
The List interfacexis
l e r a b by many classes. This means that any method that
implemented
o n A classes,
requires a List fe be passed a List reference to any objects of these types (but
may actually
n s
not the h
J abstract
- t r a because they cannot be instantiated). For example, you might pass
non
an ArrayList object, using a List reference. Likewise, you can assign an ArrayList
object to a List reference variable as shown in the code example above.
• In line 1, an ArrayList of String objects is declared and instantiated using the
reference variable words.
• In line 2, the words reference is assigned to a variable of type List<String>.
Java SE 8 Fundamentals 13 - 21
Aula Matriz SฺAฺSฺ
Example: Arrays.asList
o n n fe
A sArrayList
of type List because implements the List interface (therefore, ArrayList is
Jh n-tra
a List).
Java SE 8 Fundamentals 13 - 22
Aula Matriz SฺAฺSฺ
Example: Arrays.asList
Shortcut:
1 String[] nums = {"one","two","three"};
2 ArrayList<String> myArrayList =
new ArrayList( Arrays.asList(nums));
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
Building upon the previous example, this slide example shows how to convert an array to an
ArrayList. A
o n n s fe
• J
n - ra
Inhthe firsttexample, the conversion is accomplished in three steps:
- noLine 1 declares the nums String array.
- Line 2 converts the nums array to a List object, just as you saw on the previous
slide.
- Line 3 uses the List object to initialize a new ArrayList, called myArrayList.
It does this using an overloaded constructor of the ArrayList class that takes a
List object as a parameter.
• The second example reduces this code to two lines by using the
Arrays.asList(nums) expression as the List argument to the ArrayList
constructor.
• The myArrayList reference could be used to invoke the removeIf method you saw
on the previous slide.
Java SE 8 Fundamentals 13 - 23
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
• In the Java Code
l e x rab
Console, access Lessons > 13-Interfaces > Exercise2.
• Follow
o n the
n s fe below the code editor to convert the given array to an
A instructions
h -traand then manipulate the values in the list.
JArrayList
• If you n help, click the Solution link. To go back to your code, click the Exercise link
noneed
again. Any changes that you have made will have been saved.
Java SE 8 Fundamentals 13 - 24
Aula Matriz SฺAฺSฺ
Topics
• Using Interfaces
• Using the List interface
• Introducing lambda expressions
New SE 8
a
has
Feature!
)
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 13 - 25
Aula Matriz SฺAฺSฺ
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
You have already seen,
l e x rabin the previous exercise, that the technique shown here is not
effective. The A
o n above code
n s fe succeeds in printing out the list of names in uppercase, but it does
J h -tra list element values themselves. The toUpperCase method used in
not actually change the
the for loop
n o nsimply changes the local String variable (s in the example above) to
uppercase.
Remember that String objects are immutable. You cannot change them in place. All you
can do is create a new String with the desired changes and then reassign the reference to
point to the new String. You could do that here, but it would not be trivial.
A lambda expression makes this much easier!
Java SE 8 Fundamentals 13 - 26
Aula Matriz SฺAฺSฺ
Lambda expression
mylist.replaceAll( s -> s.toUpperCase() );
Output: s a
a
)h ฺ
List.replaceAll lambda: [NED, FRED, JESSIE, ALICE,mRICK]
i l ฺ co uide
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
The replaceAll x
l e method
r a b to the List interface. It is a default method, which means
belongs
o n A method
that it is a concrete
n s fe (not abstract) intended for use with a lambda expression. It takes
J h -tra
a particular type of lambda expression as its argument. It iterates through the elements of the
onthe result of the lambda expression to each element of the list.
list, applying
n
The output of this code shows that the actual elements of the list were modified.
Java SE 8 Fundamentals 13 - 27
Aula Matriz SฺAฺSฺ
Lambda Expressions
Long version:
mylist.replaceAll((String s) -> {return s.toUpperCase();} );
s a
Declare input Arrow ) h a
parameter token Method body co m eฺ
i l ฺ i d
Short version: o t ma nt Gu
@ h ud); e
mylist.replaceAll( s -> s.toUpperCase() n t
l a ito his S
h o n et
n ( o us
j
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
A lambda expression
l e x rab method for an Interface expressed in a new way. A
is a concrete
o n A looks
lambda expression
n s fevery similar to a method definition. You can recognize a lambda
Jh n-tra
expression by the use of an arrow token (->). A lambda expression:
Java SE 8 Fundamentals 13 - 28
Aula Matriz SฺAฺSฺ
expressions:
• java.util.functions – New
– Provides target types for lambda expressions
• java.util.stream – New
– Provides classes that support operations on streams of
values
• java.util – Enhanced
– Interfaces and classes that make up the collections s a
h a
framework m) co uideฺ
Enhanced to use lambda expressions i l ฺ
ma nt G
—
Java SE 8 Fundamentals 13 - 29
Aula Matriz SฺAฺSฺ
Lambda Types
expecting.
• replaceAll takes a UnaryOperator type expression.
s a
• All of the types do similar things, but have different inputs, a
)h ฺ
statements, and outputs. m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
The lambda types can
l e x rab
be viewed by looking at the java.util.functions package in the
A sfeThere are a great many of these and they are actually interfaces.
JDK API documentation.
n
o
They specify
J the an of the expression. Much like a method signature, they indicate the
h -trinterface
non and outputs for the expression.
inputs, statements,
Java SE 8 Fundamentals 13 - 30
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 13 - 31
Aula Matriz SฺAฺSฺ
boolean.
• Example: String in – boolean out
• removeIf takes a Predicate type expression.
– Removes all elements of the ArrayList that satisfy the
Predicate expression
s a
a
)h ฺ
• Examples: m
i l ฺ co uide
tma ent G
mylist.removeIf (s -> s.equals(“Rick”));
mylist.removeIf (s -> s.length() <ho 5);
o n @ Stud
n l ait this
( j ho use
i
Copyright © 2014,t o n and/ortitsoaffiliates. All rights reserved.
Oracle
r L a nse
d e l i c e
The Predicate lambda
e x an expression
a b le type takes a single input argument. The method body
acts upon thatA l
argument f einr some way, returning a boolean.
n s
an here, removeIf is called on the mylist reference (an ArrayList).
ho -trshown
In theJexamples
non the list and passing each element as a String argument into the
Iterating through
Predicate expressions, it removes any elements resulting in a return value of true.
• In the first example, the Predicate uses the equals method of the String argument
to compare its value with the string “Rick”. If it is equal, the Predicate returns true.
The long version of the Predicate expression would look like this:
mylist.removeIf ((String s) -> {return s.equals(“Rick”); } )
• In the second example, the Predicate uses the length() method of the String
argument, returning true if the string has less than 5 characters. The long version of
this Predicate expression would look like this:
mylist.removeIf ( (String s) -> {return (s.length() < 5); } )
Java SE 8 Fundamentals 13 - 32
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
• In the Java Code
l e x rab
Console, access Lessons > 13-Interfaces > Exercise2.
• Follow
o n the
n s fe below the code editor to code the removeItemFromCart
A instructions
h -tra
Jmethod.
• Run onShoppingCart class to test your code.
nthe
• If you need help, click the Solution link. To go back to your code, click the Exercise link
again. Any changes that you have made will have been saved.
Java SE 8 Fundamentals 13 - 33
Aula Matriz SฺAฺSฺ
Summary
Java SE 8 Fundamentals 13 - 34
Aula Matriz SฺAฺSฺ
and Possession.
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 13 - 35
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 13 - 36
Aula Matriz SฺAฺSฺ
players.
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 13 - 37
Aula Matriz SฺAฺSฺ
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Aula Matriz SฺAฺSฺ
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Handling Exceptions
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
14 - 1
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Aula Matriz SฺAฺSฺ
Objectives
Java SE 8 Fundamentals 14 - 2
Aula Matriz SฺAฺSฺ
Topics
• Propagation of exceptions
• Catching and throwing exceptions
• Multiple exceptions and errors
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a e t its affiliates. All rights reserved.
to Oraclesand/or
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 14 - 3
Aula Matriz SฺAฺSฺ
r L en s
e
ndwrongblineanlicapplication? When an unforeseen event occurs in an
What if something x a
goes
A
application, you ra
e “anfeexception
lsay was thrown.”There are many types of exceptions and, in
o n n s
Jh n-tra
this lesson, you will learn what they are and how to handle them.
no
Java SE 8 Fundamentals 14 - 4
Aula Matriz SฺAฺSฺ
Examples of Exceptions
• java.lang.ArrayIndexOutOfBoundsException
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Java SE 8 Fundamentals 14 - 5
Aula Matriz SฺAฺSฺ
Code Example
Coding mistake:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Output:
r L en s
e
nd mistake lic
a
This code shows axcommon b l e made when accessing an array. Remember that arrays
are zero based l e
A(the first r a
feelement is accessed by a zero index), so in an array like the one in
o n n s
Jh n-tra
the slide that has five elements, the last element is actually intArray[4].
no tries to access an element that does not exist, and Java responds to this
intArray[5]
programming mistake by throwing an ArrayIndexOutOfBounds exception. The information
stored within the exception is printed to the console.
Java SE 8 Fundamentals 14 - 6
Aula Matriz SฺAฺSฺ
Another Example
Calling code in main:
19 TestArray myTestArray = new TestArray(5);
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
20 myTestArray.addElement(5, 23);
TestArray class:
13 public class TestArray {
14 int[] intArray;
15 public TestArray (int size) {
16 intArray = new int[size];
17 }
18 public void addElement(int index, int value) {
19 intArray[index] = value; }
20 }
Stack trace: s a
a
)h ฺ
Exception in thread "main"
m
co uide
java.lang.ArrayIndexOutOfBoundsException: 5
i
a tGl ฺ
at TestArray.addElement(TestArray.java:19)
o t m
at TestException.main(TestException.java:20)
@ h uden
Java Result: 1
a i t on is St
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
n e
d le lic
Here is a very similar
e a
x rab except that this time the code that creates the array and tries
example,
l fe
Notice h o
how
ntheAerror
to assign a value to a nonexistent
a n s
message,
element has been moved to a different class (TestArray).
shown below, is almost identical to the previous example, but
J - t r
non
this time the methods main in TestException, and addElement in TestArray are
explicitly mentioned in the error message. (In NetBeans the message is in red as it is sent to
System.err).
Exception in thread "main"
java.lang.ArrayIndexOutOfBoundsException: 5
at TestArray.addElement(TestArray.java:19)
at TestException.main(TestException.java:20)
Java Result: 1
This is called “the stack trace.” It is an unwinding of the sequence of method calls, beginning
with where the exception occurred and going backwards.
In this lesson, you learn why that message is printed to the console. You also learn how you
can catch or trap the message so that it is not printed to the console, and what other kinds of
errors are reported by Java.
Java SE 8 Fundamentals 14 - 7
Aula Matriz SฺAฺSฺ
r L en s
n e
d le lic
As mentioned in the
e a
x rabslide, when an exception is thrown, that exception is an object
previous
l to afe
thrown h nA
that can be passed
inothis way, a n
and
s catch block. There are three main types of objects that can be
all are derived from the class, Throwable.
J - t r
n type, Exception, requires that you include a catch block to handle the
• Onlyo one
n
exception. We say that Exception is a checked exception. You may use a catch
block with the other types, but it is not always possible to recover from these errors
anyway.
You learn more about try/catch blocks and how to handle exceptions in upcoming slides.
Java SE 8 Fundamentals 14 - 8
Aula Matriz SฺAฺSฺ
Programming error:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
d e l i c e
OutOfMemoryError
e x anis anaError.
b le Throwable classes of type Error are typically used for
Al sthat
exceptional conditions
n f er are external to the application and that the application usually
cannot h
J o traornrecover from. In this case, although it is an external error, it was caused
anticipate
-
non
by poor programming.
The example shown here has an infinite loop that continually adds an element to an
ArrayList, guaranteeing that the JVM will run out of memory. The error is thrown up the call
stack and, because it is not caught anywhere, it is displayed in the console as follows:
List now has 156 million elements!
List now has 157 million elements!
Exception in thread "main" java.lang.OutOfMemoryError: Java heap
space
at java.util.Arrays.copyOf(Arrays.java:2760)
at java.util.Arrays.copyOf(Arrays.java:2734)
at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
at java.util.ArrayList.add(ArrayList.java:351)
at TestErrors.main(TestErrors.java:22)
Java SE 8 Fundamentals 14 - 9
Aula Matriz SฺAฺSฺ
Quiz
Java SE 8 Fundamentals 14 - 10
Aula Matriz SฺAฺSฺ
Topics
• Propagation of exceptions
• Catching and throwing exceptions
• Multiple exceptions and errors
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a e t its affiliates. All rights reserved.
to Oraclesand/or
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 14 - 11
Aula Matriz SฺAฺSฺ
class Utils
doThat
doThat returns and
doThis method calls execution continues in
doThat. doThis.
doThis
r L en s
n e
d le lic
a
x rayou
To understand exceptions,
e b need to think about how methods call other methods and how
l fe The normal mode of operation is that a caller method calls a
worker h o n A which
this can be nested
method,
deeply.
n s
a turn becomes a caller method and calls another worker method, and
in
J n - t r
so on. Thisosequence of methods is called the call stack.
n
The example shown in the slide illustrates three methods in this relationship.
• The main method in the class Test, shown at the bottom of the slide, instantiates an
object of type Utils and calls the method doThis on that object.
• The doThis method in turn calls a private method doThat on the same object.
• When a method either completes or encounters a return statement, it returns execution
to the method that called it. So, doThat returns execution to doThis, doThis returns
execution to main, and main completes and exits.
Java SE 8 Fundamentals 14 - 12
Aula Matriz SฺAฺSฺ
r L en s
n e
d le lic
An Exception is one
e a
x the
of
a bsubclasses of Throwable. Throwable objects are thrown
l
A engine
either by the runtime r
fe or explicitly by the developer within the code. A typical thread of
o n n s
J h -tra above: A method is invoked, the method is executed, the method
execution is described
completes,oand
n n control goes back to the calling method.
When an exception occurs, however, an Exception object containing information about
what just happened is thrown. One of two things can happen at this point:
• The Exception object is caught by the method that caused it in a special block of code
called a catch block. In this case, program execution can continue.
• The Exception is not caught, causing the runtime engine to throw it back to the calling
method, and look for the exception handler there. Java runtime will keep propagating the
exception up the method call stack until it finds a handler. If it is not caught in any
method in the call stack, program execution will end and the exception will be printed to
the System.err (possibly the console) as you saw previously.
Java SE 8 Fundamentals 14 - 13
Aula Matriz SฺAฺSฺ
Topics
• Propagation of exceptions
• Catching and throwing exceptions
• Multiple exceptions and errors
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a e t its affiliates. All rights reserved.
to Oraclesand/or
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 14 - 14
Aula Matriz SฺAฺSฺ
No exceptions thrown;
nothing needs be done to
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
n e
d le lic
Here you can see the
e a
x raforbthe Utils class shown in NetBeans.
code
l fe no exceptions are thrown, so NetBeans shows no syntax or
Ascreenshot,
• In thenfirst
o n s
h -traerrors.
Jcompilation
n screenshot, doThat explicitly throws an exception, and NetBeans
nosecond
• In the
flags this as something that needs to be dealt with by the programmer. As you can see
from the tooltip, it gives the two options for handling the checked exception: Either catch
it, using a try/catch block, or allow the method to be thrown to the calling method. If
you choose the latter option, you must declare in the method signature that it throws an
exception.
In these early examples, the Exception superclass is used for simplicity. However, as you
will see later, you should not throw so general an exception. Where possible, when you catch
an exception, you should try to catch a specific exception.
Java SE 8 Fundamentals 14 - 15
Aula Matriz SฺAฺSฺ
r L en s
n e
d le lic
a
Here is a simple example
e a b
x rillustrating both of the options mentioned in the previous slide.
• Option
l
ACatchsfthe
1: e exception.
o n n
Jh- The n - ra block contains code that might throw an exception. For example, you
ttry
nomight be casting an object reference and there is a chance that the object
reference is not of the type you think it is.
- The catch block catches the exception. It can be defined to catch a specific
exception type (such as ClassCastException) or it can be the superclass
Exception, in which case it would catch any subclass of Exception. The exception
object will be populated by the runtime engine, so in the catch block, you have
access to all the information bundled in it. By catching the exception, the program
can continue although it could be in an unstable condition if the error is significant.
- You may be able to correct the error condition within the catch block. For
example, you could determine the type of the object and recast the reference to
correct type.
• Option 2: Declare the method to throw the exception: In this case, the method
declaration includes “throws Exception” (or it could be a specific exception, such as
ClassCastException).
Java SE 8 Fundamentals 14 - 16
Aula Matriz SฺAฺSฺ
main method:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
r L en s
n e
d le lic
a
x rab block has been added to the doThis method. The slide also
In this example, a try/catch
e
illustrates the A l fe when the exception is thrown and caught by the calling method.
program flow
o n n s
J h -tra
The Output insert shows the output from the doThat method, followed by the output from the
catch block
n onof doThis and, finally, the last line of the main method.
main method code:
• In line 1, a Utils object is instantiated.
• In line 2, the doThis method of the Utils object is invoked.
Execution now goes to the Utils class:
• In line 6 of doThis, doThat is invoked from within a try block. Notice that in line 7, the
catch block is declared to catch the exception.
Execution now goes to the doThat method:
• In line 14, doThat explicitly throws a new Exception object.
Execution now returns to doThis:
• In line 8 of doThis, the exception is caught and the message property from the
Exception object is printed. The doThat method completes at the end of the catch
block.
Execution now returns to the main method where line 3 is executed.
Java SE 8 Fundamentals 14 - 17
Aula Matriz SฺAฺSฺ
class Utils
doThat
class Test s a
a
)h ฺ
main m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
n e
d le lic
As mentioned previously,
e a
x rwhen a b a method finishes executing, the normal flow (on completion
of the methodA l fe statement) goes back to the calling method and continues
or on a return
o n n s
Jh n-tra
execution at the next line of the calling method.
o
When annexception is thrown, program flow returns to the calling method, but not to the point
just after the method call. Instead, if there is a try/catch block, program flow goes to the
catch block associated with the try block that contains the method call. You will see in the
next slide what happens if there is no try/catch block in doThis.
Java SE 8 Fundamentals 14 - 18
Aula Matriz SฺAฺSฺ
class Utils
doThat
doThis
class Test s a
a
)it.h ฺ
main … main must catch it OR throw m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
e
ndillustrates lic
The diagram in thexslidea l e
b an exception originally thrown in doThat being thrown to
doThis. The A l e
error is not r a
fecaught there, so it is thrown to its caller method, which is the main
o n n s
method.
J h -tra
The thing to remember is that the exception will continue to be thrown back up the
non it is caught.
call stack until
Java SE 8 Fundamentals 14 - 19
Aula Matriz SฺAฺSฺ
Uncaught Exception
doThat
doThis
Propagated
up the call
stack
class Test
s a
main a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
StackTrace @ h thedconsole
printed tou
e
n t
l a ito his S
h o n et
n ( o us
j
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
e
ndof the lic
But what happens x if a
none b l emethods in the call stack have try/catch blocks? That
l e r a
A sbyfethe diagram shown in this slide. Because there are no try/catch
situation is illustrated
blocks,h o
the
nexception an is propagated all the way up the call stack. But what happens when it
J
gets to theo main- t r
n method and is not handled there? This causes the program to exit, and the
n
exception, plus a stack trace for the exception, is printed to the console.
Java SE 8 Fundamentals 14 - 20
Aula Matriz SฺAฺSฺ
caught, it will eventually reach the JVM. The JVM will print the
exception’s output to the console and exit.
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
e
ndsee what lic
In the example, youxcana b l e happens when the exception is propagated up the call
l e r a
e method. Did you notice how similar this looks to the first
A to thesfmain
stack all the way
example o n
h -tra
you saw n
of an ArrayIndexOutOfBoundsException? In both cases, the
J
exception is
n ondisplayed as a stack trace to the console.
There was something different about the ArrayIndexOutOfBoundsException: None of
the methods threw that exception! So how did it get passed up the call stack?
The answer is that ArrayIndexOutOfBoundsException is a RuntimeException. The
RuntimeException class is a subclass of the Exception class, but it is not a checked
exception so its exceptions are automatically propagated up the call stack without throws
being explicitly declared in the method signature.
Java SE 8 Fundamentals 14 - 21
Aula Matriz SฺAฺSฺ
@ h ude
Automatically propagated up the call n stack to tthe calling method
—
i t o S
o n la this
n (jh o use
i
Copyright © 2014,
a e t its affiliates. All rights reserved.
to Oraclesand/or
e r L en
a n d le lic
An Exception that
l e is not b
x raaRuntimeException must be explicitly handled.
• An Error
o n A is usually
n s fe so critical that it is unlikely that you could recover from it, even if
Jyou n - tra it. You are not required to check these exceptions in your code.
h anticipated
• An n o
Exception represents an event that could happen and which may be recoverable.
You are required to either catch an Exception within the method that generates it or
throw it to the calling method.
• A RuntimeException is usually the result of a system error (out of memory, for
instance). They are inherited from Exception. You are not required to check these
exceptions in your code, but sometimes it makes sense to do so. They can also be the
result of a programming error (for instance, ArrayIndexOutOfBounds is one of these
exceptions).
The examples later in this lesson show you how to work with an IOException.
Java SE 8 Fundamentals 14 - 22
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
n e
d le lic
• In the Java Code
e a
x rab access Lessons > 13-Exceptions > Exercise1.
Console,
• Follow the
l fe below the code editor to add exception handling to catch an
A instructions
o n n s
h -tra
JArithmeticException when division by zero is attempted.
• If you n
noneed help, click the Solution link. To go back to your code, click the Exercise link
again. Any changes that you have made will have been saved.
Java SE 8 Fundamentals 14 - 23
Aula Matriz SฺAฺSฺ
Quiz
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a e t its affiliates. All rights reserved.
to Oraclesand/or
e r L en
a n d le lic
Answer: d
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 14 - 24
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
Click to get the detail
m
co uide
i l ฺ
ma nt G
of createNewFile. Note the
exceptions that
can be thrown. o
h ude t
@
o is St
n
a i t
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
e
d le lic
nAPI,
When working withxany
e a a itbis necessary to determine what exceptions are thrown by the
l
A or
object’s constructors e r
fmethods. The example in the slide is for the File class. File has a
o n n s
h -tra
createNewFile
J method that can throw an IOException or a SecurityException.
Java SE 8 Fundamentals 14 - 25
Aula Matriz SฺAฺSฺ
Constructor causes no
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
compilation problems.
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
n e
d le lic
The two screenshots
e a
x raslide
in the b show a simple testCheckedException method. In the
first example, A l e is created using the constructor. Note that even though the
the Filefobject
o n n s
J h -tra NullPointerException (if the constructor argument is null), you
constructor can throw a
on to catch this exception.
are not forced
n
However, in the second example, createNewFile can throw an IOException, and
NetBeans shows that you must deal with this.
Note that File is introduced here only to illustrate an IOException. In the next course (Java
SE 8 Programming), you learn about the File class and a new set of classes in the package
java.nio, which provides more elegant ways to work with files.
Java SE 8 Fundamentals 14 - 26
Aula Matriz SฺAฺSฺ
Catching IOException:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
r L en s
e
ndis handling lic
a
The example in thexslide b l e the possible raised exception by:
• Throwing
l e r a
fe from the testCheckedException method
Athe exception
o n n s
• J h -the
Catching
n traexception in the caller method
no the catch method catches the exception because the path to the text file is
In this example,
not correctly formatted. System.out.println(e) calls the toString method of the
exception, and the result is as follows:
java.io.IOException: The filename, directory name, or volume label
syntax is incorrect
Java SE 8 Fundamentals 14 - 27
Aula Matriz SฺAฺSฺ
Best Practices
type.
• Examine the exception to find out the exact problem so
you can recover cleanly.
• You do not need to catch every exception.
– A programming mistake should not be handled. It must be
fixed.
– Ask yourself, “Does this exception represent behavior I want
the program to recover from?” a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a e t its affiliates. All rights reserved.
to Oraclesand/or
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 14 - 28
Aula Matriz SฺAฺSฺ
Bad Practices
02 try {
03 createFile("c:/testFile.txt");
Catching superclass?
04 } catch (Exception e) {
05 System.out.println("Error creating file.");
06 }
07 } No processing of
08 public static void createFile(String name) exception class?
09 throws IOException{
10 File f = new File(name);
11 f.createNewFile();
s a
12 a
)h ฺ
13 int[] intArray = new int[5]; m
co uide
i
a tGl ฺ
14 intArray[5] = 27;
o t m
15 }
@ h uden
a i t on is St
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
n e
d le lic
The code in the slide
e a
x rab two poor programming practices.
illustrates
1. The catch
l
A clause fecatches an Exception type rather than an IOException type (the
o n n s
Jexpected
n tra
h -exception from calling the createFile method ).
o clause does not analyze the Exception object and instead simply
2. Thencatch
assumes that the expected exception has been thrown from the File object.
A major drawback of this careless programming style is shown by the fact that the code prints
the following message to the console:
There is a problem creating the file!
This suggests that the file has not been created, and indeed any further code in the catch
block will run. But what is actually happening in the code?
Java SE 8 Fundamentals 14 - 29
Aula Matriz SฺAฺSฺ
03
04 } catch (Exception e) { object type?
05 System.out.println(e);
toString() is called
06 //<other actions>
07 }
on this object.
08 }
09 public static void createFile(String fname)
10 throws IOException{
11 File f = new File(name);
12 System.out.println(name+" exists? "+f.exists());
s a
13 f.createNewFile(); a
)h ฺ
14 System.out.println(name+" exists? "+f.exists()); m
co uide
i l ฺ
15 int[] intArray = new int[5];
o t ma nt G
16 intArray[5] = 27;
@ h ude
17 }
a i t o is St
n
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
n e
d le lic
a
x rab
Putting in a few System.out.println
e calls in the createFile method may help clarify
l
A The
what is happening. feoutput now is:
o n n s
Jh n-tra exists? false (from line 12)
C:/testFile.txt
no
C:/testFile.txt exists? true (from line 14)
java.lang.ArrayIndexOutOfBoundsException: 5
So the file is being created! And you can see that the exception is actually an
ArrayIndexOutOfBoundsException that is being thrown by the final line of code in
createFile.
In this example, it is obvious that the array assignment can throw an exception, but it may not
be so obvious. In this case, the createNewFile method of File actually throws another
exception―a SecurityException. Because it is an unchecked exception, it is thrown
automatically.
If you check for the specific exception in the catch clause, you remove the danger of
assuming what the problem is.
Java SE 8 Fundamentals 14 - 30
Aula Matriz SฺAฺSฺ
Topics
• Propagation of exceptions
• Catching and throwing exceptions
• Multiple exceptions and errors
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a e t its affiliates. All rights reserved.
to Oraclesand/or
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 14 - 31
Aula Matriz SฺAฺSฺ
Multiple Exceptions
Directory must be writeable:
IOException
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
r L en s
e
ndshows lic
The example in thexslidea b l e
a method that could potentially throw three different
exceptions. A l e fe r a
It uses h o
the a n s
ncreateTempFile File method, which creates a temporary file. (It ensures that
J - t r
n a new and different file and also can be set up so that the temporary files
each call creates
n o
created are deleted on exit.)
The three exceptions are the following:
IOException
c:\notWriteableDir is a directory, but it is not writable. This causes
createTempFile() to throw an IOException (checked).
IllegalArgumentException
The first argument passed to createTempFile should be three or more characters long. If it
is not, the method throws an IllegalArgumentException (unchecked).
ArrayIndexOutOfBoundsException
As in previous examples, trying to access a nonexistent index of an array throws an
ArrayIndexOutOfBoundsException (unchecked).
Java SE 8 Fundamentals 14 - 32
Aula Matriz SฺAฺSฺ
Catching IOException
02 try {
03 createFile();
04 } catch (IOException ioe) {
05 System.out.println(ioe);
06 }
07 }
08
09 public static void createFile() throws IOException {
10 File testF = new File("c:/notWriteableDir");
11 File tempF = testF.createTempFile("te", null, testF);
s a
12 System.out.println("Temp filename: "+tempF.getPath()); a
)h ฺ
13 int myInt[] = new int[5]; m
co uide
i l ฺ
14 myInt[5] = 25;
o t ma nt G
15 }
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
e
ndshows lic
The example in thexslidea l e
b minimum exception handling (the compiler insists on at
the
l e r a
A sfebeing handled).
least the IOException
o n aisnset as shown at c:/notWriteableDir, the output of this code is:
Jhdirectory
With the
- t r
non
java.io.IOException: Permission denied
However, if the file is set as c:/writeableDir (a writable directory), the output is now:
Exception in thread "main" java.lang.IllegalArgumentException:
Prefix string too short
at java.io.File.createTempFile(File.java:1782)
at
MultipleExceptionExample.createFile(MultipleExceptionExample.java:34
)
at
MultipleExceptionExample.main(MultipleExceptionExample.java:18)
The argument "te" causes an IllegalArgumentException to be thrown, and because it
is a RuntimeException, it gets thrown all the way out to the console.
Java SE 8 Fundamentals 14 - 33
Aula Matriz SฺAฺSฺ
Catching IllegalArgumentException
01 public static void main(String[] args) {
02 try {
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
03 createFile();
04 } catch (IOException ioe) {
05 System.out.println(ioe);
06 } catch (IllegalArgumentException iae){
07 System.out.println(iae);
08 }
09 }
10
11 public static void createFile() throws IOException {
12 File testF = new File("c:/writeableDir");
s a
13 File tempF = testF.createTempFile("te", null, testF); a
)h ฺ
14 System.out.println("Temp filename: "+tempF.getPath()); m
co uide
i l ฺ
ma nt G
15 int myInt[] = new int[5];
16 myInt[5] = 25; o
h ude t
17 } n @
o is St
a i t
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
e
ndshows lic
a
The example in thexslide l e
b additional catch clause added to catch the potential
an
l
A sfe e
IllegalArgumentException. r a
n
o tran of the createTempFile method set to "te" (fewer than three
Jhfirstnargument
With the
-
no the output of this code is:
characters),
java.lang.IllegalArgumentException: Prefix string too short
However, if the argument is set to "temp", the output is now:
Temp filename is
/Users/kenny/writeableDir/temp938006797831220170.tmp
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
... < some code omitted > ...
Now the temporary file is being created, but there is still another argument being thrown by
the createFile method. And because ArrayIndexOutOfBoundsException is a
RuntimeException, it is automatically thrown all the way out to the console.
Java SE 8 Fundamentals 14 - 34
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 14 - 35
Aula Matriz SฺAฺSฺ
Summary
Java SE 8 Fundamentals 14 - 36
Aula Matriz SฺAฺSฺ
Interactive Quizzes
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle
e t its affiliates. All rights reserved.
and/or
r L en s
n e
d le lic
a
x toraperform
Before you take a break
e b the practices, test your knowledge by answering some
quiz questions. l
AOpensyour fe quiz file from labs > Quizzes > Java SE 8 Fundamentals Quiz.html.
o n n
Jh n-tra
Click the links for this lesson as well as the lesson titled “Using Interfaces.”
no
Java SE 8 Fundamentals 14 - 37
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a e t its affiliates. All rights reserved.
to Oraclesand/or
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 14 - 38
Aula Matriz SฺAฺSฺ
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Aula Matriz SฺAฺSฺ
Objectives
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 7 Fundamentals 15 - 2
Aula Matriz SฺAฺSฺ
Topics
• Packages
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 7 Fundamentals 15 - 3
Aula Matriz SฺAฺSฺ
Packages
r L a nse
d e l i c e
anpackages
Classes are groupedxinto
e a b le to ease management of the system.
l to fgroup
Aways er classes into meaningful packages. There is no right or wrong way,
There are many
n s
but a common
- tran is to group classes into a package by semantic similarity.
Jho ntechnique
n o the software for the soccer application could contain a set of event classes (the
For example,
superclass GameEvent, with subclasses Goal, Kickoff, and so on), a set of classes that use
these event classes to model the playing of a game, and a set of utility classes. All these
packages are contained in the top-level package called soccer.
Java SE 7 Fundamentals 15 - 4
Aula Matriz SฺAฺSฺ
GameEvent.class
Goal.class
Kickoff.class
Possession.class
play/
IDisplayDataItem.class
DisplayString.class
Game.class
GameResult.class
League.class
Player.class s a
Team.class
a
)h ฺ
util/ m
co uide
i l ฺ
ma nt G
PlayerDatabase.class
PlayerDatabaseException.class o
h ude t
Settings.class
n @
o is St
a i t
h o nl e th
n (j o us
t o and/ortits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
Packages are storedxin
l e r a b
a directory tree containing directories that match the package names. For
n A sfe
example, the Goal.class file should exist in the directory event, which is contained in the
J o n-tran
directoryhsoccer.
no
Java SE 7 Fundamentals 15 - 5
Aula Matriz SฺAฺSฺ
Packages in NetBeans
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Packages
shown as
icons
s a
File a
)h ฺ
structure for m
co uide
packages i l ฺ
shown
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/ortits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab tabs. Two of these tabs, Projects and Files, show how
The left panel in NetBeans has three
packages relate
n Ato the sfilefestructure.
o
The Projects
J r an the packages and libraries for each project. The source package shown is
h tab-tshows
on the packages and classes for the Soccer application, and the screenshot
the one containing
n
shows the three packages: soccer.event, soccer.play, and soccer.util. Each of these
packages can be expanded to show the source files within, as has been done for the
soccer.event package in the screenshot.
The Files tab shows the directory structure for each project. In the screenshot, you can see how
the packages listed on the Projects tab have a corresponding directory structure. For example, the
soccer.events package has the corresponding file structure of the duke directory just under
the src directory and contains the item directory, which in turn contains all the source files in the
package.
Java SE 7 Fundamentals 15 - 6
Aula Matriz SฺAฺSฺ
This class is in
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
the package
soccer.event.
package soccer.event;
Java SE 7 Fundamentals 15 - 7
Aula Matriz SฺAฺSฺ
Topics
• Packages
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 7 Fundamentals 15 - 8
Aula Matriz SฺAฺSฺ
SoccerEnhanced.jar
soccer/
event/
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
GameEvent.class
Goal.class The JAR file
Kickoff.class contains
Possession.class the entire
play/
class
DisplayString.class directory
…
including
the manifest
…
file.
Team.class
util/
s a
PlayerDatabase.class
PlayerDatabaseException.class
a
)h ฺ
m
co uide
Settings.class
i l ฺ
a filet G
o t m
Manifest
META-INF/
@ h MANIFEST.MF
u d en
MANIFEST.MF
a i t on is St added
h o nl e th
n (j o us
t o and/ortits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
To deploy a Java application, you typically put the necessary files into a JAR file. This greatly
simplifies running
o n n s fe
A the application on another machine.
h is much
A JARJfile
n - ralike a zip file (or a tar file on UNIX) and contains the entire directory structure
tclasses
n o
for the compiled plus an additional MANIFEST.MF file in the META-INF directory. This
MANIFEST.MF file tells the Java runtime which file contains the main method.
You can create a JAR file by using a command-line tool called jar, but most IDEs make the
creation easier. In the following slides, you see how to create a JAR file using NetBeans.
Java SE 7 Fundamentals 15 - 9
Aula Matriz SฺAฺSฺ
3
Enter the name of
2 the main class.
Select Run.
s a
a
)h ฺ
m
co uide
1 i l ฺ
Right-click the
o t ma nt G
project and select h d4e Click OK.
n @ t u
l a ito his S
Properties.
h o n et
n ( o us
j
t o and/ortits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic to indicate which file contains the main method. This is
lexto the
Before you create the JAR file,
r a byou need
n A
subsequently written
s f e MANIFEST.MF file.
Jho n-tran
no
Java SE 7 Fundamentals 15 - 10
Aula Matriz SฺAฺSฺ
1
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Right-click the
project and select
“Clean and Build.”
2
Check the output to
ensure that the build
is successful.
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/ortits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
project such asA le ferab this the
You create the JAR xfile by right-clicking
SoccerEnhanced,
project and selecting “Clean and Build.” For a small
should take only a few seconds.
n anany s previous builds.
Jho removes
• Clean t r
• Build on- a new JAR file.
ncreates
You can also run “Clean” and “Build” separately.
Java SE 7 Fundamentals 15 - 11
Aula Matriz SฺAฺSฺ
SoccerEnhanced.jar
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Java SE 7 Fundamentals 15 - 12
Aula Matriz SฺAฺSฺ
Topics
• Packages
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 7 Fundamentals 15 - 13
Aula Matriz SฺAฺSฺ
sharing tasks:
• Each computer performs logic appropriate to its design
and stated function.
• The front-end client communicates with the back-end
database.
• The client requests data from the back end.
• The server returns the appropriate results.
a
• The client handles and displays data. has ) ฺ
o m
a ilฺc Guide
h otm dent
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
A major performance
e a
x raisbpaid in two-tier client/server. The client software ends up larger
penalty
and more complex l
A because fe most of the logic is handled there. The use of server-side logic is
o n n s
limited to
J h -tra
database operations. The client here is referred to as a thick client.
n to produce frequent network traffic for remote database access. This works well
Thick clientsotend
n
for intranet-based and local area network (LAN)–based network topologies, but produces a large
footprint on the desktop in terms of disk and memory requirements. Also, not all back-end
database servers are the same in terms of server logic offered, and all of them have their own API
sets that programmers must use to optimize and scale performance.
Java SE 7 Fundamentals 15 - 14
Aula Matriz SฺAฺSฺ
approach.
• Each tier can be replaced by a different implementation:
– The data tier is an encapsulation of all existing data sources.
– Business logic defines business rules.
– Presentation can be GUI, web, smartphone, or even console.
s a
a
)h ฺ
Data Business Logic Presentationm
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/ortits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
The three components
l e x rab
or tiers of a three-tier client/server environment are data, business logic or
o n n s fe They are separated so that the software for any one of the tiers
A presentation.
functionality, and
J h -tra
can be replaced by a different implementation without affecting the other tiers.
For example,
n onif you want to replace a character-oriented screen (or screens) with a GUI (the
presentation tier), you write the GUI using an established API or interface to access the same
functionality programs in the character-oriented screens.
The business logic offers functionality in terms of defining all of the business rules through which
the data can be manipulated. Changes to business policies can affect this layer without having an
impact on the actual databases.
The third tier, or data tier, includes existing systems, applications, and data that have been
encapsulated to take advantage of this architecture with minimal transitional programming effort.
Java SE 7 Fundamentals 15 - 15
Aula Matriz SฺAฺSฺ
Topics
• Packages
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 7 Fundamentals 15 - 16
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
Data Business Logic Presentationm
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/ortits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
lextier fcould
In the Soccer application, the
r a b
Data tier does not really exist—there is currently no way to persist
the data. But a A
n Data
s e be added by saving the Player, Team, and Game arrays to a
JhoThetier—at
database. ancode of the Soccer application is business logic code. There is currently no
current
- t r
presentation
n o n the moment the only presentation of data is the console of the application. To
support a presentation tier, the business logic tier may need to present the data in some fashion
where it can be consumed easily by many different types of presentation tier.
Java SE 7 Fundamentals 15 - 17
Aula Matriz SฺAฺSฺ
Business Logic
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/ortits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
To support different x
l e r a b the grid view of the league, the business logic tier should
presentations of
o n Ain a way
provide the data
n s fethat it can be queried to produce the individual values needed.
Jh n-tra
no
Java SE 7 Fundamentals 15 - 18
Aula Matriz SฺAฺSฺ
Different Outputs
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/ortits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab two-dimensional array, the presentation should have access
Ideally for each element of data in the
to the data the A
n display e on, or at least a useful subset of that data. For example, for the
sis fbased
text thath o
displays aa n
team name, the presentation might wish to query further data about the team—
for example
o -tr a pop-up list of the players in the team or a pop-up of the details of a game
J tonprovide
for any ofnthe game scores.
Note that using a two-dimensional array is of course not the only way to package the data; you
could use a List of List objects or create a custom class.
But assuming a two-dimensional array—it can only be of one type, so you cannot put references
to Team objects and a Game objects into the same array. Or can you?
Java SE 7 Fundamentals 15 - 19
Aula Matriz SฺAฺSฺ
• Abstract classes
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
– GameEvent
— Extended by Goal and other GameEvent classes
• Interfaces
– Comparable
— Implemented by Team and Player so that they can be ranked
– IDisplayDataItem
— Implemented by Team, Game, and DisplayString
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/ortits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
rab
lex ThefeIDisplayDataItem
An enhanced version of the Soccer application has been created to illustrate object-oriented
programming inAJava. is a new Interface that is implemented by Team
and Game, n
oand atnew s
anclass,array
DisplayString. Any class that implements this interface can be
Jha two-dimensional
used in n - r of type IDisplayDataItem. So you can have references that
n o
access both Team objects and Game objects in the same array after all!
Java SE 7 Fundamentals 15 - 20
Aula Matriz SฺAฺSฺ
IDisplayDataItem Interface
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
package soccer.play;
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 7 Fundamentals 15 - 21
Aula Matriz SฺAฺSฺ
Java SE 7 Fundamentals 15 - 22
Aula Matriz SฺAฺSฺ
o n n fe
A is notsrepresented
used for data that by any of the current core classes.
Jh n-tra
no
Java SE 7 Fundamentals 15 - 23
Aula Matriz SฺAฺSฺ
s a
a
)typeh behind
The object type The object type behind these m eฺ is
codata uelements
The object
behind these data data elements (except for the i l ฺ
these i d
elements is Team. output Xs) is Game.
o t ma DispayString.
n t G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/ortits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r c e n
a n d l e liarray
l e r a b
Given that there is axtwo-dimensional of type IDisplayDataItem, it can just as easily be
used to create Athe outputfe
for a web display.
o n n s
Jh n-tra
no
Java SE 7 Fundamentals 15 - 24
Aula Matriz SฺAฺSฺ
Topics
• Packages
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 7 Fundamentals 15 - 25
Aula Matriz SฺAฺSฺ
for:
– Maintenance
– Enhancements
– Upgrades
• For the Soccer application, it should be easy to:
– Add new GameEvent subclasses (business logic)
– Develop new clients (presentation)
Take the application to a smartphone (for example) a
—
) h as
– Change the storage system (data)
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
x see
In the following slides, you
a bwhat is involved in adding another class to represent a new
GameEvent. Ale fe r
o n n s
Jh n-tra
no
Java SE 7 Fundamentals 15 - 26
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 7 Fundamentals 15 - 27
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 7 Fundamentals 15 - 28
Aula Matriz SฺAฺSฺ
Summary
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 7 Fundamentals 15 - 29
Aula Matriz SฺAฺSฺ
Course Summary
Java SE 7 Fundamentals 15 - 30
Aula Matriz SฺAฺSฺ
Course Summary
Java SE 7 Fundamentals 15 - 31
Aula Matriz SฺAฺSฺ
Course Summary
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 7 Fundamentals 15 - 32
Aula Matriz SฺAฺSฺ
16
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Oracle Cloud
An Overview
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Aula Matriz SฺAฺSฺ
Agenda
1
What is Cloud Computing?
2
Cloud Evolution
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
3
Components of Cloud Computing
4 Characteristics and Benefits of Cloud
5 Cloud Deployment Models
6 Cloud Service Models
7 Oracle Cloud Services
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 2
Aula Matriz SฺAฺSฺ
What is Cloud?
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 3
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 4
Aula Matriz SฺAฺSฺ
Cloud Computing
SaaS Computing
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Next generation
Utility Computing Internet
Grid Computing Network based Computing and
Offering subscription to next generation
Silos Computing Computing applications Data Centers
S l i large
Solving l Resources as a
problems with metered
Basic computing parallel service
with dedicated Computing
physical
hardware
a
) has
l ฺ c om ideฺ
t m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 5
Aula Matriz SฺAฺSฺ
Data
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Devices that end user Often Servers are in Collection of servers where
interact with cloud. Types geographically different application is placed and is
of client Thick, Thin (Most places, but server acts as if accessed via Internet
a
popular), Mobile they are next to each other
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 6
Aula Matriz SฺAฺSฺ
Characteristics of Cloud
Description
Allows
All users to
t use the
th service
i on demand
d d
On Demand
Self Service Anywhere, Anytime and Any Device
Rapid Ubiquitous
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Java SE 8 Fundamentals 16 - 7
Aula Matriz SฺAฺSฺ
Hybrid Community
• It is an arrangement of two or Cloud Cloud
more cloud servers, i.e. private, •Type of cloud hosting in which
public or community cloud that the setup is mutually shared
is bound together but remain between many organizations
individual entities. a
) has
l ฺ c om ideฺ
t m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 8
Aula Matriz SฺAฺSฺ
Java SE 8 Fundamentals 16 - 9
Aula Matriz SฺAฺSฺ
Application
System
Platform
• Target: Administrators
Provider
• Ready to Rent
IaaS a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 10
Aula Matriz SฺAฺSฺ
Developer
Customizations • Up to Date Software
Consumer
Application
• Target: Application Developers
• Ready to Use
Provider
PaaS
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 11
Aula Matriz SฺAฺSฺ
onsumer
Customizations
Updated
Java SE 8 Fundamentals 16 - 12
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 13
Aula Matriz SฺAฺSฺ
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 14
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 15
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 16
Aula Matriz SฺAฺSฺ
Delivers modern cloud applications that connect business processes across the
enterprise.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 17
Aula Matriz SฺAฺSฺ
Summary
Technology
• Understood the various components , Deployment Models and Service
Models of Cloud Computing
• Understood the Oracle Cloud Services
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 16 - 18
Aula Matriz SฺAฺSฺ
17
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Oracle Application
pp Container
Cloud Service Overview
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Aula Matriz SฺAฺSฺ
Objectives
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 2
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 3
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
Simple and easy to use deployment platform for JavalaSE & Node
n t h isapplications
Open platform—use any application frameworks o se
(jh ando libraries
n u
t and scalability
a i
Runs applications in Docker containers to
for reliability
s e
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 4
Aula Matriz SฺAฺSฺ
Polyglot Platform
Deploy
D l applications
li ti to
t a selection
l ti off
popular language runtimes supported
• Latest release supports Java SE, Java
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
@ h ude
Runtime releases regularly updated to the latest a i t o is St
n
h o nl e th
n (j o us
a i t o e t
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 5
Aula Matriz SฺAฺSฺ
Open Platform
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
@ h ude
a
Use any of the thousands of open source or commercial i t n St frameworks—no restrictions.
oJava orisNode
h o nl e th
n (j o us
a i t o e t
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 6
Aula Matriz SฺAฺSฺ
Stateless Applications
• Ephemeral disk
• Permanent storage through
database or storage service
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 7
Aula Matriz SฺAฺSฺ
Elastic Scaling
Java SE 8 Fundamentals 17 - 8
Aula Matriz SฺAฺSฺ
Profiling
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 9
Aula Matriz SฺAฺSฺ
Manageable
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 10
Aula Matriz SฺAฺSฺ
B ild
Build Zi
Zip D l !
Deploy!
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
@ h ude
Build a i t o is St
n
o l
nsystem thproduce binaries and deployable
• Use your favourite or corporate standard h
(j o us
build e to
resources.
i t o n t
a
L en s e
Zip
e r lic images, etc. that make up your application. The structure
d htmllefiles,
• Zip up all binaries, a n
scripts,
lex upfetorathebuser—we have no opinion on structure.
of the zip is entirely
A s
Deploy
J hon -tran
• Deploy the
n onapplication archive (zip) to the platform and tell us how to start the application. This
could be “java –jar’, “java –classpath … <main>”, “node myapp.js”, or “sh bootmyapp.sh”.
Java SE 8 Fundamentals 17 - 11
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 12
Aula Matriz SฺAฺSฺ
Application Deployment
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Developer
Image Builder
Application
Archive Load Balancer
a
) has
l ฺ c om ideฺ
t m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 13
Aula Matriz SฺAฺSฺ
App-1 App-2
App-2 App-3
App-3
App-1
App-1 App-2 App-3 Java Cloud Service
Developer
Java SE, Node Cloud Service
s a
a
h Cloud Service
)Messaging
m
co uideฺ
i l ฺ
o t ma nt G
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
@ h ude
• Tenant Isolation a i t o is St
n
h o nl e th
• Polyglot
n (j o us
• Integrated
a i t o e t
• Developer Friendly r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 14
Aula Matriz SฺAฺSฺ
Load Balancer
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
Vanity URL support (upcoming) will allow installationla
n t h is
of certificates
o
(jh o use
i n
to se t
r a
L en
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 15
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
Complete, Integrated Development Platform—as a Service
Java SE 8 Fundamentals 17 - 16
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 17
Aula Matriz SฺAฺSฺ
Build
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Zip
D l !
Deploy
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
@ h ude
Rather than build on-premise, use DevCS to performla
n St test, and deployment.
ito hisbuild,
continuous
h o n et
n ( o us
j
a i t o e t
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 18
Aula Matriz SฺAฺSฺ
• Integrated enterprise ecosystem and services from IaaS to PaaS and SaaS
• Java SE Advanced – completely unique and unavailable on any other
cloud platform
• Developer Cloud Service – included and integrated
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 19
Aula Matriz SฺAฺSฺ
Summary
a
) has
l ฺ c om ideฺ
m ai t Gu
Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
t
h o den
i t o n@ Stu
o n la this
n (jh o use
a i to se t
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals 17 - 20
Aula Matriz SฺAฺSฺ
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Aula Matriz SฺAฺSฺ
Topics
• Lesson 6
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
• Lesson 8
• Lesson 10
• Lesson 11
• Lesson 12
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals A - 2
Aula Matriz SฺAฺSฺ
Question 1
• Red wheels
• Blue wheels
• Ball
• Duke
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
Discussion
A l ex ferab
o n have
You might also
a n s
answered that the walls are objects. Remember that objects are not
always h
J n-tr
physical. For instance, you might suggest that Score is an object, or Level (the level of
the game).
n oThe business of identifying objects for an object-oriented application is more art
than science.
Java SE 8 Fundamentals A - 3
Aula Matriz SฺAฺSฺ
Question 2
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
Discussion
A l ex ferab
example ofsone of the game’s objects, the blue bumper, and its function in the
Here is an n
ho -tranis the class, and a class is a blueprint or recipe for an object. The class
game.JBlueBumper
describesn onobject’s properties and behaviors. Classes are used to create object instances,
an
such as the two BlueBumper object instances, as shown in the second image.
Initially, each object instance looks the same, but as you noticed, objects can change and
differentiate themselves as play continues.
Java SE 8 Fundamentals A - 4
Aula Matriz SฺAฺSฺ
Question 3
• Color
• Shape
• Orientation
• X position
• Y position
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
x racould
There are many others
e you b have named as well.
l
A sfe
n
Jh n-tran
o
no
Java SE 8 Fundamentals A - 5
Aula Matriz SฺAฺSฺ
Question 4
• Behaviors:
– divertCourseSimple
– divertCourseTriangle
– rotate
– play
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab
There are many possibilities of methods for this game. Methods are actions that occur in a
program. HereAare a few
o n n s feof the possible methods. You will, no doubt, think of many more.
• JYou
n ra when the ball strikes a wall, its course will be diverted, but the change in
h know-tthat
no will be different if the wall is a simple wall or if it is a triangle wall. Consequently,
course
you assume that these are two different methods.
• You also know that when you rotate one of the wheels, the objects of the same color are
also rotated, so you can assume that there must be a rotate method.
• When you click Play, the ball starts to move, so you can assume that a play method
must exist.
Note: When you play the other puzzles of the game, you will see several other types of walls
and different behaviors.
Java SE 8 Fundamentals A - 6
Aula Matriz SฺAฺSฺ
Topics
• Lesson 6
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
• Lesson 8
• Lesson 10
• Lesson 11
• Lesson 12
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals A - 7
Aula Matriz SฺAฺSฺ
Question 1
• A static variable?
• An instance variable?
s a
2. Rotating the red wheel changes the orientation of all red bumpers. a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
In Scenario 1, you x
l e see
r a b of an instance variable. When the rotation wall is struck,
the behavior
o n A object
only that particular
n s fechanges its orientation. Other objects retain their previous
Jh n-tra
orientation. This is the behavior you would expect to see with an instance variable.
In Scenario
n o2, you see the behavior of a static variable exhibited. When you change the
orientation of a wheel, all objects of that same color are also rotated and, therefore, share the
same orientation as the wheel.
Java SE 8 Fundamentals A - 8
Aula Matriz SฺAฺSฺ
Topics
• Lesson 6
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
• Lesson 8
• Lesson 10
• Lesson 11
• Lesson 12
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals A - 9
Aula Matriz SฺAฺSฺ
Question 1
o n A the ball
the trajectory of
n s feand also the properties of the objects it strikes. When the appearance
J h -tra to a blade, it destroys the object it strikes—but not if the object is a
of the ball has changed
fan.
n on
• There are several ways you could structure this logic. You will examine two options
here.
• On this page, you see a pseudocode example of how you might handle the conditional
logic using and if/else construct. It first tests for the exception (that is, not destroying
the object) and then tests for all remaining conditions.
Java SE 8 Fundamentals A - 10
Aula Matriz SฺAฺSฺ
Question 1
switch objectStruck
case wall or rotation or triangle
destroy objectStruck
change blade to a ball
break
case fan s a
divert course
a
)h ฺ
m
co uide
destroy the next object i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
• Here you seexan
l e example
r a b using a switch construct. You will notice that this logic is
o n A similarly
structured
n s feto the if/else construct. The main difference is that it reverses the
h -tra first tests all of the cases in which the object should be destroyed,
conditional
Jthen test. It
Java SE 8 Fundamentals A - 11
Aula Matriz SฺAฺSฺ
Topics
• Lesson 6
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
• Lesson 8
• Lesson 10
• Lesson 11
• Lesson 12
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals A - 12
Aula Matriz SฺAฺSฺ
Question 1
o n n fe to the next loop iteration if it encounters a fan. Thus, the loop will
ball is a blade.AIt continues
s
continue
J h -tra it strikes something other than a fan. When this happens, the ball
to iterate until
ceases to be
n ona blade, so the loop exits.
You might have used a different approach to the while loop. Again, there are many
approaches that would work.
Java SE 8 Fundamentals A - 13
Aula Matriz SฺAฺSฺ
Topics
• Lesson 6
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
• Lesson 8
• Lesson 10
• Lesson 11
• Lesson 12
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a toOracle and/or
e tits affiliates. All rights reserved.
r L en s
n e
d le lic
a
A lex ferab
n s
Jho n-tran
no
Java SE 8 Fundamentals A - 14
Aula Matriz SฺAฺSฺ
Question 1
abstract
Is there a way to design code for
bumper class
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
extends a
a s
m )h ฺ
i l ฺ co uide
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r e n
a n d l e lic
l e x rab wheel and a blue bumper. In the inheritance puzzles of
In the basic puzzles, you saw a red
o n A bumpers
the game, green
n s fe were introduced. You saw that the green bumper seems to inherit
J h -tra
from (extend) the blue bumper. Obviously, all three of these bumpers share functionality and
properties.on
n
An abstract class can be used to impose the interface that we see in all of these classes. It
might also include a concrete method or property.
The graphic above shows this modified hierarchy (Remember from the lesson titled
“Describing Objects and Classes” how an instance was best represented by a bumper, and a
class was best represented by the wheel). Assuming that the green bumper class extends the
blue bumper class, it derives all of its behaviors and properties from the abstract bumper
class through the blue bumper class. Only red and blue bumper classes directly extend the
abstract bumper class.
Java SE 8 Fundamentals A - 15
Aula Matriz SฺAฺSฺ
Question 2
To make overriding possible, which game components best
represent:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
t o and/or tits affiliates. All rights reserved.
L a i
Copyright © 2014, Oracle
se
e r c e n
When you drag an x a n
icon,
d
suchbas l etheli simple wall in the example above, to a slot in the blue
ra show the simple wall in the D position as well.
legreenfeobjects
wheel (slot D),Aall
n ans
Jho you
If, however,
n - trthen drop a different icon (blade, in this example) to the D slot of the green
wheel, the
n osimple wall is replaced by the blade. The icon would therefore represent a new
implementation of the method found in slot D. You could consider slot D to represent a
method name and signature, such as slot_D() or D_method().
Java SE 8 Fundamentals A - 16
Aula Matriz SฺAฺSฺ
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a t its affiliates. All rights reserved.
to Oracleseand/or
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t o
Copyright © 2014,
a
Oracle t its affiliates. All rights reserved.
and/or
e
r L en s
n e
d le lic
a
x raJava
To put things in perspective,
e b is the single most widely used development language in the
l fe developers saying they spend at least some of their time
A over 9smillion
world today, with
developingo n
in Java, a
h -developers. n
according to a recent Evans Data study. That’s out of a world population of
about J t r
non
14 million
Java SE 7 Fundamentals B - 2
Aula Matriz SฺAฺSฺ
Java Desktops
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t o
Copyright © 2014,
a
Oracle t its affiliates. All rights reserved.
and/or
e
r L en s
n e
d le lic
• a
x raJava
1.1 billion desktops
e run b (Nielsen Online, Gartner 2010).
• 930 million
l fe
AJRE downloads a year (August 2009–2010): The Java Runtime Environment
o n n s
Jh isnused
(JRE)
- traby end users.
• n o JDK downloads a year (August 2009–2010): The Java Development Kit (JDK) is
9.5 million
used by Java developers.
Java SE 7 Fundamentals B - 3
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a t its affiliates. All rights reserved.
to Oracleseand/or
e r L en
a n d le lic
All non–smart phones
l e x rabphones”) run Java.
(“feature
n A sfe
Jh n-tran
o
no
Java SE 7 Fundamentals B - 4
Aula Matriz SฺAฺSฺ
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a t its affiliates. All rights reserved.
to Oracleseand/or
e r L en
a n d le lic
• 100% of Blu-ray
l e x rarun
players b Java.
• n e
A peoplesfconnect
71.2 million to the web on Java-powered devices (InStat 2010).
•
o
Jhbillionn-Java
1.4
n
tra Cards are manufactured every year (InStat 2010).
no
Java SE 7 Fundamentals B - 5
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t o
Copyright © 2014,
a
Oracle t its affiliates. All rights reserved.
and/or
e
r L en s
n e
d le lic
The Java programming
e a
x rab (formerly Oak) originated in 1991 as part of a research project to
language
l fe
A slanguage
develop a programming that would bridge the communication gap between many
o n n
consumer
of highly tra developers at Sunrecorders
Jhskilledn-software
devices, such as video cassette (VCRs) and televisions. Specifically, a team
(the Green team, under the leadership of James
no to create a programming language that enabled consumer devices with different
Gosling) wanted
central processing units (CPUs) to share the same software enhancements.
This initial concept failed after several deals with consumer device companies were unsuccessful.
The Green team was forced to find another market for their new programming language.
Fortunately, the World Wide Web was becoming popular and the Green team recognized that the
Oak language was perfect for developing web multimedia components to enhance webpages.
These small applications, called applets, became the initial use of the Oak language, and
programmers using the Internet adopted what became the Java programming language.
The turning point for Java came in 1995, when Netscape incorporated Java into its browser.
Did You Know? The character in the slide is Duke, Java’s mascot. The original Duke was created
by the Green team’s graphic artist, Joe Palrang.
Java SE 7 Fundamentals B - 6
Aula Matriz SฺAฺSฺ
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t
Copyright © 2014,
a o Oracle t its affiliates. All rights reserved.
and/or
e
r L en s
n e
d le lic
Oracle provides a complete
e a
x rline a bof Java technology products, ranging from kits that create Java
l fe
A tosemulation
technology programs (testing) environments for consumer devices such as cellular
phones.h o
As nindicated a n
in the graphic, all Java technology products share the foundation of the Java
J Java
language. n - t r
technologies, such as the Java Virtual Machine, are included (in different forms) in
n o
three different groups of products, each designed to fulfill the needs of a particular target market.
The figure illustrates the three Java technology product groups and their target device types. Each
edition includes a Java Development Kit (JDK) (also known as a Software Development Kit [SDK])
that allows programmers to create, compile, and execute Java technology programs on a
particular platform.
Note: The JavaFX API is a rich client for creating user interfaces for your Java program. The MSA
API is the mobile software application used to create user interfaces on portable devices.
Java SE 7 Fundamentals B - 7
Aula Matriz SฺAฺSฺ
Java SE
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t o
Copyright © 2014,
a
Oracle t its affiliates. All rights reserved.
and/or
e
r L en s
n e
d le lic
Java Platform, Standard
e a
x rab(Java SE) is used to develop applets and applications that run
Edition
l
A and
within web browsers fe
on desktop computers. For example, you can use the Java SE JDK to
o n processing
create ahword n s
a program for a personal computer.
J - t r
on desktop application in this course. It is an Integrated Development Environment
You use a Java
n
(IDE) called NetBeans.
Note: Applets and applications differ in several ways. Primarily, applets are launched inside a web
browser, whereas applications are launched within an operating system. Although this course
focuses mainly on application development, most of the information in this course can be applied
to applet development.
Java SE 7 Fundamentals B - 8
Aula Matriz SฺAฺSฺ
Java EE
distributed applications
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t o
Copyright © 2014,
a
Oracle t its affiliates. All rights reserved.
and/or
e
r L en s
n e
d le lic
a
x Edition
Java Platform, Enterprise
e a b (Java EE) is used to create large enterprise, server-side, and
l fe r
A applications.
client-side distributed For example, you can use the Java EE JDK to create a web
o n n s
shopping
J h -tra
(eCommerce) application for a retail company’s website.
on on top of the Java SE Platform, extending it with additional APIs supporting the
Java EE is built
n
needs of large-scale, high-performance enterprise software. The APIs are packaged and grouped
to support different kinds of containers, such as a web container for web-based applications, a
client container for thick clients, and the EJB container to run workhorse Java components. Some
of the kinds of functionality supported by the different APIs include objects, UI, integration,
persistence, transactions, and security.
Java SE 7 Fundamentals B - 9
Aula Matriz SฺAฺSฺ
Java ME
consumer devices
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t o
Copyright © 2014,
a
Oracle t its affiliates. All rights reserved.
and/or
e
r L en s
e
nd (Java lic
a
Java Platform, MicroxEdition b l e ME) is used to create applications for resource-constrained
l e r a
fe you can use the Java ME JDK to create a game that runs on a
A Forsexample,
consumer devices.
o n n
Jh n-tra
cellular phone. Blu-ray Disc Java applications and Java TV use the same SDK as Java ME.
no
Java SE 7 Fundamentals B - 10
Aula Matriz SฺAฺSฺ
Java Card
more):
• Identity
• Security
• Transactions
• Mobile phone SIMs
a
) has
l ฺ c om ideฺ
t m ai t Gu
h o den
i t o n@ Stu
o n la this
n (jh o use
i
Copyright © 2014,
a t its affiliates. All rights reserved.
to Oracleseand/or
e r L en
a n d le lic
A lex ferab
n s
Jho n-tran
no
Java SE 7 Fundamentals B - 11
Aula Matriz SฺAฺSฺ
1. Analysis
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
2. Design
3. Development
4. Testing
5. Implementation
6. Maintenance
7. End-of-Life (EOL)
s a
a
)h ฺ
m
co uide
i l ฺ
o t ma nt G
@ h ude
a i t o is St
n
h o nl e th
n (j o us
i t o
Copyright © 2014,
a
Oracle t its affiliates. All rights reserved.
and/or
e
r L en s
n e
d le lic
The product life cycle
e a
is an
a b process used to develop new products by solving problems.
x riterative
• Analysis:
l
AThe processfe of investigating a problem that you want to solve with your product.
o n n s
Jh n
Among other
- tratasks, analysis consists of:
o defining the problem you want to solve, the market niche you want to fill, or the
- nClearly
system you want to create. The boundary of a problem is also known as the scope of
the project.
- Identifying the key subcomponents of your overall product
Note: Good analysis of the problem leads to a good design of the solution and to decreased
development and testing time.
• Design: The process of applying the findings you made during the analysis stage to the
actual design of your product. The primary task during the design stage is to develop
blueprints or specifications for the products or components in your system.
• Development: Using the blueprints created during the design stage to create actual
components
• Testing: Ensuring that the individual components, or the product as a whole, meet the
requirements of the specification created during the design stage
Note: Testing is usually performed by a team of people other than those who actually developed
the product. Such a team ensures that the product is tested without any bias on behalf of the
developer.
Java SE 7 Fundamentals B - 12