Top Banner
J.E.D.I Introduction to Programming I 1 Introduction to Programming I Student's Manual Version 1.3 June 2006
244

JEDI Course Notes Intro1 MasterDocument

Jun 03, 2018

Download

Documents

MarkQuindoza
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 1/244

J.E.D.I

Introduction to Programming I 1

Introduction toProgramming I

Student's Manual 

Version 1.3

June 2006

Page 2: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 2/244

Introduction to Programming I 2

J.E.D.I

A u t h o r

Florence Tiu Balagtas

T e a mJoyce !estroFlorence Balagtas"ommel Feria"eginald #utc$erson"e%ecca &ngJo$n Paul Petines'ang '$in"ag$a!an 'rini!as(att$e) T$om*son

R e q ui re m e n t s F o r t he L a b or a tor y E x e r c ise sSup ported Ope rat in g Syst em sT$e +etBeans IDE ,., runs on o*erating systems t$at su**ort t$e Ja!a V(.

• (icroso-t indo)s /P Pro-essional 'P2 or ne)er

• (ac &' / 10.., or ne)er

• "ed #at Fedora ore 3

• 'olaris 10 &*erating 'ystem *date 1 4'P"5 and 7686

Plat-orm Edition9

+etBeans Enter*rise Pac: is also :no)n to run on t$e -ollo)ing *lat-orms;

• (icroso-t indo)s 2000 Pro-essional 'P

• 'olaris 7 &' 4'P" and 7686 Plat-orm Edition9 and 'olaris < &'

4'P" and 7686 Plat-orm Edition9

• Various ot$er =inu distri%utions

M in im um a rd ! a re " on# ig ur a t i o n

Note: The NetBeans IDE's minimum screen resolution is 1024x768pixels.

Operating System Processor Memory $is% Space(icroso-t indo)s ,00 (#> Intel Pentium III ,12 (B 7,0 (B o- -ree

dis: s*ace

=inu ,00 (#> Intel Pentium III)or:station or e?ui!alent

,12 (B ,0 (B o- -reedis: s*ace

'olaris &' 4'P"9 ltra'P" II ,0 (#> ,12 (B ,0 (B o- -reedis: s*ace

'olaris &' 47686Plat-orm Edition9

(D &*teron 100 'eries1.7 @#>

,12 (B ,0 (B o- -reedis: s*ace

(acintos$ &' /o*erating system

Po)erP @ ,12 (B ,0 (B o- -reedis: s*ace

Recom me nded a rd!are "on#igurati on

Operating System Processor Memory $is% Speed

(icroso-t indo)s 1. @#> Intel Pentium III)or:station or e?ui!alent

1 @B 1 @B o- -ree dis:s*ace

=inu 1. @#> Intel Pentium III)or:station or e?ui!alent

1 @B 7,0 (B o- -reedis: s*ace

'olaris &' 4'P"9 ltra'P" IIIi 1 @#> 1 @B 7,0 (B o- -reedis: s*ace

'olaris &' 47686Plat-orm Edition9

(D &*teron 100 'eries1.7 @#>

1 @B 7,0 (B o- -reedis: s*ace

(acintos$ &' /o*erating system

Po)erP @, 1 @B 7,0 (B o- -reedis: s*ace

R e q u i red So# t!a r e+etBeans Enter*rise Pac: ,., Early ccess runs on t$e Ja!a 2 Plat-orm'tandard Edition De!elo*ment Ait ,.0 *date 1 or $ig$er 4JDA ,.0 !ersion

1.,.0C01 or $ig$er9 )$ic$ consists o- t$e Ja!a "untime En!ironment *lusde!elo*er tools -or com*iling de%ugging and running a**lications )ritten int$e Ja!a language. 'un Ja!a 'ystem **lication 'er!er Plat-orm Edition < $as%een tested )it$ JDA ,.0 u*date 6.

• For So&aris 'indo!s and Linux you can do)nload t$e JDA -or your

*lat-orm -rom $tt*; 88 a! a.s un .com8 2se 81. ,.0 8 do )nl oa d.$tml

• For Mac OS ( Ja!a 2 Plat-orm 'tandard Edition 4J2'E9 ,.0 "elease is

re?uired. ou can do)nload t$e JDA -rom **les De!elo*er onnectionsite. 'tart $ere; $ tt* ;8 8 d e ! e lo * e r. a **l e .co m 8 a ! a 4you must register todo)nload t$e JDA9.

F o r m o r e in -o r mat ion *l e a s e ! is it;$ tt* ;88 ))) .n e t%e a n s . o rg 8co mm u n ity 8 re le a ses 8 0 8 r e ln o te s .$ tm l

Page 3: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 3/244

Tab&e o# "ontents1 Introduction to om*uter Programming..............................................................10

1.1 &%ecti!es............................................................................................... 101.2 Introduction............................................................................................. 101.3 Basic om*onents o- a om*uter................................................................ 11

1.3.1 #ard)are.......................................................................................... 111.3.1.1 T$e entral Processing nit.......................................................... 111.3.1.2 (emory .................................................................................... 111.3.1.3 In*ut and &ut*ut De!ices............................................................. 12

1.3.2 'o-t)are........................................................................................... 121. &!er!ie) o- om*uter Programming =anguages........................................... 13

1..1 $at is a Programming =anguageG....................................................... 131..2 ategories o- Programming =anguages..................................................13

1., T$e Program De!elo*ment =i-e ycle........................................................... 11.,.1 Pro%lem De-inition............................................................................. 1,

1.,.2 Pro%lem nalysis............................................................................... 1,1.,.3 lgorit$m design and re*resentation.................................................... 16

1.,.3.1 Flo)c$arting 'ym%ols and t$eir meanings...................................... 1H1.,. oding and De%ugging....................................................................... 17

1.6 +um%er 'ystems and on!ersions.............................................................. 1<1.6.1 Decimal............................................................................................ 1<1.6.2 Binary.............................................................................................. 1<1.6.3 &ctal................................................................................................ 1<1.6. #eadecimal..................................................................................... 1<1.6., on!ersions...................................................................................... 20

1.6.,.1 Decimal to Binary 8 Binary to Decimal............................................ 201.6.,.2 Decimal to &ctal 4or #eadecimal98&ctal 4or #eadecimal9 to Decimal....

211.6.,.3 Binary to &ctal 8 &ctal to Binary.................................................... 221.6.,. Binary to #eadecimal 8 #eadecimal to Binary............................... 23

1.H Eercises................................................................................................. 21.H.1 riting lgorit$ms............................................................................. 21.H.2 +um%er on!ersions.......................................................................... 2

2 Introduction to Ja!a........................................................................................ 2,2.1 &%ecti!es............................................................................................... 2,2.2 Ja!a Bac:ground...................................................................................... 2,

2.2.1 little Bit o- #istory .......................................................................... 2,2.2.2 $at is Ja!a Tec$nologyG................................................................... 2,

2.2.2.1 *rogramming language............................................................. 2,2.2.2.2 de!elo*ment en!ironment......................................................... 2,2.2.2.3 n a**lication en!ironment.......................................................... 2,2.2.2. de*loyment en!ironment........................................................... 26

2.2.3 'ome Features o- Ja!a........................................................................ 262.2.3.1 T$e Ja!a Virtual (ac$ine.............................................................. 262.2.3.2 @ar%age ollection...................................................................... 262.2.3.3 ode 'ecurity............................................................................. 2H

2.2. P$ases o- a Ja!a Program.................................................................... 273 @etting to :no) your Programming En!ironment................................................. 2<

3.1 &%ecti!es............................................................................................... 2<3.2 Introduction............................................................................................. 2<3.3 (y First Ja!a Program............................................................................... 2<3. sing a Tet Editor and onsole................................................................. 30

Page 4: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 4/244

3..1 Errors .............................................................................................. 0

3..1.1 'ynta Errors............................................................................. 03..1.2 "untime Errors.......................................................................... 1

3., sing +etBeans........................................................................................ 23.6 Eercises................................................................................................. ,,

3.6.1 #ello orld...................................................................................... ,,3.6.2 T$e Tree........................................................................................... ,,

Programming Fundamentals............................................................................. ,6.1 &%ecti!es............................................................................................... ,6.2 Dissecting my -irst Ja!a *rogram................................................................ ,6.3 Ja!a omments........................................................................................ ,7

.3.1 KK'tyle omments......................................................................... ,7.3.2 'tyle omments............................................................................. ,7.3.3 '*ecial Ja!adoc omments................................................................. ,7

. Ja!a 'tatements and %loc:s....................................................................... ,<., Ja!a Identi-iers........................................................................................ 60

.6 Ja!a Aey)ords......................................................................................... 61.H Ja!a =iterals............................................................................................ 62

.H.1 Integer =iterals ................................................................................. 62.H.2 FloatingPoint =iterals ........................................................................ 62.H.3 Boolean =iterals ................................................................................ 62.H. $aracter =iterals .............................................................................. 63.H., 'tring =iterals ................................................................................... 63

.7 Primiti!e data ty*es.................................................................................. 6.7.1 =ogical %oolean............................................................................... 6.7.2 Tetual L c$ar................................................................................... 6.7.3 Integral L %yte s$ort int M long.......................................................... 6,.7. Floating Point L -loat and dou%le.......................................................... 66

.< Varia%les................................................................................................. 6H.<.1 Declaring and Initiali>ing Varia%les....................................................... 6H.<.2 &ut*utting Varia%le Data.................................................................... 67.<.3 'ystem.out.*rintln49 !s. 'ystem.out.*rint49 ......................................... 67.<. "e-erence Varia%les !s. Primiti!e Varia%les............................................ 6<

.10 &*erators.............................................................................................. H0.10.1 rit$metic o*erators......................................................................... H0.10.2 Increment and Decrement o*erators................................................... H3.10.3 "elational o*erators......................................................................... H,.10. =ogical o*erators.............................................................................. H7

.10..1 MM 4logical +D9 and M 4%oolean logical +D9............................... H<.10..2 NN 4logical &"9 and N 4%oolean logical inclusi!e &"9.........................71.10..3 O 4%oolean logical eclusi!e &"9.................................................. 73.10.. 4logical +&T9.......................................................................... 7

.10., onditional &*erator 4G;9.................................................................. 7,.10.6 &*erator Precedence........................................................................ 7H

.11 Eercises............................................................................................... 77.11.1 Declaring and *rinting !aria%les......................................................... 77.11.2 @etting t$e a!erage o- t$ree num%ers................................................. 77.11.3 &ut*ut greatest !alue....................................................................... 77.11. &*erator *recedence........................................................................ 77

, @etting In*ut -rom t$e Aey%oard....................................................................... 7<,.1 &%ecti!es............................................................................................... 7<,.2 sing Bu--ered"eader to get in*ut.............................................................. 7<,.3 sing J&*tionPane to get in*ut................................................................... <3

Page 5: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 5/244

,. Eercises................................................................................................. <,

,..1 =ast 3 )ords 4Bu--ered"eader !ersion9.................................................. <,,..2 =ast 3 )ords 4J&*tionPane !ersion9...................................................... <,

6 ontrol 'tructures........................................................................................... <66.1 &%ecti!es............................................................................................... <66.2 Decision ontrol 'tructures........................................................................ <6

6.2.1 i- statement...................................................................................... <66.2.2 i-else statement............................................................................... <76.2.3 i-elsei- statement........................................................................... 1006.2. ommon Errors )$en using t$e i-else statements;............................... 1016.2., Eam*le -or i-elseelse i-.................................................................. 1026.2.6 s)itc$ statement............................................................................. 1036.2.H Eam*le -or s)itc$........................................................................... 10,

6.3 "e*etition ontrol 'tructures.................................................................... 1066.3.1 )$ile loo*....................................................................................... 1066.3.2 do)$ile loo*................................................................................... 107

6.3.3 -or loo*........................................................................................... 10<6. Branc$ing 'tatements............................................................................. 110

6..1 %rea: statement.............................................................................. 1106..1.1 nla%eled %rea: statement......................................................... 1106..1.2 =a%eled %rea: statement............................................................ 111

6..2 continue statement.......................................................................... 1126..2.1 nla%eled continue statement..................................................... 1126..2.2 =a%eled continue statement........................................................ 112

6..3 return statement.............................................................................. 1136., Eercises............................................................................................... 11

6.,.1 @rades........................................................................................... 116.,.2 +um%er in )ords.............................................................................. 11

6.,.3 #undred Times................................................................................ 116.,. Po)ers........................................................................................... 11H Ja!a rrays.................................................................................................. 11,

H.1 &%ecti!es............................................................................................. 11,H.2 Introduction to arrays.............................................................................. 11,H.3 Declaring rrays..................................................................................... 116H. ccessing an array element...................................................................... 117H., rray lengt$........................................................................................... 11<H.6 (ultidimensional rrays........................................................................... 120H.H Eercises............................................................................................... 121

H.H.1 Days o- t$e ee:............................................................................. 121H.H.2 @reatest num%er.............................................................................. 121H.H.3 ddress%oo: Entries......................................................................... 121

7 ommandline rguments.............................................................................. 1227.1 &%ecti!es............................................................................................. 1227.2 ommandline arguments........................................................................ 1227.3 ommandline arguments in +etBeans...................................................... 127. Eercises............................................................................................... 127

7..1 Print arguments............................................................................... 1277..2 rit$metic &*erations....................................................................... 127

< or:ing )it$ t$e Ja!a lass =i%rary................................................................. 12<<.1 &%ecti!es............................................................................................. 12<<.2 Introduction to &%ect&riented Programming............................................. 12<<.3 lasses and &%ects................................................................................ 130

<.3.1 Di--erence Bet)een lasses and &%ects.............................................. 130

Page 6: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 6/244

<.3.2 Enca*sulation.................................................................................. 131

<.3.3 lass Varia%les and (et$ods.............................................................. 131<.3. lass Instantiation........................................................................... 132

<. (et$ods................................................................................................ 133<..1 $at are (et$ods and $y se (et$odsG........................................... 133<..2 alling Instance (et$ods and Passing Varia%les....................................13<..3 Passing Varia%les in (et$ods............................................................. 13,

<..3.1 Pass%y!alue........................................................................... 13,<..3.2 Pass%yre-erence...................................................................... 136

<.. alling 'tatic (et$ods...................................................................... 13H<.., 'co*e o- a !aria%le........................................................................... 137

<., asting on!erting and om*aring &%ects............................................... 11<.,.1 asting Primiti!e Ty*es..................................................................... 11<.,.2 asting &%ects............................................................................... 13<.,.3 on!erting Primiti!e Ty*es to &%ects and Vice Versa............................ 1,<.,. om*aring &%ects........................................................................... 16

<.,., Determining t$e lass o- an &%ect..................................................... 17<.6 Eercises............................................................................................... 1<

<.6.1 De-ining terms................................................................................. 1<<.6.2 Ja!a 'ca!enger #unt........................................................................ 1<

10 reating your o)n lasses............................................................................ 1,010.1 &%ecti!es............................................................................................ 1,010.2 De-ining your o)n classes...................................................................... 1,110.3 Declaring ttri%utes.............................................................................. 1,2

10.3.1 Instance Varia%les.......................................................................... 1,210.3.2 lass Varia%les or 'tatic Varia%les.................................................... 1,3

10. Declaring (et$ods................................................................................ 1,310..1 ccessor met$ods........................................................................... 1,

10..2 (utator (et$ods............................................................................ 1,,10..3 (ulti*le "eturn statements.............................................................. 1,610.. 'tatic met$ods............................................................................... 1,610.., 'am*le 'ource ode -or 'tudent"ecord class..................................... 1,H

10., T$e t$is re-erence................................................................................. 1,<10.6 &!erloading (et$ods............................................................................. 16010.H Declaring onstructors........................................................................... 162

10.H.1 De-ault onstructor........................................................................ 16210.H.2 &!erloading onstructors................................................................ 16210.H.3 sing onstructors......................................................................... 16310.H. T$e t$is49 onstructor all............................................................... 16

10.7 Pac:ages............................................................................................. 16,10.7.1 Im*orting Pac:ages........................................................................ 16,10.7.2 reating your o)n *ac:ages............................................................ 16,10.7.3 'etting t$e =''PT#.................................................................. 166

10.< ccess (odi-iers................................................................................... 16710.<.1 de-ault access 4also called *ac:age accessi%ility9................................ 16710.<.2 *u%lic access................................................................................. 16710.<.3 *rotected access............................................................................ 16<10.<. *ri!ate access................................................................................ 16<

10.10 Eercises........................................................................................... 1H010.10.1 ddress Boo: Entry....................................................................... 1H010.10.2 ddressBoo:................................................................................ 1H0

11 In$eritance Polymor*$ism and Inter-aces....................................................... 1H111.1 &%ecti!es............................................................................................ 1H1

Page 7: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 7/244

11.2 In$eritance.......................................................................................... 1H1

11.2.1 De-ining 'u*erclasses and 'u%classes............................................... 1H211.2.2 T$e su*er :ey)ord......................................................................... 1H11.2.3 &!erriding (et$ods........................................................................ 1H,11.2. Final (et$ods and Final lasses........................................................ 1H6

11.3 Polymor*$ism...................................................................................... 1HH11. %stract lasses................................................................................... 1H<11., Inter-aces............................................................................................ 171

11.,.1 $y do )e use Inter-acesG.............................................................. 17111.,.2 Inter-ace !s. %stract lass.............................................................. 17111.,.3 Inter-ace !s. lass.......................................................................... 17211.,. reating Inter-aces......................................................................... 17211.,., "elations$i* o- an Inter-ace to a lass............................................... 1711.,.6 In$eritance among Inter-aces........................................................... 17

11.6 Eercises............................................................................................. 17,11.6.1 Etending 'tudent"ecord................................................................ 17,

11.6.2 T$e '$a*e a%stract class................................................................. 17,12 Basic Ece*tion #andling.............................................................................. 176

12.1 &%ecti!es............................................................................................ 17612.2 $at are Ece*tionsG............................................................................ 17612.3 #andling Ece*tions.............................................................................. 17612. Eercises............................................................................................. 17<

12..1 atc$ing Ece*tions1...................................................................... 17<12..2 atc$ing Ece*tions 2..................................................................... 17<

**endi ; Ja!a and +etBeans Installation......................................................... 1<0Installing Ja!a in %untu Da**er..................................................................... 1<1Installing Ja!a in indo)s............................................................................. 1<6Installing +etBeans in %untu Da**er.............................................................. 200

Installing +etBeans in indo)s....................................................................... 207**endi B; @etting to :no) your Programming En!ironment 4indo)s /P !ersion9.. 21,(y First Ja!a Program................................................................................... 21,sing a Tet Editor and onsole...................................................................... 216

'etting t$e Pat$........................................................................................ 22<sing +etBeans............................................................................................ 230

**endi D ; (ac$ine Pro%lems.......................................................................... 20(ac$ine Pro%lem 1; P$one Boo:...................................................................... 20(ac$ine Pro%lem 2; (ines)ee*er.................................................................... 21(ac$ine Pro%lem 3; +um%er on!ersion........................................................... 22

Page 8: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 8/244

Re)ision istory

For *ersion +,-

June 2006

Section $etai&s

**endi and B $a*ter 3;@ettingto :no) your *rogrammingen!ironment

')itc$ to +et%eans ,., Beta Version

**endi $a*ter 3;@etting to:no) your *rogramming en!ironment

')itc$ -rom "ed$at =inu to %untu Da**er

**endi F; dditional Eercises dded 4Teac$ers manual9c8o JEDI mem%ersc$ool teac$ers

For *ersion +,.January 2006

Section $etai&s

Version +um%er $ange -rom 1.1 to 1.2

$a*ter 3; @ettting to :no) your*rogramming en!ironment**endi

$ange +et%eans8net%eans to /et0eans

$a*ter ; Programming

Fundamentals

=ist o- Ja!a :ey)ords

$a*ter 10; reating your o)n classes oding guidelines; -ilenames s$ould $a!e t$esame name as t$e pub&ic class name

(aster Documents dded to list o- re-erences

For *ersion +,+

ugust 200,

Section $etai&s

Version +um%er $ange -rom 1.0 to 1.1

"e!ision #istory dded

**endi E; #andson =a% Eercises dded 4c8o 'ang9

$a*ter 10; reating our o)n classes dded su%section on #o) to set class*at$ at*ac:ages section

$a*ter 11; In$eritance Inter-acesand Polymor*$ism

Polymor*$ism section• dded eam*le t$at uses anot$er class

)$ose met$od can recei!e a re-erence!aria%le

Inter-ace• dded sections

• $y do )e use Inter-acesG

Page 9: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 9/244

J.E.D.I

Section $etai&s

• Inter-ace !s. %stract lass

• Inter-ace !s. lass

• "elations$i* o- an Inter-ace to a lass• In$eritance among Inter-aces

Introduction to Programming I <

Page 10: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 10/244

Introduction to Programming I 10

J.E.D.I

+ Introduction to "omputer

Programming

1.1 Objectives

In t$is section )e )ill %e discussing t$e %asic com*onents o- a com*uter %ot$ $ard)areand so-t)are. e )ill also %e gi!ing a %rie- o!er!ie) o- *rogramming languages and t$e*rogram de!elo*ment li-e cycle. Finally di--erent num%er systems and con!ersions -romone ty*e to anot$er )ill %e discussed.

t t$e end o- t$e lesson t$e student s$ould %e a%le to;

• Identi-y t$e di--erent com*onents o- a com*uter

• Ano) a%out *rogramming languages and t$eir categories

• nderstand t$e *rogram de!elo*ment li-e cycle and a**ly it in *ro%lem sol!ing

• =earn t$e di--erent num%er systems and t$eir con!ersions

1.2 Introduction

com*uter is a mac$ine t$at *er-orms a !ariety o- tas:s according to s*eci-icinstructions. It is a data *rocessing mac$ine )$ic$ acce*ts data !ia an input device and

its processor mani*ulates t$e data according to a program.

T$e com*uter $as t)o maor com*onents. T$e -irst one is t$e ard!are )$ic$ is t$etangi%le *art o- t$e com*uter. It is com*osed o- electronic and mec$anical *arts.

T$e second maor com*onent is t$e so#t!are )$ic$ is t$e intangi%le *art o- a com*uter.It consists o- data and t$e com*uter *rograms.

Page 11: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 11/244

Introduction to Programming I 11

J.E.D.I

1.3 Basic Components of a Computer 

1.3.1 ard!are

+,-,+,+ The "entra& Processing 1nit

T$e *rocessor is t$e %rainQ o- t$e com*uter. It contains millions o- etremely tinyelectrical *arts. It does t$e -undamental com*uting )it$in t$e system. Eam*les o-*rocessors are Pentium t$lon and 'P".

+,-,+,. Memory

T$e memory is )$ere data and instructions needed %y t$e P to do its a**ointed tas:scan %e -ound. It is di!ided into se!eral storage locations )$ic$ $a!e corres*ondingaddresses. T$e P accesses t$e memory )it$ t$e use o- t$ese addresses.

+, Main Memory

T$e main memory is !ery closely connected to t$e *rocessor. It is used to $old *rogramsand data t$at t$e *rocessor is acti!ely )or:ing )it$. It is not used -or longtermstorage. It is sometimes called t$e "( 4"andom ccess (emory9.

T$e com*uters main memory is considered as volatile storage. T$is means t$at oncet$e com*uter is turned o-- all in-ormation residing in t$e main memory is erased.

., The Secondary Memory

T$e secondary memory is connected to main memory. It is used to $old *rograms anddata -or long term use. Eam*les o- secondary memory are $ard dis:s and cdrom.

'econdary memory is considered as non"volatile storage. T$is means t$at in-ormationresiding in secondary memory is not erased a-ter t$e com*uter is turned o--.

Main

Memor# 

Secondar# 

Memor# $ropert# 

Fast 'lo) '*eed

E*ensi!e $ea* Price

=o) #ig$ a*acity

es +o Volatile

Table 1: Comparison between main memory and secondary memory 

Page 12: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 12/244

Introduction to Programming I 12

J.E.D.I

+,-,+,- Input and Output $e)ices

In*ut and out*ut de!ices allo)s a com*uter system to interact )it$ t$e outside )orld %ymo!ing data into and out o- t$e system.

Eam*les o- in*ut de!ices are :ey%oards mice and micro*$ones. Eam*les o- out*utde!ices are monitors *rinters and s*ea:ers.

1.3.2 Soft!are

so-t)are is t$e *rogram t$at a com*uter uses in order to -unction. It is :e*t on some$ard)are de!ice li:e a $ard dis: %ut it itsel- is intangi%le. T$e data t$at t$e com*uteruses can %e anyt$ing t$at a *rogram needs. Programs acts li:e instructions -or t$e*rocessor.

Some Types o# "omputer Programs2

+, Systems Programs

• Programs t$at are needed to :ee* all t$e $ard)are and so-t)are systems running

toget$er smoot$ly

• Eam*les;

• &*erating 'ystems li:e =inu indo)s ni 'olaris (ac&'

., App&ication Programs

• Programs t$at *eo*le use to get t$eir )or: done

• Eam*les;

• ord Processor

• @ame *rograms

• '*reads$eets

-, "ompi&ers

• T$e com*uter understands only one language; mac$ine language. (ac$ine

language is in t$e -orm o- ones and >eros. 'ince it is $ig$ly im*ractical -or *eo*leto create *rograms out o- >eros and ones t$ere must %e a )ay o- translating orcon!erting a language )$ic$ )e understand into mac$ine language -or t$is

*ur*ose t$ere eists com*ilers.

Page 13: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 13/244

Introduction to Programming I 13

J.E.D.I

1.% Overvie! of Computer $rogramming&anguages

1.%.1 (at is a $rogramming &anguage) 

*rogramming language is a standardi>ed communication tec$ni?ue -or e*ressinginstructions to a com*uter. =i:e $uman languages eac$ language $as its o)n syntaand grammar.

Programming languages ena%le a *rogrammer to *recisely s*eci-y )$at data a com*uter)ill act u*on $o) t$ese data )ill %e stored8transmitted and *recisely )$at actions tota:e under !arious circumstances.

T$ere are di--erent ty*es o- *rogramming languages t$at can %e used to create

*rograms %ut regardless o- )$at language you use t$ese instructions are translatedinto mac$ine language t$at can %e understood %y com*uters.

1.%.2 Categories of $rogramming &anguages

+, igh3&e)e& Programming Languages

• $ig$le!el *rogramming language is a *rogramming language t$at is more user

-riendly to some etent *lat-orminde*endent and a%stract -rom lo)le!elcom*uter *rocessor o*erations suc$ as memory accesses. *rogramming

statement may %e translated into one or se!eral mac$ine instructions %y a

compi&er.

• Eam*les are Ja!a KK Basic Fortran

., Lo!3&e)e& Assemb&y Language

• ssem%ly languages are similar to mac$ine languages %ut t$ey are muc$ easier to

*rogram in %ecause t$ey allo) a *rogrammer to su%stitute names -or num%ers.

ssem%ly languages are a!aila%le -or eac$ P -amily and eac$ assem%lyinstruction is translated into one mac$ine instruction %y an assemb&er *rogram.

/ote2 T$e terms R$ig$le!elR and Rlo)le!elR are in$erently relati!e. &riginally assem%lylanguage )as considered lo)le!el and &B&= etc. )ere considered $ig$le!el. (any*rogrammers today mig$t re-er to t$ese latter languages as lo)le!el.

Page 14: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 14/244

Introduction to Programming I 1

J.E.D.I

1.* +(e $rogram ,evelopment &ife

C#cle

Programmers do not sit do)n and start )riting code rig$t a)ay )$en trying to ma:e acom*uter *rogram. Instead t$ey -ollo) an organi>ed *lan or met$odology t$at %rea:st$e *rocess into a series o- tas:s.

#ere are t$e %asic ste*s in trying to sol!e a *ro%lem on t$ecom*uter;

1. Pro%lem De-inition

2. Pro%lem nalysis3. lgorit$m design and re*resentation 4Pseudocode or -lo)c$art9. oding and de%ugging

In order to understand t$e %asic ste*s in sol!ing a *ro%lem on a com*uter let us de-inea single *ro%lem t$at )e )ill sol!e ste*%yste* as )e discuss t$e *ro%lem sol!ingmet$odologies in detail. T$e *ro%lem )e )ill sol!e )ill %e de-ined in t$e net section.

Page 15: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 15/244

Introduction to Programming I 1,

J.E.D.I

1.*.1 $roblem ,efinition

*rogrammer is usually gi!en a tas: in t$e -orm o- a *ro%lem. Be-ore a *rogram can %e

designed to sol!e a *articular *ro%lem t$e *ro%lem must %e )ell and clearly de-ined -irstin terms o- its in*ut and out*ut re?uirements.

clearly de-ined *ro%lem is already $al- t$e solution. om*uter *rogramming re?uiresus to de-ine t$e *ro%lem -irst %e-ore )e e!en try to create a solution.

&et us no! define our e-ample

 problem

 reate a *rogram t$at )ill determine t$e num%er o- times a name occurs in a list.Q 

1.*.2 $roblem /nal#sis

-ter t$e *ro%lem $as %een ade?uately de-ined t$e sim*lest and yet t$e most e--icientand e--ecti!e a**roac$ to sol!e t$e *ro%lem must %e -ormulated.

sually t$is ste* in!ol!es %rea:ing u* t$e *ro%lem into smaller and sim*ler su%*ro%lems.

0-ample $roblemDetermine t$e num%er o- times a name occurs in a list

 Input to t(e program

list o- names name to loo: -or

Output of t(e

 program

t$e num%er o- times t$e name occurs in a list

Page 16: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 16/244

YES

Introduction to Programming I 16

J.E.D.I

1.*.3 /lgorit(m design and representation

&nce our *ro%lem is clearly de-ined )e can no) set to -inding a solution. In com*uter

*rogramming it is normally re?uired to e*ress our solution in a ste*%yste* manner.

n A&gorithm is a clear and unam%iguous s*eci-ication o- t$e ste*s needed to sol!e a*ro%lem. It may %e e*ressed in eit$er uman &anguage 4Englis$ Tagalog9 t$roug$ agra*$ical re*resentation li:e a #&o!chart or t$roug$ a pseudocode )$ic$ is a cross%et)een $uman language and a *rogramming language.

+o) gi!en t$e *ro%lem de-ined in t$e *re!ious sections $o) do )e e*ress our generalsolution in suc$ a )ay t$at it is sim*le yet understanda%leG

0-pressing our solution t(roug( umanlanguage

1. @et t$e list o- names2. @et t$e name to loo: -or lets call t$is t$e :eyname3. om*are t$e :eyname to eac$ o- t$e names in t$e list. I- t$e :eyname is t$e same )it$ a name in t$e list add 1 to t$e count,. I- all t$e names $a!e %een com*ared out*ut t$e result

0-pressing our solution t(roug( aflo!c(art

Figure 1.1: Example of a flow chart 

Page 17: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 17/244

Introduction to Programming I 1H

J.E.D.I

0-pressing our solution t(roug(

 pseudocode

=et name=ist S =ist o- +ames

=et :ey+ame S t$e name to %e soug$t=et ount S 0For eac$ name in +ame=ist do t$e -ollo)ingi- name SS :ey+ameount S ount K 1

Dis*lay ount

Figure 1.2: Example of a pseudocode

+,4,-,+ F&o!charting Symbo&s and theirmeanings

-lo)c$art is a design tool used to gra*$ically re*resent t$e logic in a solution.Flo)c$arts ty*ically do not dis*lay *rogramming language commands. "at$er t$ey state

t$e conce*t in Englis$ or mat$ematical notation.

#ere are some guidelines -or commonly used sym%ols in creating -lo)c$arts. ou can useany sym%ols in creating your -lo)c$arts as long as you are consistent in using t$em.

S#mbol ame Meaning

"e*resents t$e *rocess o- eecuting a de-inedo*eration or grou*s o- o*erations t$at results in a

Process Symbo&

Input5Output

6I5O7 Symbo&

F&o!&ine Symbo&

Annotation

Symbo&

c$ange in !alue -orm or location o- in-ormation.lso -unctions as t$e de-ault sym%ol )$en noot$er sym%ol is a!aila%le.

"e*resents an I8& -unction )$ic$ ma:es dataa!aila%le -or *rocessing 4in*ut9 or dis*laying4out*ut9o- *rocessed in-ormation.

"e*resents t$e se?uence o- a!aila%le in-ormationand eecuta%le o*erations.T$e lines connectot$er sym%ols and t$e arro)$eads aremandatory only -or rig$ttole-t and %ottomtoto* -lo).

"e*resents t$e addition o- descri*ti!ein-ormation comments or e*lanatory notes asclari-ication. T$e !ertical line and t$e %ro:en line

may %e *laced on t$e le-t as s$o)n or on t$erig$t.

  $ecision Symbo&

Termina& Symbo&

"e*resents a decision t$at determines )$ic$ o- anum%er o- alternati!e *at$s is to %e -ollo)ed.

"e*resents t$e %eginning t$e end or a *oint o-

interru*tion or delay in a *rogram.

Page 18: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 18/244

S#mbol ame Meaning

"e*resents any entry -rom or eit to anot$er*art o- t$e -lo)c$art. lso ser!es as an o--*age

"onnector

Symbo&

Prede#inedProcess Symbo&

connector.

"e*resents a named *rocess consisting o- one ormore o*erations or *rogram ste*s t$at ares*eci-ied else)$ere.

Table 2: Flowchart Symbols

1.*.% Coding and ,ebugging

-ter constructing t$e algorit$m it is no) *ossi%le to create t$e source code. sing t$ealgorit$m as %asis t$e source code can no) %e )ritten using t$e c$osen *rogramminglanguage.

(ost o- t$e time a-ter t$e *rogrammer $as )ritten t$e *rogram t$e *rogram isnt 100)or:ing rig$t a)ay. T$e *rogrammer $as to add some -ies to t$e *rogram in case o-errors 4also called %ugs9 t$at occurs in t$e *rogram. T$is *rocess o- is calleddebugging.

T$ere are t)o ty*es o- errors t$at a *rogrammer )ill encounter along t$e )ay. T$e -irstone is com*iletime error and t$e ot$er is runtime error.

Compile"+ime 0rrors occur i- t$ere is a synta error in t$e code. T$e com*iler )illdetect t$e error and t$e *rogram )ont e!en com*ile. t t$is *oint t$e *rogrammer isuna%le to -orm an eecuta%le t$at a user can run until t$e error is -ied.

Forgetting a semicolon at t$e end o- a statement or miss*elling a certain command -oream*le is a com*iletime error. Its somet$ing t$e com*iler can detect as an error.

om*ilers arent *er-ect and so cant catc$ all errors at com*ile time. T$is is es*eciallytrue -or logic errors suc$ as in-inite loo*s. T$is ty*e o- error is called runtime error.

For eam*le t$e actual synta o- t$e code loo:s o:ay. But )$en you -ollo) t$e codeslogic t$e same *iece o- code :ee*s eecuting o!er and o!er again in-initely so t$at it

loo*s. In suc$ a case com*ilers arent really smart enoug$ to catc$ all o- t$ese ty*es o-errors at com*iletime and t$ere-ore t$e *rogram com*iles -ine into an eecuta%le -ile.#o)e!er and un-ortunately )$en t$e enduser runs t$e *rogram t$e *rogram 4or e!ent$eir )$ole com*uter9 -ree>es u* due to an in-inite loo*. &t$er ty*es o- runtime errorsare )$en an incorrect !alue is com*uted t$e )rong t$ing $a**ens etc.

Page 19: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 19/244

1. umber S#stems and Conversions+um%ers can %e re*resented in a !ariety o- )ays. T$e re*resentation de*ends on )$at is

called t$e 0ASE. T$e -ollo)ing are t$e -our most common re*resentations.

1..1 ,ecimal 

e normally re*resent num%ers in t$eir decimal -orm. +um%ers in decimal -orm are in%ase 10. T$is means t$at t$e only digits t$at a**ear are 0<. #ere are eam*les o-num%ers )ritten in decimal -orm;

12610 4normally )ritten as ust 12691110 4normally )ritten as ust 119

1..2 Binar# 

+um%ers in %inary -orm are in %ase 2. T$is means t$at t$e only legal digits are 0 and 1.

e need to )rite t$e su%scri*t 2 to indicate t$at t$e num%er is a %inary num%er. #ereare eam*les o- num%ers )ritten in %inary -orm;11111102

10112

1..3 Octal 

+um%ers in octal -orm are in %ase 7. T$is means t$at t$e only legal digits are 0H. eneed to )rite t$e su%scri*t 7 to indicate t$at t$e num%er is an octal num%er. #ere are

eam*les o- num%ers )ritten in octal -orm;1H67

137

1..% e-adecimal 

+um%ers in $eadecimal -orm are in %ase 16. T$is means t$at t$e only legal digits are 0< and t$e letters F 4or a- lo)ercase or u**ercase does not matter9. e need to )ritet$e su%scri*t 16 to indicate t$at t$e num%er is a $eadecimal num%er. #ere are

eam*les o- num%ers )ritten in $eadecimal -orm;HE16

B16

#eadecimal 0 1 2 3 , 6 H 7 < B D E F

Decimal E?ui!alent0 1 2 3 , 6 H 7 < 10 11 12 13 1

1

,

Table : !exadecimal "umbers and their E#ui$alence to decimal numbers

,ecimal Binar# Octal e-adecimal  

12610 11111102 1H67 HE16

1110 10112 137 B16

Table %: Summary of Examples

Page 20: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 20/244

Introduction to Programming I 20

.riteitt$is)ay

1..* Conversions

+,8,4,+ $ecima& to 0inary 5 0inary to $ecima&

To con!ert a decimal num%er to %inary continuously di!ide t$e num%er %y 2 and get t$eremainder 4)$ic$ is eit$er 0 or 19 and get t$at num%er as a digit o- t$e %inary -orm o-t$e num%er. @et t$e ?uotient and di!ide t$at num%er again %y 2 and re*eat t$e )$ole*rocess until t$e ?uotient reac$es 0 or 1. e t$en get all t$e remainders starting -romt$e last remainder and t$e result is t$e %inary -orm o- t$e num%er.+&TE; For t$e last digit )$ic$ is already less t$an t$e di!isor 4)$ic$ is 29 ust co*y t$e!alue to t$e remainder *ortion.

For Example:12610 S G 2

uotient 4emainder 

126 8 2 S 63 063 8 2 S 31 131 8 2 S 1, 11, 8 2 S H 1H 8 2 S 3 13 8 2 S 1 11 8 2 S 1

'o )riting t$e remainders -rom t$e %ottom u* )e get t$e %inary num%er 1111110.

To con!ert a %inary num%er to decimal )e multi*ly t$e %inary digit to R2 raised to t$e*osition o- t$e %inary num%erR. e t$en add all t$e *roducts to get t$e resulting decimalnum%er.

For Example:111111&2 ' ( 1&

)osition * + % 2 1 &

BinaryDigits

+ + + + + + 9

0 20 S 0

1 21 S 2

1 22 S

1 23S 7

1 2S 16

1 2, S 32

1 26 S 6

T&T=; 126

Page 21: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 21/244

.riteitt$is)ay

.riteitt$is)ay

+,8,4,. $ecima& to Octa& 6or exadecima&75Octa& 6or exadecima&7 to$ecima&

on!erting decimal num%ers to &ctal or $eadecimal is %asically t$e same as con!erting

decimal to %inary. #o)e!er instead o- $a!ing 2 as t$e di!isor you re*lace it )it$ 74-oroctal9 or 16 4-or $eadecimal9.

For Example ,-ctal:12610 S G 7

uotient 4emainder 

126 8 7 S 1, 61, 8 7 S 1 H1 8 7 S 1

'o )riting t$e remainders -rom t$e %ottom u* )e get t$e octal num%er 1H6:

For Example ,!exadecimal:12610 S G 16

uotient 4emainder 1 4e?ual to $e

126 8 16 S Hdigit E9

H 8 16 S H

'o )riting t$e remainders -rom t$e %ottom u* )e get t$e $eadecimal num%er HE+8

U U Uon!erting octal or $eadecimal num%ers is also t$e same as con!erting %inary num%ersto decimal. To do t$at )e )ill ust re*lace t$e %ase num%er 2 )it$ 7 -or &ctal and 16 -or$eadecimal.

For Example ,-ctal:1/*0 ' ( 1&

)osition 2 1 &

&ctal Digits + ; 8

6 70 S 6

H 71

S ,6

1 72S 6

T&T=; 126

Page 22: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 22/244

For Example ,!exadecimal:/E 1* ' ( 1&

)osition 1 &

#e Digits ; E

1 160 S 1

H 161 S 112

T&T=; 126

+,8,4,- 0inary to Octa& 5 Octa& to 0inary

To con!ert -rom %inary num%ers to octal )e *artition t$e %inary num%er into grou*s o- 3digits 4-rom rig$t to le-t9 and *ad it )it$ >eros i- t$e num%er o- digits is not di!isi%le %y3. e t$en con!ert eac$ *artition into its corres*onding octal digit. T$e -ollo)ing is ata%le s$o)ing t$e %inary re*resentation o- eac$ octal digit.

Octal ,igit Binar#  

4epresentation

0 000

1 001

2 010

3 011

100

, 101

6 110

H 111

Table +: -ctal igits and their corresponding binary represenation

For Example:111111&2 ' ( 0

5 5 1 1 1 1 1 1 5

+ ; 8

E?ui!alent octal num%er

on!erting octal num%ers to %inary is ust t$e o**osite o- )$at is gi!en a%o!e. 'im*lycon!ert eac$ octal digit into its %inary re*resentation 4gi!en t$e ta%le9 and concatenatet$em. T$e result is t$e %inary re*resentation.

Page 23: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 23/244

+,8,4,< 0inary to exadecima& 5 exadecima& to0inary

To con!ert -rom %inary num%ers to $eadecimal )e *artition t$e %inary num%er into

grou*s o- digits 4-rom rig$t to le-t9 and *ad it )it$ >eros i- t$e num%er o- digits is notdi!isi%le %y . e t$en con!ert eac$ *artition into its corres*onding $eadecimal digit.T$e -ollo)ing is a ta%le s$o)ing t$e %inary re*resentation o- eac$ $eadecimal digit.

e-adecimal 

,igit 

Binar# 

4epresentation

0 0000

1 0001

2 0010

3 0011

0100

, 0101

6 0110

H 0111

7 1000

< 1001

1010

B 1011

1100

D 1101

E 1110

F 1111

Table *: !exadecimal igits and their corresponding binary represenation

For Example:111111&2 ' ( 1*

5 1 1 1 1 1 1 5

; E

E?ui!alent #eadecimalnum%er

on!erting $eadecimal num%ers to %inary is ust t$e o**osite o- )$at is gi!en a%o!e.'im*ly con!ert eac$ $eadecimal digit into its %inary re*resentation 4gi!en t$e ta%le9and concatenate t$em. T$e result is t$e %inary re*resentation.

Page 24: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 24/244

1.6 0-ercises

1.6.1 riting /lgorit(ms

@i!en t$e -ollo)ing set o- tas:s create an algorit$m to accom*lis$ t$e -ollo)ing tas:s.ou may )rite your algorit$ms using *seudocodes or you can use -lo)c$arts.

1. Ba:ing Bread

2. =ogging into your la%oratorys com*uter

3. @etting t$e a!erage o- t$ree num%ers

1.6.2 umber Conversions

on!ert t$e -ollo)ing num%ers;

1. 1<7010 to %inary $eadecimal and octal

2. 10010011012 to decimal $eadecimal and octal

3. H67 to %inary $eadecimal and decimal

. 3F16 to %inary decimal and octal

Page 25: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 25/244

. Introduction to =a)a

2.1 ObjectivesIn t$is section )e )ill %e discussing a little %it o- Ja!a $istory and )$at is Ja!a

Tec$nology. e )ill also discuss t$e *$ases t$at a Ja!a *rogram undergoes.

t t$e end o- t$e lesson t$e student s$ould %e a%le to;

• Descri%e t$e -eatures o- Ja!a tec$nology suc$ as t$e Ja!a !irtual mac$ine gar%age

collection and code security

• Descri%e t$e di--erent *$ases o- a Ja!a *rogram

2.2 7ava Bac8ground 

2.2.1 / little Bit of istor# 

Ja!a )as created in 1<<1 %y James @osling et al. o- 'un (icrosystems. Initially called&a: in $onor o- t$e tree outside @oslings )indo) its name )as c$anged to Ja!a%ecause t$ere )as already a language called &a:.

T$e original moti!ation -or Ja!a )as t$e need -or *lat-orm inde*endent language t$atcould %e em%edded in !arious consumer electronic *roducts li:e toasters andre-rigerators. &ne o- t$e -irst *roects de!elo*ed using Ja!a )as a *ersonal $and$eldremote control named 'tar H.

t a%out t$e same time t$e orld ide e% and t$e Internet )ere gaining *o*ularity.@osling et. al. reali>ed t$at Ja!a could %e used -or Internet *rogramming.

2.2.2 (at is 7ava +ec(nolog#) 

.,.,.,+ A programming &anguage

s a programming &anguage Ja!a can create all :inds o- a**lications t$at you couldcreate using any con!entional *rogramming language.

.,.,.,. A de)e&opment en)ironments a de)e&opment en)ironment Ja!a tec$nology *ro!ides you )it$ a large suite o-tools; a com*iler an inter*reter a documentation generator a class -ile *ac:aging tooland so on.

.,.,.,- An app&ication en)ironment

Ja!a tec$nology a**lications are ty*ically general*ur*ose *rograms t$at run on anymac$ine )$ere t$e =a)a runtime en)ironment 4J"E9 is installed.

Page 26: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 26/244

.,.,.,< A dep&oyment en)ironment

T$ere are t!o main dep&oyment en)ironments2 First> the =RE su**lied %y t$e Ja!a2

'o-t)are De!elo*ment Ait 4'DA9 contains t$e com*lete set o- class -iles -or all t$e Ja!atec$nology *ac:ages )$ic$ includes %asic language classes @I com*onent classesand so on. T$e ot$er main de*loyment en!ironment is on your !eb bro!ser. (ostcommercial %ro)sers su**ly a Ja!a tec$nology inter*reter and runtime en!ironment.

2.2.3 Some 9eatures of 7ava

.,.,-,+ The =a)a *irtua& Machine

T$e =a)a *irtua& Machine is an imaginary mac$ine t$at is im*lemented %y emulatingso-t)are on a real mac$ine. T$e JV( *ro!ides t$e $ard)are *lat-orm s*eci-ications to)$ic$ you com*ile all Ja!a tec$nology code. T$is s*eci-ication ena%les t$e Ja!a so-t)are

to %e *lat-orminde*endent %ecause t$e com*ilation is done -or a generic mac$ine:no)n as t$e JV(.

bytecode is a s*ecial mac$ine language t$at can %e understood %y t$e =a)a *irtua&Machine 6=*M7. T$e %ytecode is inde*endent o- any *articular com*uter $ard)are soany com*uter )it$ a Ja!a inter*reter can eecute t$e com*iled Ja!a *rogram no matter)$at ty*e o- com*uter t$e *rogram )as com*iled on.

.,.,-,. ?arbage "o&&ection

(any *rogramming languages allo)s a *rogrammer to allocate memory during runtime.#o)e!er a-ter using t$at allocated memory t$ere s$ould %e a )ay to deallocate t$atmemory %loc: in order -or ot$er *rograms to use it again. In KK and ot$erlanguages t$e *rogrammer is res*onsi%le -or t$is. T$is can %e di--icult at times sincet$ere can %e instances )$erein t$e *rogrammers -orget to deallocate memory andt$ere-or result to )$at )e call memory lea:s.

In Ja!a t$e *rogrammer is -reed -rom t$e %urden o- $a!ing to deallocate t$at memoryt$emsel!es %y $a!ing )$at )e call t$e garbage co&&ection thread. T$e gar%agecollection t$read is res*onsi%le -or -reeing any memory t$at can %e -reed. T$is $a**ensautomatically during t$e li-etime o- t$e Ja!a *rogram.

Page 27: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 27/244

.,.,-,- "ode Security

ode security is attained in Ja!a t$roug$ t$e im*lementation o- its =a)a RuntimeEn)ironment 6=RE7, T$e J"E runs code com*iled -or a JV( and *er-orms class loading

4t$roug$ t$e class loader9 code !eri-ication 4t$roug$ t$e %ytecode !eri-ier9 and -inallycode eecution.

T$e "&ass Loader is res*onsi%le -or loading all classes needed -or t$e Ja!a *rogram. Itadds security %y se*arating t$e names*aces -or t$e classes o- t$e local -ile system -romt$ose t$at are im*orted -rom net)or: sources. T$is limits any Troan $orse a**licationssince local classes are al)ays loaded -irst. -ter loading all t$e classes t$e memorylayout o- t$e eecuta%le is t$en determined. T$is adds *rotection against unaut$ori>edaccess to restricted areas o- t$e code since t$e memory layout is determined duringruntime.

-ter loading t$e class and layouting o- memory t$e bytecode )eri#ier t$en tests t$e

-ormat o- t$e code -ragments and c$ec:s t$e code -ragments -or illegal code t$at can!iolate access rig$ts to o%ects.

-ter all o- t$ese $a!e %een done t$e code is t$en -inally eecuted.

Page 28: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 28/244

2.2.% $(ases of a 7ava $rogram

T$e -ollo)ing -igure descri%es t$e *rocess o- com*iling and eecuting a Ja!a *rogram.

Figure 2.1: )hases of a a$a )rogram

T$e -irst ste* in creating a Ja!a *rogram is %y )riting your *rograms in a tet editor.Eam*les o- tet editors you can use are note*ad !i emacs etc. T$is -ile is stored in adis: -ile )it$ t$e etension .java.

-ter creating and sa!ing your Ja!a *rogram com*ile t$e *rogram %y using t$e Ja!a

om*iler. T$e out*ut o- t$is *rocess is a -ile o- Ja!a bytecodes )it$ t$e -ile etension.class.

T$e .class -ile is t$en inter*reted %y t$e Ja!a inter*reter t$at con!erts t$e %ytecodes

into t$e mac$ine language o- t$e *articular com*uter you are using.

+as8 +ool to use Output  

rite t$e *rogram ny tet editor File )it$ .a!a etension

om*ile t$e *rogram Ja!a om*iler File )it$ .class etension

4Ja!a %ytecodes9

"un t$e *rogram Ja!a Inter*reter Program &ut*ut

Table /: Summary of )hases of a a$a )rogram

Page 29: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 29/244

- ?etting to %no! your Programming

En)ironment3.1 ObjectivesIn t$is section )e )ill %e discussing on $o) to )rite com*ile and run Ja!a *rograms.T$ere are t)o )ays o- doing t$is t$e -irst one is %y using a console and a tet editor.T$e second one is %y using +etBeans )$ic$ is an Integrated $e)e&opmentEn)ironment or I$E.

t t$e end o- t$e lesson t$e student s$ould %e a%le to;

• reate a Ja!a *rogram using tet editor and console in t$e =inu 4%untu Da**er9

en!ironment

• Di--erentiate %et)een syntaerrors and runtime errors

• reate a Ja!a *rogram using +etBeans

3.2 Introductionn IDE is a *rogramming en!ironment integrated into a so-t)are a**lication t$at*ro!ides a @I %uilder a tet or code editor a com*iler and8or inter*reter and ade%ugger.

T$is tutorial uses %untu Da**er as t$e o*erating system. (a:e sure t$at %e-ore you dot$is tutorial you $a!e installed Ja!a and +etBeans in your system. For instructions on$o) to install Ja!a and +etBeans *lease re-er to Appendix A. For t$e indo)s /P!ersion o- t$is section *lease re-er to Appendix 0.

Be-ore going into details let us -irst ta:e a loo: at t$e -irst Ja!a *rogram you )ill %e)riting.

3.3 M# 9irst 7ava $rogram

public class Hello{

/*** My first java program*/public static void main(String[] args {

//prints t!e string "Hello #orld" on screenSystem.out.println("Hello #orld$"%

&&

Be-ore )e try to e*lain )$at t$e *rogram means lets -irst try to )rite t$is *rogram in a

-ile and try to run it.

Page 30: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 30/244

Introduction to Programming I 30

3.% :sing a +e-t 0ditor and ConsoleFor t$is eam*le )e )ill %e using a tet editor to edit t$e Ja!a source code. ou )ill also

need to o*en t$e Terminal )indo) to com*ile and eecute your Ja!a *rograms.

Step +2 Start the Text Editor

To start t$e Tet Editor in =inu clic: on **licationsccessoriesTet Editor.

Figure .1: Text Editor 3pplication in 4inux 

Step .2 Open Termina&

To o*en Terminal in =inu clic: on **lications ccessories Terminal.

Figure .2: Terminal in 4inux 

Page 31: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 31/244

Introduction to Programming I 31

Step -2 'rite your the source code o# your =a)a program in the Text Editor

Figure .: 5riting the Source Code with the Text Editor 

Page 32: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 32/244

Introduction to Programming I 32

Step <2 Sa)e your =a)a Programe )ill sa!e our *rogram on a -ile named R#ello.a!aR and )e )ill %e sa!ing it inside a-older named (JVP"&@"('.

To o*en t$e Sa)e dialog %o clic: on t$e File menu -ound on t$e menu%ar and t$enclic: on 'a!e.

-ter doing t$e *rocedure descri%ed a%o!e a dialog %o )ill a**ear as s$o)n in Figure%elo).

Figure .%: Sa$e 3s ialog

Page 33: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 33/244

Introduction to Programming I 33

lic: on t$e %ro)se %utton and t$en clic: on t$e reate Folder %utton.

Page 34: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 34/244

Introduction to Programming I 3

+ame t$e ne) -older (JVP"&@"('. +o) clic: on t$e (JP"&@"(' -older inorder to get inside t$at -older. ou )ill see a similar -igure as s$o)n %elo) a-ter youclic:ed on (JVP"&@"('. T$e -older s$ould %e em*ty -or no) since its a ne)lycreated -older and )e $a!ent sa!ed anyt$ing in it yet.

+o) in t$e 'election tet%o ty*e in t$e -ilename o- your *rogram )$ic$ is

R#ello.a!aR and t$en clic: on t$e 'VE %utton.

Page 35: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 35/244

Introduction to Programming I 3,

+o) t$at you!e sa!ed your -ile notice $o) t$e title o- t$e -rame c$anges -rom RntitledDocument 1 4modi-ied9 L geditR to R#ello.a!a 4W8(JVP"&@"('9 geditR. Ta:enote t$at i- you )ant to ma:e c$anges in your -ile you can ust edit it and t$en sa!e itagain %y clic:ing on File 'a!e.

Figure .+: "ew 5indow 3fter Sa$ing

Page 36: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 36/244

Introduction to Programming I 36

Step 42 "ompi&ing your program+o) t$e net ste* is to com*ile your *rogram. @o to t$e Terminal )indo) )e usto*ened a )$ile ago.

Ty*ically )$en you o*en t$e terminal )indo) it o*ens u* and ta:es you directly to)$at is called your home #o&der. To see )$at is inside t$at $ome -older ty*e &s andt$en *ress E+TE". $at you )ill see is a list o- -iles and -olders inside your $ome -older.

+o) you can see $ere t$at t$ere is a -older named R(JVP"&@"('R )$ic$ )e $a!ecreated a )$ile ago and )$ere )e sa!ed our #ello.a!a *rogram. +o) lets go insidet$at directory.

To go inside a directory you ty*e in t$e command; cd @directory name, T$e RcdRcommand stands -or c$ange directory. In t$is case since t$e name o- our directory is(JVP"&@"(' you ty*e in; cd MB=A*APRO?RAMS

Figure .*: Changing the irectory 

Page 37: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 37/244

Introduction to Programming I 3H

&nce inside t$e -older )$ere your Ja!a *rograms are let us no) start com*iling yourJa!a *rogram. Ta:e note t$at you s$ould ma:e sure t$at t$e -ile is inside t$e -older)$ere you are in. In order to do t$at eecute t$e RlsR command again to see i- your -ileis inside t$at -older.

Figure ./: 4ist of Files 6nside the "ew irectory 

Page 38: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 38/244

Introduction to Programming I 37

To com*ile a Ja!a *rogram )e ty*e in t$e command;  Ca)ac @#i&ename. 'o in t$iscase ty*e in; Ca)ac e&&o,Ca)a,

Figure .0: Compiling a$a File

During com*ilation a!ac adds a -ile to t$e dis: called @#i&ename,c&ass> or in t$is case

e&&o,c&ass )$ic$ is t$e actual %ytecode.

Page 39: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 39/244

Introduction to Programming I 3<

Step 82 Running the Program+o) assuming t$at t$ere are no *ro%lems during com*ilation 4)ell e*lore more o- t$e*ro%lems encountered during com*ilation in t$e net section9 )e are no) ready to runyour *rogram.

To run your Ja!a *rogram ty*e in t$e command;  Ca)a @#i&ename !ithout theextension so in t$e case o- our eam*le ty*e in; Ca)a e&&o

ou can see on t$e screen t$at you $a!e ust run your -irst Ja!a *rogram t$at *rints t$emessage R#ello )orldR.

Figure .7: 8unning Class File

Page 40: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 40/244

Introduction to Programming I 0

3.%.1 0rrors

$at )e!e s$o)n so -ar is a Ja!a *rogram )$erein )e didnt encounter any *ro%lems incom*iling and running. #o)e!er t$is is not al)ays t$e case. s )$at )e $a!e discussed

in t$e -irst *art o- t$is course )e usually encounter errors along t$e )ay.

s discussed %e-ore t$ere are t)o ty*es o- errors. T$e -irst one is a com*iletime erroror also called as synta error. T$e second one is t$e runtime error.

-,<,+,+ Syntax Errors

'ynta errors are usually ty*ing errors. ou may $a!e miss*elled a command in Ja!a or-orgot to )rite a semicolon at t$e end o- a statement. Ja!a attem*ts to isolate t$e error%y dis*laying t$e line o- code and *ointing to t$e -irst incorrect c$aracter in t$at line.#o)e!er t$e *ro%lem may not %e at t$e eact *oint.

&t$er common mista:es are in ca*itali>ation s*elling t$e use o- incorrect s*ecialc$aracters and omission o- correct *unctuation.

=ets ta:e -or eam*le our #ello.a!a *rogram )$erein )e intentionally omit t$esemicolon at one statement and )e try to ty*e t$e incorrect s*elling o- a command.

Figure .1&: Source Code 5ith Errors

Page 41: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 41/244

Introduction to Programming I 1

'ee t$e error messages generated a-ter com*iling t$e *rogram. T$e -irst error messagesuggests t$at t$ere is an error in line 6 o- your *rogram. It *ointed to t$e net )orda-ter t$e statict )$ic$ s$ould %e s*elled as static.

T$e second error message suggests t$at t$ere is a missing semicolon a-ter yourstatement.

Figure .11: Compiling the Source Code with Errors

s a rule o- t$um% i- you encounter a lot o- error messages try to correct t$e -irstmista:e in a long list and try to com*ile t$e *rogram again. Doing so may reduce t$etotal num%er o- errors dramatically.

-,<,+,. Run3time Errors

"untime errors are errors t$at )ill not dis*lay until you run or eecute your *rogram.E!en *rograms t$at com*ile success-ully may dis*lay )rong ans)ers i- t$e *rogrammer$as not t$oug$t t$roug$ t$e logical *rocesses and structures o- t$e *rogram.

Page 42: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 42/244

Introduction to Programming I 2

3.* :sing etBeans+o) t$at )e!e tried doing our *rograms t$e com*licated )ay lets no) see $o) to do

all t$e *rocesses )e!e descri%ed in t$e *re!ious sections %y using ust one a**lication.

In t$is *art o- t$e lesson )e )ill %e using /et0eans )$ic$ is an Integrated$e)e&opment En)ironment or I$E. n IDE is a *rogramming en!ironment integratedinto a so-t)are a**lication t$at *ro!ides a @I %uilder a tet or code editor a com*ilerand8or inter*reter and a de%ugger.

Step +2 Run /et0eansT$ere are t)o )ays to run +etBeans. &ne is t$roug$ commandline using terminal or %y

 st clic:ing on t$e s$ortcut %utton -ound on t$e des:to*.

To run +etBeans using commandline. &*en terminal 4see ste*s on $o) to run terminalin t$e *re!ious discussion9 and ty*e; netbeans

Figure .12: 8unning "et9eans with the Command4ine

Page 43: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 43/244

Introduction to Programming I 3

T$e second )ay to run +etBeans is %y clic:ing on t$e s$ortcut icon -ound on yourDes:to*.

Figure .1: 8unning "et9eans using shortcut icon on des;top

Page 44: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 44/244

Introduction to Programming I

-ter you!e o*en +etBeans IDE you )ill see a gra*$ical user inter-ace 4@I9 similar to)$at is s$o)n %elo).

Figure .1%: 5indow 3fter -penning "et9eans

Page 45: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 45/244

Introduction to Programming I ,

Step .2 Ma%e a proCect+o) lets -irst ma:e a *roect. lic: on File +e) Proect. -ter doing t$is a +e)Proect dialog )ill a**ear. +o) clic: on Ja!a **lication and clic: on t$e +E/T %utton.

Figure .1+: Choosing )ro<ect Type

Page 46: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 46/244

Introduction to Programming I 6

+o) a +e) **lication dialog )ill a**ear.

Figure .1*: Setting the )ro<ect 6nformation

Page 47: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 47/244

Introduction to Programming I H

+o) try to c$ange t$e **lication =ocation %y clic:ing on t$e B"&'E %utton. Proect =ocation dialog )ill t$en a**ear. Dou%leclic: on your $ome -older.

Figure .1/: Setting the )ro<ect 4ocation

T$e contents o- t$e root -older is t$en dis*layed. +o) dou%leclic: on t$e

(JVP"&@"(' -older and clic: on t$e &PE+ %utton.

Page 48: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 48/244

Introduction to Programming I 7

'ee no) t$at t$e Proect =ocation and Proect Folder is c$anged to

 8$ome8-lorence8(JVP"&@"('.

Finally on t$e reate (ain lass tet-ield ty*e in #ello as t$e main class name andt$en clic: on t$e FI+I'# %utton.

Figure .10: 5indow after Setting the )ro<ect 4ocation to =>3?3)8-@83=SASetting the =ain Class of the)ro<ect to !ello

Page 49: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 49/244

Introduction to Programming I <

Step -2 Type in your programBe-ore ty*ing in your *rogram let us -irst descri%e t$e main )indo) a-ter creating t$e*roect.

s s$o)n %elo) +etBeans automatically creates t$e %asic code -or your Ja!a *rogram.ou can ust add your o)n statements to t$e generated code. &n t$e le-t side o- t$e)indo) you can see a list o- -olders and -iles t$at +etBeans generated a-ter creating t$e*roect. T$is can all %e -ound in your (JVP"&@"(' -older )$ere you set t$eProect location.

Figure .17: ?iew of the Created )ro<ect 

Page 50: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 50/244

Introduction to Programming I ,0

+o) try to modi-y t$e code generated %y +etBeans. Ignore t$e ot$er *arts o- t$e*rogram -or no) as )e )ill e*lain t$e details o- t$e code later. Insert t$e code;

System.out.println("Hello #orld$"%

a-ter t$e statement 88T&D& code a**lication logic $ere.

Figure .2&: 6nserting the Code

Page 51: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 51/244

Introduction to Programming I ,1

Step <2 "ompi&e your program+o) to com*ile your *rogram ust clic: on Build Build (ain Proect. &r you couldalso use t$e s$ortcut %utton to com*ile your code.

Page 52: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 52/244

Introduction to Programming I ,2

I- t$ere are no errors in your *rogram you )ill see a %uild success-ul message on t$eout*ut )indo).

Figure .21: ?iew after a Successful Compilation

Page 53: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 53/244

Introduction to Programming I ,3

Step 42 Run your programTo run your *rogram clic: on "un "un (ain Proect. &r you could also use t$es$ortcut %utton to run your *rogram.

Figure .22: 8unning with "et9eans

Page 54: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 54/244

Introduction to Programming I ,

T$e out*ut o- your *rogram is dis*layed in t$e out*ut )indo).

Figure .2: ?iew after a Successful 8un

Page 55: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 55/244

Introduction to Programming I ,,

3. 0-ercises

3..1 ello orld; 

sing +etBeans create a class named; Xour+ameY. T$e *rogram s$ould out*ut on t$escreen;

'elcome to ava )rogramming [our+ame]$$$

3..2 +(e +ree

sing +etBeans create a class named; TheTree. T$e *rogram s$ould out*ut t$e-ollo)ing lines on t$e screen;

, t!in- t!at , s!all never see

a poem as lovely as a tree. tree #!ose !ungry mout! is pressedgainst t!e 0art!1s s#eet flo#ing breast.

Page 56: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 56/244

Introduction to Programming I ,6

< Programming Fundamenta&s

%.1 ObjectivesIn t$is section )e )ill %e discussing t$e %asic *arts o- a Ja!a *rogram. e )ill start %ytrying to e*lain t$e %asic *arts o- t$e #ello.a!a *rogram introduced in t$e *re!ioussection. e )ill also %e discussing some coding guidelines or code con!entions along t$e)ay to $el* in e--ecti!ely )riting reada%le *rograms.

t t$e end o- t$e lesson t$e student s$ould %e a%le to;

• Identi-y t$e %asic *arts o- a Ja!a *rogram

• Di--erentiate among Ja!a literals *rimiti!e data ty*es !aria%le ty*es identi-iers

and o*erators

• De!elo* a sim*le !alid Ja!a *rogram using t$e conce*ts learned in t$is c$a*ter

%.2 ,issecting m# first 7ava

 program+o) )ell try to t$e dissect your -irst Ja!a *rogram;

public class Hello{

/**

* My first java program*/public static void main(String[] args {

//prints t!e string "Hello #orld" on screenSystem.out.println("Hello #orld$"%

&&

T$e -irst line o- t$e code

public class Hello

indicates t$e name o- t$e class )$ic$ is e&&o, In Ja!a all code s$ould %e *laced insidea class declaration. e do t$is %y using t$e c&ass :ey)ord. In addition t$e class uses anaccess specifier pub&ic> )$ic$ indicates t$at our class in accessi%le to ot$er classes -romot$er *ac:ages 4*ac:ages are a collection o- classes9. e )ill %e co!ering *ac:ages andaccess s*eci-iers later.

T$e net line )$ic$ contains a curly %race Z indicates t$e start o- a %loc:. In t$is code)e *laced t$e curly %race at t$e net line a-ter t$e class declaration $o)e!er )e canalso *lace t$is net to t$e -irst line o- our code. 'o )e could actually )rite our code as;

public class Hello

Zor

public class Hello {

Page 57: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 57/244

Introduction to Programming I ,H

T$e net t$ree lines indicates a Ja!a comment. comment is somet$ing used todocument a *art o- a code. It is not *art o- t$e *rogram itsel- %ut used -ordocumentation *ur*oses. It is good *rogramming *ractice to add comments to yourcode.

/*** My first java program

U8

comment is indicated %y t$e delimiters 5DQ and D5Q. nyt$ing )it$in t$ese delimitersare ignored %y t$e Ja!a com*iler and are treated as comments.T$e net line

public static void main(String[] args {

or can also %e )ritten as

public static void main(String[] args{

indicates t$e name o- one met$od in e&&o )$ic$ is t$e main met$od. T$e main met$odis t$e starting *oint o- a Ja!a *rogram. ll *rograms ece*t **lets )ritten in Ja!a start)it$ t$e main met$od. (a:e sure to -ollo) t$e eact signature.

T$e net line is also a Ja!a comment

//prints t!e string "Hello #orld" on screen

+o) )e learned t)o )ays o- creating comments. T$e -irst one is %y *lacing t$e

comment inside 8U and U8 and t$e ot$er one is %y )riting 88 at t$e start o- t$ecomment.

T$e net line

System.out.println("Hello #orld$"%

*rints t$e tet #ello orldQ on screen. T$e command 'ystem.out.*rintln49 *rints t$etet enclosed %y ?uotation on t$e screen.

T$e last t)o lines )$ic$ contains t$e t)o curly %races is used to close t$e main met$odand c&ass res*ecti!ely.

Coding<uidelines

1. >our a$a programs should always end with the .javaextension.2. Filenames should matc( the name of your public class. So for exampleB if the

name of your public class is ello= you should sa$e it in a file called ello.java.. >ou should write comments in your code explaining what a certain class doesB

or what a certain method do.

Page 58: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 58/244

Introduction to Programming I ,7

%.3 7ava Commentsomments are notes )ritten to a code -or documentation *ur*oses. T$ose tet are not

*art o- t$e *rogram and does not a--ect t$e -lo) o- t$e *rogram.

Ja!a su**orts t$ree ty*es o- comments; KKstyle single line comments stylemultiline comments and s*ecial a!adoc comments.

%.3.1 C>>"St#le Comments

KK 'tyle comments starts )it$ 88. ll t$e tet a-ter 88 are treated as comments. Foream*le

// 2!is is a 344 style or single line comments

%.3.2 C"St#le Comments

style comments or also called multiline comments starts )it$ a 8U and ends )it$ a U8.ll tet in %et)een t$e t)o delimeters are treated as comments. nli:e KK stylecomments it can s*an multi*le lines. For eam*le

/* t!is is an e5maple of a3 style or multiline comments */

%.3.3 Special 7avadoc Comments

'*ecial Ja!adoc comments are used -or generating an #T(= documentation -or your Ja!a*rograms. ou can create a!adoc comments %y starting t$e line )it$ 8UU and ending it)it$ U8. =i:e style comments it can also s*an lines. It can also contain certain tags to

add more in-ormation to your comments. For eam*le

/**2!is is an e5ample of special java doc comments used for 6ngenerating an !tml documentation. ,t uses tags li-e78aut!or 9lorence :alagtas8version ;.<*/

Page 59: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 59/244

Introduction to Programming I ,<

%.% 7ava Statements and bloc8s statement is one or more lines o- code terminated %y a semicolon. n eam*le o- a

single statement is

System.out.println4#ello )orldQ9[

b&oc% is one or more statements %ounded %y an o*ening and closing curly %races t$atgrou*s t$e statements as one unit. Bloc: statements can %e nested inde-initely. nyamount o- )$ite s*ace is allo)ed. n eam*le o- a %loc: is

public static void main( String[] args {System.out.println("Hello"%System.out.println("#orld"%

&

Coding <uidelines

1. 6n creating bloc;sB you can place the opening curly brace in line with thestatementB li;e for exampleB

 public static $oid main, StringD args  

or you can place the curly brace on the next lineB

li;eB public static $oid main, StringD args

 

2. >ou should indent the next statements after the start of a bloc;Bfor

exampleB public static $oid main, StringD args  System.out.println,!elloGSystem.out.println,worldG

 H

Page 60: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 60/244

Introduction to Programming I 60

%.* 7ava IdentifiersIdenti-iers are to:ens t$at re*resent names o- !aria%les met$ods classes etc. Eam*les

o- identi-iers are; #ello main 'ystem out.

Ja!a identi-iers are c a s e s e n s i ti ! e . T$is means t$at t$e identi-ier; e&&o is not t$e sameas he&&o. Identi-iers must %egin )it$ eit$er a letter an underscore CQ or a dollar sign

 \Q. =etters may %e lo)er or u**er case. 'u%se?uent c$aracters may use num%ers 0 to<.

Identi-iers cannot use Ja!a :ey)ords li:e class *u%lic !oid etc. e )ill discuss morea%out Ja!a :ey)ords later.

Coding<uidelines

1. For names of classesB capitaliIe the first letter of the class name. For namesof methods and $ariablesB the first letter of the word should start with a smallletter.For example:

+ his I s /n0  xampleOf C lass ame

t his I s /n0  xampleOf M ethod  ame

2. 6n case of multiword identifiersB use capital letters to indicate the start of theword except the first word. For exampleB char3rrayB file"umberB Class"ame.

. 3$oid using underscores at the start of the identifier such as Jread or Jwrite.

Page 61: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 61/244

Introduction to Programming I 61

%. 7ava ?e#!ordsAey)ords are *rede-ined identi-iers reser!ed %y Ja!a -or a s*eci-ic *ur*ose. ou cannot

use :ey)ords as names -or your !aria%les classes met$ods ]etc. #ere is a list o- t$eJa!a Aey)ords.

Figure %.1: a$a Key 5ords

e )ill try to discuss all t$e meanings o- t$ese :ey)ords and $o) t$ey are used in our

Ja!a *rograms as )e go along t$e )ay.

/ote2 true false and null are not :ey)ords %ut t$ey are reser!ed )ords so you

cannot use t$em as names in your *rograms eit$er

Page 62: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 62/244

Introduction to Programming I 62

%.6 7ava &iterals=iterals are to:ens t$at do not c$ange or are constant. T$e di--erent ty*es o- literals in

Ja!a are; Integer =iterals FloatingPoint =iterals Boolean =iterals $aracter =iterals and'tring =iterals.

%.6.1 Integer &iterals

Integer literals come in di--erent -ormats; decima& 4%ase 109 hexadecima& 4%ase 169and octa& 4%ase 79. In using integer literals in our *rogram )e $a!e to -ollo) somes*ecial notations.

For decimal num%ers )e $a!e no s*ecial notations. e ust )rite a decimal num%er as itis. For $eadecimal num%ers it s$ould %e *receeded %y 0Q or 0/Q. For octals t$ey are*receeded %y 0Q.

For eam*le consider t$e num%er +.. Its decimal re*resentation is +. )$ile in$eadecimal it is 9x" and in octal it is e?ui!alent to 9+<.

Integer literals de-ault to t$e data ty*e int. n int is a signed 32%it !alue. In somecases you may )is$ to -orce integer literal to t$e data ty*e &ong %y a**ending t$e lQ or

 =Q c$aracter. long is a signed 6%it !alue. e )ill co!er more on data ty*es later.

%.6.2 9loating"$oint &iterals

Floating *oint literals re*resent decimals )it$ -ractional *arts. n eam*le is 3.11,.Floating *oint literals can %e e*ressed in standard or scienti-ic notations. For eam*le,73., is in standard notation )$ile ,.73,e2 is in scienti-ic notation.

Floating *oint literals de-ault to t$e data ty*e doub&e )$ic$ is a 6%it !alue. To use asmaller *recision 432%it9 #&oat ust a**end t$e -Q or FQ c$aracter.

%.6.3 Boolean &iterals

Boolean literals $a!e only t)o !alues true or #a&se.

Page 63: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 63/244

Introduction to Programming I 63

%.6.% C(aracter &iterals

$aracter =iterals re*resent single nicode c$aracters. nicode c$aracter is a 16%itc$aracter set t$at re*laces t$e 7%it 'II c$aracter set. nicode allo)s t$e inclusion o-

sym%ols and s*ecial c$aracters -rom ot$er languages.

To use a c$aracter literal enclose t$e c$aracter in single ?uote delimiters. For eam*let$e letter a is re*resented as a.

To use s*ecial c$aracters suc$ as a ne)line c$aracter a %ac:slas$ is used -ollo)ed %yt$e c$aracter code. For eam*le ^_n` -or t$e ne)line c$aracter ^_r` -or t$e carriagereturn ^_%` -or %ac:s*ace.

%.6.* String &iterals

'tring literals re*resent multi*le c$aracters and are enclosed %y dou%le ?uotes. neam*le o- a string literal is Ge&&o 'or&dH,

Page 64: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 64/244

Introduction to Programming I 6

%.@ $rimitive data t#pesT$e Ja!a *rogramming language de-ines eig$t *rimiti!e data ty*es. T$e -ollo)ing are

%oolean 4-or logical9 c$ar 4-or tetual9 %yte s$ort int long 4integral9 dou%le and -loat4-loating *oint9.

%[email protected] &ogical " boolean

%oolean data ty*e re*resents t)o states; tru e and -a l s e . n eam*le is

boolean result = true%

T$e eam*le s$o)n a%o!e declares a !aria%le named resu&t as boo&ean ty*e andassigns it a !alue o- true.

%[email protected] +e-tual A c(ar 

c$aracter data ty*e 4c$ar9 re*resents a single nicode c$aracter. It must $a!e itsliteral enclosed in single ?uotes4` `9. For eam*le

>a1 //2!e letter a>6t1 // tab

To re*resent s*ecial c$aracters li:e 4single ?uotes9 or R 4dou%le ?uotes9 use t$e esca*ec$aracter _. For eam*le

?\'? //for single @uotes?\"? //for double @uotes

lt$oug$ 'tring is not a *rimiti!e data ty*e 4it is a lass9 )e )ill ust introduce 'tringin t$is section. 'tring re*resents a data ty*e t$at contains multi*le c$aracters. It isnot a primiti)e data type> it is a c&ass, It $as it`s literal enclosed in dou%le ?uotes4Q9.

For eam*le

String message=AHello #orld$B

Page 65: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 65/244

Introduction to Programming I 6,

%[email protected] Integral A b#te= s(ort= int long

Integral data ty*es in Ja!a uses t$ree -orms L decimal octal or $eadecimal. Eam*lesare

< //2!e decimal value <CDD //2!e leading C indicates an octal valueC5:33 //2!e leading C5 indicates a !e5adecimal value

Integral ty*es $as i n t as de-ault data ty*e. ou can de-ine its l o n g !alue %y a**endingt$e letter l or =. Integral data ty*e $a!e t$e -ollo)ing ranges;

 Integer 

&engt(ame or +#pe 4ange

7 %its %yte 2H to 2H1

16 %its s$ort 21,

to 21,

1

32 %its int 231 to 2311

6 %its long 263

to 263

1

Table 0: 6ntegral types and their ranges

Coding <uidelines6n defining a long $alueB a lowercase 4 is not recommended because it is hard to

distinguish from the digit 1.

Page 66: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 66/244

Introduction to Programming I 66

%.@.% 9loating $oint A float and double

Floating *oint ty*es $as do u %l e as de-ault data ty*e. Floating*oint literal includes eit$era decimal *oint or one o- t$e -ollo)ing

0 or e //(add e5ponential value9 or f //(floatE or d //(double

Eam*les are

F.;G // simple floatingpoint value (a doubleI.C<0<F // large floatingpoint value<.D;J9 // simple float siKe value;<F.G04FCIE // large double value #it! redundant E

In t$e eam*le s$o)n a%o!e t$e 23 a-ter t$e E in t$e second eam*le is im*licitly

*ositi!e. T$at eam*le is e?ui!alent to 6.02EK23. Floating*oint data ty*es $a!e t$e-ollo)ing ranges;

9loat &engt( ame or +#pe 4ange

32 %its -loat 231 to 2311

6 %its dou%le 263 to 2631

Table 7: Floating point types and their ranges

Page 67: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 67/244

Introduction to Programming I 6H

%. Dariables )ariab&e is an item o- data used to store state o- o%ects.

!aria%le $as a data type and a name. T$e data type indicates t$e ty*e o- !alue t$att$e !aria%le can $old. T$e )ariab&e name must -ollo) rules -or identi-iers.

%..1 ,eclaring and InitialiEing Dariables

To declare a !aria%le is as -ollo)s

 <data type> <name> [=initial value];

/ote2 Values enclosed in are re?uired !alues )$ile t$ose !alues enclosed in XY areo*tional.

#ere is a sam*le *rogram t$at declares and initiali>es some !aria%les

public class LariableSamples{

public static void main( String[] args {//declare a data type #it! variable name// result and boolean data typeboolean result%

//declare a data type #it! variable name// option and char data typec!ar option%option = ?3?% //assign ?3? to option

//declare a data type #it! variable name//grade, double data type and initialiKed//to C.Cdouble grade = C.C%

&&

Coding <uidelines

1. 6t always good to initialiEe your $ariables as you declare them.2. Lse descriptive names for your $ariables. 4i;e for exampleB if you want to ha$e

a $ariable that contains a grade for a studentB name it asB  grade and not <ust somerandom letters you choose.

. eclare one $ariable per line of code. For exampleB the $ariabledeclarationsB double exam'&Gdouble #uiI'1&G

double grade ' &Gis preferred o$er the declarationB

double exam'&B #uiI'1&B grade'&G

Page 68: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 68/244

Introduction to Programming I 67

%..2 Outputting Dariable ,ata

In order to out*ut t$e !alue o- a certain !aria%le )e can use t$e -ollo)ing commands

System.out.println(System.out.print(

#eres a sam*le *rogram

public class utputLariable{

public static void main( String[] args {int value = ;C%c!ar 5%5 = >1%

System.out.println( value %System.out.println( A2!e value of 5=A 4 5 %

&&

T$e *rogram )ill out*ut t$e -ollo)ing tet on screen

;C2!e value of 5=

%..3 S#stem.out.printlnFG vs. S#stem.out.printFG

$at is t$e di--erence %et)een t$e commands 'ystem.out.*rintln49 and'ystem.out.*rint49G T$e -irst one a**ends a ne)line at t$e end o- t$e data to out*ut)$ile t$e latter doesnt.

onsider t$e statements

System.out.print("Hello "%System.out.print("#orld$"%

T$ese statements )ill out*ut t$e -ollo)ing on t$e screen

Hello #orld$

+o) consider t$e -ollo)ing statements

System.out.println("Hello "%System.out.println("#orld$"%

T$ese statements )ill out*ut t$e -ollo)ing on t$e screen

Hello#orld$

Page 69: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 69/244

Introduction to Programming I 6<

%..% 4eference Dariables vs. $rimitiveDariables

e )ill no) di--erentiate t$e t)o ty*es o- !aria%les t$at Ja!a *rograms $a!e. T$ese are

re#erence )ariab&es and primiti)e )ariab&es.

Primiti)e )ariab&es are !aria%les )it$ *rimiti!e data ty*es. T$ey store data in t$eactual memory location o- )$ere t$e !aria%le is.

Re#erence )ariab&es are !aria%les t$at stores t$e address in t$e memory location. It*oints to anot$er memory location o- )$ere t$e actual data is. $en you declare a!aria%le o- a certain class you are actually declaring a re-erence !aria%le to t$e o%ect)it$ t$at certain class.

For eam*le su**ose )e $a!e t)o !aria%les )it$ data ty*es int and 'tring.

int num = ;C%String name = "Hello"

'u**ose t$e illustration s$o)n %elo) is t$e actual memory o- your com*uter )$ereinyou $a!e t$e address o- t$e memory cells t$e !aria%le name and t$e data t$ey $old.

Memor#  /ddress

Dariableame

,ata

1001 num 10

; ;

1,63 name ddress420009

; ;

;;

2000 R#elloR

s you can see -or t$e *rimiti!e !aria%le num t$e data is on t$e actual location o-)$ere t$e !aria%le is. For t$e re-erence !aria%le name t$e !aria%le ust $olds t$eaddress o- )$ere t$e actual data is.

Page 70: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 70/244

Introduction to Programming I H0

%.15 OperatorsIn Ja!a t$ere are di--erent ty*es o- o*erators. T$ere are arit$metic o*erators relational

o*erators logical o*erators and conditional o*erators. T$ese o*erators -ollo) a certain:ind o- *recedence so t$at t$e com*iler )ill :no) )$ic$ o*erator to e!aluate -irst in casemulti*le o*erators are used in one statement.

%.15.1 /rit(metic operators

#ere are t$e %asic arit$metic o*erators t$at can %e used in creating your Ja!a *rograms

Operator :se ,escription

K o*1 K o*2 dds o*1 and o*2

U o*1 U o*2 (ulti*lies o*1 %y o*2

 8 o*1 8 o*2 Di!ides o*1 %y o*2

o*1 o*2om*utes t$e remainder o- di!idingo*1 %y o*2

o*1 o*2 'u%tracts o*2 -rom o*1

Table 1&: 3rithmetic operations and their functions

Page 71: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 71/244

Introduction to Programming I H1

#eres a sam*le *rogram in t$e usage o- t$ese o*erators;

public class rit!meticEemo{

public static void main(String[] args{

//a fe# numbersint i = FD%int j = G<%double 5 = <D.GDN%double y = D.<<%System.out.println("Lariable values..."%System.out.println(" i = " 4 i%System.out.println(" j = " 4 j%System.out.println(" 5 = " 4 5%System.out.println(" y = " 4 y% //adding numbersSystem.out.println("dding..."%

System.out.println(" i 4 j = " 4 (i 4 j%System.out.println(" 5 4 y = " 4 (5 4 y%

//subtracting numbersSystem.out.println("Subtracting..."%System.out.println(" i j = " 4 (i j%System.out.println(" 5 y = " 4 (5 y%

//multiplying numbersSystem.out.println("Multiplying..."%System.out.println(" i * j = " 4 (i * j%System.out.println(" 5 * y = " 4 (5 * y%

//dividing numbersSystem.out.println("Eividing..."%System.out.println(" i / j = " 4 (i / j%System.out.println(" 5 / y = " 4 (5 / y%

//computing t!e remainder resulting from dividingnumbers

System.out.println("3omputing t!e remainder..."%System.out.println(" i O j = " 4 (i O j%System.out.println(" 5 O y = " 4 (5 O y%

//mi5ing types System.out.println("Mi5ingtypes..."% System.out.println(" j 4 y = "4 (j 4 y% System.out.println(" i * 5 = "4 (i * 5%

&&

Page 72: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 72/244

Introduction to Programming I H2

#ere is t$e out*ut o- t$e *rogram

Lariable values...i = FD

j = G<5 = <D.GDNy = D.<<

dding...i 4 j = DP5 4 y = FG.IPN

Subtracting...i j = N5 y = <C.<NN

Multiplying...i * j = ;NNG5 * y = ;PJ.FD

Eividing...i / j = C

5 / y = F.JCNG3omputing t!e remainder...

i O j = FD5 O y = N.J;N

Mi5ing types...j 4 y = GP.<<i * 5 = ;C;I.NJ

/ote2 $en an integer and a -loating*oint num%er are used as o*erands to a singlearit$metic o*eration t$e result is a -loating *oint. T$e integer is im*licitly con!erted to a-loating*oint num%er %e-ore t$e o*eration ta:es *lace.

Page 73: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 73/244

Introduction to Programming I H3

%.15.2 Increment and ,ecrement operators

side -rom t$e %asic arit$metic o*erators Ja!a also includes a unary increment o*erator4KK9 and unary decrement o*erator 49. Increment and decrement o*erators increase

and decrease a !alue stored in a num%er !aria%le %y 1.

For eam*le t$e e*ression

count = count 4 ;% //increment t!e value of count by ;

is e?ui!alent to

count44%

Operator :se ,escription

KK o*KKIncrements o* %y 1[ e!aluates to t$e!alue o- o* %e-ore it )as incremented

KK KKo*Increments o* %y 1[ e!aluates to t$e!alue o- o* a-ter it )as incremented

o*Decrements o* %y 1[ e!aluates to t$e!alue o- o* %e-ore it )asdecremented

o*Decrements o* %y 1[ e!aluates to t$e!alue o- o* a-ter it )as decremented

Table 11: 6ncrement and ecrement operators

T$e increment and decrement o*erators can %e *laced %e-ore or a-ter an o*erand.

$en used be#ore an o*erand it causes t$e !aria%le to %e incremented or decremented%y 1 and t$en t$e ne) !alue is used in t$e e*ression in )$ic$ it a**ears. For eam*le

int i = ;Cint j = F%int - = C%

- = ++ 4 i% //#ill result to - = G4;C = ;G

Page 74: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 74/244

Introduction to Programming I H

$en t$e increment and decrement o*erators are *laced a-ter t$e o*erand t$e old !alueo- t$e !aria%le )ill %e used in t$e e*ression )$ere it a**ears. For eam*le

int i = ;Cint j = F%int - = C%

- = j44 4 i% //#ill result to - = F4;C = ;F

Coding <uideline 3lways ;eep expressions containing increment and decrement operators simpleand easy to understand.

Page 75: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 75/244

Introduction to Programming I H,

%.15.3 4elational operators

"elational o*erators com*are t)o !alues and determines t$e relations$i* %et)een t$ose!alues. T$e out*ut o- e!aluation are t$e boo&ean )a&ues true or -alse.

Operator :se ,escription

o*1 o*2 o*1 is greater t$an o*2

S o*1 S o*2 o*1 is greater t$an or e?ual to o*2

o*1 o*2 o*1 is less t$an o*2

S o*1 S o*2 o*1 is less t$an or e?ual to o*2

SS o*1 SS o*2 o*1 and o*2 are e?ual

S o*1 S o*2 o*1 and o*2 are not e?ual

Table 12: 8elational -perators

Page 76: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 76/244

Introduction to Programming I H6

#eres a sam*le *rogram t$at uses relational o*erators

public class QelationalEemo{

public static void main(String[] args {//a fe# numbersint i = FD%int j = G<%int - = G<%System.out.println("Lariable values..."%System.out.println(" i = " 4 i%System.out.println(" j = " 4 j%System.out.println(" - = " 4 -%

//greater t!anSystem.out.println("Rreater t!an..."%System.out.println(" i j = " 4 (i j% //falseSystem.out.println(" j i = " 4 (j i% //true

System.out.println(" - j = " 4 (- j% //false

//greater t!an or e@ual toSystem.out.println("Rreater t!an or e@ual to..."%System.out.println(" i = j = " 4 (i = j% //falseSystem.out.println(" j = i = " 4 (j = i% //trueSystem.out.println(" - = j = " 4 (- = j% //true

//less t!anSystem.out.println("Tess t!an..."%System.out.println(" i U j = " 4 (i U j% //trueSystem.out.println(" j U i = " 4 (j U i% //falseSystem.out.println(" - U j = " 4 (- U j% //false

//less t!an or e@ual to

System.out.println("Tess t!an or e@ual to..."%System.out.println(" i U= j = " 4 (i U= j% //trueSystem.out.println(" j U= i = " 4 (j U= i% //falseSystem.out.println(" - U= j = " 4 (- U= j% //true

//e@ual toSystem.out.println("0@ual to..."%System.out.println(" i == j = " 4 (i == j% //falseSystem.out.println(" - == j = " 4 (- == j% //true

//not e@ual toSystem.out.println("+ot e@ual to..."%System.out.println(" i $= j = " 4 (i $= j% //trueSystem.out.println(" - $= j = " 4 (- $= j% //false

&&

Page 77: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 77/244

Introduction to Programming I HH

#eres t$e out*ut -rom t$is *rogram;

Lariable values...i = FD

j = G<- = G<

Rreater t!an...i j = falsej i = true- j = false

Rreater t!an or e@ual to...i = j = falsej = i = true- = j = true

Tess t!an...i U j = truej U i = false- U j = false

Tess t!an or e@ual to...i U= j = truej U= i = false- U= j = true

0@ual to...i == j = false- == j = true

+ot e@ual to...i $= j = true- $= j = false

Page 78: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 78/244

Introduction to Programming I H7

%.15.% &ogical operators

=ogical o*erators $a!e one or t)o %oolean o*erands t$at yield a %oolean result. T$ereare si logical o*erators; MM 4logical +D9 M 4%oolean logical +D9 NN 4logical &"9 N

4%oolean logical inclusi!e &"9 O 4%oolean logical eclusi!e &"9 and 4logical +&T9.

T$e %asic e*ression -or a logical o*eration is

5; op 5<

)$ere 1 2 can %e %oolean e*ressions !aria%les or constants and o* is eit$er MM MNN N or O o*erator. T$e trut$ ta%les t$at )ill %e s$o)n net summari>e t$e result o-eac$ o*eration -or all *ossi%le com%inations o- 1 and 2.

Page 79: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 79/244

Introduction to Programming I H<

<,+9,<,+ 6&ogica& A/$7 and 6boo&ean &ogica& A/$7

#ere is t$e trut$ ta%le -or MM and M

 -1 -2 4esult 

T"E T"E T"E

T"E F='E F='E

F='E T"E F='E

F='E F='E F='E

Table 1: Truth table for M and MM

T$e %asic di--erence %et)een MM and M o*erators is t$at MM su**orts short3circuite)a&uations 4or *artial e!aluations9 )$ile M doesnt. $at does t$is meanG

@i!en an e*ression

e5p; VV e5p<

MM )ill e!aluate t$e e*ression e*1 and immediately return a -alse !alue is e*1 is-alse. I- e*1 is -alse t$e o*erator ne!er e!aluates e*2 %ecause t$e result o- t$eo*erator )ill %e -alse regardless o- t$e !alue o- e*2. In contrast t$e M o*erator al)ayse!aluates %ot$ e*1 and e*2 %e-ore returning an ans)er.

#eres a sam*le source code t$at uses logical and %oolean +D

public class 2est+E{

public static void main( String[] args {

int i = C%int j = ;C%boolean test= false%

//demonstrate VVtest = (i ;C VV (j44 P%System.out.println(i%System.out.println(j%System.out.println(test%

//demonstrate Vtest = (i ;C V (j44 P%

System.out.println(i%System.out.println(j%System.out.println(test%

&&

Page 80: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 80/244

Introduction to Programming I 70

T$e out*ut o- t$e *rogram is

C;C

falseC;;false

+ote t$at t$e KK on t$e line containing t$e MM o*erator is not e!aluated since t$e -irste*ression 4i109 is already e?ual to -alse.

Page 81: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 81/244

Introduction to Programming I 71

<,+9,<,. JJ 6&ogica& OR7 and J 6boo&ean &ogica& inc&usi)e OR7

#ere is t$e trut$ ta%le -or NN and N

 -1 -2 4esult 

T"E T"E T"E

T"E F='E T"E

F='E T"E T"E

F='E F='E F='E

Table 1%: Truth table for N and NN

T$e %asic di--erence %et)een NN and N o*erators is t$at NN su**orts s$ortcircuite!aluations 4or *artial e!aluations9 )$ile N doesnt. $at does t$is meanG

@i!en an e*ression

e5p; WW e5p<

NN )ill e!aluate t$e e*ression e*1 and immediately return a true !alue is e*1 is true.I- e*1 is true t$e o*erator ne!er e!aluates e*2 %ecause t$e result o- t$e o*erator )ill%e true regardless o- t$e !alue o- e*2. In contrast t$e N o*erator al)ays e!aluates %ot$e*1 and e*2 %e-ore returning an ans)er.

#eres a sam*le source code t$at uses logical and %oolean &"

public class 2estQ{

public static void main( String[] args {

int i = C%int j = ;C%boolean test= false%

//demonstrate WWtest = (i U ;C WW (j44 P%System.out.println(i%System.out.println(j%System.out.println(test%

//demonstrate Wtest = (i U ;C W (j44 P%

System.out.println(i%System.out.println(j%System.out.println(test%

&&

Page 82: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 82/244

Introduction to Programming I 72

T$e out*ut o- t$e *rogram is

C;C

trueC;;true

+ote t$at t$e KK on t$e line containing t$e NN o*erator is not e!aluated since t$e -irste*ression 4i109 is already e?ual to true.

Page 83: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 83/244

Introduction to Programming I 73

<,+9,<,- K 6boo&ean &ogica& exc&usi)e OR7

#ere is t$e trut$ ta%le -or O

 -1 -2 4esult 

T"E T"E F='E

T"E F='E T"E

F='E T"E T"E

F='E F='E F='E

Table 1+: Truth table for O

T$e result o- an eclusi!e &" o*eration is T"E i- and only i- one o*erand is true andt$e ot$er is -alse. +ote t$at %ot$ o*erands must al)ays %e e!aluated in order tocalculate t$e result o- an eclusi!e &".

#eres a sam*le source code t$at uses t$e logical eclusi!e &" o*erator

public class 2estXQ{

public static void main( String[] args {

boolean val; = true% booleanval< = true%System.out.println(val; Y val<%

val; = false% val< = true%System.out.println(val; Y val<%

val; = false% val< = false%System.out.println(val; Y val<%

val; = true% val< = false%System.out.println(val; Y val<%

&&

T$e out*ut o- t$e *rogram is

falsetruefalsetrue

Page 84: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 84/244

Introduction to Programming I 7

<,+9,<,< 6&ogica& /OT7

T$e logical +&T ta:es in one argument )$erein t$at argument can %e an e*ression!aria%le or constant. #ere is t$e trut$ ta%le -or

 -1 4esult 

T"E F='E

F='E T"E

Table 1*: Truth table for P

#eres a sam*le source code t$at uses t$e logical +&T o*erator

public class 2est+2{

public static void main( String[] args {

boolean val; = true%boolean val< = false%System.out.println($val;%System.out.println($val<%

&

b

T$e out*ut o- t$e *rogram is

falsetrue

Page 85: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 85/244

Introduction to Programming I 7,

%.15.* Conditional Operator F)G

T$e conditional o*erator 2 is a ternary o*erator. T$is means t$at it ta:es in t$reearguments t$at toget$er -orm a conditional e*ression. T$e structure o- an e*ression

using a conditional o*erator is

e5p;Ze5p<7e5pF

)$erein e*1 is a %oolean e*ression )$ose result must eit$er %e true or -alse.

I- e*1 is true e*2 is t$e !alue returned. I- it is -alse t$en e*3 is returned.

For eam*le gi!en t$e code

public class 3onditionalperator{

public static void main( String[] args {

String status = ""%int grade = JC%

//get status of t!e studentstatus = (grade = IC!")assed""9ail"%

//print statusSystem.out.println( status %

&&

T$e out*ut o- t$is *rogram )ill %e

)assed

Page 86: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 86/244

Introduction to Programming I 76

#ere is t$e -lo)c$art o- $o) G; )or:s

Figure %.2: Flowchart using the (: operator 

#ere is anot$er *rogram t$at uses t$e G; o*erator

class 3onditionalperator{

public static void main( String[] args {

int score = C%c!ar ans#er = ?a?%

score = (ans#er == ?a? Z ;C 7 C%System.out.println("Score = " 4 score %

&&

T$e out*ut o- t$e *rogram is

Score = ;C

Page 87: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 87/244

Introduction to Programming I 7H

%.15. Operator $recedence

&*erator *recedence de-ines t$e com*iler`s order o- e!aluation o- o*erators so as tocome u* )it$ an unam%iguous result.

Figure %.: -perator )recedence

@i!en a com*licated e*ressionIO<*N4G/<4JJ;C

)e can re)rite t$e e*ression and *lace some *arent$esis %ase on o*erator *recedence

((IO<*N4(G/<4JJ;C%

Coding <uidelinesTo a$oid confusion in e$aluating mathematical operationsB ;eep your expressionssimple and use parenthesis.

Page 88: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 88/244

Introduction to Programming I 77

%.11 0-ercises

%.11.1 ,eclaring and printing variables

@i!en t$e ta%le %elo) declare t$e -ollo)ing !aria%les )it$ t$e corres*onding data ty*esand initiali>ation !alues. &ut*ut to t$e screen t$e !aria%le names toget$er )it$ t$e!alues.

Dariable name ,ata +#pe Initial value

num%er integer 10

letter c$aracter a

result %oolean true

str 'tring $ello

T$e -ollo)ing s$ould %e t$e e*ected screen out*ut

+umber = ;Cletter = aresult = truestr = !ello

%.11.2 <etting t(e average of t(ree numbers

reate a *rogram t$at out*uts t$e a!erage o- t$ree num%ers. =et t$e !alues o- t$e t$reenum%ers %e 10 20 and ,. T$e e*ected screen out*ut is

number ; = ;Cnumber < = <Cnumber F = GNverage is = <N

%.11.3 Output greatest value

@i!en t$ree num%ers )rite a *rogram t$at out*uts t$e num%er )it$ t$e greatest !alueamong t$e t$ree. se t$e conditional G; o*erator t$at )e $a!e studied so -ar 4I/T; ou)ill need to use t)o sets o- 2 to sol!e t$is9. For eam*le gi!en t$e num%ers 10 23 and, your *rogram s$ould out*ut

number ; = ;Cnumber < = <F

number F = N2!e !ig!est number is = <F

%.11.% Operator precedence

@i!en t$e -ollo)ing e*ressions re)rite t$em %y )riting some *arent$esis %ased on t$ese?uence on $o) t$ey )ill %e e!aluated.1. a 8 % O c O d L e K - L g U $ K i

2. 3 U 10 U2 8 1, L 2 K O 2 O 23. r O s U t 8 u L ! K ) O L yKK

Page 89: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 89/244

Introduction to Programming I 7<

4 ?etting Input #rom the Neyboard

*.1 Objectives+o) t$at )e!e studied some %asic conce*ts in Ja!a and )e!e )ritten some sim*le*rograms lets ma:e our *rograms more interacti!e %y getting some in*ut -rom t$euser. In t$is section )ell %e discussing t)o met$ods o- getting in*ut t$e -irst one ist$roug$ t$e use o- t$e Bu--ered"eader class and t$e ot$er one in!ol!es a gra*$ical userinter-ace %y using J&*tionPane.

t t$e end o- t$e lesson t$e student s$ould %e a%le to;

• reate an interacti!e Ja!a *rogram t$at gets in*ut -rom t$e :ey%oard

• se t$e Bu--ered"eader class to get in*ut -rom t$e :ey%oard using a console

• se t$e J&*tionPane class to get in*ut -rom t$e :ey%oard using a gra*$ical user

inter-ace

*.2 :sing Buffered4eader to getinput In t$is section )e )ill use t$e :ufferedQeader class -ound in t$e java.io *ac:age

in order to get in*ut -rom t$e :ey%oard.

#ere are t$e ste*s to get in*ut -rom t$e :ey%oard;

1. dd t$is at t$e to* o- your code;

im*ort a!a.io.U[

2. dd t$is statement;

:ufferedQeader data,n = ne# :ufferedQeader(ne# ,nputStreamQeader( System.in %

3. Declare a tem*orary 'tring !aria%le to get t$e in*ut and in!o:e t$e read=ine49

met$od to get in*ut -rom t$e :ey%oard. ou $a!e to ty*e it inside a trycatc$ %loc:.

try{String temp = data,n.readTine(%

&catc!( ,05ception e {

System.out.println(A0rror in getting inputB%&

Page 90: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 90/244

Introduction to Programming I <0

#ere is t$e com*lete source code;

import java.io.:ufferedQeader%import java.io.,nputStreamQeader%

import java.io.,05ception%

public class Ret,nput9romeyboard{

public static void main( String[] args {

#u$$ered%eader data&n = ne #u$$ered%eader(ne&nput)tream%eader( )ystem*in ;

String name = ""%

System.out.print(")lease 0nter our +ame7"%

try

-

name = data&n*read.ine(;-catch( &/01ception e )ystem*out*println("0rror2";

System.out.println("Hello " 4 name 4"$"%-

&

+o) lets try to e*lain eac$ line o- code;

T$e statements

import java.io.:ufferedQeader%import java.io.,nputStreamQeader%import java.io.,05ception%

indicate t$at )e )ant to use t$e classes #u$$ered%eader &nput)tream%eader and

&/01ception )$ic$ is inside t$e ava*io pac%age. T$e Ja!a **lication

Programming Inter-ace 4PI9 contains $undreds o- *rede-ined classes t$at you can use inyour *rograms. T$ese classes are organi>ed into )$at )e call pac%ages,

Pac%ages contain classes t$at $a!e related *ur*ose. Just li:e in our eam*le t$eava*io *ac:age contains classes t$at allo) *rograms to in*ut and out*ut data. T$e

statements can also %e re)ritten as

import java.io.*%

)$ic$ )ill load all t$e classes -ound in t$e *ac:age and t$en )e can use t$ose classesinside our *rogram.

Page 91: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 91/244

T$e net t)o statements

public class Ret,nput9romeyboard{

public static void main( String[] args {

)ere already discussed in t$e *re!ious lesson. T$is means )e declare a class namedRet,nput9romeyboard and )e declare t$e main

met$od.

In t$e statement

:ufferedQeader data,n = ne# :ufferedQeader(ne#,nputStreamQeader( System.in %

)e are declaring a !aria%le named dataIn )it$ t$e class ty*e 0u##eredReader. Dont

)orry a%out )$at t$e synta means -or no). e )ill co!er more a%out t$is later in t$ecourse.

+o) )e are declaring a 'tring !aria%le )it$ t$e identi-ier name

String name = ""%

T$is is )$ere )e )ill store t$e in*ut o- t$e user. T$e !aria%le name is initiali>ed to anem*ty 'tring RR. It is al)ays good to initiali>e your !aria%les as you declare t$em.

T$e net line ust out*uts a 'tring on t$e screen as:ing -or t$e users name.

System.out.print(")lease 0nter our +ame7"%

+o) t$e -ollo)ing %loc: de-ines a trycatc$ %loc:

try{

name = data,n.readTine(%&catc!( ,05ception e

{ System.out.println("0rror$"%

&

T$is assures t$at t$e *ossi%le ece*tions t$at could occur in t$e statement

name = data,n.readTine(%

)ill %e catc$ed. e )ill co!er more a%out ece*tion $andling in t$e latter *art o- t$iscourse %ut -or no) ust ta:e note t$at you need to add t$is code in order to use t$eread=ine49 met$od o- Bu--ered"eader to get in*ut -rom t$e user.

Page 92: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 92/244

+o) going %ac: to t$e statement

name = data,n.readTine(%

t$e met$od call data,n.readTine( gets in*ut -rom t$e user and )ill return a 'tring!alue. T$is !alue )ill t$en %e sa!ed to our name !aria%le )$ic$ )e )ill use in our -inal

statement to greet t$e user

System.out.println("Hello " 4 name 4 "$"%

Page 93: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 93/244

*.3 :sing 7Option$ane to get input not$er )ay to get in*ut -rom t$e user is %y using t$e ption)ane class )$ic$ is

-ound in t$e java5.s#ing *ac:age. Jption)ane ma:es it easy to *o* u* a standarddialog %o t$at *rom*ts users -or a !alue or in-orms t$em o- somet$ing.

@i!en t$e -ollo)ing code

import java5.s#ing.ption)ane%

public class Ret,nput9romeyboard{

public static void main( String[] args {String name = ""%name = option)ane.s!o#,nputEialog(")lease enter your

name"%

String msg = "Hello " 4 name 4 "$"%

ption)ane.s!o#MessageEialog(null msg%

&

T$is )ill out*ut

&

Figure +.1: @etting 6nput Lsing -ption)ane

Figure +.2: 6nput florence on the -ption)ane

Figure +.: Showing =essage Lsing -ption)ane

Page 94: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 94/244

T$e -irst statement

import java5.s#ing.ption)ane%

indicates t$at )e )ant to im*ort t$e class ption)ane -rom t$e java5.s#ing

*ac:age. e can also )rite t$is as

import java5.s#ing.*%

T$e statement

name = ption)ane.s!o#,nputEialog(")lease enter your name"%

creates a ption)ane in*ut dialog )$ic$ )ill dis*lay a dialog )it$ a message atet-ield and an &A %utton as s$o)n in t$e -igure. T$is returns a 'tring )$ic$ )e )ill

sa!e in t$e name !aria%le.

+o) )e create t$e )elcome message )$ic$ )e )ill store in t$e msg

!aria%le

String msg = "Hello " 4 name 4 "$"%

T$e net line dis*lays a dialog )$ic$ contains a message and an &A %utton.

ption)ane.s!o#MessageEialog(null msg%

Page 95: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 95/244

*.% 0-ercises

*.%.1 &ast 3 !ords FBuffered4eader versionG

sing Bu--ered"eader as: -or t$ree )ords -rom t$e user and out*ut t$ose t$ree )ordson t$e screen. For eam*le

0nter #ord;7Roodbye0nter #ord<7and0nter #ordF7Hello

Roodbye and Hello

*.%.2 &ast 3 !ords F7Option$ane versionG

sing J&*tionPane as: -or t$ree )ords -rom t$e user and out*ut t$ose t$ree )ords on

t$e screen. For eam*le

Figure +.%: First 6nput

Figure +.+: Second 6nput

Figure +.*: Third 6nput 

Figure +./: Show =essage

Page 96: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 96/244

8 "ontro& Structures

.1 ObjectivesIn t$e *re!ious sections )e $a!e gi!en eam*les o- se?uential *rograms )$ereinstatements are eecuted one a-ter anot$er in a -ied order. In t$is section )e )ill %ediscussing control structures )$ic$ allo)s us to c$ange t$e ordering o- $o) t$estatements in our *rograms are eecuted.

t t$e end o- t$e lesson t$e student s$ould %e a%le to;

• se decision control structures 4i- else s)itc$9 )$ic$ allo)s selection o- s*eci-ic

sections o- code to %e eecuted

• se re*etition control structures 4)$ile do)$ile -or9 )$ic$ allo) eecuting

s*eci-ic sections o- code a num%er o- times

• se %ranc$ing statements 4%rea: continue return9 )$ic$ allo)s redirection o-

*rogram -lo)

.2 ,ecision Control StructuresDecision control structures are Ja!a statements t$at allo)s us to select and eecutes*eci-ic %loc:s o- code )$ile s:i**ing ot$er sections.

.2.1 if statement T$e i-statement s*eci-ies t$at a statement 4or %loc: o- code9 )ill %e eecuted if andonly if a certain boolean statement is true.

T$e i-statement $as t$e -orm

if( boolean\e5pression statement%

or

if( boolean\e5pression {

statement;%statement<%. . .

&

)$ere %ooleanCe*ression is eit$er a %oolean e*ression or %oolean !aria%le.

Page 97: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 97/244

Figure *.1: Flowchart of 6fStatement 

if( grade IC System.out.println("3ongratulations$"%

or

int grade = IJ%

if( grade IC { System.out.println("3ongratulations$"% System.out.println("ou passed$"%

&

Coding <uidelines

1. The booleanHe-pression part of a statement should e$aluate to a boolean $alue.That means that the execution of the condition should either result to a $alue of trueor a false.

2. 6ndent the statements inside the ifbloc;.ForexampleB if, booleanJexpression  

 AAstatement1G AAstatement2G

 H

Page 98: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 98/244

.2.2 if"else statement 

T$e i-else statement is used )$en )e )ant to eecute a certain statement i- a conditionis true and a di--erent statement i- t$e condition is -alse.

T$e i-else statement $as t$e -orm

if( boolean\e5pression statement%

elsestatement%

or can also %e )ritten as

if( boolean\e5pression {statement;%statement<%

. . .&else{

&

statement;%statement<%. . .

For eam*le gi!en t$e code sni**et

int grade = IJ%

if( grade IC System.out.println("3ongratulations$"%else System.out.println("Sorry you failed"%

or

int grade = IJ%

if( grade IC { System.out.println("3ongratulations$"% System.out.println("ou passed$"%

&else{

&System.out.println("Sorry you failed"%

Page 99: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 99/244

Figure *.2: Flowchart of 6fElse Statement 

Coding <uidelines

1. To a$oid confusionB always place the statement or statements of an if or ifelsebloc; inside brac;ets H.

2. >ou can ha$e nested ifelse bloc;s. This means that you can ha$e other ifelsebloc;s inside another ifelse bloc;.For exampleB

if, booleanJexpression  

if, booleanJexpression  . . .

 H

 Helse . . .

 H

Page 100: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 100/244

Introduction to Programming I 100

.2.3 if"else"if statement 

T$e statement in t$e elseclause o- an i-else %loc: can %e anot$er i-else structures.T$is cascading o- structures allo)s us to ma:e more com*le selections.

T$e i-else i- statement $as t$e -orm

if( boolean\e5pression; statement;%

else if( boolean\e5pression< statement<%

elsestatementF%

Ta:e note t$at you can $a!e many elsei- %loc:s a-ter an i-statement. T$e else%loc: iso*tional and can %e omitted. In t$e eam*le s$o)n a%o!e i- %ooleanCe*ression1 istrue t$en t$e *rogram eecutes statement1 and s:i*s t$e ot$er statements. I-

%ooleanCe*ression2 is true t$en t$e *rogram eecutes statement 2 and s:i*s to t$estatements -ollo)ing statement3.

Figure *.: Flowchart of 6fElse6f Statement 

Page 101: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 101/244

For eam*le gi!en t$e code sni**et

int grade = IJ%

if( grade PC { System.out.println("Lerygood$"%

&else if( grade IC {

System.out.println("Lery good$"%&else{

&System.out.println("Sorry you failed"%

.2.% Common 0rrors !(en using t(e if"else statements

1. T$e condition inside t$e i-statement does not e!aluate to a %oolean !alue. Foream*le

//'Q+Rint number = C%if( number {

//some statements !ere&

T$e !aria%le num%er does not $old a Boolean !alue.

2. sing S instead o- SS -or com*arison. For eam*le

//'Q+Rint number = C%if( number = C {

//some statements !ere&

T$is s$ould %e )ritten as

//3QQ032int number = C%if( number == C {

//some statements !ere

&

3. riting e&sei# instead o- e&se i# .

Page 102: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 102/244

.2.* 0-ample for if"else"else if 

public class Rrade{

public static void main( String[] args {double grade = P<.C%

if( grade = PC {System.out.println( "05cellent$" %

&else if( (grade U PC VV (grade = JC{

System.out.println("Rood job$" %&else if( (grade U JC VV (grade = IC{

System.out.println("Study !arder$" %&else{

&&

&

System.out.println("Sorry you failed."%

Page 103: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 103/244

.2. s!itc( statement 

not$er )ay to indicate a %ranc$ is t$roug$ t$e s!itch :ey)ord. T$e s)itc$ constructallo)s %ranc$ing on multi*le outcomes.

T$e s)itc$ statement $as t$e -orm

s#itc!( s#itc!\e5pression {case case\selector;7

statement;% //statement<% //bloc- ;. . . //brea-%

case case\selector<7statement;% //statement<% //bloc- <. . . //

brea-%. . .default7

statement;% //statement<% //bloc- n. . . //brea-%

&

)$ere s)itc$Ce*ression is an integer or character e*ression and caseCselector1caseCselector2 and so on are uni?ue integer or c$aracter constants.

$en a s)itc$ is encountered Ja!a -irst e!aluates t$e s)itc$Ce*ression and um*s to

t$e case )$ose selector matc$es t$e !alue o- t$e e*ression. T$e *rogram eecutes t$estatements in order -rom t$at *oint on until a %rea: statement is encountered s:i**ingt$en to t$e -irst statement a-ter t$e end o- t$e s)itc$ structure.

I- none o- t$e cases are satis-ied t$e de-ault %loc: is eecuted. Ta:e note $o)e!ert$at t$e de-ault *art is o*tional. s)itc$ statement can $a!e no de-ault %loc:.

/OTES2• nli:e )it$ t$e i# statement t$e multi*le statements are eecuted in t$e s)itc$

statement )it$out needing t$e curly %races.• $en a case in a s)itc$ statement $as %een matc$ed all t$e statements associated

)it$ t$at case are eecuted. +ot only t$at t$e statements associated )it$ t$e

succeeding cases are also eecuted.• To *re!ent t$e *rogram -rom eecuting statements in t$e su%se?uent cases )e use a

brea% statement as our last statement.

Page 104: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 104/244

Coding <uidelines

1. eciding whether to use an if statement or a switch statement is a <udgment call.

>ou can decide which to useB based on readability and other factors.2. 3n if statement can be used to ma;e decisions based on ranges of $alues

or conditionsB whereas a switch statement can ma;e decisions based only on a singleinteger or character $alue. 3lsoB the $alue pro$ided to each case statement must beuni#ue.

Figure *.%: Flowchart of Switch Statements

Page 105: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 105/244

.2.6 0-ample for s!itc(

public class Rrade{

public static void main( String[] args {int grade = P<%

s#itc!(grade{case ;CC7

case PC7

case JC7

default7

&&

&

System.out.println( "05cellent$" %brea-%

System.out.println("Rood job$" %brea-%

System.out.println("Study !arder$" %brea-%

System.out.println("Sorry you failed."%

Page 106: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 106/244

.3 4epetition Control Structures"e*etition control structures are Ja!a statements t$at allo)s us to eecute s*eci-ic

%loc:s o- code a num%er o- times. T$ere are t$ree ty*es o- re*etition control structurest$e )$ile do)$ile and -or loo*s.

.3.1 !(ile loop

T$e )$ile loo* is a statement or %loc: o- statements t$at is re*eated as long as somecondition is satis-ied.

T$e )$ile statement $as t$e -orm

#!ile( boolean\e5pression {statement;%statement<%. . .

&

T$e statements inside t$e )$ile loo* are eecuted as long as t$e %ooleanCe*ressione!aluates to true.

For eam*le gi!en t$e code sni**et

int i = G%#!ile ( i C {

System.out.print(i%i%

&

T$e sam*le code s$o)n )ill *rint GF<; on t$e screen. Ta:e note t$at i- t$e linecontaining t$e statement i% is remo!ed t$is )ill result to an in#inite &oop or a

loo* t$at does not terminate. T$ere-ore )$en using )$ile loo*s or any :ind o- re*etitioncontrol structures ma:e sure t$at you add some statements t$at )ill allo) your loo* toterminate at some *oint.

Page 107: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 107/244

T$e -ollo)ing are ot$er eam*les o- )$ile loo*s

Examp&e +2

int 5 = C%#!ile (5U;C{

System.out.println(5%544%

&

Examp&e .2

//infinite loop#!ile(true

System.out.println(A!elloB%

Examp&e -2

//no loops// statement is not even e5ecuted#!ile (false

System.out.println(A!elloB%

Page 108: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 108/244

.3.2 do"!(ile loop

T$e do)$ile loo* is similar to t$e )$ileloo*. T$e statements inside a do)$ile loo* areeecuted se!eral times as long as t$e condition is satis-ied.

T$e main di--erence %et)een a )$ile and do)$ile loo* is t$at t$e statements inside ado)$ile loo* are eecuted at &east once,

T$e do)$ile statement $as t$e -orm

do{

statement;%statement<%. . .

&#!ile( boolean\e5pression %

T$e statements inside t$e do)$ile loo* are -irst eecuted and t$en t$e condition in t$e%ooleanCe*ression *art is e!aluated. I- t$is e!aluates to true t$e statements inside t$edo)$ile loo* are eecuted again.

#ere are a -e) eam*les t$at uses t$e do)$ile loo*;

Examp&e +2

int 5 = C%do{

System.out.println(5%544%

&#!ile (5U;C%

T$is eam*le )ill out*ut C;<FGNIDJP on t$e screen.

Examp&e .2

//infinite loopdo{

System.out.println(A!elloB%& #!ile (true%

T$is eam*le )ill result to an in-inite loo* t$at *rints !ello on screen.

Examp&e -2

//one loop// statement is e5ecuted oncedoSystem.out.println(A!elloB%

#!ile (false%

T$is eam*le )ill out*ut !ello on t$e screen.

Page 109: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 109/244

Coding <uidelines

1. Common programming mista;es when using the dowhile loop is forgetting to

write the semicolon after the while expression.do 

...

 Hwhile,booleanJexpression AA58-"@Qforgot semicolon G2. ust li;e in while loopsB ma;e sure that your dowhile loops will terminate at

some point.

.3.3 for loop

T$e -or loo* li:e t$e *re!ious loo*s allo)s eecution o- t$e same code a num%er o-times.

T$e -or loo* $as t$e -orm

for (,nitialiKation05pression% Toop3ondition% Step05pression{statement;%statement<%. . .

&

)$ere

 InitialiEation0-pression initiali>es t$e loo* !aria%le.&oopCondition " com*ares t$e loo* !aria%le to some limit !alue.Step0-pression u*dates t$e loo* !aria%le.

sim*le eam*le o- t$e -or loo* is

int i%for( i = C% i U ;C% i44 {

System.out.print(i%&

In t$is eam*le t$e statement iS0 -irst initiali>es our !aria%le. -ter t$at t$e conditione*ression i10 is e!aluated. I- t$is e!aluates to true t$en t$e statement inside t$e -orloo* is eecuted. +et t$e e*ression iKK is eecuted and t$en t$e conditione*ression is again e!aluated. T$is goes on and on until t$e condition e*ressione!aluates to -alse.

T$is eam*le is e?ui!alent to t$e )$ile loo* s$o)n %elo)

int i = C%#!ile( i U ;C {

System.out.print(i%i44%

&

Page 110: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 110/244

Introduction to Programming I 110

.% Branc(ing StatementsBranc$ing statements allo)s us to redirect t$e -lo) o- *rogram eecution. Ja!a o--ers

t$ree %ranc$ing statements; %rea: continue and return.

.%.1 brea8 statement 

T$e %rea: statement $as t)o -orms; unla%eled 4)e sa) its unla%eled -orm in t$e s)itc$statement9 and la%eled.

8,<,+,+ 1n&abe&ed brea% statement

T$e unla%eled %rea: terminates t$e enclosing s)itc$ statement and -lo) o- controltrans-ers to t$e statement immediately -ollo)ing t$e s)itc$. ou can also use t$eunla%eled -orm o- t$e brea- statement to terminate a -or )$ile or do)$ile loo*.

For eam*le

String names[] = {":ea!" ":ianca" "Tance" ":elle""+ico" "Ka" "Rem" "0t!an"&%

String searc!+ame = "Ka"%boolean found+ame = false%

for( int i=C% iU names.lengt!% i44 {if( names[i].e@uals( searc!+ame {

found+ame = true% brea3;

&&

if( found+ame {System.out.println( searc!+ame 4 " found$" %

&else{

&System.out.println( searc!+ame 4 " not found." %

In t$is eam*le i- t$e searc$ string R>aR is -ound t$e -or loo* )ill sto* and -lo) o-control trans-ers to t$e statement -ollo)ing t$e -or loo*.

Page 111: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 111/244

8,<,+,. Labe&ed brea% statement

T$e la%eled -orm o- a %rea: statement terminates an outer statement )$ic$ is identi-ied%y t$e la%el s*eci-ied in t$e %rea: statement. T$e -ollo)ing *rogram searc$es -or a !alue

in a t)odimensional array. T)o nested -or loo*s tra!erse t$e array. $en t$e !alue is-ound a la%eled %rea: terminates t$e statement la%eled searc$ )$ic$ is t$e outer -orloo*.

int[][] numbers = {{; < F& {G N I&{D J P&&%

int searc!+um = N%boolean found+um = false%

search.abelfor( int i=C% iUnumbers.lengt!% i44 {

for( int j=C% jUnumbers[i].lengt!% j44 {if( searc!+um == numbers[i][j] {

found+um = true% brea3 search.abel;

&&

&

if( found+um {System.out.println( searc!+um 4 " found$" %

&else{

&System.out.println( searc!+um 4 " not found$" %

T$e %rea: statement terminates t$e la%eled statement[ it does not trans-er t$e -lo) o-control to t$e la%el. T$e -lo) o- control trans-ers to t$e statement immediately -ollo)ingt$e la%eled 4terminated9 statement.

Page 112: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 112/244

.%.2 continue statement 

T$e continue statement $as t)o -orms; unla%eled and la%eled. ou can use t$e continuestatement to s:i* t$e current iteration o- a -or )$ile or do)$ile loo*.

8,<,.,+ 1n&abe&ed continue statement

T$e unla%eled -orm s:i*s to t$e end o- t$e innermost loo*s %ody and e!aluates t$e%oolean e*ression t$at controls t$e loo* %asically s:i**ing t$e remainder o- t$isiteration o- t$e loo*.

T$e -ollo)ing eam*le counts t$e num%er o- RBea$Rs in t$e array.

String names[] = {":ea!" ":ianca" "Tance" ":ea!"&%int count = C%

for( int i=C% iUnames.lengt!% i44 {

if( $names[i].e@uals(":ea!" {continue% //s-ip ne5t statement

&

count44%&

System.out.println("2!ere are " 4 count 4 " :ea!s in t!elist"%

8,<,.,. Labe&ed continue statement

T$e la%eled -orm o- t$e continue statement s:i*s t$e current iteration o- an outer loo*

mar:ed )it$ t$e gi!en la%el.

outer.oopfor( int i=C% iUN% i44 {

for( int j=C% jUN% j44 {System.out.println(",nside for(j loop"% //message;if( j == < continue outer.oop;

&

System.out.println(",nside for(i loop"% //message<&

In t$is eam*le message 2 ne!er gets *rinted since )e $a!e t$e statement continue

outerloo* )$ic$ s:i*s t$e iteration.

Page 113: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 113/244

.%.3 return statement 

T$e return statement is used to eit -rom t$e current met$od. T$e -lo) o- control returnsto t$e statement t$at -ollo)s t$e original met$od call. T$e return statement $as t)o

-orms; one t$at returns a !alue and one t$at doesnt.

To return a !alue sim*ly *ut t$e !alue 4or an e*ression t$at calculates t$e !alue9 a-tert$e return :ey)ord. For eam*le

return 44count%

orreturn "Hello"%

T$e data ty*e o- t$e !alue returned %y return must matc$ t$e ty*e o- t$e met$odsdeclared return !alue. $en a met$od is declared !oid use t$e -orm o- return t$atdoesnt return a !alue. For eam*le

return%

e )ill co!er more a%out return statements later )$en )e discuss a%out met$ods.

Page 114: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 114/244

.* 0-ercises

.*.1 <rades

@et t$ree eam grades -rom t$e user and com*ute t$e a!erage o- t$e grades. &ut*ut t$ea!erage o- t$e t$ree eams. Toget$er )it$ t$e a!erage also include a smiley -ace in t$eout*ut i- t$e a!erage is greater t$an or e?ual to 60 ot$er)ise out*ut ;4.1. se Bu--ered"eader to get in*ut -rom t$e user and 'ystem.out to out*ut t$eresult.

2. se J&*tionPane to get in*ut -rom t$e user and to out*ut t$e result.

.*.2 umber in !ords

@et a num%er as in*ut -rom t$e user and out*ut t$e e?ui!alent o- t$e num%er in )ords.T$e num%er in*utted s$ould range -rom 110. I- t$e user in*uts a num%er t$at is not int$e range out*ut RIn!alid num%erR.

1. se an i-else statement to sol!e t$is *ro%lem2. se a s)itc$ statement to sol!e t$is *ro%lem

.*.3 undred +imes

reate a *rogram t$at *rints your name a $undred times. Do t$ree !ersions o- t$is*rogram using a )$ile loo* a do)$ile loo* and a -orloo*.

.*.% $o!ers

om*ute t$e *o)er o- a num%er gi!en t$e %ase and e*onent. Do t$ree !ersions o- t$is*rogram using a )$ile loo* a do)$ile loo* and a -orloo*.

Page 115: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 115/244

6.1 Objectives

; =a)a Arrays

In t$is section )e )ill %e discussing a%out Ja!a rrays. First )e are going to de-ine)$at arrays are and t$en )e are going to discuss on $o) to declare and use t$em.

t t$e end o- t$e lesson t$e student s$ould %e a%le to;

• Declare and create arrays

• ccess array elements

• Determine t$e num%er o- elements in an array

• Declare and create multidimensional arrays

6.2 Introduction to arra#sIn t$e *re!ious sections )e $a!e discussed on $o) to declare di--erent !aria%les usingt$e *rimiti!e data ty*es. In declaring !aria%les )e o-ten use a uni?ue identi-ier or nameand a dataty*e. In order to use t$e !aria%le )e call it %y its identi-ier name.

For eam*le )e $a!e $ere t$ree !aria%les o- ty*e int )it$ di--erent identi-iers -or

eac$ !aria%le.

int number;%

int number<%int numberF%

number; = ;%number< = <%numberF = F%

s you can see it seems li:e a tedious tas: in order to ust initiali>e and use t$e!aria%les es*ecially i- t$ey are used -or t$e same *ur*ose. In Ja!a and ot$er*rogramming languages t$ere is one ca*a%ility )$erein )e can use one !aria%le to storea list o- data and mani*ulate t$em more e--iciently. T$is ty*e o- !aria%le is called anarray.

Figure /.1: Example of an 6nteger 3rray 

n array stores multiple data items of the same datatype in a contiguous %loc: o-memory di!ided into a num%er o- slots. T$in: o- an array as a stretc$ed !aria%le L alocation t$at still $as one identi-ier name %ut can $old more t$an one !alue.

Page 116: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 116/244

6.3 ,eclaring /rra#srrays must %e declared li:e all !aria%les. $en declaring an array you list t$e data

ty*e -ollo)ed %y a set o- s?uare %rac:etsXY -ollo)ed %y t$e identi-ier name. Foream*le

int []ages%

or you can *lace t$e %rac:ets a-ter t$e identi-ier. For eam*le

int ages[]%

-ter declaring )e must create t$e array and s*eci-y its lengt$ )it$ a constructorstatement. T$is *rocess in Ja!a is called instantiation 4t$e Ja!a )ord -or creates9. Inorder to instantiate an o%ect )e need to use a constructor -or t$is. e )ill co!er morea%out instantiating o%ects and constructors later. Ta:e note t$at t$e si>e o- an array

cannot %e c$anged once you!e initiali>ed it. For eam*le

//declarationint ages[]%

//instantiate objectages = ne# int[;CC]%

or can also %e )ritten as

 88declare and instantiateo%ectint ages[] = ne#

int[;CC]%

In t$e eam*le t$e declaration tells t$eJa!a om*iler t$at t$e identi-ier ages )ill

%e used as t$e name o- an array containingintegers and to create or instantiate a ne)array containing 100 elements.

Instead o- using t$e ne) :ey)ord toinstantiate an array you can alsoautomatically declare construct and assign!alues at once.

Figure /.2: 6nstantiating 3rrays

Page 117: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 117/244

Eam*les are

//creates an array of boolean variables #it! ientifier//results. 2!is array contains G elements t!at are

//initialiKed to values {true false true false&boolean results[] ={ true false true false &%

//creates an array of G double variables initialiKed//to t!e values {;CC PC JC DN&%double []grades = {;CC PC JC DN&%

//creates an array of Strings #it! identifier days and//initialiKed. 2!is array contains D elements

String days@ GMonH> GTueH> G'edH> GThuH> GFriH> GSatH> GSunHQ

Page 118: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 118/244

6.% /ccessing an arra# element To access an array element or a *art o- t$e array you use a num%er called an index or

a su%scri*t.

n index number or subscript is assigned to eac$ mem%er o- t$e array allo)ing t$e*rogram and t$e *rogrammer to access indi!idual !alues )$en necessary. Indenum%ers are a&!ays integers. T$ey begin !ith ero and progress sequentia&&y by!ho&e numbers to the end o# the array. Ta:e note t$at t$e elements inside yourarray is -rom 9 to 6sieO#Array3+7,

For eam*le gi!en t$e array )e declared a )$ile ago )e $a!e

//assigns ;C to t!e first element in t!e arrayages[C] = ;C%

//prints t!e last element in t!e arraySystem.out.print(ages[PP]%

Ta:e note t$at once an array is declared and constructed t$e stored !alue o- eac$mem%er o- t$e array )ill %e initiali>ed to >ero -or num%er data. #o)e!er re-erence dataty*es suc$ as 'trings are not initiali>ed to %lan:s or an em*ty string Q. T$ere-ore youmust *o*ulate t$e 'tring arrays e*licitly.

T$e -ollo)ing is a sam*le code on $o) to *rint all t$e elements in t$e array. T$is uses a-or loo* so our code is s$orter.

public class rraySample{public static void main( String[] args {

int[] ages = ne# int[;CC]%

for( int i=C% iU;CC% i44 { System.out.print( ages[i]%

&&

&

Coding <uidelines

1. 6t is usually better to initialiIe or instantiate the array right away after you declare it.

For exampleB the declarationBint Darr ' new int1&&DGis preferred o$erB

int DarrGarr ' new int1&&DG

2. The elements of an nelement array ha$e indexes from & to n1. "ote that there isno array element arrnDP This will result in an arrayindexoutofbounds exception.

. >ou cannot resiIe an array.

Page 119: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 119/244

6.* /rra# lengt(In order to get t$e num%er o- elements in an array you can use t$e &ength -ield o- an

array. T$e lengt$ -ield o- an array returns t$e si>e o- t$e array. It can %e used %y )riting

array+ame.lengt!

For eam*le gi!en t$e *re!ious eam*le )e can re)rite it as

public class rraySample{

public static void main( String[] args {

int[] ages = ne# int[;CC]%

for( int i=C% iUages*length% i44 {System.out.print( ages[i] %

&&

&

Coding <uidelines

1. 5hen creating for loops to process the elements of an arrayB use the arrayob<ectRs lengt( field in the condition statement of the for loop. This will allow theloop to ad<ust automatically for differentsiIed arrays.

2. eclare the siIes of arrays in a a$a program using named constants to ma;ethem easy to change. For exampleB

final int 3883>JS6E ' 1&&&G AAdeclare a constant 

. . .intD ages ' new int3883>JS6EDG

Page 120: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 120/244

Introduction to Programming I 120

6. Multidimensional /rra#s(ultidimensional arrays are im*lemented as arrays o- arrays. (ultidimensional arrays

are declared %y a**ending t$e a**ro*riate num%er o- %rac:et *airs a-ter t$e array name.For eam*le

// integer array N;< 5 ;<J elementsint[][] t#oE = ne# int[N;<][;<J]%

// c!aracter array J 5 ;I 5 <Gc!ar[][][] t!reeE = ne# c!ar[J][;I][<G]%

// String array G ro#s 5 < columnsString[][] dogs = {{ "terry" "bro#n" &

{ "ristin" "#!ite" &{ "toby" "gray"&{ "fido" "blac-"&

b[

To access an element in a multidimensional array is ust t$e same as accessing t$eelements in a one dimensional array. For eam*le to access t$e -irst element in t$e -irstro) o- t$e array dogs )e )rite

System.out.print( dogs[C][C] %

T$is )ill *rint t$e 'tring RterryR on t$e screen.

Page 121: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 121/244

Introduction to Programming I 121

6.6 0-ercises

6.6.1 ,a#s of t(e ee8 

reate an array o- 'trings )$ic$ are initiali>ed to t$e H days o- t$e )ee:. For Example,

String days[] = {AMondayB A2uesdayB.&%

sing a )$ileloo* *rint all t$e contents o- t$e array. 4do t$e same -or do)$ile and -orloo*9

6.6.2 <reatest number 

sing Bu--ered"eader or J&*tionPane as: -or 10 num%ers -rom t$e user. se an array tostore t$e !alues o- t$ese 10 num%ers. &ut*ut on t$e screen t$e num%er )it$ t$egreatest !alue.

6.6.3 /ddressboo8 0ntries

@i!en t$e -ollo)ing multidimensional array t$at contains address%oo: entries;

String entry = {{"9lorence" "DFN;<FG" "Manila"&{"oyce" "PJFFFFF" "^ueKon 3ity"&{":ecca" "GNIFF<<" "Manila"&&%

Print t$e -ollo)ing entries on screen in t$e -ollo)ing -ormat;

+ame 7 9lorence2el. _ 7 DFN;<FGddress 7 Manila

+ame 7 oyce2el. _ 7 PJFFFFFddress 7 ^ueKon 3ity

+ame 7 :ecca2el. _ 7 GNIFF<<ddress 7 Manila

Page 122: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 122/244

Introduction to Programming I 122

: "ommand3&ine Arguments

@.1 ObjectivesIn t$is section )e )ill study on $o) to *rocess in*ut -rom t$e commandline %y usingarguments *ass onto a Ja!a *rogram.

t t$e end o- t$e lesson t$e student s$ould %e a%le to;

• Ano) and e*lain )$at a commandline argument is

• @et in*ut -rom t$e user using commandline arguments

• =earn $o) to *ass arguments to your *rograms in +etBeans

@.2 Command"line arguments Ja!a a**lication can acce*t any num%er o- arguments -rom t$e commandline.ommandline arguments allo) t$e user to a--ect t$e o*eration o- an a**lication -or onein!ocation. T$e user enters commandline arguments )$en in!o:ing t$e a**lication ands*eci-ies t$em a-ter t$e name o- t$e class to run.

For eam*le su**ose you $a!e a Ja!a a**lication called 'ort t$at sorts -i!e num%ersyou run it li:e t$is;

Figure 0.1: 8unning with Command4ine 3rguments

Ta:e note t$at t$e arguments are se*arated %y s*aces.

Page 123: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 123/244

Introduction to Programming I 123

In t$e Ja!a language )$en you in!o:e an a**lication t$e runtime system *asses t$ecommandline arguments to t$e a**lications main met$od !ia an array o- 'trings. Eac$'tring in t$e array contains one o- t$e commandline arguments. "emem%er t$edeclaration -or t$e main met$od

public static void main( String[] args

T$e arguments t$at are *assed to your *rogram are sa!ed into an array o- 'tring )it$t$e args identi-ier.

In t$e *re!ious eam*le t$e commandline arguments *assed to t$e 'ort a**lication isan array t$at contains -i!e strings )$ic$ are; R,R RR R3R R2R and R1R. ou can deri!et$e num%er o- commandline arguments )it$ t$e arrays lengt$ attri%ute.

For eam*le

int numberfrgs = args.lengt!%

I- your *rogram needs to su**ort a numeric commandline argument it must con!ert a'tring argument t$at re*resents a num%er suc$ as R3R to a num%er. #eres a codesni**et t$at con!erts a commandline argument to an integer

int firstrg = C%if (args.lengt! C{

firstrg = ,nteger.parse,nt(args[C]%&

*arseInt t$ro)s a +um%erFormatEce*tion 4E""&"9 i- t$e -ormat o- argsX0Y isnt !alid

4not a num%er9.

Coding <uidelines9efore using commandline argumentsB always chec; if the number of argumentsbefore accessing the array elements so that there will be no exception generated.

Page 124: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 124/244

Introduction to Programming I 12

@.3 Command"line arguments in etBeansTo illustrate on $o) to *ass some arguments to your *rograms in +etBeans let us create

a Ja!a *rogram t$at )ill *rint t$e num%er o- arguments and t$e -irst argument *assed toit.

public class 3ommandTine05ample{

public static void main( String[] args {

System.out.println("+umber of arguments=" 4args.lengt!%

System.out.println("9irst rgument="4 args[C]%&

&

+o) run net%eans and create a ne) *roect and name t$is ommand=ineEam*le. o*y

t$e code s$o)n a%o!e and com*ile t$e code. +o) -ollo) t$ese ste*s to *ass argumentsto your *rogram using +etBeans.

lic: on Proects 4encircled %elo)9.

Figure 0.2: -pening )ro<ect File

Page 125: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 125/244

Introduction to Programming I 12,

"ig$tclic: on t$e ommand=ineEam*le icon and a *o*u* menu )ill a**ear. lic: on

Pro*erties.

Figure 0.: -pening )roperties

T$e Proect Pro*erties dialog )ill t$en a**ear.

Figure 0.%: )roperties ialog

Page 126: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 126/244

Introduction to Programming I 126

+o) clic: on "un "unning Proect.

Figure 0.+: Clic; -n 8unning )ro<ect 

&n t$e rguments tet%o ty*e t$e arguments you )ant to *ass to your *rogram. Int$is case )e ty*ed in t$e arguments , 3 2 1. T$en clic: on t$e &A %utton.

Figure 0.*: Set the Command4ine 3rguments

Page 127: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 127/244

Introduction to Programming I 12H

+o) try to "+ your *rogram.

Figure 0./: 8unning the )rogram in with the Shortcut 9utton

s you can see $ere t$e out*ut to your *rogram is t$e num%er o- arguments )$ic$ is ,and t$e -irst argument )$ic$ is ,.

Figure 0.0: )rogram -utput 

Page 128: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 128/244

Introduction to Programming I 127

@.% 0-ercises

@.%.1 $rint arguments

@et in*ut -rom t$e user using commandline arguments and *rint all t$e arguments tot$e screen. For eam*le i- t$e user entered

java Hello #orld t!at is all

your *rogram s$ould *rint

Hello#orldt!atisall

@.%.2 /rit(metic Operations

@et t)o num%ers -rom t$e user using commandline arguments and *rint sumdi--erence *roduct and ?uotient o- t$e t)o num%ers. For eam*le i- t$e user entered

java rit!meticperation <C G

your *rogram s$ould *rint

sum = <Gdifference = ;Iproduct = JC@uotient = N

Page 129: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 129/244

Introduction to Programming I 12<

'or%ing !ith the =a)a "&ass Library

.1 ObjectivesIn t$is section )e )ill introduce some %asic conce*ts o- o%ectoriented *rogramming.=ater on )e )ill discuss t$e conce*t o- classes and o%ects and $o) to use t$eseclasses and t$eir mem%ers. om*arison con!ersion and casting o- o%ects )ill also %eco!ered. For no) )e )ill -ocus on using classes t$at are already de-ined in t$e Ja!aclass li%rary )e )ill discuss later on $o) to create your o)n classes.

t t$e end o- t$e lesson t$e student s$ould %e a%le to;

• E*lain o%ectoriented *rogramming and some o- its conce*ts

• Di--erentiate %et)een classes and o%ects

• Di--erentiate %et)een instance !aria%les8met$ods and class4static9

!aria%les8met$ods

• E*lain )$at met$ods are and $o) to call and *ass *arameters to met$ods

• Identi-y t$e sco*e o- a !aria%le

• ast *rimiti!e data ty*es and o%ects

• om*are o%ects and determine t$e class o- an o%ects

.2 Introduction to Object"Oriented $rogramming&%ect&riented *rogramming or &&P re!ol!es around t$e conce*t o- obCects as t$e%asic elements o- your *rograms. $en )e com*are t$is to t$e *$ysical )orld )e can-ind many o%ects around us suc$ as cars lion *eo*le and so on. T$ese o%ects arec$aracteri>ed %y t$eir properties 6or attributes7 and beha)iors.

For eam*le a car o%ect $as t$e *ro*erties type of transmission manufacturer andcolor . Its %e$a!iors are turningB bra;ing and accelerating. 'imilarly )e can de-inedi--erent *ro*erties and %e$a!ior o- a lion. Please re-er to t$e ta%le %elo) -or t$eeam*les.

Object $roperties Be(avior  

ar ty*e o- transmissionmanu-acturercolor

turning%ra:ingaccelerating

=ion eig$t

olor$ungry or not $ungrytamed or )ild

roaringslee*ing$unting

Table 1/: Example of 8eallife -b<ects

Page 130: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 130/244

Introduction to Programming I 130

it$ t$ese descri*tions t$e o%ects in t$e *$ysical )orld can easily %e modeled asso-t)are o%ects using t$e properties as data and t$e beha)iors as methods. T$esedata and met$ods could e!en %e used in *rogramming games or interacti!e so-t)are tosimulate t$e real)orld o%ects n eam*le )ould %e a car so-t)are o%ect in a racinggame or a lion so-t)are o%ect in an educational interacti!e so-t)are >oo -or :ids.

.3 Classes and Objects

.3.1 ,ifference Bet!een Classes andObjects

In t$e so-t)are )orld an obCect is a so-t)are com*onent )$ose structure is similar too%ects in t$e real )orld. Eac$ o%ect is com*osed o- a set o- data 4*ro*erties8attri%utes9)$ic$ are !aria%les descri%ing t$e essential c$aracteristics o- t$e o%ect and it also

consists o- a set o- methods 4%e$a!ior9 t$at descri%es $o) an o%ect %e$a!es. T$us ano%ect is a so-t)are %undle o- !aria%les and related met$ods. T$e !aria%les and met$odsin a Ja!a o%ect are -ormally :no)n as instance )ariab&es and instance methods todistinguis$ t$em -rom class !aria%les and class met$ods )$ic$ )ill %e discussed later.

T$e c&ass is t$e -undamental structure in o%ectoriented *rogramming. It can %et$oug$t o- as a tem*late a *rototy*e or a %lue*rint o- an o%ect. It consists o- t)o ty*eso- mem%ers )$ic$ are called #ie&ds 6properties or attributes7 and met$ods. Fieldss*eci-iy t$e data ty*es de-ined %y t$e class )$ile met$ods s*eci-y t$e o*erations. no%ect is an instance o- t$e class.

To di--erentiate %et)een classes and o%ects let us discuss an eam*le. $at )e $a!e$ere is a ar lass )$ic$ can %e used to de-ine se!eral ar &%ects. In t$e ta%le s$o)n

%elo) ar and ar B are o%ects o- t$e ar class. T$e class $as fields *late num%ercolor manu-acturer and current s*eed )$ic$ are -illedu* )it$ corres*onding !alues ino%ects ar and ar B. T$e ar $as also some met$ods ccelerate Turn and Bra:e.

"ar "&ass ObCect "ar A ObCect "ar 0

     6    n    s     t    a    n    c    e

    s

Plate +um%er B 111 / 123

olor Blue "ed

(anu-acturer (itsu%is$i Toyota

urrent '*eed ,0 :m8$ 100 :m8$

     6    n    s     t    a    n    c    e ccelerate (et$od

Turn (et$od

Bra:e (et$od

Table 10: Example of Car class and its ob<ects

$en instantiated eac$ o%ect gets a -res$ set o- state !aria%les. #o)e!er t$e met$odim*lementations are s$ared among o%ects o- t$e same class.

lasses *ro!ide t$e %ene-it o- reusabi&ity. 'o-t)are *rogrammers can use a class o!erand o!er again to create many o%ects.

Page 131: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 131/244

Introduction to Programming I 131

.3.2 0ncapsulation

Enca*sulation is t$e met$od o- $iding certain elements o- t$e im*lementation o- acertain class. By *lacing a %oundary around t$e *ro*erties and met$ods o- our o%ects

)e can *re!ent our *rograms -rom $a!ing side e--ects )$erein *rograms $a!e t$eir!aria%les c$anged in une*ected )ays.

e can *re!ent access to our o%ects data %y declaring t$em declaring t$em in a certain)ay suc$ t$at )e can control access to t$em. e )ill learn more a%out $o) Ja!aim*lements enca*sulation as )e discuss more a%out classes.

.3.3 Class Dariables and Met(ods

In addition to t$e instance !aria%les it is also *ossi%le to de-ine c&ass )ariab&es> )$ic$are !aria%les t$at %elong to t$e )$ole class. T$is means t$at it $as t$e same !alue -orall t$e o%ects in t$e same class. T$ey are also called static member )ariab&es.

To clearly descri%e class !aria%les lets go %ac: to our ar class eam*le. 'u**ose t$atour ar class $as one class !aria%le called ount. I- )e c$ange t$e !alue o- ount to 2all o- t$e o%ects o- t$e ar class )ill $a!e t$e !alue 2 -or t$eir ount !aria%le.

"ar "&ass ObCect "ar A ObCect "ar 0

     6    n    s     t    a    n    c    e

    s

Plate +um%er B 111 / 123

olor Blue "ed

(anu-acturer (itsu%is$i Toyota

urrent '*eed ,0 :m8$ 100 :m8$

     C     l    a    s    s

ount S 2

     6    n    s     t    a    n    c    e ccelerate (et$od

Turn (et$od

Bra:e (et$od

Table 17: Car classR methods and $ariables

Page 132: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 132/244

Introduction to Programming I 132

.3.% Class Instantiation

To create an o%ect or an instance o- a class )e use t$e ne! o*erator. For eam*le i-you )ant to create an instance o- t$e class 'tring )e )rite t$e -ollo)ing code

String str< = ne# String(AHello #orld$B%

or also e?ui!alent to

String str< = "Hello"%

Figure 7.1: Classs 6nstantiation

T$e ne) o*erator allocates a memory -or t$at o%ect and returns a re#erence o- t$atmemory location to you. $en you create an o%ect you actually in!o:e t$e classconstructor, T$e constructor is a met$od )$ere you *lace all t$e initiali>ations it $ast$e same name as t$e class.

Page 133: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 133/244

Introduction to Programming I 133

.% Met(ods

.%.1 (at are Met(ods and (# :se Met(ods) 

In t$e eam*les )e discussed %e-ore )e only $a!e one met$od and t$at is t$e main49

met$od. In Ja!a )e can de-ine many met$ods )$ic$ )e can call -rom di--erent met$ods.

method is a se*arate *iece o- code t$at can %e called %y a main *rogram or any ot$ermet$od to *er-orm some s*eci-ic -unction.

T$e -ollo)ing are c$aracteristics o- met$ods;• It can return one or no !alues

• It may acce*t as many *arameters it needs or no *arameter at all. Parameters are

also called -unction arguments.• -ter t$e met$od $as -inis$ed eecution it goes %ac: to t$e met$od t$at called it.

+o) )$y do )e need to create met$odsG $y dont )e ust *lace all t$e code inside one%ig met$odG T$e $eart o- e--ecti!e *ro%lem sol!ing is in *ro%lem decom*osition. e cando t$is in Ja!a %y creating met$ods to sol!e a s*eci-ic *art o- t$e *ro%lem. Ta:ing a*ro%lem and %rea:ing it into small managea%le *ieces is critical to )riting large*rograms.

Page 134: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 134/244

Introduction to Programming I 13

.%.2 Calling Instance Met(ods and $assingDariables

+o) to illustrate $o) to call met$ods lets use t$e 'tring class as an eam*le. ou canuse t$e Ja!a PI documentation to see all t$e a!aila%le met$ods in t$e 'tring class.=ater on )e )ill create our o)n met$ods %ut -or no) let us use )$at is a!aila%le.

To call an instance method )e )rite t$e -ollo)ing

namefbject.namefMet!od( parameters %

=ets ta:e t)o sam*le met$ods -ound in t$e class 'tring

Method dec&aration $e#inition

 public char char4t(int inde1 "eturns t$e c$aracter at t$e s*eci-ied inde.

n inde ranges -rom 0 to lengt$49 1. T$e -irstc$aracter o- t$e se?uence is at inde 0 t$enet at inde 1 and so on as -or arrayindeing.

 public boolean e5uals&gnore6ase()tring another)tring

om*ares t$is 'tring to anot$er 'tring ignoringcase considerations. T)o strings are considerede?ual ignoring case i- t$ey are o- t$e samelengt$ and corres*onding c$aracters in t$e t)ostrings are e?ual ignoring case.

Table 2&: Sample =ethods of class String

sing t$e met$ods

String str; = "Hello"%c!ar 5 = str<.c!art(C% //#ill return t!e c!aracter H

//and store it to variable 5

String str< = "!ello"%

//t!is #ill return a boolean value trueboolean result = str;.e@uals,gnore3ase( str; %

Page 135: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 135/244

Introduction to Programming I 13,

.%.3 $assing Dariables in Met(ods

In our eam*les )e already tried *assing !aria%les to met$ods. #o)e!er )e $a!entdi--erentiated %et)een t$e di--erent ty*es o- !aria%le *assing in Ja!a. T$ere are t)o

ty*es o- *assing data to met$ods t$e -irst one is *ass%y!alue and t$en *ass%yre-erence.

,<,-,+ Pass3by3)a&ue

$en a *ass%y!alue occurs t$e met$od ma:es a co*y o- t$e !alue o- t$e !aria%le*assed to t$e met$od. T$e met$od cannot accidentally modi-y t$e original argumente!en i- it modi-ies t$e *arameters during calculations.

For eam*le

public class 2est)ass:yLalue{

public static void main( String[] args {int i = ;C%//print t!e value of iSystem.out.println( i %

//call met!od test//and pass i to met!od testtest( i ; )ass i as parameter

#!ic! is copied to j

//print t!e value of i. i not c!angedSystem.out.println( i %

&

 public static void test( int

77change value o$ parameter = 88;

--

In t$e gi!en eam*le )e called t$e met$od test and *assed t$e !alue o- i as *arameter.T$e !alue o- i is co*ied to t$e !aria%le o- t$e met$od . 'ince is t$e !aria%le c$anged int$e test met$od it )ill not a--ect t$e !aria%le !alue i- i in main since it is a di--erent co*yo- t$e !aria%le.

By de-ault all *rimiti!e data ty*es )$en *assed to a met$od are *ass%y!alue.

Page 136: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 136/244

,<,-,. Pass3by3re#erence

$en a *ass%yre-erence occurs t$e re-erence to an o%ect is *assed to t$e callingmet$od. T$is means t$at t$e met$od ma:es a co*y o- t$e re-erence o- t$e !aria%le

*assed to t$e met$od. #o)e!er unli:e in *ass%y!alue t$e met$od can modi-y t$eactual o%ect t$at t$e re-erence is *ointing to since alt$oug$ di--erent re-erences areused in t$e met$ods t$e location o- t$e data t$ey are *ointing to is t$e same.

For eam*le

class 2est)ass:yQeference{

public static void main( String[] args {//create an array of integersint []ages = {;C ;; ;<&%

//print array values

for( int i=C% iUages.lengt!% i44 {System.out.println( ages[i] %&

)ass ages as parameter#!ic! is copied tovariable arr

//call test and pass reference to arraytest( ages ;

//print array values againfor( int i=C% iUages.lengt!% i44 {

System.out.println( ages[i] %&

&

 public static void test( int[] arr

77change values o$ array$or( int i=9; i<arr*length; i++ arr[i] = i + :9;

--

&

Page 137: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 137/244

Figure 7.2: )assbyreference example

Coding<uidelines

 3 common misconception about passbyreference in a$a is when creating a swapmethod using a$a references. Ta;e note that a$a manipulates ob<ects Rby referenceBRbut it passes ob<ect references to methods Rby $alue.R 3s a resultB you cannot write astandard swap method to swap ob<ects.

.%.% Calling Static Met(ods

'tatic met$ods are met$ods t$at can %e in!o:ed )it$out instantiating a class 4means)it$out in!o:ing t$e ne) :ey)ord9. 'tatic met$ods %elongs to t$e class as a )$ole andnot to a certain instance 4or o%ect9 o- a class. 'tatic met$ods are distinguis$ed -rominstance met$ods in a class de-inition %y t$e :ey)ord static.

To call a static met$od ust ty*e

3lassname.staticMet!od+ame(params%

Eam*les o- static met$ods )e!e used so -ar in our eam*lesare

//prints data to screen)ystem*out*println(AHello #orldB%

//converts t!e String ;C to an integerint i = &nteger*parse&nt(A;CB%

//Qeturns a String representation of t!e integer argument as an

//unsigned integer base ;IString !e50@uivalent = &nteger*toe1)tring( ;C %

Page 138: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 138/244

.%.* Scope of a variable

In addition to a !aria%les data ty*e and name a !aria%le $as sco*e. T$e scopedetermines )$ere in t$e *rogram t$e !aria%le is accessi%le. T$e sco*e also determines

t$e li-etime o- a !aria%le or $o) long t$e !aria%le can eist in memory. T$e sco*e isdetermined %y )$ere t$e !aria%le declaration is *laced in t$e *rogram.

To sim*li-y t$ings ust t$in: o- t$e sco*e as anyt$ing %et)een t$e curly %races Z...b.T$e outer curly %races is called t$e outer %loc:s and t$e inner curly %races is calledinner %loc:s.

I- you declare !aria%les in t$e outer %loc: t$ey are !isi%le 4i.e. usa%le9 %y t$e *rogramlines inside t$e inner %loc:s. #o)e!er i- you declare !aria%les in t$e inner %loc: youcannot e*ect t$e outer %loc: to see it.

!aria%les sco*e is inside t$e %loc: )$ere it is declared starting -rom t$e *oint )$ere it

is declared and in t$e inner %loc:s.

For eam*le gi!en t$e -ollo)ing code sni**et

public class Scope05ample

{

public static void main( String[] args {

int i = C%

int j = C%

//... some code !ere

0A {

int - = C%

int m = C%$

"

E int n = C%

&

&

T$e code )e $a!e $ere re*resents -i!e sco*es indicated %y t$e lines and t$e letters

re*resenting t$e sco*e. @i!en t$e !aria%les i:m and n and t$e -i!e sco*es BDand E )e $a!e t$e -ollo)ing sco*es -or eac$ !aria%le;

T$e sco*e o- !aria%le i is .T$e sco*e o- !aria%le is B.T$e sco*e o- !aria%le : is .T$e sco*e o- !aria%le m is D.T$e sco*e o- !aria%le n is E.

Page 139: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 139/244

+o) gi!en t$e t)o met$ods main and test in our *re!ious eam*les

class 2est)ass:yQeference{

public static void main( String[] args {//create an array of integersint []ages = {;C ;; ;<&%

//print array valuesfor( int i=C% iUages.lengt!% i44 {

System.out.println( ages[i] %&

A//call test and pass reference to arraytest( ages %

//print array values againfor( int i=C% iUages.lengt!% i44 {

" System.out.println( ages[i] %&

&

public static void test( int[] arr {//c!ange values of arrayfor( int i=C% iUarr.lengt!% i44 { $

arr[i] = i 4 NC%&

&&

In t$e main met$od t$e sco*e o- t$e !aria%les are

agesXY sco*e

i in B sco*e Bi in L sco*e

In t$e test met$od t$e sco*e o-t$e !aria%les are

arrXY sco*e D

i in E sco*e E

Page 140: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 140/244

Introduction to Programming I 10

$en declaring !aria%les only one !aria%le )it$ a gi!en identi-ier or name can %edeclared in a sco*e. T$at means t$at i- you $a!e t$e -ollo)ing declaration

{int test = ;C%int test = <C%

&

your com*iler )ill generate an error since you s$ould $a!e uni?ue names -or your!aria%les in one %loc:. #o)e!er you can $a!e t)o !aria%les o- t$e same name i- t$eyare not declared in t$e same %loc:. For eam*le

int test = C%System.out.print( test %//..some code !ere{

int test = <C%

System.out.print( test %&

$en t$e -irst 'ystem.out.*rint is in!o:e it *rints t$e !alue o- t$e -irst test !aria%lesince it is t$e !aria%le seen at t$at sco*e. For t$e second 'ystem.out.*rint t$e !alue 20is *rinted since it is t$e closest test !aria%le seen at t$at sco*e.

Coding<uidelines

 3$oid ha$ing $ariables of the same name declared inside one method to a$oidconfusion.

Page 141: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 141/244

Introduction to Programming I 11

.* Casting= Converting and ComparingObjects

In t$is section )e are going to learn $o) to do typecasting. Ty*ecasting or casting ist$e *rocess o- con!erting a data o- a certain data ty*e to anot$er data ty*e. e )ill alsolearn $o) to con!ert *rimiti!e data ty*es to o%ects and !ice !ersa. nd -inally )e aregoing to learn $o) to com*are o%ects.

.*.1 Casting $rimitive +#pes

asting %et)een *rimiti!e ty*es ena%les you to con!ert t$e !alue o- one data -rom onety*e to anot$er *rimiti!e ty*e. T$is commonly occurs %et)een numeric ty*es.

T$ere is one *rimiti!e data ty*e t$at )e cannot do casting t$oug$ and t$at is t$e

boo&ean data ty*e.

n eam*le o- ty*ecasting is )$en you )ant to store an integer data to a !aria%le o-data ty*e dou%le. For eam*le

int num,nt = ;C%double numEouble = num,nt% //implicit cast

In t$is eam*le since t$e destination !aria%le 4dou%le9 $olds a larger !alue t$an )$at)e )ill *lace inside it t$e data is im*licitly casted to data ty*e dou%le.

not$er eam*le is )$en )e )ant to ty*ecast an int to a c$ar !alue or !ice !ersa. c$aracter can %e used as an int %ecause eac$ c$aracter $as a corres*onding numeric

code t$at re*resents its *osition in t$e c$aracter set. I- t$e !aria%le i $as t$e !alue 6,t$e cast 4c$ar9i *roduces t$e c$aracter !alue . T$e numeric code associated )it$ aca*ital is 6, according to t$e 'II c$aracter set and Ja!a ado*ted t$is as *art o- itsc$aracter su**ort. For eam*le

c!ar val3!ar = ??%int val,nt = val3!ar%System.out.print( val&nt % //e5plicit cast7 output IN

Page 142: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 142/244

Introduction to Programming I 12

$en )e con!ert a data t$at $as a large ty*e to a smaller ty*e )e must use an exp&icitcast. E*licit casts ta:e t$e -ollo)ing -orm;

(data2ypevalue

)$ere

dataType is t$e name o- t$e data ty*e youre con!erting to$alueB is an e*ression t$at results in t$e !alue o- t$e source ty*e.

For eam*le

double valEouble = ;C.;<%int val,nt = (intvalouble; //convert valEouble to int type

double 5 = ;C.<%int y = <%

int result = (int(17y% //typecast result of operation toint

Page 143: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 143/244

.*.2 Casting Objects

Instances o- classes also can %e cast into instances o- ot$er classes )it$ onerestriction; The source and destination c&asses must be re&ated by inheritance

one c&ass must be a subc&ass o# the other, ell co!er more a%out in$eritance later.

nalogous to con!erting a *rimiti!e !alue to a larger ty*e some o%ects mig$t not needto %e cast e*licitly. In *articular %ecause a su%class contains all t$e same in-ormationas its su*erclass you can use an instance o- a su%class any)$ere a su*erclass ise*ected.

For eam*le consider a met$od t$at ta:es t)o arguments one o- ty*e &%ect andanot$er o- ty*e indo). ou can *ass an instance o- any class -or t$e &%ect argument%ecause all Ja!a classes are su%classes o- &%ect. For t$e indo) argument you can*ass in its su%classes suc$ as Dialog FileDialog and Frame. T$is is true any)$ere in a*rogram not ust inside met$od calls. I- you $ad a !aria%le de-ined as class indo) you

could assign o%ects o- t$at class or any o- its su%classes to t$at !aria%le )it$out casting.

Figure 7.: Sample Class !ierarchy 

T$is is true in t$e re!erse and you can use a su*erclass )$en a su%class is e*ected.T$ere is a catc$ $o)e!er; 0ecause subc&asses contain more beha)ior than theirsuperc&asses> thereUs a &oss in precision in)o&)ed, T$ose su*erclass o%ects mig$tnot $a!e all t$e %e$a!ior needed to act in *lace o- a su%class o%ect. For eam*le i- you$a!e an o*eration t$at calls met$ods in o%ects o- t$e class Integer using an o%ect o-class +um%er )ont include many met$ods s*eci-ied in Integer. Errors occur i- you try tocall met$ods t$at t$e destination o%ect doesnt $a!e.

To use su*erclass o%ects )$ere su%class o%ects are e*ected you must cast t$eme*licitly. ou )ont lose any in-ormation in t$e cast %ut you gain all t$e met$ods and

!aria%les t$at t$e su%class de-ines. To cast an o%ect to anot$er class you use t$e sameo*eration as -or *rimiti!e ty*es;

To cast

(classnameobject

)$ere

classnameB is t$e name o- t$e destination class

ob<ectB is a re-erence to t$e source o%ect.

Page 144: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 144/244

• /ote2 t$at casting creates a re-erence to t$e old o%ect o- t$e ty*e classname[ t$e old

o%ect continues to eist as it did %e-ore.

Figure 7.%: Class !ierarchy for superclass Employee

T$e -ollo)ing eam*le casts an instance o- t$e class VicePresident to an instance o- t$eclass Em*loyee[ VicePresident is a su%class o- Em*loyee )it$ more in-ormation )$ic$$ere de-ines t$at t$e VicePresident $as eecuti!e )as$room *ri!ileges

0mployee emp = ne# 0mployee(%Lice)resident veep = ne# Lice)resident(%emp = veep% // no cast needed for up#ard useveep = (Lice)residentemp% // must cast e5plicitly3asting

Page 145: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 145/244

.*.3 Converting $rimitive +#pes to Objects and DiceDersa

&ne t$ing you cant do under any circumstance is cast -rom an o%ect to a *rimiti!e dataty*e or !ice !ersa. Primiti!e ty*es and o%ects are !ery di--erent t$ings in Ja!a and youcant automatically cast %et)een t$e t)o or use t$em interc$angea%ly.

s an alternati!e t$e  Ca)a,&ang *ac:age includes classes t$at corres*ond to eac$*rimiti!e data ty*e; Float Boolean Byte and so on. (ost o- t$ese classes $a!e t$esame names as t$e data ty*es ece*t t$at t$e class names %egin )it$ a ca*ital letter4'$ort instead o- s$ort Dou%le instead o- dou%le and t$e li:e9. lso t)o classes $a!enames t$at di--er -rom t$e corres*onding data ty*e; $aracter is used -or c$ar !aria%lesand Integer -or int !aria%les. 6"a&&ed 'rapper "&asses7

Ja!a treats t$e data ty*es and t$eir class !ersions !ery di--erently and a *rogram )ontcom*ile success-ully i- you use one )$en t$e ot$er is e*ected.

sing t$e classes t$at corres*ond to eac$ *rimiti!e ty*e you can create an o%ect t$at$olds t$e same !alue.

Examp&es2

//2!e follo#ing statement creates an instance of t!e ,nteger// class #it! t!e integer value DJC; (primitive bject&nteger data6ount = ne &nteger(9?;

//2!e follo#ing statement converts an ,nteger object to// its primitive data type int. 2!e result is an int #it!//value DJC;

int ne6ount = data6ount*int@alue(;

// common translation you need in programs// is converting a String to a numeric type suc! as an int// bjectprimitive)tring pennsylvania = "A:999";int penn = &nteger*parse&nt(pennsylvania;

• "A1TIO/2 T$e Void class re*resents not$ing in Ja!a so t$eres no reason it )ould %e

used )$en translating %et)een *rimiti!e !alues and o%ects. Its a *lace$older -or t$e

!oid :ey)ord )$ic$ is used in met$od de-initions to indicate t$at t$e met$od does

not return a !alue.

Page 146: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 146/244

.*.% Comparing Objects

In our *re!ious discussions )e learned a%out o*erators -or com*aring !aluese?ualnot e?ual less t$an and so on. (ost o- t$ese o*erators )or: only on *rimiti!e ty*es not

on o%ects. I- you try to use ot$er !alues as o*erands t$e Ja!a com*iler *roduces errors.

T$e ece*tions to t$is rule are t$e o*erators -or e?uality; SS 4e?ual9 and S 4not e?ual9.$en a**lied to o%ects t$ese o*erators dont do )$at you mig$t -irst e*ect. Instead o-c$ec:ing )$et$er one o%ect $as t$e same !alue as t$e ot$er o%ect t$ey determine)$et$er %ot$ sides o- t$e o*erator re-er to t$e same o%ect.

To com*are instances o- a class and $a!e meaning-ul results you must im*lements*ecial met$ods in your class and call t$ose met$ods. good eam*le o- t$is is t$e'tring class.

It is *ossi%le to $a!e t)o di--erent 'tring o%ects t$at contain t$e same !alues. I- you

)ere to em*loy t$e SS o*erator to com*are t$ese o%ects $o)e!er t$ey )ould %econsidered une?ual. lt$oug$ t$eir contents matc$ t$ey are not t$e same o%ect.

To see )$et$er t)o 'tring o%ects $a!e matc$ing !alues a met$od o- t$e class callede?uals49 is used. T$e met$od tests eac$ c$aracter in t$e string and returns true i- t$et)o strings $a!e t$e same !alues.

T$e -ollo)ing code illustrates t$is

class 0@uals2est {public static void main(String[] arguments {String str; str<%str; = "9ree t!e bound periodicals."%

str< = str;%

System.out.println("String;7 " 4 str;%System.out.println("String<7 " 4 str<%System.out.println("Same objectZ " 4 (str; == str<%

str< = ne# String(str;%

System.out.println("String;7 " 4 str;%System.out.println("String<7 " 4 str<%System.out.println("Same objectZ " 4 (str; == str<%System.out.println("Same valueZ " 4 str;.e@uals(str<%

&&

T$is *rograms out*ut is as -ollo)s

&TPT;String;7 9ree t!e bound periodicals.String<7 9ree t!e bound periodicals.Same objectZ trueString;7 9ree t!e bound periodicals.String<7 9ree t!e bound periodicals.Same objectZ falseSame valueZ 2rue

Page 147: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 147/244

+o) lets discuss t$e code.

String str; str<%str; = "9ree t!e bound periodicals."%

Figure 7.+: 9oth references point to the same ob<ect 

T$e -irst *art o- t$is *rogram declares t)o !aria%les 4str1 and str29 assigns t$e literalRFree t$e %ound *eriodicals.R to str1 and t$en assigns t$at !alue to str2. s you learnedearlier str1 and str2 no) *oint to t$e same o%ect and t$e e?uality test *ro!es t$at.

str< = ne# String(str;%

In t$e second *art o- t$is *rogram you create a ne) 'tring o%ect )it$ t$e same !alueas str1 and assign str2 to t$at ne) 'tring o%ect. +o) you $a!e t)o di--erent stringo%ects in str1 and str2 %ot$ )it$ t$e same !alue. Testing t$em to see )$et$er t$eyret$e same o%ect %y using t$e SS o*erator returns t$e e*ected ans)er; -alset$ey arenot t$e same o%ect in memory. Testing t$em using t$e e?uals49 met$od also returns t$ee*ected ans)er; truet$ey $a!e t$e same !alues.

Figure 7.*: 8eferences now point to different ob<ects

• /OTE2 $y cant you ust use anot$er literal )$en you c$ange str2 rat$er t$an using

ne)G 'tring literals are o*timi>ed in Ja!a[ i- you create a string using a literal andt$en use anot$er literal )it$ t$e same c$aracters Ja!a :no)s enoug$ to gi!e you t$e

-irst 'tring o%ect %ac:. Bot$ strings are t$e same o%ects[ you $a!e to go out o- your)ay to create t)o se*arate o%ects.

Page 148: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 148/244

.*.* ,etermining t(e Class of an Object 

ant to -ind out )$at an o%ects class isG #eres t$e )ay to do it -or an o%ect assignedto t$e !aria%le :ey;

1. T$e get"&ass67 method returns a lass o%ect 4)$ere lass is itsel- a class9 t$at $asa met$od called get+ame49. In turn get+ame49 returns a string re*resenting t$ename o- t$e class.

For Eam*le

String name = -ey.get3lass(.get+ame(%

., The instanceO# operator

T$e instance&- $as t)o o*erands; a re-erence to an o%ect on t$e le-t and a class

name on t$e rig$t. T$e e*ression returns true or -alse %ased on )$et$er t$e o%ect isan instance o- t$e named class or any o- t$at classs su%classes.

For Eam*le

boolean e5; = "2e5as" instanceof String% // truebject pt = ne# )oint(;C ;C%boolean e5< = pt instanceof String% // false

Page 149: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 149/244

. 0-ercises

..1 ,efining terms

In your o)n )ords de-ine t$e -ollo)ing terms;

1. lass2. &%ect3. Instantiate. Instance Varia%le,. Instance (et$od6. lass Varia%les or static mem%er !aria%lesH. onstructor

..2 7ava Scavenger unt 

Pi*oy is a ne)%ie in t$e Ja!a *rogramming language. #e ust $eard t$at t$ere are

already readytouse PIs in Ja!a t$at one could use in t$eir *rograms and $es eager totry t$em out. T$e *ro%lem is Pi*oy does not $a!e a co*y o- t$e Ja!a Documentationand $e also doesnt $a!e an internet access so t$eres no )ay -or $im to !ie) t$e Ja!aPIs.

our tas: is to $el* Pi*oy loo: -or t$e PIs 4**lication Programming Inter-ace9. ous$ould state t$e class )$ere t$e met$od %elongs t$e met$od declaration and a sam*leusage o- t$e said met$od.

For eam*le i- Pi*oy )ants to :no) t$e met$od t$at con!erts a 'tring to integer yourans)er s$ould %e;

"&ass2 IntegerMethod $ec&aration2 *u%lic static int *arseInt4 'tring !alue 9Samp&e 1sage2

'tring strValue S R100R[int !alue S Integer.*arseInt4 strValue 9[

(a:e sure t$at t$e sni**et o- code you )rite in your sam*le usage com*iles and out*utst$e correct ans)er so as not to con-use Pi*oy. 6int2 A&& methods are in the Ca)a,&ang pac%age7, In cases )$ere you can -ind more met$ods t$at can accom*lis$t$e tas: gi!e only one.

/o! &etUs start the search1. =oo: -or a met$od t$at c$ec:s i- a certain 'tring ends )it$ a certain su--i. For

eam*le i- t$e gi!en string is R#elloR t$e met$od s$ould return true t$e su--i gi!enis RloR and -alse i- t$e gi!en su--i is Ral*R.

2. =oo: -or t$e met$od t$at determines t$e c$aracter re*resentation -or a s*eci-ic digitin t$e s*eci-ied radi. For eam*le i- t$e in*ut digit is 1, and t$e radi is 16 t$emet$od )ould return t$e c$aracter F since F is t$e $eadecimal re*resentation -ort$e num%er 1, 4%ase 109.

3. =oo: -or t$e met$od t$at terminates t$e currently running Ja!a Virtual (ac$ine

. =oo: -or t$e met$od t$at gets t$e -loor o- a dou%le !alue. For eam*le i- I in*ut a3.13 t$e met$od s$ould return t$e !alue 3.

,. =oo: -or t$e met$od t$at determines i- a certain c$aracter is a digit. For eam*le i- Iin*ut 3 it returns t$e !alue true.

Page 150: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 150/244

Introduction to Programming I 1,0

+9 "reating your o!n "&asses

15.1 Objectives+o) t$at )e!e studied on $o) to use eisting classes -rom t$e Ja!a class li%rary )e )illno) %e studying on $o) to )rite our o)n classes. For t$is section in order to easilyunderstand $o) to create classes )e )ill ma:e a sam*le class )$erein )e )ill add moredata and -unctionality as )e go along t$e )ay.

e )ill create a class t$at contains in-ormation o- a 'tudent and o*erations needed -or acertain student record.

T$ings to ta:e note o- -or t$e synta de-ined in t$is section and -or t$e ot$er sections;

U means t$at t$ere may %e 0 or more occurrences o- t$e line

)$ereit )as a**lied to.descri*tion indicates t$at you $a!e to su%stitute an actual !alue -or t$is *art

instead o- ty*ing it as it is.XY indicates t$at t$is *art is o*tional

t t$e end o- t$e lesson t$e student s$ould %e a%le to;

• reate t$eir o)n classes

• Declare attri%utes and met$ods -or t$eir classes

• se t$e t$is re-erence to access instance data

• reate and call o!erloaded met$ods

• Im*ort and create *ac:ages

• se access modi-iers to control access to class mem%ers

Page 151: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 151/244

Introduction to Programming I 1,1

15.2 ,efining #our o!n classesBe-ore )riting your class t$in: -irst on )$ere you )ill %e using your class and $o) your

class )ill %e used. T$in: o- an a**ro*riate name -or t$e class and list all t$e in-ormationor *ro*erties t$at you )ant your class to contain. lso list do)n t$e met$ods t$at you)ill %e using -or your class.

To de-ine a class )e )rite

Umodifier class Uname {UattributeEeclaration*UconstructorEeclaration*Umet!odEeclaration*

&

)$eremodifierQ is an access modi-ier )$ic$ may %e com%ined )it$ ot$er ty*es o- modi-ier.

Coding<uidelines

8emember that for a tople$el classB the only $alid access modifiers are public and pac;age ,i.e.B if no access modifier prefixes the class ;eyword.

In t$is section )e )ill %e creating a class t$at )ill contain a student record. 'ince )e!ealready identi-ied t$e *ur*ose o- our class )e can no) name it. n a**ro*riate name -orour class )ould %e StudentQecord.

+o) to de-ine our class )e )rite

public class )tudent%ecord {

//#e?ll add more code !ere later&

)$ere*u%lic means t$at our class is accessi%le to ot$er classes outside t$e

*ac:ageclass t$is is t$e :ey)ord used to create a class in Ja!a

'tudent"ecord a uni?ue identi-ier t$at descri%es our class

"oding ?uide&ines2

1. Thin; of an appropriate name for your class. onRt <ust call your class U> orany random names you can thin; of.

2. Class names should start with a C3)6T34 letter.

. The filename of your class should ha$e the S3=E "3=E as your public class name.

Page 152: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 152/244

Introduction to Programming I 1,2

15.3 ,eclaring /ttributesTo declare a certain attri%ute -or our class )e )rite

Umodifier Utype Uname [= Udefault\value]%

+o) let us )rite do)n t$e list o- attri%utes t$at a student record can contain. For eac$in-ormation also list )$at data ty*es )ould %e a**ro*riate to use. For eam*le youdont )ant to $a!e a data ty*e int -or a students name or a 'tring -or a studentsgrade.

T$e -ollo)ing are some sam*le in-ormation )e )ant to add to t$e student record.

name 'tringaddress 'tringage int

mat$ grade dou%leenglis$ grade dou%lescience grade dou%lea!erage grade dou%le

ou can add more in-ormation i- you )ant to its all really u* to you. But -or t$iseam*le )e )ill %e using t$ese in-ormation.

15.3.1 Instance Dariables

+o) t$at )e $a!e a list o- all t$e attri%utes )e )ant to add to our class let us no) addt$em to our code. 'ince )e )ant t$ese attri%utes to %e uni?ue -or eac$ o%ect 4or -oreac$ student9 )e s$ould declare t$em as instance !aria%les.

For eam*le

)$ere

public class )tudent%ecord {

 private String name% private String address% private int age% private double mat!Rrade% private double englis!Rrade% private double scienceRrade% private double average%//#e?ll add more code !ere later

&

*ri!ate $ere means t$at t$e !aria%les are only accessi%le )it$in t$e class. &t$er o%ectscannot access t$ese !aria%les directly. e )ill co!er more a%out accessi%ility later.

"oding ?uide&ines2

1. eclare all your instance $ariables on the top of the class declaration.

2. eclare one $ariable for each line.. 6nstance $ariablesB li;e any other $ariables should start with a S=344 letter.%. Lse an appropriate data type for each $ariable you declare.+. eclare instance $ariables as pri$ate so that only class methods can access

them directly.

Page 153: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 153/244

15.3.2 Class Dariables or Static Dariables

side -rom instance !aria%les )e can also declare class !aria%les or !aria%les t$at%elong to t$e class as a )$ole. T$e !alue o- t$ese !aria%les are t$e same -or all t$e

o%ects o- t$e same class. +o) su**ose )e )ant to :no) t$e total num%er o- studentrecords )e $a!e -or t$e )$ole class )e can declare one static !aria%le t$at )ill $old t$is!alue. =et us call t$is as studentount.

To declare a static !aria%le

public class )tudent%ecord {

//instance variables #e !ave declared

 private static int student6ount;

//#e?ll add more code !ere later

&

)e use t$e :ey)ord static to indicate t$at a !aria%le is a static !aria%le.

'o -ar our )$ole code no) loo:s li:e t$is.

public class )tudent%ecord {

private String name%private String address%private int age%private double mat!Rrade%private double englis!Rrade%private double scienceRrade%

private double average%

private static int student3ount%

//#e?ll add more code !ere later&

15.% ,eclaring Met(odsBe-ore )e discuss )$at met$ods )e )ant our class to $a!e let us -irst ta:e a loo: at t$egeneral synta -or declaring met$ods.

To declare met$ods )e )rite

Umodifier Ureturn2ype Uname(Uparameter* {Ustatement*

&

)$eremodi-ier can carry a num%er o- di--erent modi-iers

returnTy*e can %e any data ty*e 4including !oid9name can %e any !alid identi-ier*arameter ;;S *arameterCty*e *arameterCnameXY

Page 154: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 154/244

15.%.1 /ccessor met(ods

In order to im*lement enca*sulation t$at is )e dont )ant any o%ects to ust accessour data anytime )e declare t$e -ields or attri%utes o- our classes as *ri!ate. #o)e!er

t$ere are times )$erein )e )ant ot$er o%ects to access *ri!ate data. In order to do t$is)e create accessor met$ods.

Accessor methods are used to read !alues -rom class !aria%les 4instance8static9. naccessor met$od usually starts )it$ a getV/ameO#Instance*ariab&eW, It also returnsa !alue.

For our eam*le )e )ant an accessor met$od t$at can read t$e name address englis$grade mat$ grade and science grade o- t$e student.

+o) lets ta:e a loo: at one im*lementation o- an accessor met$od

public class StudentQecord{private String name%

77

 public )tring getBame(return name;

-&

)$ere

*u%lic means t$at t$e met$od can %e called -rom o%ects outside t$e class'tring is t$e return ty*e o- t$e met$od. T$is means t$at t$e met$od s$ould

return a !alue o- ty*e 'tringget+ame t$e name o- t$e met$od

49 t$is means t$at our met$od does not $a!e any *arameters

T$e statement

return name%

in our *rogram signi-ies t$at it )ill return t$e !alue o- t$e instance !aria%le name to t$ecalling met$od. Ta:e note t$at t$e return ty*e o- t$e met$od s$ould $a!e t$e same dataty*e as t$e data in t$e return statement. ou usually encounter t$e -ollo)ing error i- t$et)o does not $a!e t$e same data ty*e

StudentQecord.java7;G7 incompatible typesfound 7 intre@uired7 java.lang.String

return age%Y

; error

Page 155: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 155/244

not$er eam*le o- an accessor met$od is t$e get!erage met$od

public class StudentQecord{

private String name%77

 public double get4verage(

double result = 9;result = ( mathCrade+englishCrade+scienceCrade 78;

return result;-

&

T$e get!erage met$od com*utes t$e a!erage o- t$e 3 grades and returns t$e

result.

15.%.2 Mutator Met(ods

+o) )$at i- )e )ant ot$er o%ects to alter our dataG $at )e do is )e *ro!ide met$odst$at can )rite or c$ange !alues o- our class !aria%les 4instance8static9. e call t$esemet$ods mutator methods, mutator met$od is usuallyu )ritten assetV/ameO#Instance*ariab&eW,

+o) lets ta:e a loo: at one im*lementation o- a mutator met$od

public class StudentQecord

{private String name%

77

 public void setBame( )tring temp name = temp;

-&

)$ere

*u%lic means t$at t$e met$od can %e called -rom o%ects outside t$e class!oid imeans t$at t$e met$od does not return any !alue

set+ame t$e name o- t$e met$od4'tring tem*9 *arameter t$at )ill %e used inside our met$od

T$e statement

name = temp%

assigns t$e !alue o- tem* to name and t$us c$anges t$e data inside t$e instance!aria%le name.

Ta:e note t$at mutator met$ods dont return !alues. #o)e!er it contains some *rogramargument or arguments t$at )ill %e used inside t$e met$od.

Page 156: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 156/244

15.%.3 Multiple 4eturn statements

ou can $a!e multi*le return statements -or a met$od as long as t$ey are not on t$esame %loc:. ou can also use constants to return !alues instead o- !aria%les.

For eam*le consider t$e met$od

public String get+umber,n'ords( int num {

String default+um = "Kero"%

if( num == ; {return "one"; //return a constant

&else if( num == <{

return "to"; //return a constant&

//return a variablereturn default+um%

&

15.%.% Static met(ods

For t$e static !aria%le studentount )e can create a static met$od to access its !alue.

public class StudentQecord{

private static int student3ount%

 public static int get)tudent6ount(

return student6ount;-

&

)$ere*u%lic means t$at t$e met$od can %e called -rom o%ects outside t$e

classstatic means t$at t$e met$od is static and s$ould %e called %y

ty*ingXlass+ameY.Xmet$od+ameY. For eam*le in t$is case)e call t$e met$od StudentQecord.getStudent3ount(

int is t$e return ty*e o- t$e met$od. T$is means t$at t$e met$ods$ould return a !alue o- ty*e int

get'tudentount t$e name o- t$e met$od

49 t$is means t$at our met$od does not $a!e any*arameters

For no) get'tudentount )ill al)ays return t$e !alue >ero since )e $a!ent doneanyt$ing yet in our *rogram in order to set its !alue. e )ill try to c$ange t$e !alue o-studentount later on )$en )e discuss constructors.

Coding<uidelines

1. =ethod names should start with a S=344letter.

2. =ethod names should be$erbs

Page 157: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 157/244

. 3lways pro$ide documentation before the declaration of the method. >ou canuse <a$adocs style for this. )lease see example.

Page 158: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 158/244

15.%.* Sample Source Code for Student4ecord class

#ere is t$e code -or our 'tudent"ecord class

public class StudentQecord{

private String name%private String address%private int age%private double mat!Rrade%private double englis!Rrade%private double scienceRrade%private double average%

private static int student3ount%

/*** Qeturns t!e name of t!e student

*/public String get+ame({return name%

&

/*** 3!anges t!e name of t!e student*/public void set+ame( String temp {name = temp%

&

// ot!er code !ere ....

/*** 3omputes t!e average of t!e englis! mat! and science* grades*/public double getverage({

double result = C%result = ( mat!Rrade4englis!Rrade4scienceRrade /F%

return result%&

/*** returns t!e number of instances of StudentQecords*/public static int getStudent3ount({return student3ount%

&&

Page 159: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 159/244

+o) $eres a sam*le code o- a class t$at uses our 'tudent"ecord class.

public class StudentQecord05ample{

public static void main( String[] args {

//create t!ree objects for Student recordStudentQecord annaQecord = ne# StudentQecord(%StudentQecord bea!Qecord = ne# StudentQecord(%StudentQecord crisQecord = ne# StudentQecord(%

//set t!e name of t!e studentsannaQecord.set+ame("nna"%bea!Qecord.set+ame(":ea!"%crisQecord.set+ame("3ris"%

//print anna?s nameSystem.out.println( annaQecord.get+ame( %

//print number of students

System.out.println("3ount="4StudentQecord.getStudent3ount(%&

&

T$e out*ut o- t$is *rogram is

nnaStudent 3ount = C

Page 160: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 160/244

15.* +(e t(is referenceT$e this re-erence is used to access t$e instance !aria%les s$ado)ed %y t$e *arameters.

To understand t$is %etter lets ta:e -or eam*le t$e setge met$od. 'u**ose )e $a!et$e -ollo)ing declaration -or setge.

public void setge( int age {age = age% //'Q+R$$$

&

T$e *arameter name in t$is declaration is age )$ic$ $as t$e same name as t$e instance!aria%le age. 'ince t$e *arameter age is t$e closest declaration to t$e met$od t$e !alueo- t$e *arameter age )ill %e used. 'o in t$e statement

age = age%

)e are ust assigning t$e !alue o- t$e *arameter age to itsel- T$is is not )$at )e )antto $a**en in our code. In order to correct t$is mista:e )e use t$e this re-erence. Touse t$e t$is re-erence )e ty*e

t!is.Unamef2!e,nstanceLariable

'o -or eam*le )e can no) re)rite our code to

public void setge( int age {this*age = age;

b

T$is met$od )ill t$en assign t$e !alue o- t$e *arameter age to t$e instance !aria%le o-

t$e o%ect 'tudent"ecord.

/OTE2 Bou can on&y use the this re#erence #or instance )ariab&es and /OT staticor c&ass )ariab&es,

Page 161: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 161/244

Introduction to Programming I 160

15. Overloading Met(odsIn our classes )e )ant to sometimes create met$ods t$at $as t$e same names %ut

-unction di--erently de*ending on t$e *arameters t$at are *assed to t$em. T$is ca*a%ilityis *ossi%le in Ja!a and it is called Method O)er&oading.

Method o)er&oading allo)s a met$od )it$ t$e same name %ut di--erent *arameters to$a!e di--erent im*lementations and return !alues o- di--erent ty*es. "at$er t$an in!entne) names all t$e time met$od o!erloading can %e used )$en t$e same o*eration $asdi--erent im*lementations.

For eam*le in our 'tudent"ecord class )e )ant to $a!e a met$od t$at *rintsin-ormation a%out t$e student. #o)e!er )e )ant t$e *rint met$od to *rint t$ingsdi--erently de*ending on t$e *arameters )e *ass to it. For eam*le )$en )e *ass a'tring )e )ant t$e *rint met$od to *rint out t$e name address and age o- t$e student.$en )e *ass 3 dou%le !alues )e )ant t$e met$od to *rint t$e students name and

grades.

e $a!e t$e -ollo)ing o!erloaded met$ods inside our 'tudent"ecord class

public void print( )tring temp { System.out.println("+ame7" 4 name%System.out.println("ddress7" 4 address%System.out.println("ge7" 4 age%

&

public void print(double eCrade, double mCrade, double sCradeSystem.out.println("+ame7" 4 name%System.out.println("Mat! Rrade7" 4 mRrade%System.out.println("0nglis! Rrade7" 4 eRrade%System.out.println("Science Rrade7" 4 sRrade%

&

Page 162: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 162/244

Introduction to Programming I 161

$en )e try to call t$is in t$e -ollo)ing main met$od

public static void main( String[] args {

StudentQecord annaQecord = ne# StudentQecord(%

annaQecord.set+ame("nna"%annaQecord.setddress(")!ilippines"%annaQecord.setge(;N%annaQecord.setMat!Rrade(JC%annaQecord.set0nglis!Rrade(PN.N%annaQecord.setScienceRrade(;CC%

//overloaded met!odsannaQecord.print( annaQecord.get+ame( %annaQecord.print( annaQecord.get0nglis!Rrade(

annaQecord.getMat!Rrade(annaQecord.getScienceRrade(%

&

)e )ill $a!e t$e out*ut -or t$e -irst call to *rint

+ame7nnaddress7)!ilippinesge7;N

)e )ill $a!e t$e out*ut -or t$e second call to *rint

+ame7nnaMat! Rrade7JC.C0nglis! Rrade7PN.NScience Rrade7;CC.C

l)ays remem%er t$at o!erloaded met$ods $a!e t$e -ollo)ing *ro*erties – t$e same name

 – di##erent parameters

 – return ty*es can %e di--erent or t$e same

Page 163: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 163/244

Introduction to Programming I 162

15.6 ,eclaring Constructorse $a!e discussed %e-ore t$e conce*t o- constructors. onstructors are im*ortant in

instantiating an o%ect. It is a met$od )$ere all t$e initiali>ations are *laced.

T$e -ollo)ing are t$e *ro*erties o- a constructor;

1. onstructors $a!e t$e same name as the c&ass2. constructor is ust li:e an ordinary met$od $o)e!er only t$e -ollo)ing in-ormation

can %e *laced in t$e $eader o- t$e constructorsco*e or accessi%ility identi-ier 4li:e *u%lic...9 constructors name and *arameters i- it$as any.

3. onstructors does not ha)e any return )a&ue

. Bou cannot ca&& a constructor direct&y it can only %e called %y using t$e ne!o*erator during class instantiation.

To declare a constructor )e )rite

Umodifier Uclass+ame (Uparameter* {Ustatement*

&

15.6.1 ,efault Constructor 

E!ery class $as a de-ault constructor. T$e de#au&t constructor is t$e constructor)it$out any *arameters. I- t$e class does not s*eci-y any constructors t$en an im*licitde-ault constructor is created.

For eam*le in our 'tudent"ecord class t$e de-ault constructor )ould loo: li:e t$is

public StudentQecord(

{//some code !ere

&

15.6.2 Overloading Constructors

s )e $a!e mentioned constructors can also %e o!erloaded -or eam*le )e $a!e $ere-our o!erloaded constructors

public StudentQecord({//some initialiKation code !ere

&

public StudentQecord(String temp{t!is.name = temp%

&

public StudentQecord(String name String address{t!is.name = name%t!is.address = address%

&

public StudentQecord(double mRrade double eRradedouble sRrade{

mat!Rrade = mRrade%englis!Rrade = eRrade%scienceRrade = sRrade%

&

Page 164: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 164/244

Introduction to Programming I 163

15.6.3 :sing Constructors

To use t$ese constructors )e $a!e t$e -ollo)ing code

public static void main( String[] args {

//create t!ree objects for Student recordStudentQecord annaQecord=ne# StudentQecord("nna"%

StudentQecord bea!Qecord=ne# StudentQecord(":ea!"")!ilippines"%

StudentQecord crisQecord=ne#StudentQecord(JCPC;CC%

//some code !ere&

+o) %e-ore )e mo!e on let us go %ac: to t$e static !aria%le studentount )e $a!edeclared a )$ile ago. T$e *ur*ose o- t$e studentount is to count t$e num%er o- o%ectst$at are instantiated )it$ t$e class 'tudent"ecord. 'o )$at )e )ant to do $ere ise!erytime an o%ect o- class 'tudent"ecord is instantiated )e increment t$e !alue o-studentount. good location to modi-y and increment t$e !alue o- studentount is int$e constructors %ecause it is al)ays called e!erytime an o%ect is instantiated. Foream*le

public StudentQecord({//some initialiKation code !erestudent6ount++; 77add a student

&

public StudentQecord(String temp{ t!is.name = temp%student6ount++; 77add a student

&

public StudentQecord(String name String address{t!is.name = name%t!is.address = address%student6ount++; 77add a student

&

public StudentQecord(double mRrade double eRradedouble sRrade{

mat!Rrade = mRrade%englis!Rrade = eRrade%

scienceRrade = sRrade%student6ount++; 77add a student

&

Page 165: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 165/244

Introduction to Programming I 16

15.6.% +(e t(isFG Constructor Call 

onstructor calls can %e c$ained meaning you can call anot$er constructor -rom insideanot$er constructor. e use t$e this67 call -or t$is. For eam*le gi!en t$e -ollo)ing

code

;7 public StudentQecord({<7 t!is("some string"%F7G7 &N7I7 public StudentQecord(String temp{D7 t!is.name = temp%J7 &P7;C7 public static void main( String[] args ;;7 {;<7;F7 StudentQecord annaQecord = ne# StudentQecord(%;G7 &

@i!en t$e code a%o!e )$en t$e statement at line 13 is called it )ill call t$e de-aultconstructor line 1. $en statement in line 2 is eecuted it )ill t$en call t$e constructort$at $as a 'tring *arameter 4in line 69.

T$ere are a -e) t$ings to remem%er )$en using t$e this constructor call;

1. $en using t$e t$is constructor call IT M1ST O""1R AS TE FIRST STATEME/T

in a constructor., It can O/LB 0E 1SE$ I/ A "O/STR1"TOR $EFI/ITIO/. T$e t$is call can t$en %e

-ollo)ed %y any ot$er rele!ant statements.

Page 166: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 166/244

Introduction to Programming I 16,

15.@ $ac8agesPac:ages are Ja!a`s means o- grou*ing related classes and inter-aces toget$er in a single

unit 4inter-aces )ill %e discussed later9. T$is *o)er-ul -eature *ro!ides -or a con!enientmec$anism -or managing a large grou* o- classes and inter-aces )$ile a!oiding *otentialnaming con-licts.

[email protected] Importing $ac8ages

To %e a%le to use classes outside o- t$e *ac:age you are currently )or:ing in you needto im*ort t$e *ac:age o- t$ose classes. By de-ault all your Ja!a *rograms im*ort t$e

 a!a.lang.U *ac:age t$at is )$y you can use classes li:e 'tring and Integers inside t$e*rogram e!ent$oug$ you $a!ent im*orted any *ac:ages.

T$e synta -or im*orting *ac:ages is as -ollo)s

import UnameOfPackage> %

For eam*le i- you )ant to use t$e class olor inside *ac:age a)t you $a!e to ty*e t$e-ollo)ing

import java.a#t.3olor%import java.a#t.*%

T$e -irst statement im*orts t$e s*eci-ic class olor )$ile t$e ot$er im*orts all o- t$eclasses in t$e a!a.a)t *ac:age.

not$er )ay to im*ort classes -rom ot$er *ac:ages is t$roug$ e*licit *ac:agere-erencing. T$is is done %y using t$e *ac:age name to declare an o%ect o- a class.

java.a#t.3olor color%

[email protected] Creating #our o!n pac8ages

To create our o)n *ac:age )e )rite

pac-age Upac-age+ame%

'u**ose )e )ant to create a *ac:age )$ere )e )ill *lace our 'tudent"ecord classtoget$er )it$ ot$er related classes. e )ill call our *ac:age sc$oollasses.

T$e -irst t$ing you $a!e to do is create a -older named sc$oollasses. o*y all t$e

classes t$at you )ant to %elong to t$is *ac:age inside t$is -older. -ter co*ying add t$e-ollo)ing code at t$e to* o- t$e class -ile. For eam*le

 pac3age school6lasses;

public class StudentQecord{

private String name%private String address%private int age%7

Pac:ages can also %e nested. In t$is case t$e Ja!a inter*reter e*ects t$e directory

structure containing t$e eecuta%le classes to matc$ t$e *ac:age $ierarc$y.

Page 167: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 167/244

Page 168: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 168/244

Ta:e note t$at you can set t$e class*at$ any)$ere. ou can also set more t$an oneclass*at$ )e ust $a!e to se*arate t$em %y [4-or )indo)s9 and ; 4-or ni %asedsystems9. For eam*le

set classpat!=376my3lasses%E76%076My)rograms6ava

and -or ni %ased systems

e5port classpat!=/usr/local/java7/usr/my3lasses

Page 169: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 169/244

15. /ccess Modifiers$en creating our classes and de-ining t$e *ro*erties and met$ods in our class )e )ant

to im*lement some :ind o- restriction to access t$ese data. For eam*le i- you )ant acertain attri%ute to %e c$anged only %y t$e met$ods inside t$e class you may )ant to$ide t$is -rom ot$er o%ects using your class. In Ja!a )e $a!e )$at )e call accessmodi#iers in order to im*lement t$is.

T$ere are -our di--erent ty*es o- mem%er access modi-iers in Ja!a; *u%lic *ri!ate*rotected and de-ault. T$e -irst t$ree access modi-iers are e*licitly )ritten in t$e code toindicate t$e access ty*e -or t$e -ourt$ one )$ic$ is de-ault no :ey)ord is used.

15..1 default access Falso called pac8age accessibilit#G

T$is s*eci-ies t$at only classes in t$e same *ac:age can $a!e access to t$e class!aria%les and met$ods. T$ere are no actual :ey)ord -or t$e de-ault modi-ier[ it is a**lied

in t$e a%sence o- an access modi-ier. For eam*le

public class StudentQecord{

//default access to instance variableint name%

//default access to met!odString get+ame({

return name%&

&

In t$is eam*le t$e instance !aria%le name and t$e met$od get+ame49 can %e accessed

-rom ot$er o%ects as long as t$e o%ect %elongs to t$e same *ac:age )$ere t$e class'tudent"ecord %elongs to.

15..2 public access

T$is s*eci-ies t$at class mem%ers are accessi%le to anyone %ot$ inside and outside t$eclass. ny o%ect t$at interacts )it$ t$e class can $a!e access to t$e *u%lic mem%ers o-t$e class. For eam*le

public class StudentQecord{

//default access to instance variablepublic int name%

//default access to met!odpublic String get+ame({

return name%&

&

In t$is eam*le t$e instance !aria%le name and t$e met$od get+ame49 can %e accessed-rom ot$er o%ects.

Page 170: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 170/244

15..3 protected access

T$is s*eci-ies t$at t$e class mem%ers are accessi%le only to met$ods in t$at class andt$e su%classes o- t$e class. For eam*le

public class StudentQecord{

//default access to instance variableprotected int name%

//default access to met!odprotected String get+ame({

return name%&

&

In t$is eam*le t$e instance !aria%le name and t$e met$od get+ame49 can %e accessedonly -rom met$ods inside t$e class and -rom su%classes o- 'tudent"ecord. e )illdiscuss a%out su%classes on t$e net c$a*ter.

15..% private access

T$is s*eci-ies t$at t$e class mem%ers are only accessi%le %y t$e class t$ey are de-inedin. For eam*le

public class StudentQecord{

//default access to instance variableprivate int name%

//default access to met!od

private String get+ame({return name%

&&

In t$is eam*le t$e instance !aria%le name and t$e met$od get+ame49 can %e accessedonly -rom met$ods inside t$e class.

Coding <uidelinesThe instance $ariables of a class should normally be declared pri$ateB and the classwill <ust pro$ide accessor and mutator methods to these $ariables.

Page 171: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 171/244

Introduction to Programming I 1H0

15.15 0-ercises

15.15.1 /ddress Boo8 0ntr# 

our tas: is to create a class t$at contains an address %oo: entry. T$e -ollo)ing ta%ledescri%es t$e in-ormation t$at an adress%oo: entry $as.

Attributes5Properties $escription

+ame +ame o- t$e *erson in t$e address%oo:

ddress ddress o- t$e *erson

Tele*$one +um%er Tele*$one num%er o- t$e *erson

Email ddress Persons Email address

Table 21: 3ttributes and 3ttributes escriptions

For t$e met$ods create t$e -ollo)ing;

1. Pro!ide t$e necessary accessor and mutator met$ods -or all t$e attri%utes.2. onstructors

15.15.2 /ddressBoo8 

reate a class address %oo: t$at can contain 100 entries o- ddressBoo:Entry o%ects4use t$e class you created in t$e -irst eercise9. ou s$ould *ro!ide t$e -ollo)ingmet$ods -or t$e address %oo:.

1. dd entry2. Delete entry3. Vie) all entries. *date an entry

Page 172: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 172/244

Introduction to Programming I 1H1

++ Inheritance> Po&ymorphism and

Inter#aces11.1 ObjectivesIn t$is section )e )ill %e discussing on $o) a class can in$erit t$e *ro*erties o- aneisting class. class t$at does t$is is called a su%class and its *arent class is called t$esu*erclass. e )ill also %e discussing a s*ecial *ro*erty o- Ja!a )$erein it canautomatically a**ly t$e *ro*er met$ods to eac$ o%ect regardless o- )$at su%class t$eo%ect came -rom. T$is *ro*erty is :no)n as *olymor*$ism. Finally )e are going todiscusss a%out inter-aces t$at $el*s reduce *rogramming e--ort.

t t$e end o- t$e lesson t$e student s$ould %e a%le to;

De-ine su*er classes and su%classes• &!erride met$ods o- su*erclasses

• reate -inal met$ods and -inal classes

11.2 In(eritanceIn Ja!a all classes including t$e classes t$at ma:e u* t$e Ja!a PI are su%classed -romt$e ObCect su*erclass. sam*le class $ierarc$y is s$o)n %elo).

ny class a%o!e a s*eci-ic class in t$e class $ierarc$y is :no)n as a superc&ass. $ile

any class %elo) a s*eci-ic class in t$e class $ierarc$y is :no)n as a su%class o- t$atclass.

Figure 11.1: Class !ierarchy 

In$eritance is a maor ad!antage in o%ectoriented *rogramming since once a %e$a!ior4met$od9 is de-ined in a su*erclass t$at %e$a!ior is automatically in$erited %y allsu%classes. T$us you can encode a met$od only once and t$ey can %e used %y allsu%classes. su%class only need to im*lement t$e di--erences %et)een itsel- and t$e*arent.

Page 173: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 173/244

Introduction to Programming I 1H2

11.2.1 ,efining Superclasses and Subclasses

To deri!e a class )e use t$e extends :ey)ord. In order to illustrate t$is lets create asam*le *arent class. 'u**ose )e $a!e a *arent class called Person.

public class )erson{

 protected String name% protected String address%

/*** Eefault constructor*/public )erson({

System.out.println(A,nside )erson73onstructorB%name = ""%address = ""%

&

/*** 3onstructor #it! < parameters*/public )erson( String name String address {

t!is.name = name%t!is.address = address%

&

/*** ccessor met!ods*/public String get+ame({

return name%

&

public String getddress({return address%

&

public void set+ame( String name {t!is.name = name%

&

public void setddress( String add {t!is.address = add%

&

&

+otice t$at t$e attri%utes name and address are declared as protected. T$e reason )edid t$is is t$at )e )ant t$ese attri%utes to %e accessi%le %y t$e su%classes o- t$esu*erclass. I- )e declare t$is as *ri!ate t$e su%classes )ont %e a%le to use t$em. Ta:enote t$at all t$e *ro*erties o- a su*erclass t$at are declared as pub&ic> protected andde#au&t can %e accessed %y its su%classes.

Page 174: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 174/244

Introduction to Programming I 1H3

+o) )e )ant to create anot$er class named 'tudent. 'ince a student is also a *erson)e decide to ust etend t$e class Person so t$at )e can in$erit all t$e *ro*erties andmet$ods o- t$e eisting class Person. To do t$is )e )rite

public class Student e5tends )erson{

public Student({System.out.println(A,nside Student73onstructorB%//some code !ere

&

// some code !ere&

$en a 'tudent o%ect is instantiated t$e de-ault constructor o- its su*erclass is in!o:edim*licitly to do t$e necessary initiali>ations. -ter t$at t$e statements inside t$esu%class are eecuted. To illustrate t$is consider t$e -ollo)ing code

public static void main( String[] args {Student anna = ne# Student(%

&

In t$e code )e create an o%ect o- class 'tudent. T$e out*ut o- t$e *rogram is

,nside )erson73onstructor,nside Student73onstructor

T$e *rogram -lo) is s$o)n %elo).

Figure 11.2: )rogram Flow 

Page 175: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 175/244

Introduction to Programming I 1H

11.2.2 +(e super 8e#!ord 

su%class can also exp&icit&y call a constructor o- its immediate su*erclass. T$is is done%y using t$e super constructor call. su*er constructor call in t$e constructor o- a

su%class )ill result in t$e eecution o- rele!ant constructor -rom t$e su*erclass %ased ont$e arguments *assed.

For eam*le gi!en our *re!ious eam*le classes Person and 'tudent )e s$o) aneam*le o- a su*er constructor call. @i!en t$e -ollo)ing code -or 'tudent

public Student({super( ")omeBame", ")ome4ddress" ;System.out.println(",nside Student73onstructor"%

&

T$is code calls t$e second constructor o- its immediate su*erclass 4)$ic$ is Person9 andeecutes it. not$er sam*le code s$o)n %elo)

public Student({super(;System.out.println(",nside Student73onstructor"%

&

T$is code calls t$e de-ault constructor o- its immediate su*erclass 4)$ic$ is Person9 andeecutes it.

T$ere are a -e) t$ings to remem%er )$en using t$e su*er constructor call;

1. T$e su*er49 call ('T &" T#E FI"'T 'TTE(E+T I+ &+'T"T&".

2. T$e su*er49 call can only %e used in a constructor de-inition.3. T$is im*lies t$at t$e t$is49 construct and t$e su*er49 calls ++&T B&T# &" I+T#E '(E &+'T"T&".

not$er use o- su*er is to re-er to mem%ers o- t$e su*erclass 4ust li:e t$e this

re-erence 9. For eam*le

public Student({

super*name = DsomenameE;super*address = Dsome addressE;

b

Page 176: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 176/244

Introduction to Programming I 1H,

11.2.3 Overriding Met(ods

I- -or some reason a deri!ed class needs to $a!e a di--erent im*lementation o- a certainmet$od -rom t$at o- t$e su*erclass overriding met$ods could *ro!e to %e !ery use-ul.

su%class can o!erride a met$od de-ined in its su*erclass %y *ro!iding a ne)im*lementation -or t$at met$od.

'u**ose )e $a!e t$e -ollo)ing im*lementation -or t$e get+ame met$od in t$e Personsu*erclass

public class )erson

Z77public String get+ame({

System.out.println(")arent7 get+ame"%return name%

&7

&

To o!erride t$e get+ame met$od in t$e su%class 'tudent )e )rite

public class Student e5tends )erson

Z77public String get+ame({

System.out.println("Student7 get+ame"%return name%

&7

&

'o )$en )e in!o:e t$e get+ame met$od o- an o%ect o- class 'tudent t$e o!erriddenmet$od )ould %e called and t$e out*ut )ould %e

Student7 get+ame

Page 177: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 177/244

Introduction to Programming I 1H6

11.2.% 9inal Met(ods and 9inal Classes

In Ja!a it is also *ossi%le to declare classes t$at can no longer %e su%classed. T$eseclasses are called #ina& c&asses. To declare a class to %e -inal )e ust add t$e -inal

:ey)ord in t$e class declaration. For eam*le i- )e )ant t$e class Person to %e declared-inal )e )rite

public $inal class )erson{

//some code !ere&

(any o- t$e classes in t$e Ja!a PI are declared -inal to ensure t$at t$eir %e$a!iorcannot %e o!erridden. Eam*les o- t$ese classes are Integer Dou%le and 'tring.

It is also *ossi%le in Ja!a to create met$ods t$at cannot %e o!erridden. T$ese met$odsare )$at )e call #ina& methods. To declare a met$od to %e -inal )e ust add t$e -inal:ey)ord in t$e met$od declaration. For eam*le i- )e )ant t$e get+ame met$od inclass Person to %e declared -inal )e )rite

public $inal String get+ame({return name%

&

'tatic met$ods are automatically -inal. T$is means t$at you cannot o!erride t$em.

Page 178: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 178/244

Introduction to Programming I 1HH

11.3 $ol#morp(ism+o) gi!en t$e *arent class Person and t$e su%class 'tudent o- our *re!ious eam*le

)e add anot$er su%class o- Person )$ic$ is Em*loyee. Belo) is t$e class $ierarc$y -ort$at

Person

'tudent Em*loyee

Figure 11.: !ierarchy for )erson class and itRsclasses

In Ja!a )e can create a re-erence t$at is o- ty*e su*erclass to an o%ect o- its su%class.For eam*le

public static main( String[] args {

)erson ref%

Student studentbject = ne# Student(%0mployee employeebject = ne# 0mployee(%

ref = studentbject% //)erson ref points to a// Student object

//some code !ere&

+o) su**ose )e $a!e a get+ame met$od in our su*erclass Person and )e o!erride t$ismet$od in %ot$ t$e su%classes 'tudent and Em*loyee

public class )erson{

public String get+ame({ System.out.println(A)erson +ame7B 4name% return name%

&&

public class Student e5tends )erson{

public String get+ame({ System.out.println(AStudent +ame7B 4name% return name%

&&

public class 0mployee e5tends )erson{

public String get+ame({ System.out.println(A0mployee +ame7B 4name% return name%

&&

Page 179: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 179/244

Page 180: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 180/244

Introduction to Programming I 1H<

11.% /bstract Classes+o) su**ose )e )ant to create a su*erclass )$erein it $as certain met$ods in it t$at

contains some im*lementation and some met$ods )$erein )e ust )ant to %eo!erridden %y its su%classes.

For eam*le )e )ant to create a su*erclass named =i!ingT$ing. T$is class $as certainmet$ods li:e %reat$ eat slee* and )al:. #o)e!er t$ere are some met$ods in t$issu*erclass )$erein )e cannot generali>e t$e %e$a!ior. Ta:e -or eam*le t$e )al:met$od. +ot all li!ing t$ings )al: t$e same )ay. Ta:e t$e $umans -or instance )e$umans )al: on t)o legs )$ile ot$er li!ing t$ings li:e dogs )al: on -our legs. #o)e!ert$ere are many c$aracteristics t$at li!ing t$ings $a!e in common t$at is )$y )e )ant tocreate a general su*erclass -or t$is.

Figure 11.%: 3bstract class

In order to do t$is )e can create a su*erclass t$at $as some met$ods )it$im*lementations and ot$ers )$ic$ do not. T$is :ind o- class is called an a%stract class.

n abstract c&ass is a class t$at cannot %e instantiated. It o-ten a**ears at t$e to* o-an o%ectoriented *rogramming class $ierarc$y de-ining t$e %road ty*es o- actions*ossi%le )it$ o%ects o- all su%classes o- t$e class.

T$ose met$ods in t$e a%stract classes t$at do not $a!e im*lementation are calledabstract methods. To create an a%stract met$od ust )rite t$e met$od declaration)it$out t$e %ody and use t$e a%stract :ey)ord. For eam*le

public abstract void someMet!od(%

Page 181: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 181/244

Introduction to Programming I 170

+o) lets create an eam*le a%stract class.

public abstract class .ivingGhing{

public void breat!({System.out.println("Tiving 2!ing breat!ing..."%

&

public void eat({System.out.println("Tiving 2!ing eating..."%

&

7HHH abstract method al3H Ie ant this method to be overridden by subclasses o$H .ivingGhingH7

 public abstract void al3(;&

$en a class etends t$e =i!ingT$ing a%stract class it is re?uired to o!erride t$ea%stract met$od )al:49 or else t$at su%class )ill also %ecome an a%stract class andt$ere-ore cannot %e instantiated. For eam*le

public class Human e1tends .ivingGhing{

 public void al3( )ystem*out*println("uman

 al3s***";-

&

I- t$e class #uman does not o!erride t$e )al: met$od )e )ould encounter t$e -ollo)ingerror message

Human.java7;7 Human is not abstract and does not overrideabstract met!od #al-( in Tiving2!ingpublic class Human e5tends Tiving2!ing

Y; error

Coding<uidelines

Lse abstract classes to define broad types of beha$iors at the top of an ob<ectoriented programming class hierarchyB and use its subclasses to pro$ide implementationdetails of the abstract class.

Page 182: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 182/244

Introduction to Programming I 171

11.* Interfacesn inter#ace is a s*ecial :ind o- %loc: containing met$od signatures 4and *ossi%ly

constants9 only. Inter-aces de-ine t$e signatures o- a set o- met$ods )it$out t$e %ody.

Inter-aces de-ine a standard and *u%lic )ay o- s*eci-ying t$e %e$a!ior o- classes. T$eyallo) classes regardless o- t$eir location in t$e class $ierarc$y to im*lement common%e$a!iors. +ote t$at inter-aces e$i%it *olymor*$ism as )ell since *rogram may call aninter-ace met$od and t$e *ro*er !ersion o- t$at met$od )ill %e eecuted de*ending ont$e ty*e o- o%ect *assed to t$e inter-ace met$od call.

11.*.1 (# do !e use Interfaces) 

e need to use inter-aces i- we want unrelated classes to implement similar methods.

T$ru inter-aces )e can actually ca*ture similarities among unrelated classes )it$outarti-icially -orcing a class relations$i*.

=ets ta:e as an eam*le a class Line )$ic$ contains met$ods t$at com*utes t$e lengt$o- t$e line and com*ares a Line o%ect to o%ects o- t$e same class. +o) su**ose )e$a!e anot$er class MyInteger )$ic$ contains met$ods t$at com*ares a MyIntegero%ect to o%ects o- t$e same class. s )e can see $ere %ot$ o- t$e classes $a!e somesimilar met$ods )$ic$ com*ares t$em -rom ot$er o%ects o- t$e same ty*e %ut t$ey arenot related )$atsoe!er. In order to en-orce a )ay to ma:e sure t$at t$ese t)o classesim*lement some met$ods )it$ similar signatures )e can use an inter-ace -or t$is. ecan create an inter-ace class lets say inter-ace Re&ation )$ic$ $as some com*arisonmet$od declarations. &ur inter-ace "elation can %e declared as

public interface Qelation{

public boolean isRreater( bject a bject b%public boolean isTess( bject a bject b%public boolean is0@ual( bject a bject b%

&

not$er reason -or using an o%ects *rogramming inter-ace is to re$eal an ob<ectRs programming interface without re$ealing its class. s )e can see later on t$e section6nterface $s. Classes )e can actually use an inter-ace as data ty*e.

Finally )e need to use inter-aces to model multiple inheritance )$ic$ allo)s a class to$a!e more t$an one su*erclass. (ulti*le in$eritance is not *resent in Ja!a %ut *resent

in ot$er o%ectoriented languages li:e KK.

11.*.2 Interface vs. /bstract Class

T$e -ollo)ing are t$e main di--erences %et)een an inter-ace and an a%stract class;inter-ace met$ods $a!e no %ody an inter-ace can only de-ine constants and an inter-ace$a!e no direct in$erited relations$i* )it$ any *articular class t$ey are de-inedinde*endently.

Page 183: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 183/244

Introduction to Programming I 172

11.*.3 Interface vs. Class

&ne common c$aracteristic o- an inter-ace and class is t$at t$ey are %ot$ ty*es. T$ismeans t$at an inter-ace can %e used in *laces )$ere a class can %e used. For eam*le

gi!en a class Person and an inter-ace PersonInter-ace t$e -ollo)ing declarations are!alid;

)erson,nterface pi = ne# )erson(%)erson pc = ne# )erson(%

#o)e!er you cannot create an instance -rom an inter-ace. n eam*le o- t$isis;

)erson,nterface pi = ne# )erson,nterface(% //3M),T0//0QQQ$$$

not$er common c$aracteristic is t$at %ot$ inter-ace and class can de-ine met$ods.

#o)e!er an inter-ace does not $a!e an im*lementation code )$ile t$e class $a!e one.

11.*.% Creating Interfaces

To create an inter-ace )e )rite

public interface [,nterface+ame]{

//some met!ods #it!out t!e body&

s an eam*le lets create an inter-ace t$at de-ines relations$i*s %et)een t)o o%ects

according to t$e natural orderQ o- t$e o%ects.

public interface Qelation{

public boolean isRreater( bject a bject b%public boolean isTess( bject a bject b%public boolean is0@ual( bject a bject b%

&

+o) to use t$e inter-ace )e use t$e imp&ements :ey)ord. For eam*le

/*** 2!is class defines a line segment*/

public class Tine implements Qelation{

private double 5;%private double 5<%private double y;%private double y<%

public Tine(double 5; double 5< double y; double y<{t!is.5; = 5;%t!is.5< = 5<%t!is.y; = y;%t!is.y< = y<%

&

public double getTengt!({

Page 184: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 184/244

Introduction to Programming I 173

double lengt! = Mat!.s@rt((5<5;*(5<5; 4(y<y;* (y<y;%

return lengt!%&

public boolean isRreater( bject a bject b{double aTen = ((Tinea.getTengt!(%double bTen = ((Tineb.getTengt!(%return (aTen bTen%

&

public boolean isTess( bject a bject b{double aTen = ((Tinea.getTengt!(%double bTen = ((Tineb.getTengt!(%return (aTen U bTen%

&

public boolean is0@ual( bject a bject b{

double aTen = ((Tinea.getTengt!(%double bTen = ((Tineb.getTengt!(%return (aTen == bTen%

&&

$en your class tries to im*lement an inter-ace al)ays ma:e sure t$at you im*lementall t$e met$ods o- t$at inter-ace or else you )ould encounter t$is error

Tine.java7G7 Tine is not abstract and does not overrideabstract met!od isRreater(java.lang.bjectjava.lang.bject inQelationpublic class Tine implements Qelation

Y; error

Coding

<uidelines

Lse interfaces to create the same standard method definitions in may different classes.-nce a set of standard method definition is createdB you can write a single method tomanipulate all of the classes that implement the interface.

Page 185: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 185/244

Introduction to Programming I 17

11.*.* 4elations(ip of an Interface to a Class

s )e $a!e seen in t$e *re!ious section a class can im*lement an inter-ace as long as it*ro!ides t$e im*lementation code -or all t$e met$ods de-ined in t$e inter-ace.

not$er t$ing to note a%out t$e relations$i* o- inter-aces to classes is t$at a class canonly E/TE+D &+E su*er class %ut it can I(P=E(E+T (+ inter-aces. n eam*le o- aclass t$at im*lements many inter-aces is

public class )erson implements )erson,nterfaceTiving2!ing'!atever,nterface {

//some code !ere&

not$er eam*le o- a class t$at etends one su*er class and im*lements an inter-ace is

public class 3omputerScienceStudent e5tends Studentimplements )erson,nterface

Tiving2!ing {

//some code !ere&

Ta:e note t$at an inter-ace is not *art o- t$e class in$eritance $ierarc$y. nrelatedclasses can im*lement t$e same inter-ace.

11.*. In(eritance among Interfaces

Inter-aces are not *art o- t$e class $ierarc$y. #o)e!er inter-aces can $a!e in$eritancerelations$i* among themsel$es. For eam*le su**ose )e $a!e t)o inter-acesStudentInter#ace and PersonInter#ace. I- 'tudentInter-ace etends PersonInter-aceit )ill in$erit all o- t$e met$od declarations in PersonInter-ace.

public interface )erson,nterface {. . .

&

public interface Student,nterface e5tends )erson,nterface {. . .

&

Page 186: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 186/244

Introduction to Programming I 17,

11. 0-ercises

11..1 0-tending Student4ecord 

In t$is eercise )e )ant to create a more s*eciali>ed student record t$at containsadditional in-ormation a%out a om*uter 'cience student. our tas: is to etend t$e'tudent"ecord class t$at )as im*lemented in t$e *re!ious lessons. dd some attri%utesand met$ods t$at you t$in: are needed -or a om*uter 'cience student record. Try too!erride some eisting met$ods in t$e su*erclass 'tudent"ecord i- you really need to.

11..2 +(e S(ape abstract class

Try to create an a%stract class called '$a*e )it$ a%stract met$ods getrea49 andget+ame49. rite t)o o- its su%classes ircle and '?uare. ou can add additionalmet$ods to its su%classes i- you )ant to.

Page 187: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 187/244

Introduction to Programming I 176

+. 0asic Exception and&ing

12.1 ObjectivesIn t$is section )e are going to study a tec$ni?ue used in Ja!a to $andle unusualconditions t$at interru*t t$e normal o*eration o- t$e *rogram. T$is tec$ni?ue is calledexception hand&ing.

t t$e end o- t$e lesson t$e student s$ould %e a%le to;

• De-ine ece*tions

• #andle ece*tions using a sim*le trycatc$-inally %loc:

12.2 (at are 0-ceptions) n ece*tion is an e!ent t$at interru*ts t$e normal *rocessing -lo) o- a *rogram. T$ise!ent is usually some error o- some sort. T$is causes our *rogram to terminatea%normally.

'ome eam*les o- ece*tions t$at you mig$t $a!e encountered in our *re!ious eercisesare; rrayInde&ut&-Bounds ece*tions )$ic$ occurs i- )e try to access a noneistentarray element or may%e a +um%erFormatEce*tion )$ic$ occurs )$en )e try to *assas a *arameter a nonnum%er in t$e Integer.*arseInt met$od.

12.3 andling 0-ceptionsTo $andle ece*tions in Ja!a )e use a trycatc$-inally %loc:. $at )e do in our*rograms is t$at )e *lace t$e statements t$at can *ossi%ly generate an ece*tion insidet$is %loc:.

T$e general -orm o- a trycatc$-inally %loc: is

try{

&

//#rite t!e statements t!at can generate an e5ception//in t!is bloc-

catc!( Ue5ception2ype; Uvar+ame; {

&. . .

//#rite t!e action your program #ill do if an e5ception//of a certain type occurs

catc!( Ue5ception2ypen Uvar+amen {//#rite t!e action your program #ill do if an//e5ception of a certain type occurs

&finally{

//add more cleanup code !ere&

Page 188: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 188/244

Ece*tions t$ro)n during eecution o- t$e try %loc: can %e caug$t and $andled in acatc$ %loc:. T$e code in t$e -inally %loc: is al)ays eecuted.

T$e -ollo)ing are t$e :ey as*ects a%out t$e synta o- t$e trycatc$-inally construct;• T$e %loc: notation is mandatory.

• For eac$ try %loc: t$ere can %e one or more catc$ %loc:s %ut only one -inally %loc:.

• T$e catc$ %loc:s and -inally %loc:s must al)ays a**ear in conunction )it$ t$e try

%loc: and in t$e a%o!e order.• try %loc: must %e -ollo)ed %y at &east one catc$ %loc: &" one -inally %loc: or %ot$.

• Eac$ catc$ %loc: de-ines an ece*tion $andle. T$e $eader o- t$e catc$ %loc: ta:es

eactly one argument )$ic$ is t$e ece*tion its %loc: is )illing to $andle. T$e

ece*tion must %e o- t$e T$ro)a%le class or one o- its su%classes.

Figure 12.1: Flow of e$ents in a trycatchfinally bloc; 

=ets ta:e -or eam*le a code t$at *rints t$e second argument )$en )e try to run t$ecode using commandline arguments. 'u**ose t$ere is no c$ec:ing inside your code -or

t$e num%er o- arguments and )e ust access t$e second argument argsX1Y rig$t a)ay)ell get t$e -ollo)ing ece*tion.

05ception in t!read "main"java.lang.rray,nde5utf:ounds05ception7 ;

at 05ception05ample.main(05ception05ample.java7N

Page 189: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 189/244

To *re!ent t$is -rom $a**ening )e can *lace t$e code inside a trycatc$ %loc:. T$e-inally %loc: is ust o*tional. For t$is eam*le )e )ont use t$e -inally %loc:.

public class 05ception05ample

{ public static void main( String[] args {

try

System.out.println( args[;] %-catch( 4rray&nde1/ut/$#ounds01ception e1p

System.out.println("05ception caug!t$"%-&

&

'o )$en )e try to run t$e *rogram again )it$out arguments t$e out*ut )ould %e

05ception caug!t$

Page 190: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 190/244

12.% 0-ercises

12.%.1 Catc(ing 0-ceptions1

@i!en t$e -ollo)ing code;public class 2est05ceptions{

public static void main( String[] args {for( int i=C% true% i44 {

System.out.println("args["4i4"]="4args[i]%

&&

&

om*ile and run t$e TestEce*tions *rogram. T$e out*ut s$ould loo: li:e t$is;

javac 2est05ceptions one t#o t!reeargs[C]=oneargs[;]=t#oargs[<]=t!ree05ception in t!read "main"

java.lang.rray,nde5utf:ounds05ception7 Fat 2est05ceptions.main(;.java7G

(odi-y t$e TestEce*tions *rogram to $andle t$e ece*tion. T$e out*ut o- t$e *rograma-ter catc$ing t$e ece*tion s$ould loo: li:e t$is;

javac 2est05ceptions one t#o t!reeargs[C]=oneargs[;]=t#o

args[<]=t!ree05ception caug!t7java.lang.rray,nde5utf:ounds05ception7 F

^uiting...

12.%.2 Catc(ing 0-ceptions 2

$ances are !ery good t$at some *rograms you!e )ritten %e-ore $a!e encounteredece*tions. 'ince you didnt catc$ t$e ece*tions t$ey sim*ly $alted t$e eecution o-your code. @o %ac: to t$ose *rograms and im*lement ece*tion $andling.

Page 191: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 191/244

Introduction to Programming I 1<0

Appendix A 2 =a)a and /et0eans Insta&&ation

In t$is section )e )ill discuss on $o) to install Ja!a and +etBeans in your system4%untu Da**er8indo)s /P9. I- you are not *ro!ided )it$ t$e Ja!a ,.0 and +etBeans,., installers %y your instructor you can do)nload a co*y o- t$e installers -rom t$e 'un(icrosystems )e%site 4$ tt * ; 8 8 a ! a .s un . c o m 8 9 - or Ja!a and$ tt * ; 8 8 )) ) .+ e t Be a n s .o r g8do ) n l o a d s8 - or +etBeans9. Be-ore starting )it$ t$einstallation co*y t$e installers in your $ard dis: -irst.

For 1buntu $apper2

o*y all t$e installers inside t$e 8usr -older.

For 'indo!s2

Just co*y t$e installers in any tem*orary directory.

Page 192: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 192/244

Introduction to Programming I 1<1

 Installing 7ava in :buntu ,apper Step +2 @o to t$e -older )$ere you $a!e your installers

Step .2 Be-ore running your installer ma:e sure it is eecuta%le. To do t$is rig$t clic:on t$e installer clic: on t$e Permissions ta% and t$en lic: on t$e eecute %o. lose

t$e )indo).

Page 193: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 193/244

Introduction to Programming I 1<2

Step -2 Dou%le clic: on t$e -ile d:1C,C0C06linui,76.%in. dialog %o )ill dis*layclic: on t$e %utton "un In Terminal.

-ter *ressing E+TE" you )ill see t$e license agreement dis*layed on t$e console.

Page 194: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 194/244

Introduction to Programming I 1<3

Just *ress enter until you see t$e ?uestion; Do you agree to t$e a%o!e license termsGXyes or noY. Just ty*e; yes and *ress E+TE". Just )ait -or t$e installer to -inis$un*ac:ing all its contents and installing Ja!a.

Page 195: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 195/244

Introduction to Programming I 1<

Step <2 "reating symbo&ic &in%s

In order to run a!a commands any)$ere )e need to create sym%olic lin:s -or all t$ecommands in JDA inside t$e 8usr8local8%in directory. To do t$is go to t$edirectory;/usr/local/bin. Ty*e; cd /usr/local/bin

Page 196: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 196/244

Introduction to Programming I 1<,

To ma:e t$e sym%olic lin:s to t$e commands ty*e;sudo ln s /usr/java/jd-;.N.C\C;/bin/* .

Page 197: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 197/244

Introduction to Programming I 1<6

 Installing 7ava in indo!sStep +2 1sing 'indo!s Exp&orer> go to the #o&der !here your =a)a insta&&er is

&ocated

Figure 12.2: Folder containing installers

Page 198: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 198/244

J.E.D.I

Introduction to Programming I 1<H

Page 199: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 199/244

Introduction to Programming I 1<7

J.E.D.I

Step .2 Run the insta&&er

To run t$e installer ust dou%leclic: on t$e installer icon. J2'E installer dialog )illt$en a**ear. lic: on t$e radio %utton la%eled RI acce*t t$e terms in t$e license

agreementR and *ress +E/T.

Figure 12.: 4icense agreement 

Page 200: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 200/244

Introduction to Programming I 1<<

J.E.D.I

lic: on +E/T to continue installation.

Figure 12.%: Custom setup

lic: on FI+I'# to com*lete installation.

Figure 12.+: Finish installation

Page 201: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 201/244

Introduction to Programming I 200

J.E.D.I

 Installing etBeans in :buntu ,apper 

Step +2 @o to t$e -older )$ere you $a!e your installers

Page 202: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 202/244

Introduction to Programming I 201

J.E.D.I

Step .2 Be-ore running your installer ma:e sure it is eecuta%le.

To do t$is rig$t clic: on t$e installer clic: on t$e Permissions ta% and t$en lic: on t$e

eecute %o. lose t$e )indo).

Step -2 Dou%le clic: on t$e -ile net%eans,C,%etalinu.%in. lic: on "un in Terminal.

Page 203: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 203/244

Introduction to Programming I 202

J.E.D.I

+et%eans ,., dialog )ill t$en a**ear. lic: on +E/T.

Page 204: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 204/244

Introduction to Programming I 203

J.E.D.I

lic: on t$e radio %utton t$at says RI acce*t t$e terms in t$e license agreementR. ndt$en clic: on +E/T.

For t$e directory name c$ange it to; 8usr8a!a8net%eans.0 t$en clic: on +E/T.

Page 205: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 205/244

Introduction to Programming I 20

J.E.D.I

For t$e JDA directory c$oose 8usr8a!a8d:1.,.0C01 and t$en clic: on +E/T.

T$e net dialog ust s$o)s in-ormation a%out +etBeans t$atyou )ill install. Just clic:again on +E/T.

Page 206: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 206/244

Introduction to Programming I 20,

J.E.D.I

+o) ust )ait -or +etBeans to -inis$ its installation. lic: on FI+I'# to com*lete t$einstallation.

Page 207: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 207/244

J.E.D.I

Introduction to Programming I 206

Page 208: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 208/244

Introduction to Programming I 20H

J.E.D.I

Step <2 reating sym%olic lin:s

In order to run +etBeans any)$ere )e need to create sym%olic lin: -or it. To do t$is go-irst to t$e directory;/usr/local/bin. Ty*e; cd /usr/local/bin

(a:e a sym%olic lin: to t$e +etBeans eecuta%le %y ty*ing;sudo ln s /!ome/florence/netbeans/bin/netbeans .

+o) you can run +etBeans in any directory %y ty*ing; netbeans V

Page 209: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 209/244

Introduction to Programming I 207

J.E.D.I

 Installing etBeans in indo!s

Step +2 1sing 'indo!s Exp&orer> go to the #o&der !here your /et0eans insta&&eris &ocated

Figure 12.*: "et9eans installer file

Page 210: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 210/244

Introduction to Programming I 20<

J.E.D.I

Step .2 Run the insta&&er

To run t$e installer ust dou%leclic: on t$e installer icon. -ter clic:ing on t$e net%eans

,C,%eta%in)indo)s icon t$e +etBeans installation )i>ard )ill a**ear. lic: on +E/T

to enter installation *rocess.

Figure 12./: "et9eans installation

Page 211: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 211/244

Introduction to Programming I 210

J.E.D.I

T$e agreement *age )ill t$e a**ear. $oose to EPT and clic: +E/T to continue.

Figure 12.0: 4icense 3greement 

Page 212: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 212/244

Introduction to Programming I 211

J.E.D.I

T$en you )ill %e gi!en t$e c$oice on )$ic$ directory to *lace t$e +etBeans. ou canmo!e on %y clic:ing +E/T or you can clic: on B"&'E to c$oose a di--erent directory.

Figure 12.7: Choose directory where to install "et9eans

Page 213: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 213/244

Introduction to Programming I 212

J.E.D.I

+et is c$oosing t$e 'tandard Edition JDAs -rom your mac$ine. I- you $a!e -inis$edinstalling Ja!a t$e d:1.,.0C01 c$ould a**ear -rom your c$oices. lic: on +E/T tocontinue.

Figure 12.1&: Choose K to use

Page 214: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 214/244

Introduction to Programming I 213

J.E.D.I

It )ill t$en in-orm you t$e location and si>e o- +etBeans )$ic$ )ill %e installed to yourmac$ine. lic: on +E/T to -inis$ installation.

Figure 12.11: 6nstallation Summary 

Page 215: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 215/244

Introduction to Programming I 21

J.E.D.I

ou $a!e installed +etBeans on your com*uter. lic: on FI+I'# to com*lete installation.

Figure 12.12: Successful installation

Page 216: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 216/244

Introduction to Programming I 21,

J.E.D.I

Appendix 02 ?etting to %no! your ProgrammingEn)ironment 6'indo!s (P )ersion7

In t$is section )e )ill %e discussing on $o) to )rite com*ile and run Ja!a *rograms.T$ere are t)o )ays o- doing t$is t$e -irst one is %y using a console and a tet editor.T$e second one is %y using +etBeans )$ic$ is an Integrated $e)e&opmentEn)ironment or I$E.

n IDE is a *rogramming en!ironment integrated into a so-t)are a**lication t$at*ro!ides a @I %uilder a tet or code editor a com*iler and8or inter*reter and ade%ugger.

Be-ore going into details let us -irst ta:e a loo: at t$e -irst Ja!a *rogram you )ill %e)riting.

M# 9irst 7ava $rogram

public class Hello{

/*** My first java program*/public static void main(String[] args {

//prints t!e string "Hello #orld" on screenSystem.out.println("Hello #orld$"%

&&

Be-ore )e try to e*lain )$at t$e *rogram means lets -irst try to )rite t$is *rogram in a-ile and try to run it.

Page 217: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 217/244

Introduction to Programming I 216

J.E.D.I

:sing a +e-t 0ditor and

Console

For t$is eam*le )e )ill %e using t$e tet editor R+ote*adR4-or indo)s9 to edit t$eJa!a source code. ou can use ot$er tet editors i- you )ant to. ou )ill also need too*en t$e ('D&' *rom*t )indo) to com*ile and eecute your Ja!a *rograms.

Step +2 Start /otepad

To start +ote*ad in indo)s clic: on start ll Programs ccessories +ote*ad.

Figure 12.1%: "otepad 3pplication

Figure 12.1: Clic; on startQ 3ll )rogramsQ 3ccessoriesQ "otepad 

Page 218: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 218/244

Introduction to Programming I 21H

J.E.D.I

Step .2 Open the "ommand Prompt !indo!

To o*en t$e ('D&' command *rom*t in indo)s clic: on start ll *rogramsccessories ommand Prom*t.

Figure 12.1+: startQ 3ll programsQ 3ccessories QCommand )rompt 

Figure 12.1*: =S-S Command )rompt 

Page 219: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 219/244

Introduction to Programming I 217

J.E.D.I

Step -2 'rite your the source code o# your =a)a program in /otepad

Step <2 Sa)e your =a)a Program

e )ill sa!e our *rogram on a -ile named R#ello.a!aR and )e )ill %e sa!ing it inside a-older named (JVP"&@"('.

To o*en t$e Sa)e dialog %o clic: on t$e File menu -ound on t$e menu%ar and t$en

clic: on 'a!e.

Page 220: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 220/244

Introduction to Programming I 21<

J.E.D.I

-ter doing t$e *rocedure descri%ed a%o!e a dialog %o )ill a**ear as s$o)n in Figure%elo).

Figure 12.1/: This ialog appears after clic;ing on File Q Sa$e

lic: on t$e MB $O"1ME/TS %utton to o*en t$e (y Documents -older )$ere )e )ill %esa!ing all your Ja!a *rograms.

Page 221: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 221/244

Introduction to Programming I 220

J.E.D.I

Figure 12.10: Clic; on the button encircled. This will open your =y ocuments folder 

+o) )ell create a ne) -older inside t$e (y Documents -older )$ere )e )ill sa!e your*rograms. e s$all name t$is -older (JVP"&@"('. lic: on t$e %utton encircled int$e -igure %elo) to create t$e -older.

Figure 12.17: Clic;ing on the encircled button will create a "ew Folder.

Page 222: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 222/244

Introduction to Programming I 221

J.E.D.I

-ter t$e -older is created you can ty*e in t$e desired name -or t$is -older. In t$is casety*e in (JVP"&@"(' and t$en *ress E+TE".

Page 223: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 223/244

Introduction to Programming I 222

J.E.D.I

+o) t$at )e!e created t$e -older )$ere )e )ill sa!e all t$e -iles dou%le clic: on t$at-older to o*en it. ou )ill see a similar -igure as s$o)n %elo). T$e -older s$ould %eem*ty -or no) since its a ne)ly created -older and )e $a!ent sa!ed anyt$ing in it yet.

Page 224: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 224/244

Introduction to Programming I 223

J.E.D.I

+o) clic: on t$e dro* do)n list %o R'a!e as ty*eR so t$at )e can c$oose )$at :ind o--ile )e )ant to sa!e. lic: on t$e Rll FilesR o*tion.

+o) in t$e Filename tet%o ty*e in t$e -ilename o- your *rogram )$ic$ is

R#ello.a!aR and t$en clic: on t$e 'VE %utton.

Page 225: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 225/244

Introduction to Programming I 22

J.E.D.I

+o) t$at you!e sa!ed your -ile notice $o) t$e title o- t$e -rame c$anges -rom ntitled+ote*ad to #ello.a!a+ote*ad. Ta:e note t$at i- you )ant to ma:e c$anges in your -ileyou can ust edit it and t$en sa!e it again %y clic:ing on File 'a!e.

Page 226: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 226/244

Introduction to Programming I 22,

J.E.D.I

Step 42 "ompi&ing your program

+o) t$e net ste* is to com*ile your *rogram. @o to t$e ('D&' command *rom*t)indo) )e ust o*ened a )$ile ago.

Ty*ically )$en you o*en t$e command *rom*t )indo) it o*ens u* and ta:es youdirectly to )$at is called your home #o&der. To see )$at is inside t$at $ome -older ty*e$IR or dir and t$en *ress E+TE". $at you )ill see is a list o- -iles and -olders insideyour $ome -older.

Figure 12.2&: 4ist of files and folders shown after executing the command 68.

+o) you can see $ere t$at t$ere is a -older named R(y DocumentsR )$ere )e createdyour (JVP"&@"(' -older. +o) lets go inside t$at directory.

Page 227: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 227/244

Introduction to Programming I 226

J.E.D.I

To go inside a directory you ty*e in t$e command; cd @directory name, T$e RcdRcommand stands -or c$ange directory. In t$is case since t$e name o- our directory is(y Documents you ty*e in; cd My $ocuments,

Figure 12.21: 6nside the =y ocuments folder 

+o) t$at you are inside t$e R(y DocumentsR -older try ty*ing in t$e RdirR commandagain and tell me )$at you see.

Figure 12.22: The contents of =y ocuments

+o) *er-orm t$e same ste*s descri%ed %e-ore to go inside t$e (JVP"&@"(' -older.

Page 228: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 228/244

Introduction to Programming I 22H

J.E.D.I

Figure 12.2: 6nside the =>3?3)8-@83=S folder 

&nce inside t$e -older )$ere your Ja!a *rograms are let us no) start com*iling yourJa!a *rogram. Ta:e note t$at you s$ould ma:e sure t$at t$e -ile is inside t$e -older)$ere you are in. In order to do t$at eecute t$e dir command again to see i- your -ileis inside t$at -older.

To com*ile a Ja!a *rogram )e ty*e in t$e command;  Ca)ac @#i&ename. 'o in t$iscase ty*e in; Ca)ac e&&o,Ca)a,

Figure 12.2%: Compile program by usingthe javac command 

During com*ilation a!ac adds a -ile to t$e dis: called @#i&ename,c&ass> or in t$is case

e&&o,c&ass )$ic$ is t$e actual %ytecode.

Page 229: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 229/244

Introduction to Programming I 227

J.E.D.I

Step 82 Running the Program

+o) assuming t$at t$ere are no *ro%lems during com*ilation 4)ell e*lore more o- t$e*ro%lems encountered during com*ilation in t$e net section9 )e are no) ready to run

your *rogram.

To run your Ja!a *rogram ty*e in t$e command;  Ca)a @#i&ename !ithout theextension so in t$e case o- our eam*le ty*e in; Ca)a e&&o

ou can see on t$e screen t$at you $a!e ust run your -irst Ja!a *rogram t$at *rints t$emessage R#ello )orldR.

Figure 12.2+: -utput of the program

Page 230: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 230/244

Introduction to Programming I 22<

J.E.D.I

Setting t(e $at(

'ometimes )$en you try to in!o:e t$e a!ac or a!a command you encounter t$e

message; UCa)acU is not recognied as an interna& or externa& command> operab&eprogram or batch #i&e. T$is means t$at eit$er you $a!ent installed Ja!a in your systemyet or you $a!e to con-igure t$e *at$ on )$ere t$e Ja!a commands are installed so t$atyour system )ill :no) )$ere to -ind t$em.

Figure 12.2*: System did not recogniIe the <a$ac command 

I- you are sure t$at you!e already installed Ja!a in your system try setting t$e PT#!aria%le to *oint to )$ere t$e Ja!a commands are installed. To do t$is ty*e in t$ecommand; set PAT"2XC.sd%+,<,.Y9<Xbin, T$is )ill tell your system to loo: -or t$ecommands in t$e "2XC.sd%+,<,.Y9<Xbin -older )$ic$ is usually t$e de-ault location)$erein your Ja!a -iles are *laced during installation. -ter doing t$is you can no) uset$e Ja!a commands.

Figure 12.2/: Setting the path and running <a$a

Page 231: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 231/244

Introduction to Programming I 230

J.E.D.I

:sing etBeans

+o) t$at )e!e tried doing our *rograms t$e com*licated )ay lets no) see $o) to doall t$e *rocesses )e!e descri%ed in t$e *re!ious sections %y using ust one a**lication.

In t$is *art o- t$e lesson )e )ill %e using /et0eans )$ic$ is an Integrated$e)e&opment En)ironment or I$E. n IDE is a *rogramming en!ironment integratedinto a so-t)are a**lication t$at *ro!ides a @I %uilder a tet or code editor a com*ilerand8or inter*reter and a de%ugger.

Step +2 Run /et0eans

To run +etBeans clic: on start ll Programs +etBeans ,., Beta +etBeans IDE

Page 232: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 232/244

Introduction to Programming I 231

J.E.D.I

-ter you!e o*en +etBeans IDE you )ill see a gra*$ical user inter-ace 4@I9 similar to)$at is s$o)n %elo).

Figure 12.20: "et9eans 6E 

Page 233: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 233/244

Introduction to Programming I 232

J.E.D.I

Step .2 Ma%e a proCect

+o) lets -irst ma:e a *roect. lic: on File +e) Proect.

-ter doing t$is a +e) Proect dialog )ill a**ear.

Page 234: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 234/244

Introduction to Programming I 233

J.E.D.I

+o) clic: on Ja!a **lication and clic: on t$e +E/T %utton.

Page 235: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 235/244

Introduction to Programming I 23

J.E.D.I

+o) a +e) **lication dialog )ill a**ear. Edit t$e Proect +ame *art and ty*e inR#ello**licationR.

Figure 12.27: Change )ro<ect "ame

Page 236: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 236/244

Page 237: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 237/244

Introduction to Programming I 236

J.E.D.I

Step -2 Type in your program

Be-ore ty*ing in your *rogram let us -irst descri%e t$e main )indo) a-ter creating t$e*roect.

s s$o)n %elo) +etBeans automatically creates t$e %asic code -or your Ja!a *rogram.ou can ust add your o)n statements to t$e generated code. &n t$e le-t side o- t$e)indo) you can see a list o- -olders and -iles t$at +etBeans generated a-ter creating t$e*roect. T$is can all %e -ound in your (JVP"&@"(' -older )$ere you set t$eProect location.

+o) try to modi-y t$e code generated %y +etBeans. Ignore t$e ot$er *arts o- t$e*rogram -or no) as )e )ill e*lain t$e details o- t$e code later. Insert t$e code;

System.out.println("Hello #orld$"%

a-ter t$e statement 88T&D& code a**lication logic $ere.

Page 238: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 238/244

Introduction to Programming I 23H

J.E.D.I

Step <2 "ompi&e your program

+o) to com*ile your *rogram ust clic: on Build Build (ain Proect. &r you couldalso use t$e s$ortcut %utton to com*ile your code.

Figure 12.&: Shortcut button to compile code

Page 239: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 239/244

Introduction to Programming I 237

J.E.D.I

I- t$ere are no errors in your *rogram you )ill see a %uild success-ul message on t$eout*ut )indo).

Figure 12.1: -utput window <ust below the window where youtype your source code

Page 240: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 240/244

Introduction to Programming I 23<

J.E.D.I

Step 42 Run your program

To run your *rogram clic: on "un "un (ain Proect. &r you could also use t$es$ortcut %utton to run your *rogram.

Figure 12.2: Shortcut button to run program

T$e out*ut o- your *rogram is dis*layed in t$e out*ut )indo).

Figure 12.: -utput of !ello.<a$a

Page 241: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 241/244

Introduction to Programming I 20

J.E.D.I

Appendix $ 2 Machine Prob&ems

Mac(ine $roblem 1 $(one

Boo8 rite a *rogram t$at )ill create an *$one%oo: )$erein you can add entries in t$e*$one%oo: de&ete entries )ie! a&& entries and search -or entries. In !ie)ing allentries t$e user s$ould $a!e a c$oice )$et$er to !ie) t$e entries in a&phabetica& orderor in increasing order o- tele*$one num%ers. In searc$ing -or entries t$e user s$ouldalso $a!e an o*tion to searc$ entries by name or by te&ephone num%ers. In searc$ing%y name t$e user s$ould also $a!e an o*tion i- $e8s$e )ants to searc$ %y -irst name orlast name.

(I+ (E+

1 dd *$one%oo: entry

2 Delete *$one%oo: entry3 Vie) all entries

a al*$a%etical order% increasing order o- tele*$one num%ers

'earc$ entriesa %y name% %y tele*$one num%er

, L uit

T$e -ollo)ing )ill a**ear )$en one o- t$e c$oices in t$e main menu is c$osen.

dd *$one%oo: entry

Enter +ame;Enter Tele*$one num%er;4U i- entry already eists )arn user a%out t$is9

Vie) all entries

Dis*lays all entries in al*$a%etical orderDis*lays all entries in increasing order o- tele*$one fs

'earc$ entries

'earc$ *$one%oo: entry %y name'earc$ *$one%oo: entry %y tele*$one num%er

uit

close *$one%oo:

Page 242: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 242/244

Mac(ine $roblem 2Mines!eeper 

T$is is a one *layer game o- a sim*li-ied !ersion o- t$e *o*ular com*uter gamemines)ee*er. First t$e user is as:ed i- $e or s$e )ants to *lay on a ,, grid or 1010grid. ou $a!e t)o 2dimensional arrays t$at contains in-ormation a%out your grid. nentry in t$e array s$ould eit$er contain a 0 or 1. 1 signi-ies t$at t$ere is a %om% int$at location and a 0 i- none.

For eam*le gi!en t$e array;

int %om%=ist,%y,XYXYSZZ0 0 1 0 0b

Z0 0 0 0 0bZ0 1 0 0 0bZ0 0 0 1 1b

Z0 1 1 0 0bb[

@i!en t$e %om% list )e $a!e 6 %om%s on our list. T$e %om%s are located in 4ro)col9

cells 4029 4219 4339 439 419 and 429.

I- t$e user c$ooses a cell t$at contains a %om% t$e game ends and all t$e %om%s aredis*layed. I- t$e user c$ooses a cell t$at does not contain a %om% a num%er a**ears att$at location indicating t$e num%er o- neig$%ors t$at contain %om%s. T$e game s$ouldend )$en all t$e cells t$at do not contain %om%s $a!e %een mar:ed 4*layer )ins9 or)$en t$e user ste*s on a %om%4*layer loses9.

#eres a sam*le out*ut o- t$e game gi!en t$e %om%=ist,%y,.

elcome to (ines)ee*er$oose si>e o- grid 4Press 1 -or ,, Press 2 -or 10109; 1X Y X Y X Y X Y X YX Y X Y X Y X Y X YX Y X Y X Y X Y X YX Y X Y X Y X Y X YX Y X Y X Y X Y X YEnter ro) and column o- t$e cell you )ant to o*enXro) colY; 1 1X Y X Y X Y X Y X YX Y X2Y X Y X Y X YX Y X Y XY X Y X YX Y X Y X Y X Y X Y

X Y X Y X Y X Y X YEnter ro) and column o- t$e cell you )ant to o*enXro) colY; 3 2X Y X Y X Y X Y X YX Y X2 Y X Y XY X YX Y X Y X Y X Y X YX Y X Y X Y X Y X YX Y X Y X Y X Y X YEnter ro) and column o- t$e cell you )ant to o*enXro) colY; 0 2XY X Y X Y X Y X YX Y X2Y X Y XY X YX Y X/ Y X Y X Y X YX Y X Y XY X Y X Y

X Y X Y X Y X Y X Y&o***s ou ste**ed on a %om%. 'orry game o!er

Page 243: JEDI Course Notes Intro1 MasterDocument

8/12/2019 JEDI Course Notes Intro1 MasterDocument

http://slidepdf.com/reader/full/jedi-course-notes-intro1-masterdocument 243/244

Mac(ine $roblem 3 umberConversion

reate your o)n scienti-ic calculator t$at )ill con!ert t$e in*utted num%ers to t$e -ournum%er re*resentations 4 Decimal Binary &ctal #eadecimal 9. our *rogram s$ouldout*ut t$e -ollo)ing menu on screen.

(I+ (E+;

Please ty*e t$e num%er o- your c$oice;1 L Binary to Decimal2 L Decimal to &ctal3 L &ctal to #eadecimal L #eadecimal to Binary, L uit

T$e -ollo)ing )ill a**ear )$en one o- t$e c$oices in t$e main menu is c$osen.

$oice 1;

Enter a %inary num%er; 1100011000 %ase 2 S 2 %ase 104goes %ac: to main menu9

$oice 2;

Enter a Decimal num%er; 22 %ase 10 S 30 %ase 74goes %ac: to main menu9

$oice 3;

Enter an &ctal num%er; 3030 %ase 7 S 17 %ase 164goes %ac: to main menu9

$oice ;

Enter a #eadecimal num%er; 1717 %ase 16 S 11000 %ase 2

$oice 1;Enter a %inary num%er; 110In!alid %inary num%erEnter a %inary num%er; 1

1 %ase 2 S 1 %ase 104goes %ac: to main menu9

4user c$ooses ,9@ood%ye

ou can %e more creati!e )it$ your user inter-ace i- you )ant to as long as t$e *rogramout*uts t$e correct con!ersion o- num%ers.