0% found this document useful (0 votes)
9 views

JM-Method

The document is the fourth edition of a textbook on Object-Oriented Programming and Data Structures by Maria and Gary Litvin. It covers a wide range of topics including Java syntax, algorithms, data types, and GUI components, structured into 21 chapters. The book is designed for educational purposes and includes exercises, case studies, and labs to enhance learning.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views

JM-Method

The document is the fourth edition of a textbook on Object-Oriented Programming and Data Structures by Maria and Gary Litvin. It covers a wide range of topics including Java syntax, algorithms, data types, and GUI components, structured into 21 chapters. The book is designed for educational purposes and includes exercises, case studies, and labs to enhance learning.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

Fourth AP Edition

Object-Oriented Programming
and
Data Structures

Maria Litvin
Phillips Academy, Andover, Massachusetts

Gary Litvin
Skylight Software, Inc.

Skylight Publishing
Andover, Massachusetts
Skylight Publishing
9 Bartlet Street, Suite 70
Andover, MA 01810

web: www.skylit.com
e-mail: [email protected]
[email protected]

Copyright © 2022 by Maria Litvin, Gary Litvin, and


Skylight Publishing

All rights reserved. No part of this publication may be reproduced,


stored in a retrieval system, or transmitted, in any form or by any means,
electronic, mechanical, photocopying, recording, or otherwise, without
the prior written permission of the authors and Skylight Publishing.

Library of Congress Control Number: 2021944689

ISBN 978-0-9972528-2-8
*
AP and Advanced Placement are registered trademarks of The College Board, which was
not involved in the production of and does not endorse this book.

The names of commercially available software and products mentioned in this book are
used for identification purposes only and may be trademarks or registered trademarks
owned by corporations and other commercial entities. Skylight Publishing and the authors
have no affiliation with and disclaim any sponsorship or endorsement by any of these
product manufacturers or trademark owners.

Oracle, Java, and Java logos are trademarks or registered trademarks of Oracle Corporation
and/or its affiliates in the U.S. and other countries.

SCRABBLE® is the registered trademark of HASBRO in the United States and Canada and
of J.W. Spear and Sons, PLC, a subsidiary of Mattel, Inc., outside the United States and
Canada.

1 2 3 4 5 6 7 8 9 10 26 25 24 23 22 21

Printed in the United States of America


Brief Contents

Preface xiii
How to Use This Book xvii
Chapter 1 Hardware, Software, and the Internet 1
Chapter 2 An Introduction to Software Engineering 11
Chapter 3 Java Syntax and Style 43
Chapter 4 Objects and Classes 65
Chapter 5 Data Types, Variables, and Arithmetic 95
Chapter 6 Boolean Expressions and if-else Statements 133
Chapter 7 Algorithms and Iterations 177
Chapter 8 Strings 207
Chapter 9 Arrays 235
Chapter 10 Implementing and Using Classes 271
Chapter 11 java.util.ArrayList 319
Chapter 12 Class Hierarchies 341
Chapter 13 Algorithms and Recursion 365
Chapter 14 Searching and Sorting 383
Chapter 15 Streams and Files 413
Chapter 16 Graphics 429
Chapter 17 GUI Components and Events 435
Chapter 18 Mouse, Keyboard, Sounds, and Images 443
Chapter 19 Recursion Revisited 447
Chapter 20 Sets and Maps 475
Chapter 21 Computing in Context 495
Appendices 
Solutions to Selected Exercises 
Index 499

iii
Start

1. Hardware / Software 

2. Software Engineering
AP CS A
Exam
3. Syntax and Style

4. Objects and Classes

5. Arithmetic

6. Boolean / if-else

7. Algorithms / Iterations File I/O


Graphics
8. Strings
GUI

9. Arrays 15. Streams and Files 19. Recursion Revisited

10. Classes: Details 16. Graphics  20. Sets and Maps

11. ArrayList 17. GUI / Events 

12. Class Hierarchies


18. Mouse/Sounds/Images 

13. Algorithms / Recursion

14. Searching and Sorting

21. In Context / Ethics 

Finish
Contents

Preface xiii

How to Use This Book xvii

Chapter 1. Hardware, Software, and the Internet 1


1.1 Prologue 2
1.2 Hardware Overview  www.skylit.com/javamethods4/
1.2.1 The CPU JM-Chapter01-www.pdf
1.2.2 Memory
1.2.3 Secondary Storage Devices
1.2.4 Input and Output Devices
1.3 Software Overview
1.4 What Do Software Engineers Do?
1.5 Representation of Information in Computer Memory
1.5.1 Numbers
1.5.2 Characters
1.6 The Internet
1.7 Summary
Exercises 5

Chapter 2. An Introduction to Software Engineering 11


2.1 Prologue 12
2.2 Compilers and Interpreters 14
2.3 Software Components and Packages 21
2.4 Lab: Three Ways to Say Hello 22
2.5 Object-Oriented Programming 29
2.6 Lab: More Ways to Say Hello 32
2.7 Summary 37
Exercises 38

v
vi CONTENTS

Chapter 3. Java Syntax and Style 43


3.1 Prologue 44
3.2 An Example of a Class 45
3.3 Using Comments 48
3.4 Reserved Words and Programmer-Defined Names 50
3.5 Syntax vs. Style 53
3.6 Statements, Blocks, Indentation 57
3.7 Lab: Correcting Syntax Errors 58
3.8 Summary 60
Exercises 61

Chapter 4. Objects and Classes 65


4.1 Prologue 66
4.2 Case Study: A Drawing Program 67
4.3 Classes 70
4.4 Fields, Constructors, and Methods 75
4.5 Inheritance 81
4.6 Case Study and Lab: Balloons of All Kinds 85
4.7 Summary 88
Exercises 90

Chapter 5. Data Types, Variables, and Arithmetic 95


5.1 Prologue 96
5.2 Declaring Fields and Local Variables 98
5.3 Primitive Data Types 102
5.4 Strings 104
5.5 Constants 104
5.6 Scope of Variables 107
5.7 Arithmetic Expressions 109
5.8 Compound Assignment and Increment Operators 112
5.9 Avoiding Division by Zero Errors 114
5.10 Converting Numbers and Objects into Strings 115
5.11 Lab: Pie Chart 119
5.12 The Math Class 121
5.13 Calling a Method from main 122
5.14 Summary 123
Exercises 125
CONTENTS vii

Chapter 6. Boolean Expressions and if-else Statements 133


6.1 Prologue 134
6.2 if–else Statements 136
6.3 boolean Data Type 137
6.4 Relational Operators 138
6.5 Logical Operators 140
6.6 Order of Operators 142
6.7 Short-Circuit Evaluation 143
6.8 if–else–if and Nested if–else 144
6.9 Case Study and Lab: Rolling Dice 149
6.10 The switch Statement 158
6.11 Enumerated Data Types 161
6.12 Case Study and Lab: Rolling Dice Concluded 163
6.13 Summary 167
Exercises 169

Chapter 7. Algorithms and Iterations 177


7.1 Prologue 178
7.2 Properties of Algorithms 179
7.3 The while and for Loops 184
7.4 The do–while Loop 188
7.5 return and break in Loops 189
7.6 Nested Loops 191
7.7 Case Study: Euclid’s GCF Algorithm 194
7.8 Lab: Perfect Numbers 196
7.9 Summary 197
Exercises 199

Chapter 8. Strings 207


8.1 Prologue 208
8.2 Literal Strings 208
8.3 String Constructors and Immutability 209
8.4 String Methods 212
8.5 Formatting Numbers into Strings 219
8.6 Extracting Numbers from Strings 222
8.7 Character Methods 223
8.8 Lab: Lipograms 224
8.9 The StringBuffer Class 226
8.10 Summary 228
Exercises 229
viii CONTENTS

Chapter 9. Arrays 235


9.1 Prologue 236
9.2 One-Dimensional Arrays 237
9.3 Lab: Fortune Teller 241
9.4 Two-Dimensional Arrays 242
9.5 Case Study and Lab: Chomp 244
9.6 Iterations and the “For Each” Loop 249
9.7 Inserting and Removing Elements 252
9.8 Case Study and Lab: the Sieve of Eratosthenes 254
9.9 Summary 256
Exercises 258

Chapter 10. Implementing and Using Classes 271


10.1 Prologue 272
10.2 Public and Private Features of a Class 276
10.3 Constructors 278
10.4 References to Objects 282
10.5 Defining Methods 283
10.6 Calling Methods and Accessing Fields 286
10.7 Passing Parameters to Constructors and Methods 289
10.8 return Statement 292
10.9 Case Study and Lab: Snack Bar 295
10.10 Overloaded Methods 300
10.11 Static Fields and Methods 303
10.12 Case Study: Snack Bar Concluded 308
10.13 Summary 310
Exercises 312

Chapter 11. java.util.ArrayList 319


11.1 Prologue 320
11.2 ArrayList’s Structure 320
11.3 ArrayList’s Constructors and Methods 323
11.4 Lab: Exploding Dots 326
11.5 Lab: Shuffler 328
11.6 ArrayList’s Pitfalls 329
11.7 Lab: Creating an Index for a Document 332
11.8 Summary 336
Exercises 337
CONTENTS ix

Chapter 12. Class Hierarchies 341


12.1 Prologue 342
12.2 Class Hierarchies 344
12.3 Abstract Classes 345
12.4 Invoking Superclass’s Constructors 347
12.5 Calling Superclass’s Methods 350
12.6 Polymorphism 352
12.7 Interfaces 353
12.8 Summary 356
Exercises 358

Chapter 13. Algorithms and Recursion 365


13.1 Prologue 366
13.2 Recursive Methods 367
13.3 Tracing Recursive Methods 370
13.4 Case Study: File Manager 371
13.5 Summary 375
Exercises 375

Chapter 14. Searching and Sorting 383


14.1 Prologue 384
14.2 equals, compareTo, and compare 385
14.3 Sequential and Binary Search 391
14.4 Lab: Keeping Things in Order 395
14.5 Selection Sort 396
14.6 Insertion Sort 397
14.7 Mergesort 399
14.8 Quicksort 402
14.9 Lab: Benchmarks 404
14.10 java.util.Arrays and java.util.Collections 406
14.11 Summary 408
Exercises 410
x CONTENTS

Chapter 15. Streams and Files 413


15.1 Prologue 414
15.2 Pathnames and the java.io.File Class 416
15.3 Reading from a Text File 418
15.4 Writing to a Text File 421
15.5 Lab: Choosing Words 423
15.6 Summary 424
Exercises 425

Chapter 16. Graphics 429


16.1 Prologue 430
16.2 paint, paintComponent, and repaint
16.3 Coordinates  www.skylit.com/javamethods4/
JM-Chapter16-www.pdf
16.4 Colors
16.5 Drawing Shapes
16.6 Fonts and Text
16.7 Case Study and Lab: Pieces of the Puzzle
16.8 Summary
Exercises 432

Chapter 17. GUI Components and Events 435


17.1 Prologue 436
17.2 Pluggable Look and Feel  www.skylit.com/javamethods4/
17.3 Basic Swing Components and Their Events JM-Chapter17-www.pdf
17.4 Layouts
17.5 Menus
17.6 Case Study and Lab: the Ramblecs Game
17.7 Summary
Exercises 438
CONTENTS xi

Chapter 18. Mouse, Keyboard, Sounds, and Images 443


18.1 Prologue 444
18.2 Mouse Events Handling  www.skylit.com/javamethods4/
18.3 Keyboard Events Handling JM-Chapter18-www.pdf
18.4 Lab: Ramblecs Concluded
18.5 Playing Audio Clips
18.6 Working with Images
18.7 Lab: Slide Show
18.8 Summary
Exercises 445

Chapter 19. Recursion Revisited 447


19.1 Prologue 448
19.2 Three Examples 448
19.3 When Not to Use Recursion 455
19.4 Understanding and Debugging Recursive Methods 459
19.5 Lab: the Tower of Hanoi 462
19.6 Case Study and Lab: the Game of Hex 463
19.7 Summary 468
Exercises 468

Chapter 20. Sets and Maps 475


20.1 Prologue 476
20.2 Lookup Tables 477
20.3 Lab: Cryptogram Solver 479
20.4 Hash Tables 482
20.5 java.util’s HashSet and HashMap 484
20.6 Lab: Search Engine 487
20.7 Summary 489
Exercises 490
xii CONTENTS

Chapter 21. Computing in Context 495


21.1 Prologue 496
21.2 Be Creative!  www.skylit.com/javamethods4/
21.3 Rules of Digital Citizenship JM-Chapter21-www.pdf
28.3.1 Formulating Ethical Guidelines
28.3.2 Maintaining Professional Standards
28.3.3 Regulating Users
21.4 System Reliability and Security
28.4.1 Avoiding System Failure
28.4.2 Maintaining Data Integrity
28.4.3 Protecting Secure Systems and Databases
21.5 Legal Issues
28.5.1 Privacy
28.5.2 Censorship vs. Free Speech
28.5.3 Intellectual Property and Copyright Issues
21.6 Summary
Suggested Activities

Appendices 

A. The 17 Bits of Style  www.skylit.com/javamethods4


B. Common Syntax Error Messages
C. GUI Examples Index
D. The EasyReader, EasyWriter, EasySound,
and EasyDate Classes

Solutions to Selected Exercises  www.skylit.com/javamethods4


Index 499

You might also like