Introduction to Programming Using Java

Author: David J. Eck
Publisher: Ebookdb.org/Unknown
Keywords: java, using, programming, introduction
Number of Pages: 734
Published: 2011-01-31
eBookDB-ID: EBDB135010

Book Description:

ntroduction to Programming Using Java is a free textbook on programming in the Java programming language. It can be used on line or downloaded at http://math.hws.edu/javanotes/. More information is available there. This printed version is for the convenience of people who would like a nicely bound copy. It does not include some features that are available on-line: answers to exercises and quizzes, source code files, and a glossary.

Contents

Preface 

 

Chapter 1:  Overview: The Mental Landscape 

•Section 1.1  The Fetch and Execute Cycle: Machine Language 

•Section 1.2  Asynchronous Events: Polling Loops and Interrupts 

•Section 1.3  The Java Virtual Machine 

•Section 1.4  Fundamental Building Blocks of Programs 

•Section 1.5  Objects and Object-oriented Programming 

•Section 1.6  The Modern User Interface 

•Section 1.7  The Internet and Beyond 

•Quiz 

 

Chapter 2:  Programming in the Small I: Names and Things 

•Section 2.1  The Basic Java Application 

•Section 2.2  Variables and the Primitive Types ◦2.2.1  Variables 

◦2.2.2  Types and Literals 

◦2.2.3  Variables in Programs 

 

•Section 2.3  Strings, Objects, Enums, and Subroutines ◦2.3.1  Built-in Subroutines and Functions 

◦2.3.2  Operations on Strings 

◦2.3.3  Introduction to Enums 

 

•Section 2.4  Text Input and Output ◦2.4.1  A First Text Input Example 

◦2.4.2  Text Output 

◦2.4.3  TextIO Input Functions 

◦2.4.4  Formatted Output 

◦2.4.5  Introduction to File I/O 

◦2.4.6  Using Scanner for Input 

 

•Section 2.5  Details of Expressions ◦2.5.1  Arithmetic Operators 

◦2.5.2  Increment and Decrement 

◦2.5.3  Relational Operators 

◦2.5.4  Boolean Operators 

◦2.5.5  Conditional Operator 

◦2.5.6  Assignment Operators and Type-Casts 

◦2.5.7  Type Conversion of Strings 

◦2.5.8  Precedence Rules 

 

•Section 2.6  Programming Environments ◦2.6.1  Java Development Kit 

◦2.6.2  Command Line Environment 

◦2.6.3  IDEs and Eclipse 

◦2.6.4  The Problem of Packages 

 

•Programming Exercises 

•Quiz 

 

Chapter 3:  Programming in the Small II: Control 

•Section 3.1  Blocks, Loops, and Branches ◦3.1.1  Blocks 

◦3.1.2  The Basic While Loop 

◦3.1.3  The Basic If Statement 

 

•Section 3.2  Algorithm Development ◦3.2.1  Pseudocode and Stepwise Refinement 

◦3.2.2  The 3N+1 Problem 

◦3.2.3  Coding, Testing, Debugging 

 

•Section 3.3  The while and do..while Statements ◦3.3.1  The while Statement 

◦3.3.2  The do..while Statement 

◦3.3.3  break and continue 

 

•Section 3.4  The for Statement ◦3.4.1  For Loops 

◦3.4.2  Example: Counting Divisors 

◦3.4.3  Nested for Loops 

◦3.4.4  Enums and for-each Loops 

 

•Section 3.5  The if Statement ◦3.5.1  The Dangling else Problem 

◦3.5.2  The if...else if Construction 

◦3.5.3  If Statement Examples 

◦3.5.4  The Empty Statement 

 

•Section 3.6  The switch Statement ◦3.6.1  The Basic switch Statement 

◦3.6.2  Menus and switch Statements 

◦3.6.3  Enums in switch Statements 

◦3.6.4  Definite Assignment 

 

•Section 3.7  Introduction to Exceptions and try..catch ◦3.7.1  Exceptions 

◦3.7.2  try..catch 

◦3.7.3  Exceptions in TextIO 

 

•Section 3.8  Introduction to GUI Programming 

•Programming Exercises 

•Quiz 

 

Chapter 4:  Programming in the Large I: Subroutines 

•Section 4.1  Black Boxes 

•Section 4.2  Static Subroutines and Static Variables ◦4.2.1  Subroutine Definitions 

◦4.2.2  Calling Subroutines 

◦4.2.3  Subroutines in Programs 

◦4.2.4  Member Variables 

 

•Section 4.3  Parameters ◦4.3.1  Using Parameters 

◦4.3.2  Formal and Actual Parameters 

◦4.3.3  Overloading 

◦4.3.4  Subroutine Examples 

◦4.3.5  Throwing Exceptions 

◦4.3.6  Global and Local Variables 

 

•Section 4.4  Return Values ◦4.4.1  The return statement 

◦4.4.2  Function Examples 

◦4.4.3  3N+1 Revisited 

 

•Section 4.5  APIs, Packages, and Javadoc ◦4.5.1  Toolboxes 

◦4.5.2  Java's Standard Packages 

◦4.5.3  Using Classes from Packages 

◦4.5.4  Javadoc 

 

•Section 4.6  More on Program Design ◦4.6.1  Preconditions and Postconditions 

◦4.6.2  A Design Example 

◦4.6.3  The Program 

 

•Section 4.7  The Truth About Declarations ◦4.7.1  Initialization in Declarations 

◦4.7.2  Named Constants 

◦4.7.3  Naming and Scope Rules 

 

•Programming Exercises 

•Quiz 

 

Chapter 5:  Programming in the Large II: Objects and Classes 

•Section 5.1  Objects, Instance Methods, and Instance Variables ◦5.1.1  Objects, Classes, and Instances 

◦5.1.2  Fundamentals of Objects 

◦5.1.3  Getters and Setters 

 

•Section 5.2  Constructors and Object Initialization ◦5.2.1  Initializing Instance Variables 

◦5.2.2  Constructors 

◦5.2.3  Garbage Collection 

 

•Section 5.3  Programming with Objects ◦5.3.1  Some Built-in Classes 

◦5.3.2  Wrapper Classes and Autoboxing 

◦5.3.3  The class "Object" 

◦5.3.4  Object-oriented Analysis and Design 

 

•Section 5.4  Programming Example: Card, Hand, Deck ◦5.4.1  Designing the classes 

◦5.4.2  The Card Class 

◦5.4.3  Example: A Simple Card Game 

 

•Section 5.5  Inheritance, Polymorphism, and Abstract Classes ◦5.5.1  Extending Existing Classes 

◦5.5.2  Inheritance and Class Hierarchy 

◦5.5.3  Example: Vehicles 

◦5.5.4  Polymorphism 

◦5.5.5  Abstract Classes 

 

•Section 5.6  this and super ◦5.6.1  The Special Variable this 

◦5.6.2  The Special Variable super 

◦5.6.3  Constructors in Subclasses 

 

•Section 5.7  Interfaces, Nested Classes, and Other Details ◦5.7.1  Interfaces 

◦5.7.2  Nested Classes 

◦5.7.3  Anonymous Inner Classes 

◦5.7.4  Mixing Static and Non-static 

◦5.7.5  Static Import 

◦5.7.6  Enums as Classes 

 

•Programming Exercises 

•Quiz 

 

Chapter 6:  Introduction to GUI Programming 

•Section 6.1  The Basic GUI Application ◦6.1.1  JFrame and JPanel 

◦6.1.2  Components and Layout 

◦6.1.3  Events and Listeners 

 

•Section 6.2  Applets and HTML ◦6.2.1  JApplet 

◦6.2.2  Reusing Your JPanels 

◦6.2.3  Basic HTML 

◦6.2.4  Applets on Web Pages 

 

•Section 6.3  Graphics and Painting ◦6.3.1  Coordinates 

◦6.3.2  Colors 

◦6.3.3  Fonts 

◦6.3.4  Shapes 

◦6.3.5  Graphics2D 

◦6.3.6  An Example 

 

•Section 6.4  Mouse Events ◦6.4.1  Event Handling 

◦6.4.2  MouseEvent and MouseListener 

◦6.4.3  Mouse Coordinates 

◦6.4.4  MouseMotionListeners and Dragging 

◦6.4.5  Anonymous Event Handlers and Adapter Classes 

 

•Section 6.5  Timers, KeyEvents, and State Machines ◦6.5.1  Timers and Animation 

◦6.5.2  Keyboard Events 

◦6.5.3  Focus Events 

◦6.5.4  State Machines 

 

•Section 6.6  Basic Components ◦6.6.1  JButton 

◦6.6.2  JLabel 

◦6.6.3  JCheckBox 

◦6.6.4  JTextField and JTextArea 

◦6.6.5  JComboBox 

◦6.6.6  JSlider 

 

•Section 6.7  Basic Layout ◦6.7.1  Basic Layout Managers 

◦6.7.2  Borders 

◦6.7.3  SliderAndComboBoxDemo 

◦6.7.4  A Simple Calculator 

◦6.7.5  Using a null Layout 

◦6.7.6  A Little Card Game 

 

•Section 6.8  Menus and Dialogs ◦6.8.1  Menus and Menubars 

◦6.8.2  Dialogs 

◦6.8.3  Fine Points of Frames 

◦6.8.4  Creating Jar Files 

 

•Programming Exercises 

•Quiz 

 

Chapter 7:  Arrays 

•Section 7.1  Creating and Using Arrays ◦7.1.1  Arrays 

◦7.1.2  Using Arrays 

◦7.1.3  Array Initialization 

 

•Section 7.2  Programming With Arrays ◦7.2.1  Arrays and for Loops 

◦7.2.2  Arrays and for-each Loops 

◦7.2.3  Array Types in Subroutines 

◦7.2.4  Random Access 

◦7.2.5  Arrays of Objects 

◦7.2.6  Variable Arity Methods 

 

•Section 7.3  Dynamic Arrays and ArrayLists ◦7.3.1  Partially Full Arrays 

◦7.3.2  Dynamic Arrays 

◦7.3.3  ArrrayLists 

◦7.3.4  Parameterized Types 

◦7.3.5  Vectors 

 

•Section 7.4  Searching and Sorting ◦7.4.1  Searching 

◦7.4.2  Association Lists 

◦7.4.3  Insertion Sort 

◦7.4.4  Selection Sort 

◦7.4.5  Unsorting 

 

•Section 7.5  Multi-dimensional Arrays ◦7.5.1  Creating Two-dimensional Arrays 

◦7.5.2  Using Two-dimensional Arrays 

◦7.5.3  Example: Checkers 

 

•Programming Exercises 

•Quiz 

 

Chapter 8:  Correctness, Robustness, Efficiency 

•Section 8.1  Introduction to Correctness and Robustness ◦8.1.1  Horror Stories 

◦8.1.2  Java to the Rescue 

◦8.1.3  Problems Remain in Java 

 

•Section 8.2  Writing Correct Programs ◦8.2.1  Provably Correct Programs 

◦8.2.2  Robust Handling of Input 

 

•Section 8.3  Exceptions and try..catch ◦8.3.1  Exceptions and Exception Classes 

◦8.3.2  The try Statement 

◦8.3.3  Throwing Exceptions 

◦8.3.4  Mandatory Exception Handling 

◦8.3.5  Programming with Exceptions 

 

•Section 8.4  Assertions and Annotations ◦8.4.1  Assertions 

◦8.4.2  Annotations 

 

•Section 8.5  Analysis of Algorithms 

•Programming Exercises 

•Quiz 

 

Chapter 9:  Linked Data Structures and Recursion 

•Section 9.1  Recursion ◦9.1.1  Recursive Binary Search 

◦9.1.2  Towers of Hanoi 

◦9.1.3  A Recursive Sorting Algorithm 

◦9.1.4  Blob Counting 

 

•Section 9.2  Linked Data Structures ◦9.2.1  Recursive Linking 

◦9.2.2  Linked Lists 

◦9.2.3  Basic Linked List Processing 

◦9.2.4  Inserting into a Linked List 

◦9.2.5  Deleting from a Linked List 

 

•Section 9.3  Stacks, Queues, and ADTs ◦9.3.1  Stacks 

◦9.3.2  Queues 

◦9.3.3  Postfix Expressions 

 

•Section 9.4  Binary Trees ◦9.4.1  Tree Traversal 

◦9.4.2  Binary Sort Trees 

◦9.4.3  Expression Trees 

 

•Section 9.5  A Simple Recursive Descent Parser ◦9.5.1  Backus-Naur Form 

◦9.5.2  Recursive Descent Parsing 

◦9.5.3  Building an Expression Tree 

 

•Programming Exercises 

•Quiz 

 

Chapter 10:  Generic Programming and Collection Classes 

•Section 10.1  Generic Programming ◦10.1.1  Generic Programming in Smalltalk 

◦10.1.2  Generic Programming in C++ 

◦10.1.3  Generic Programming in Java 

◦10.1.4  The Java Collection Framework 

◦10.1.5  Iterators and for-each Loops 

◦10.1.6  Equality and Comparison 

◦10.1.7  Generics and Wrapper Classes 

 

•Section 10.2  Lists and Sets ◦10.2.1  ArrayList and LinkedList 

◦10.2.2  Sorting 

◦10.2.3  TreeSet and HashSet 

◦10.2.4  EnumSet 

 

•Section 10.3  Maps ◦10.3.1  The Map Interface 

◦10.3.2  Views, SubSets, and SubMaps 

◦10.3.3  Hash Tables and Hash Codes 

 

•Section 10.4  Programming with the Java Collection Framework ◦10.4.1  Symbol Tables 

◦10.4.2  Sets Inside a Map 

◦10.4.3  Using a Comparator 

◦10.4.4  Word Counting 

 

•Section 10.5  Writing Generic Classes and Methods ◦10.5.1  Simple Generic Classes 

◦10.5.2  Simple Generic Methods 

◦10.5.3  Type Wildcards 

◦10.5.4  Bounded Types 

 

•Programming Exercises 

•Quiz 

 

Chapter 11:  Advanced Input/Output: Streams, Files, and Networking 

•Section 11.1  Streams, Readers, and Writers ◦11.1.1  Character and Byte Streams 

◦11.1.2  PrintWriter 

◦11.1.3  Data Streams 

◦11.1.4  Reading Text 

◦11.1.5  The Scanner Class 

◦11.1.6  Serialized Object I/O 

 

•Section 11.2  Files ◦11.2.1  Reading and Writing Files 

◦11.2.2  Files and Directories 

◦11.2.3  File Dialog Boxes 

 

•Section 11.3  Programming With Files ◦11.3.1  Copying a File 

◦11.3.2  Persistent Data 

◦11.3.3  Files in GUI Programs 

◦11.3.4  Storing Objects in Files 

 

•Section 11.4  Networking ◦11.4.1  URLs and URLConnections 

◦11.4.2  TCP/IP and Client/Server 

◦11.4.3  Sockets in Java 

◦11.4.4  A Trivial Client/Server 

◦11.4.5  A Simple Network Chat 

 

•Section 11.5  A Brief Introduction to XML ◦11.5.1  Basic XML Syntax 

◦11.5.2  XMLEncoder and XMLDecoder 

◦11.5.3  Working With the DOM 

 

•Programming Exercises 

•Quiz 

 

Chapter 12:  Threads and Multiprocessing 

•Section 12.1  Introduction to Threads ◦12.1.1  Creating and Running Threads 

◦12.1.2  Operations on Threads 

◦12.1.3  Mutual Exclusion with "synchronized" 

◦12.1.4  Volatile Variables 

 

•Section 12.2  Programming with Threads ◦12.2.1  Threads Versus Timers 

◦12.2.2  Recursion in a Thread 

◦12.2.3  Threads for Background Computation 

◦12.2.4  Threads for Multiprocessing 

 

•Section 12.3  Threads and Parallel Processing ◦12.3.1  Problem Decompostion 

◦12.3.2  Thread Pools and Task Queues 

◦12.3.3  Producer/Consumer and Blocking Queues 

◦12.3.4  Wait and Notify 

 

•Section 12.4  Threads and Networking ◦12.4.1  The Blocking I/O Problem 

◦12.4.2  An Asynchronous Network Chat Program 

◦12.4.3  A Threaded Network Server 

◦12.4.4  Using a Thread Pool 

◦12.4.5  Distributed Computing 

 

•Section 12.5  Network Programming Example: A Networked Game Framework ◦12.5.1  The Netgame Framework 

◦12.5.2  A Simple Chat Room 

◦12.5.3  A Networked TicTacToe Game 

◦12.5.4  A Networked Poker Game 

 

•Programming Exercises 

•Quiz 

 

Chapter 13:  Advanced GUI Programming 

•Section 13.1  Images and Resources ◦13.1.1  Images and BufferedImages 

◦13.1.2  Working With Pixels 

◦13.1.3  Resources 

◦13.1.4  Cursors and Icons 

◦13.1.5  Image File I/O 

 

•Section 13.2  Fancier Graphics ◦13.2.1  Measuring Text 

◦13.2.2  Transparency 

◦13.2.3  Antialiasing 

◦13.2.4  Strokes and Paints 

◦13.2.5  Transforms 

 

•Section 13.3  Actions and Buttons ◦13.3.1  Action and AbstractAction 

◦13.3.2  Icons on Buttons 

◦13.3.3  Radio Buttons 

◦13.3.4  Toolbars 

◦13.3.5  Keyboard Accelerators 

◦13.3.6  HTML on Buttons 

 

•Section 13.4  Complex Components and MVC ◦13.4.1  Model-View-Controller 

◦13.4.2  Lists and ListModels 

◦13.4.3  Tables and TableModels 

◦13.4.4  Documents and Editors 

◦13.4.5  Custom Components 

 

•Section 13.5  Finishing Touches ◦13.5.1  The Mandelbrot Set 

◦13.5.2  Design of the Program 

◦13.5.3  Internationalization 

◦13.5.4  Events, Events, Events 

◦13.5.5  Custom Dialogs 

◦13.5.6  Preferences 

 

•Programming Exercises 

•Quiz 

 

Appendix:  Source Code for the Examples in this Book 

 

Appendix:  Glossary 


Direct Download Links:

  • Download the ebook in PDF format (Size: 6 Megabytes; 751 pages.)
  • math.hws.edu/eck/...notes6-linked.pdf
  • Other formats from the official website:
  • math.hws.edu/java...ws.edu/javanotes/

Related Books at ISBNlib

Sorry,No related books at ISBNLib

Spread the word


power by isbnlib

Search


Popular Books

Links

  • ISBNLib.com-your online book library
  • OPENISBN-ISBN Search & Book Data Services
  • Digmybook.com-Discover books you like
  • Rapid4Search.com-Rapidshare file search
  • 英文原版书网
  • CCEBook.org-We introduce valuable books
  • Goeway.me-Mechanical Design Blog
  • CCEmagz.com-CCE Magazines, daily free magazines
  • Rsbay.com-The Rapidshare Search
  • iFileSearch.net-Search files inside iFile.it