Programming in Java

Programming in Java

Programming in Java John M. Morrison March 8, 2013 2 Contents 0 Getting Started 11 0.0 Introduction . 11 0.1 Getting a Java Development Kit . 11 0.2 Getting DrJava . 12 0.3 What the heck is tools.jar?.................... 14 1 Introducing Java 17 1.0 How does Java Work on a Mechanical Level? . 17 1.0.1 Customizing DrJava . 18 1.1 Python Classes and Objects . 19 1.2 Java Classes and Objects . 22 1.3 Java's Integer Types . 27 1.3.1 Some Interaction Pane Nuances . 28 1.3.2 Using Java integer types in Java Code . 29 1.4 The Rest of Java's Primitive Types . 34 1.4.1 The boolean Type . 35 1.4.2 Floating{Point Types . 36 1.4.3 The char type . 36 1.5 More Java Class Examples . 37 2 Java Objects 41 2.0 Java Object Types . 41 2.1 Java Strings as a Model for Java Objects . 41 3 4 CONTENTS 2.1.1 But is there More? . 43 2.2 Primitive vs. Object: A Case of equals Rights . 46 2.2.1 Aliasing . 48 2.3 More Java String Methods . 49 2.4 Java Classes Know Things: State . 50 2.4.1 Quick! Call the OBGYN! . 52 2.4.2 Method and Constructor Overloading . 53 2.4.3 Get a load of this ...................... 54 2.4.4 Now Let Us Make this Class DO Something . 55 2.4.5 Who am I? . 57 2.4.6 Mutator Methods . 58 2.5 The Scope of Java Variables . 60 2.6 The Object-Oriented Weltanschauung . 64 2.6.1 Procedural Programming . 64 2.6.2 Object{Oriented Programming . 65 3 Translating Python to Java 69 3.0 Introduction . 69 3.1 Java Data Structures . 69 3.1.1 Goodies inside of java.util.Arrays . 71 3.1.2 Fixed Size? I'm finding this very confining! . 71 3.1.3 A Brief but Necessary Diversion: What is this Object object? . 72 3.1.4 And Now Back to the Matter at Hand . 74 3.2 Conditional Execution in Java . 77 3.3 Extended{Precision Integer Arithmetic in Java . 79 3.4 Recursion in Java . 82 3.5 Looping in Java . 84 3.6 Static and final ........................... 85 3.6.1 Etiquette Between Static and Non-Static Members . 87 3.6.2 How do I Make my Class Executable? . 88 CONTENTS 5 3.7 The Wrapper Classes . 89 3.7.1 Autoboxing and Autounboxing . 90 3.8 A Caveat . 91 3.9 Case Study: An Extended-Precision Fraction Class . 92 3.9.1 Making a Proper Constructor and toString() Method . 93 3.10 Overloading the Constructor . 96 3.11 Creating an equals Method . 99 3.12 Hello Mrs. Wormwood! Adding Arithmetic . 100 3.13 The Role of static and final . 103 4 The Big Fraction Case Study 109 4.0 Case Study: An Extended-Precision Fraction Class . 109 4.0.1 A Brief Weltanschauung . 109 4.1 Start your Engines! . 110 4.2 Making a Proper Constructor and toString() Method . 111 4.3 Overloading the Constructor . 114 4.4 Creating an equals Method . 116 4.5 Hello Mrs. Wormwood! Adding Arithmetic . 118 4.6 The Role of static and final . 120 4.7 Using Javadoc . 125 4.7.1 Triggering Javadoc . 126 4.7.2 Documenting toString() and equals() . 127 4.7.3 Putting in a Preamble and Documenting the Static Con- stants . 128 4.7.4 Documenting Arithmetic . 129 4.7.5 The Complete Code . 131 5 Interfaces, Inheritance and Java GUIs 137 5.0 What is ahead? . 137 5.1 A Short GUI Program . 137 5.2 Inheritance . 140 5.2.1 Polymorphism and Delegation . 144 6 CONTENTS 5.2.2 Understanding More of the API Guide . 145 5.2.3 Deprecated Can't be Good . 146 5.2.4 Why Not Have Multiple Inheritance? . 146 5.2.5 A C++ Interlude . 146 5.3 Examining Final . 147 5.4 Back to the '70's with Cheesy Paneling, or I Can't Stand it, Call the Cops! . 148 5.4.1 Recursion is our Friend . 151 5.5 A Framework for our GUI Programs . 152 5.6 Creating a Complex View . 154 5.7 Interfaces . 160 5.7.1 The API Guide, Again . 162 5.8 Making a JButton live with ActionListener . 163 5.9 Inheritance and Graphics . 164 5.10 Abstract Classes . 166 6 The Tricolor Case Study 171 6.0 Introduction . 171 6.1 Building the View for Tricolor . 171 6.2 Our Panels Need to Know their Colors . 172 6.3 Inserting ColorPanels into the Tricolor App . 173 6.4 Le Carte . 174 6.5 It's time to build the controller! . 176 6.6 The Color Menu and the Controller . 177 6.7 The Position Menu and Its Controller . 182 6.8 All Code Shown . 184 6.8.1 Tricolor.java . 184 6.8.2 ColorPanel.java . 186 6.8.3 QuitListener.java . 187 6.8.4 ColorMenuItem.java . 187 6.8.5 ColorMenuItemListener.java . 188 CONTENTS 7 6.8.6 PositionMenuItem.java . 188 6.8.7 PositionMenuItemListener.java . 189 7 Inner Classes, Anonymous Classes and Java GUIs 191 7.0 What is ahead? . 191 7.1 Improving Tricolor . 191 7.2 Deconstructing this Arabesque . 192 7.3 Hammertime . 193 7.4 Using Inner Classes to Improve our Design . 194 7.5 The Position Menu . 199 7.6 Cruft Patrol! . 201 7.7 The Product . 201 7.8 Inner Classes in General . 204 7.9 Adding and Deleting Components from a JFrame . 206 8 Exception Handling 213 8.0 Introduction . 213 8.1 The Throwable Subtree . 213 8.2 Checked and Run-Time Exceptions . 215 8.2.1 Catching It . 216 8.3 A Simple Case Study . 216 8.4 All Code Shown . 222 8.5 Exception Handling, In General . 224 8.5.1 Can you have several catch blocks? . 224 8.5.2 The Bucket Principle . 225 8.6 Mr. Truman, We Must Pass the Buck! . 226 8.6.1 Must I? . 227 8.7 Can I Throw an Exception? . 228 8.7.1 Can I make my own exceptions? . 229 8.8 Summary . 230 9 Text File IO 231 8 CONTENTS 9.0 Introduction . 231 9.1 The File Class and Paths . 231 9.2 Constructors and Methods . 233 9.3 A Simple Case Study: Copying a File . 234 9.3.1 A Programming Idiom . 236 9.3.2 Buffered FileIO . 238 9.4 Opening a File in a GUI Window . 241 9.4.1 Designing the Application . 242 9.5 Swing's ImageIO Class . 245 10 The NitPad Case Study 249 10.0 Case Study: NitPad: A Text Editor . 249.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    339 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us