zero or more characters enclosed in double quotation by 93WVi17

VIEWS: 1 PAGES: 195

									              COMP 14
              Introduction to Programming

                      Adrian Ilie
                 Summer Session II, 2005

                     MTWRF 9:45-11:15 am
                       Sitterson Hall 011
Adrian Ilie               The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
    Grades

    •   Assignments (7)                      45%
    •   Quizzes (3)                          10%
    •   Midterm                              15%
    •   Final/Project                        25%
    •   Class participation                   5%




2       Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
    Exams

    • Midterm
      ♦ to take a make-up midterm, you must
        notify me in advance or have a doctor's
        excuse


    • Final
      ♦ to take the exam at a different time, you
        must get permission from your Dean and
        bring me the blue slip you get from the
        Dean


3     Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
    Hardware vs. Software
    A computer is made up of hardware and software
            Hardware                       Software
    • CPU                           • operating systems
        - ex: 2 GHz Pentium IV          - Windows XP
    • input/output                      - Mac OS X
        - keyboard
        - monitor                   • applications
        - network card                  - games
    • main memory                       - Microsoft Word
        - ex: 256 MB RAM                - Internet Explorer
    • secondary memory
        - ex: 20 GB hard drive

4      Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
    Hardware Organization

                                                   CPU




                                                   memory




                   motherboard

                                  hard drive
5    Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
    Central Processing Unit

    • Control Unit (CU)
      ♦ "the brain" of the CPU
    • Program Counter (PC)
      ♦ points to the next instruction to be executed
    • Instruction Register (IR)
      ♦ holds the currently executing instruction
    • Arithmetic Logic Unit (ALU)
      ♦ carries out all arithmetic and logical ops
    • Accumulator (ACC)
      ♦ holds the results of the operations performed by
        the ALU



6     Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
    Main Memory

    • Ordered sequence of cells

    • AKA Random Access Memory (RAM)

    • Directly connected to the CPU

    • All programs must be brought into main
      memory before execution

    • When power is turned off, everything in
      main memory is lost


7      Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Secondary Storage

    • Provides permanent storage for
      information
    • Retains information even when power is
      off
    • Examples of secondary storage:
      ♦   Hard Disks
      ♦   Floppy Disks
      ♦   ZIP Disks
      ♦   CD-ROMs
      ♦   Tapes

8         Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
    Input Devices

    • Definition: devices that feed data
      and computer programs into
      computers

    • Examples:
      ♦ Keyboard
      ♦ Mouse
      ♦ Secondary Storage


9     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Output Devices

     • Definition: devices that the
       computer uses to display results

     • Examples:
       ♦ Printer
       ♦ Monitor
       ♦ Secondary Storage



10     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Input/Output Devices

                                   I/O devices facilitate
                                   user interaction




11    Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Hardware Components




12    Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Opening MS Word

     • Use the mouse to select
       MS Word
     • The CPU requests the
       MS Word application
     • MS Word is loaded from
       the hard drive to main
       memory
     • The CPU reads
       instructions from main
       memory and executes
       them one at a time
     • MS Word is displayed
       on your monitor



13      Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Software Categories

     • Operating System
       ♦ controls all machine activities
       ♦ provides the user interface to the computer
       ♦ first program to load when a computer is turned
         on
       ♦ manages computer resources, such as the CPU,
         memory, and hard drive
       ♦ examples: Windows XP, Linux, Mac OS X
     • Application
       ♦ generic term for any other kind of software
       ♦ examples: word processors, missile control
         systems, games


14     Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Operating System (OS)

     • OS monitors overall activity of
       the computer and provides
       services
     • Written using programming
       language
     • Example services:
       ♦ memory management
       ♦ input/output
       ♦ storage management

15     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Application Programs

     • Written using programming
       languages
     • Perform a specific task
     • Run by the OS
     • Example programs:
       ♦ Word Processors
       ♦ Spreadsheets
       ♦ Games

16     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Binary Numbers

      • N bits to represent 2N values
      • N bits represent values 0 to 2N-1
      • Example: 5 bits
        ♦ 32 unique values (0-31)
        ♦ 000002 = 010
        ♦ 111112 = 3110




      24 23 22 21 20
     16 + 8 + 4 + 2 + 1 = 31
17      Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Converting Decimal to Binary

     • Let’s convert 114 to binary
     • Repeatedly divide by 2 and write down the
       remainder:
        114/2=57                  remainder   0
        57/2=28                   remainder   1
        28/2=14                   remainder   0
        14/2=7                    remainder   0
        7/2=3                     remainder   1
        3/2=1                     remainder   1
        1/2=0                     remainder   1
     • Write the remainders in reverse order:
        11100102=11410
     • Proof – rewrite and add the equations above:
        114=(((((((1*2)+1)*2+1)*2+0)*2+0)*2+1)*2+0)=
        =1*26+1*25+1*24+0*23+0*22+1*21+0*20




18      Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Programming Languages

     • High-level languages make programming
       easier
     • Closer to spoken languages
     • Examples:
       ♦   Basic
       ♦   FORTRAN
       ♦   COBOL
       ♦   C/C++
       ♦   Java




19         Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Java and Machine Language



     To run a Java program:

     1. Java instructions need to be
        translated into an intermediate
        language called bytecode.

     2. The bytecode is interpreted into a
        particular machine language.
20      Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
         Compiler


     •   Compiler: A program that translates a
         program written in a high-level
         language into the equivalent machine
         language.
         ♦    (In the case of Java, this machine language is the
              bytecode.)

     •   Java Virtual Machine (JVM): A
         hypothetical computer developed to
         make Java programs machine
         independent.
21           Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Processing a Java Program

     • Program: written in
       Java using the Editor
       and compiled to
       Bytecode using the
       Compiler.
     • Loader: transfers the
       compiled code
       (bytecode) into main
       memory and loads the
       necessary Libraries.
     • Interpreter: reads and
       translates each
       bytecode instruction
       into machine language
       and then executes it.


22      Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Problem Solving

     • The purpose of writing a program is to solve
       a problem

     • The general steps in problem solving are:
       ♦   understand the problem
       ♦   dissect the problem into manageable pieces
       ♦   design a solution
       ♦   consider alternatives to the solution and refine it
       ♦   implement the solution
       ♦   test the solution and fix any problems that exist




23      Adrian Ilie           The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Algorithm

     • Sequence of instructions used to carry
       out a task or solve a problem
     • May be written in either English or
      pseudocode
       ♦ outline of a program that could be translated into
         actual code
     • May need refinement as you work

      Always write out your algorithm before you
      begin programming

24     Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Problem-Analysis-Coding-Execution



                            most important step
     without
     computer




     with
     computer




25      Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Algorithm Design Example

      Problem: Convert change in cents to number of half-
      dollars, quarters, dimes, nickels, and pennies to be
      returned.
      Example:
      ♦ given 646 cents
      ♦ number of half-dollars: divide 646 by 50
            • quotient is 12 (number of half-dollars)
            • remainder is 46 (change left over)
      ♦ number of quarters: divide 46 by 25
            • quotient is 1 (number of quarters)
            • remainder is 21 (change left over)
      ♦ number of dimes, nickels, pennies
      ♦ result: 12 half-dollars, 1 quarter, 2 dimes, 0 nickels, 1
        penny


26     Adrian Ilie              The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Resulting Algorithm

     1.     Get the change in cents
     2.     Find the number of half-dollars
     3.     Calculate the remaining change
     4.     Find the number of quarters
     5.     Calculate the remaining change
     6.     Find the number of dimes
     7.     Calculate the remaining change
     8.     Find the number of nickels
     9.     Calculate the remaining change
     10.    The remaining change is the number of
            pennies.


27         Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Programming Languages

     • Programming languages have rules of
       grammar just as English does

     • syntax rules - which statements are legal and
       which are not
     • semantic rules - determine the meaning of the
       instructions

     • token - smallest individual unit of a program
        ♦ special symbols
        ♦ word symbols
        ♦ identifiers



28      Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Special Symbols

     +              -            *                /

     .              ;            ?                ,

     <=             !=           ==               >=
29    Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
          Word Symbols
          aka reserved words, or keywords

         •   int                       •   void
         •   float                     •   public
         •   double                    •   static
         •   char                      •   throws
                                       •   return
     • reserved words are always all lowercase
     • each word symbol is considered to be a single symbol
     • cannot be used for anything other than their intended
     purpose in a program
     • shown in blue typewriter font in textbook
     • full table in Appendix A
30           Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Identifiers

     • Names of things (variables, constants,
       methods) in your programs
     • Can be composed of any combination
       of letters, digits, underscore (_), and
       dollar sign ($)
     • Cannot begin with a digit
     • May be any length
     • Java is case-sensitive
       ♦ Total, total, and TOTAL are different identifiers



31     Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Primitive Data Types

     • 8 primitive data types in Java
       ♦ 4 represent integers
          • byte, short, int, long
       ♦ 2 represent floating point numbers
          • float, double
       ♦ 1 represents characters
          • char
       ♦ 1 represents boolean values
          • boolean




32     Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Arithmetic Expressions

     • Expression - a combination of one or more
       operands and their operators
     • Arithmetic expressions compute numeric
       results and make use of the arithmetic
       operators:
                     Addition        +
                     Subtraction     -
                     Multiplication  *
                     Division        /
                     Remainder       %
     • If either or both operands associated with an
       arithmetic operator are floating point, the
       result is a floating point
33       Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Operator Precedence

     •   Determines the order in which
         operators are evaluated:
         1. multiplication, division, and remainder
         2. addition, subtraction, and string concatenation
         3. arithmetic operators with the same precedence
            are evaluated from left to right


     •   Parentheses can be used to force the
         evaluation order (just like in math)


34       Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Type Conversion (Casting)

     • Used to avoid implicit type coercion
     • Syntax
       (dataTypeName) expression
     • Expression evaluated first, then type
       converted to dataTypeName
     • Examples:
       (int) (7.9 + 6.7) = 14
       (int) (7.9) + (int)(6.7) = 13



35     Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     The class String

     • String
       ♦   sequence of zero or more characters
       ♦   enclosed in double quotation marks
       ♦   null or empty strings have no characters
       ♦   numeric strings consist of integers or decimal numbers
       ♦   length is the number of characters in a string
     • The class String is used to manipulate
       strings
     • Examples:
       ♦   "Hello World"
       ♦   "1234"
       ♦   "45.67"
       ♦   ""


36      Adrian Ilie          The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Strings

     • Every character has a position in
       the string (starting with 0)
       "Hello World"
        0123456789...

     • The length of the string is the
       number of characters in it
       ♦ what's the length of "Hello World"?
        11 (count the space)

37     Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Parsing Numeric Strings

     • In Java, input from the user
       comes in the form of a string
       ♦ we need to know how to get the number
         values out of the string


     • Numeric String
       ♦ a string with only integers or decimal
         numbers
       ♦ "6723", "-823", "345.76"


38     Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Variables

     • Associated with data
       ♦ Input data
       ♦ Output data
       ♦ Intermediate data
     • We need to define:
       ♦ Data type
       ♦ Identifier
     • Values will be assigned in
       expressions
39     Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Variables - Steps

     1. Identify all data from the algorithm
     2. Determine data types (based on the
        range and nature of the values)
     3. Find meaningful names

     •    Example: Ch. 1, Exercise 10.
          Compute average score.



40       Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Declaration of Variables

             dataType identifier;

     • Must be declared before it can be used
     • Can be (but doesn't have to be) initialized
       when declared
     • Identifier should start in lowercase, indicate
       separate words with uppercase (good style)
     • Example:
        ♦ number of students in class
        int numStudents;
     • Multiple variables (of the same data type)
       can be declared on a single line
        int numStudents, numGrades, total;


41      Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Assignment

                     variable = expresssion;



     • Assignment Operator (=)
     • expression can be a value (3) or a
       mathematical expression (2 + 1)
     • The expression must evaluate to the
       same data type as the variable was
       declared


42     Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Named Constant

     static final dataType IDENTIFIER = value;


     • Declared by using the reserved word final
     • Always initialized when it is declared
     • Identifier should be in ALL CAPS, separate
       words with underscore (_) (good style)
     • Example:
       ♦ 1 inch is always 2.54 centimeters
       final double CM_PER_INCH = 2.54;




43      Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Input

     •    Standard input
         BufferedReader keyboard = new BufferedReader (new
             InputStreamReader (System.in));
         String line = keyboard.readLine();
     •    Dialog windows
         str = JOptionPane.showInputDialog(strExpression);
     •    File
          BufferedReader inFile = new BufferedReader (new
          FileReader (file));
          String line = inFile.readLine();
          inFile.close();


44       Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Output

     •   Standard output
         System.out.print<ln>(string)
     •   Dialog boxes
         JOptionPane.showMessageDialog(parentComponent,
         strExpression,boxTitleString,messageType);
     •   File
         String file = "outfile.dat";
         PrintWriter outFile = new PrintWriter
                              (new FileWriter (file));
         outFile.print ("Hi");
         outFile.println(" There!");
         outFile.close();


45       Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Writing a Whole Program

     • Class - used to group a set of related
       operations (methods), allows users to
       create their own data types
     • Method - set of instructions designed
       to accomplish a specific task
     • Package - collection of related classes
     • Library - collection of packages



46     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Class Libraries

     • A collection of classes that we can use
       when developing programs
     • The Java standard class library is part
       of any Java development environment
     • The System class and the String class
       are part of the Java standard class
       library



47     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Packages

      • The classes of the Java standard class
        library are organized into packages.
      • Some of the packages in the standard class
        library are:
     Package             Purpose

     java.lang           General support
     java.applet         Creating applets for the web
     java.awt            Graphics and graphical user interfaces
     javax.swing         Additional graphics capabilities and components
     java.net            Network communication
     java.util           Utilities
     javax.xml.parsers   XML document processing

48        Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Using Packages

      We need to import some of the
      packages we want to use
      ♦ java.io for BufferedReader


      import packageName;
      ♦ import java.io.*;
           • imports all of the classes in the java.io package
      ♦ import java.io.BufferedReader;
           • imports only the BufferedReader class from the
             java.io package




49    Adrian Ilie           The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Using Predefined Classes
      and Methods
     • To use a method you must know:
       ♦ Name of class containing method (Math)
       ♦ Name of package containing class
         (java.lang)
       ♦ Name of method (round), its parameters
         (double a), what it returns (long), and
         function (rounds a to the nearest integer)
     • See Appendix E for more Java
       predefined classes


50       Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Creating a Java Program

     • Java application program - collection
       of one or more classes
       ♦ every application must have at least one class
     • Class
       ♦ basic unit of a Java program
       ♦ collection of methods and data members
     • Method - set of instructions designed
       to accomplish a specific task
       ♦ print, readLine



51     Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Programming in Java

     • Java programming language
       ♦ object-oriented approach to problem
         solving


     • In the Java programming
       language:
       ♦ a program is made up of one or more
          classes
       ♦ a class contains one or more methods
       ♦ a method contains program statements

52     Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Creating a Java Program

     • All Java application programs must
       have a method called main
       ♦ there can be only one main method in any Java
         application program


     • Most of the time, our programs will
       have only one class

     • Name of source file must be
       ClassNameWithMain.java

53     Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Throws Clause

     • throws clause - exceptions thrown by
       the main method
     • exception - occurrence of an
       undesirable situation that can be
       detected during program execution
       ♦ can either be handled or thrown
     • readLine throws the exception
       IOException
     • We won't handle the exception, we'll
       just throw it

54     Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Import Statements

     • Tell the compiler which packages are
       used in the program
     • Import statements and program
       statements constitute the source code

     • Source code saved in a file with the
       extension .java
     • Source code file must have the same
       name as the class with the main
       method


55     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     The main method

     • Heading
       public static void main (String[] args)
       throws IOException

     • Body
       ♦ statements enclosed by { }
       ♦ declaration statements
            • used to declare things such as variables
       ♦ executable statements
            • perform calculations, manipulate data, create
              output, accept input, etc.




56     Adrian Ilie           The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Skeleton

     import statements if any

     public class ClassName
     {
       declare named constants and/or stream objects

         public static void main (String[] args)
                                   throws IOException
         {
             variable declarations
             executable statements
         }
     }



57        Adrian Ilie      The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Style

     • Syntax
       ♦ beware! a syntax error in one place might lead to
         syntax errors in several other places


     • Use of semicolons, braces, commas
       ♦ all Java statements end with semicolon
       ♦ braces {} enclose the body of a method and set it
         off from other parts of the program (also have
         other uses)
       ♦ commas separate list items



58     Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Style

     • Semantics
       ♦ set of rules that gives meaning to a language
       ♦ beware! the compiler will not be able to tell you
         about semantic errors (example: missing
         parentheses in mathematical expression)


     • Documentation
       ♦ comments
       ♦ naming rules
            • use meaningful identifiers
       ♦ prompt lines
            • let the user know what type of input is expected


59     Adrian Ilie           The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Style and White Space

     • White space
       ♦   blanks, tabs, blank lines
       ♦   used to separate words and symbols
       ♦   extra space is ignored by computer
       ♦   blank line between variable declaration and rest
           of code


     • Programs should be formatted to
       enhance readability, using consistent
       indentation

60     Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Comments

     • Not used by the computer
       ♦ only for human consumption


     • Used to help others understand code
       ♦ explain and show steps in algorithm
       ♦ comments are essential!


     • Should be well-written and clear

     • Comment while coding

     • Also called inline documentation

61      Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Java Comments

     // this is a one-line comment
       ♦ “comments out” the rest of the line after
         marker //


     /* this is a multi-line
     comment */
       ♦ “comments out” everything between
         markers /* and */



62     Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Classes

     • What is a class?
       ♦ Data
       ♦ Operations


     • Classes allow creation of new
       data types
       public class Student
       {
       }


63     Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Classes Vs. Data Types


     Abstract                Concrete Entities
      Descriptors
                                 ♦ Variable
       ♦ Data Type
                                 ♦ Object
       ♦ Class




64     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Inside a class

     • Other classes
     • Data types
     • Methods (operations)

            public class Student
            {
              private String name;
              private int age;
              public void ComputeGrade();
            }


65     Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Primitive Variables

     int x = 45;

     • x is associated with a memory location. It
       stores the value 45
     • When the computer sees x, it knows which
       memory location to look up the value in




66      Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Reference Variables

     Integer num;

     • The memory location associated with
       num can store a memory address.
     • The computer will read the address in
       num and look up an Integer object in
       that memory location




67     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Creating Objects

     • We use the new operator to create
       objects, called instantiation
                                     parameter
       Integer num;
       num = new Integer(78);




68     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Changing the Reference Var

            num = new Integer (50);
     • The address of the newly-created
       object is stored in the already-created
       reference variable num




69     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Garbage Collection

     • What happened to the memory space
       that held the value 78?
     • If no other reference variable points
       to that object, Java will "throw it
       away"




70     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Using Objects

       • System.out            object
         ♦ represents a destination to which we can
           send output
       • Example:
         ♦ println        method

     System.out.println (”Hello World!”);

       object                     information provided to
                      method             the method
               dot operator             (parameters)
71       Adrian Ilie      The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      The class String

     • String variables are reference
       variables
     • Given String name;
       ♦ Equivalent Statements:

       name = new String(“Van Helsing”);
       name = “Van Helsing”;




72      Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     name = “Van Helsing”;


                          Van Helsing




                                    Van Helsing




                                  Van Helsing


73    Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      The class String

     • The String object is an instance of class
       string
     • The value “Van Helsing” is instantiated
     • The address of the value is stored in name
     • The new operator is unnecessary when
       instantiating Java strings
     • String methods are called using the dot
       operator



74       Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Common String Methods

     • String(String str)
       ♦ constructor
       ♦ creates and initializes the object
     • char charAt(int index)
       ♦ returns char at the position specified by index (starts
         at 0)
     • int indexOf(char ch)
       ♦ returns the index of the first occurrence of ch
     • int compareTo(String str)
       ♦ returns negative if this string is less than str
       ♦ returns 0 if this string is the same as str
       ♦ returns positive if this string is greater than str



75     Adrian Ilie           The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Common String Methods

     • boolean equals(String str)
       ♦ returns true if this string equals str
     • int length()
       ♦ returns the length of the string
     • String replace(char toBeReplaced,
                         char replacedWith)
       ♦ returns the string in which every occurrence of toBeReplaced
         is replaced with replacedWith
     • String toLowerCase()
       ♦ returns the string that is the the same as this string, but all
         lower case
     • String toUpperCase()
       ♦ returns the string that is the same as this string, but all upper
         case




76      Adrian Ilie            The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     The StringTokenizer Class


     • tokens
       ♦ elements that comprise a string
     • tokenizing
       ♦ process of extracting these elements
     • delimiters
       ♦ characters that separate one token from another
     • StringTokenizer class
       ♦ defined in the java.util package
       ♦ used to separate a string into tokens




77      Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     The StringTokenizer Class

     • Default delimiters:
       ♦ space, tab, carriage return, new line


     • Methods
       ♦   StringTokenizer (String str)
       ♦   StringTokenizer (String str, String delimits)
       ♦   String nextToken()
       ♦   boolean hasMoreTokens()
       ♦   int countTokens()




78         Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        class DecimalFormat

     • Import package java.text
     • Create DecimalFormat object and initialize
     DecimalFormat fmt = new DecimalFormat (formatString);
     • FormatString
       ♦ "0.00" - limit to 2 decimal places, use 0 if there's no item
         in that position
       ♦ "0.##" - limit to 2 decimal places, no trailing 0
     • Use method format
       ♦ rounds the number instead of truncating
     • Result of using DecimalFormat is a String


79         Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Control Structures

     Three methods of processing a
        program:
     1. In sequence
       ♦    statements are executed one after another in
            order
     2. Branching
       ♦    altering the flow of program execution by
            making a selection or choice
     3. Looping
       ♦    altering the flow of program execution by
            repetition of statement(s)


80     Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Flow of Execution




81    Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Relational Operators

     • Relational Operator
       ♦ allows you to make comparisons in a program
       ♦ binary operator
            • needs two operands



     • Condition is represented by a logical
      (Boolean) expression
       ♦ expression that has a value of either true or false




82     Adrian Ilie          The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Relational Operators

     • Less than                                  <
     • Greater than                               >
     • Equal to                                   ==
       ♦ not assignment ‘=‘

     • Not equal to             !=
     • Less than or equal to    <=
     • Greater than or equal to >=

83     Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        Comparing Characters

     • In Java, characters are ordered according to the
       Unicode / ASCII character set (pg. 855)

     • ‘a’ comes before ‘b’ in the character set, so we
       can say ‘a’ < ‘b’

     • Order
        ♦   space character (' ')
        ♦   digits (‘0’, ‘1’, …)
        ♦   uppercase
        ♦   lowercase

     • Application: sort alphabetically
84            Adrian Ilie           The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Comparing Floating-Point

     • Be careful when using the equality
       (==) to compare floating point
       numbers
     • Every bit in the representation must
       be equal
       ♦ computer can only store a certain number of digits
         after the decimal
     • If the numbers are results of
       computation, it’s unlikely that two
       floating point numbers will be exactly
       equal


85     Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Comparing Strings

     • Strings are compared on a character-
       by-character basis
       ♦ first character not in common determines how the
         strings compare
       ♦ ex: "Airplane" is less than "Airport"


     • If two strings have different lengths,
       and one is a substring of the other,
       the shorter one is evaluated as less
       ♦ ex: "Air" is less than "Airplane"



86     Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Comparing Strings

     Don't use relational operators (==, <, >)
     for Strings       method      parameter

          str1.compareTo (str2)
     Returns an integer value:
        ♦ < 0 if str1 is less than str2
        ♦ 0 if str1 is equal to str2
        ♦ >0 if str1 is greater than str2

          str1.equals (str2)
     Returns a boolean value of true or false


87      Adrian Ilie          The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Boolean Operators

     • NOT           !    (unary)                     true
      !(2+2==5)


     • AND           &&   (binary)                    false
      (2+2==5) && (1+1==2)


     • OR                 ||     (binary)             true
      (2+2==5) || (1+1==2)

88     Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Short Circuited Operators

     • The processing of logical AND (&&)
       and logical OR (||) is “short-
       circuited”
     • If the left operand is sufficient to
       determine the result, the right
       operand is not evaluated

     count != 0 && (total/count > MAX)



89      Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Precedence of Operators




90    Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      The if Statement

                   The condition must be a boolean expression.
                       It must evaluate to either true or false.
      if is a Java
     reserved word
                         if ( condition )
                            statement;

     If the condition is true, the statement is executed.
             If it is false, the statement is skipped.


91        Adrian Ilie          The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       The if-else Statement

                        if ( condition )
                           statement1;
                        else
                           statement2;
     • If the condition is true, statement1 is
       executed; if the condition is false,
       statement2 is executed

     • One or the other will be executed, but not
       both
92        Adrian Ilie          The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Nested if Statements

     The general syntax of a nested if statement is:

     if (condition1)
     {
       block1
     }
     else if (condition2)
     {
       block2
     }
     else
     {
       block3
     }

93      Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        The switch Statement

        • The general syntax of a switch statement
          is:

                          switch ( expression )
     switch
                          {
        and
                             case value1 :
       case
                                statement-list1
        are
                             case value2 :
     reserved
                                statement-list2
      words
                             case value3 :
                                                           If expression
                                statement-list3
                                                           matches value2,
                             case ...
                                                           control jumps
                          }
                                                           to here

94          Adrian Ilie           The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     The switch Statement

     • Expression evaluated must be integral
      type
       ♦ integer or character, not boolean or floating point
     • Case values must be constant
       (literal), not variable
     • Can be implemented with nested if
       statements, but is much clearer with
       switch statements



95     Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     The switch Statement

     • default
       ♦ no case value matches the expression
       ♦ if no default exists and no case value
         matches the expression, no statements in
         the switch statement are executed
     • break
       ♦ processing jumps to statement following
         the switch statement
       ♦ usually at the end of each case


96     Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Writing Selection Statements
     What Type of Construct To Use?


     • Only need to execute additional statements
       if condition is true             if
     • Need to execute separate additional
       statements based on if the condition is true
       or false                         if-else
     • Need to execute different statements based
       on multiple conditions   nested if-else
     • Need to execute different statements based
       on an expression that evaluates to a char or
       int                            switch

97      Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Writing Selection Statements

     • Write the outline of the selection
       statement
       ♦ keywords
       ♦ curly braces
       ♦ case and break statements (for switch)


     • Write the expression
       ♦ boolean expression, or condition
       ♦ expression or variable evaluating to char or int


     • Write statements that execute based on
       the condition

98       Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
     Repetition Statements

     • Allow us to execute a statement
       multiple times
     • Often referred to as loops
     • Controlled by boolean expressions
       ♦ like selection, or conditional, statements
     • Java has three kinds of repetition
       statements:
       ♦ the while loop
       ♦ the for loop
       ♦ the do loop


99     Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Loops

      • Must use a loop control variable
        ♦ controls how many times to loop


      • 4 Parts to Every Loop
        ♦ initialization - set loop control variable
          before condition
        ♦ condition - when to stop
        ♦ update - change the loop control variable
        ♦ body - actions to repeat


100     Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        Typical Uses of Loops

      • Repeat a section of code a specified number
        of times - counter-controlled
      • Repeat a section of code (reading input) until
        a specific value is read - sentinel-controlled
      • Repeat a section of code (reading input) until
        a valid value is entered - input validation
      • Repeat a section of code (reading from a file)
        until the end of the file is reached - EOF-
        controlled
      • Repeat a section of code until a boolean
        variable becomes false - flag-controlled

101         Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      The while Loop
      Syntax


                        while ( condition )
    while is a          {
  reserved word
                           loop body;
                        }
      If the condition is true, the loop body is executed.
              Then the condition is evaluated again.

      The loop body is executed repeatedly until
            the condition becomes false.


102       Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
         The while Loop

      • Syntax
        while (expression)
           statement

      • Expression is always
        true in an infinite loop

      • Statements must
        change value of
        expression to false


103          Adrian Ilie      The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
         Counter-Controlled while Loop

      • Used when we know exactly the number of
        times to execute the loop
      • Basic Form:
          counter = 0;
          while (counter < N)             N is the
          {                               number
                                          of times the
                      ...                 loop should
                      counter++;          execute
                      ...
          }
104           Adrian Ilie      The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Sentinel-Controlled while Loop

      • Used when exact number of entry
        pieces is unknown but last entry
        (special / sentinel value) is known
      • Basic Form:
       input the first data item into variable
       while (variable != sentinel)
       {
                 ...
                 input a data item into variable
       }
105        Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Input Validation while Loop

      • Used to ensure that the user enters
        valid input
      • Basic Form:
      input a data item into variable
      while (variable is not in valid range)
      {
              ask the user for valid input
              input a data item into variable
      }

106       Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Flag-Controlled while Loop

      • Boolean value used to control loop
      • Basic Form:
       boolean found = false;
       while (!found)
       {
            ...
            if(expression)
                found = true;
            ...
       }
107     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      EOF-Controlled while Loop

      • Used when input is from a file
      • Sentinel value is not always
        appropriate
      • Basic Form:
       inputLine = inFile.readLine();
       while (inputLine != null)
       {                null is a reserved word
            ...
            inputLine = inFile.readLine();
       }

108     Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      The for Loop

      • Specialized form of while loop
      • Simplifies the writing of count-controlled
        loops

      Basic Form:

      for (initialization; condition; update)
      {
           statement(s);
      }


109      Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       The for Loop
       Execution

  1. initial statement
     executes
  2. loop condition
     evaluated
  3. If loop condition
     evaluates to true,
     execute for loop
     statement and
     execute update
     statement
  4. Go back to step 2
     and repeat until
     loop condition is
     false



110        Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        The for Loop
        Syntax

                     The initialization           The loop body is
Reserved               is executed once
  word                                            executed until the
                     before the loop begins    condition becomes false

  for ( initialization; condition; update )
  {
     loop body;
  }
         The update portion is executed at the end of each iteration
      The condition-loop body-update cycle is executed repeatedly




111         Adrian Ilie           The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      for vs. while

       A for loop is functionally
       equivalent to the following while
       loop structure:
                     initialization;
                     while ( condition )
                     {
                        loop body;
                        update;
                     }
112    Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Comparing while and for

       While Loop                         For Loop
final int LIMIT=3;          final int LIMIT=3;
int i = 0;
                            int i;
while (i < LIMIT)
{                           for (i=0; i<LIMIT; i++)
  System.out.println (i);   {
  i++;                        System.out.println (i);
}                           }

System.out.println          System.out.println
(“All done!”);              ("All done!");

113     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Watch out!

      • for statement ending in semicolon
        is empty; does not affect program

      for (count=0; count<LIMIT; count++);


      • while statement ending in
        semicolon results in infinite loop
      while (count<LIMIT);


114     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
         The do...while Loop
         Syntax

                          do
        do and            {
      while are
                               loop body;
       reserved
        words             }
                          while ( condition );

       The loop body is executed once initially,
         and then the condition is evaluated

                    The loop body is executed repeatedly
                      until the condition becomes false

115         Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        do…while Loop
        (Post-test Loop)


      do {
         statement(s);
      } while (expression);




116        Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      The do...while Loop

      • Like a while loop, but its
        condition is at the end of the loop
      • Loop body always executes at least
       once
      • Must also be checked for
        termination (not an infinite loop)
      • Anything you can do with a
        do...while loop, you can do
        with a while loop
117     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Comparing while and
      do...while
         while Loop                     do...while Loop

 final int LIMIT=3;             final int LIMIT=3;
 int count = 0;                 int count = 0;

 while (count < LIMIT)          do
 {                              {
   System.out.println                System.out.println
   (count);                          (count);
   count++;                          count++;
 }                              }
                                while (count < LIMIT);
 System.out.println
 (“All done!”);                 System.out.println
                                ("All done!");

118      Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      break Statements

      • Used to exit early from a loop
      • Used to skip remainder of switch
        structure
      • Can be placed within if
        statement of a loop
        ♦ If condition is met, loop exited
          immediately



119     Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       continue Statements

      • Used in while, for, and do...while
        structures
      • When executed in a loop, the remaining
        statements in the loop are skipped;
        proceeds with the next iteration of the
        loop
      • When executed in a while/do…while
        structure, expression evaluated
        immediately after continue statement
      • In a for structure, the update
        statement is executed after the
        continue statement; then the loop
        condition executes
120      Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Nested Control Structures

      • Provides new power, subtlety,
        and complexity
      • if, if…else, and switch
        structures can be placed within
        while loops
      • for loops can be found within
        other for loops
        ♦ each time through the outer loop, the
          inner loop goes through its full set of
          iterations
121     Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Object-Oriented Design

      • What is it?

        Designing a solution to a problem
        by first identifying components
        called objects, and determining
        how the objects interact with each
        other



122     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
         Objects
         VCR Example


         • Use it without knowing how it's made
         • Internal parts are hidden -- only
           interact with the provided buttons
         • Can't modify the functions of a VCR --
           record button always records, play
           button always plays


      Same is true for objects (like Strings) that are
      provided by Java
123          Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Objects

      Consist of data and operations on the data
      • Data - descriptive characteristics
      • Operations - what it can do (or what can be done
        to it)

      Example
       A coin that can be flipped so that its face shows
       either "heads" or "tails"
        ♦ data: its current face (heads or tails)
        ♦ operations: it can be flipped

             Operations can change data.
124       Adrian Ilie           The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Objects
      And Methods and Classes


      • We represent operations with methods
         ♦ group of statements that are given a name


      • We can use objects and their methods
        without knowing exactly how the methods
        work

      • An object is an instance of a class. A class is
        the blueprint of an object.
         ♦ the class provides the methods that can operate on an
           object of that class



125      Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Classes

      • A class contains data declarations and
        method declarations

      • A class is a description of an object
        ♦ just a model, not an actual object
        ♦ you can think of the concept of a book without
          thinking of a particular book


      • A class is no more an object than a
        blueprint is an actual house

126     Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Object-Oriented Design
       Simplified Methodology

      1. Write down detailed description of
         problem

      2. Identify all (relevant) nouns and verbs

      3. From list of nouns, select objects

      4. Identify data components of each object

      5. From list of verbs, select operations
127       Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Anatomy of a Class

      • A class contains data declarations
        and method declarations
            int width;
                                     Data declarations
            int length;




                                    Method declarations
                                       (operations)




128     Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Classes and Objects
     A class                                    An object
  (the concept)                              (the realization)
                                      length = 15, width = 3
                 Rectangle            length = 20, width = 6



          Multiple objects            length = 15, width = 15
       from the same class




129       Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Why Use Methods?

      • To divide complex programs into
        manageable pieces

      • Abstraction
        ♦ provide an operation to be performed on an object
          (ex: computeArea)
      • Code Re-use
        ♦ write a small piece of code that can be used
          (called) multiple times (saves typing)



130     Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Methods

      • Pre-defined methods
        ♦   provided by Java standard library
        ♦   we've used these before
        ♦   Math class (Math.pow, Math.sqrt, ...)
        ♦   Integer class (Integer.parseInt, ...)


      • User-defined methods
        ♦ you write these


131     Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Method as a Black Box

       Input parameters        METHOD                Return value




                          Internal data members
                                of the class
      • A method can use input parameters and
        internal data members of the class
      • It may modify the value of internal data
        members
      • It may also return a value

132        Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Control Flow

      • Program control flow
        ♦ execution always begins with the first statement
          in the method main
        ♦ other methods execute only when called
      • Method control flow
        ♦ when a method is invoked, the flow of control
          jumps to the method and the computer executes
          its code
        ♦ when complete, the flow of control returns to the
          place where the method was called and the
          computer continues executing code
      • Test this with the debugger!

133     Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Using Methods
      What You Need To Know


      1. Name of the method
      2. Number of parameters
      3. Data type of each parameter
      4. Data type of value computed
         (returned) by the method
      5. The code required to
         accomplish the task

134        Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Method Declaration

      • Specifies the code that will be
        executed when the method is
        invoked (or called)
      • Located inside a class definition
      • Contains
        ♦ method header
        ♦ method body


135     Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        Method Header

A method declaration begins with a method header
  public static int countCharInWord (char ch, String word)


      visibility                      method              formal parameter list
      modifiers            return     name
                            type

                              The parameter list specifies the type
                              and name of each parameter

                              The name of a parameter in the method
                              declaration is called a formal parameter

136          Adrian Ilie               The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Return Value

      • Value-returning methods
        ♦ The method returns the result of some
          operations
        ♦ Like mathematical functions
        ♦ Return one single value


      • Void methods
        ♦ Perform operations but return no value



137     Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Value-Returning Methods

      • Think mathematical function
        f(x) = 2x + 5      f(x, y) = 2x + y
           f(1) = 7           f(1, 5) = 7
           f(2) = 9           f(2, 3) = 7
           f(3) = 11          f(3, 1) = 7
      • Can have multiple arguments
        (parameters)
      • Only one result of the function

138     Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        Value-Returning Methods
        Uses

      • Save the value for future calculation
      • Use the value in a calculation
      • Print the value

        x = Math.pow (y, 2);
        z = a + Math.pow (y, 2) + x;
        System.out.println (Math.pow (y, 2));




139        Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
         Return Type

         • Indicates the type of value that the
           method evaluates to:
           ♦ primitive data type
           ♦ class name
           ♦ void  reserved word indicating that nothing is
             returned
         • When a value is returned, the method
           call is replaced with the returned value
      int number = countCharInWord ('e', "Heels");

                                            2
140         Adrian Ilie      The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      The return Statement

      • Tells the computer to "return" back to
        where the call was originally made.
      • Specifies the value that will be returned
                       return expression;
      • The data type of expression must match
        the method's return type
      • Methods with return types of void usually
        don't (but can) have a return statement
      • Value-returning methods must have at least
        one return statement



141      Adrian Ilie          The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Void Methods

      • Do not return a value
      • Have a return type of void
      • Similar in structure to value-
        returning methods
      • Call to method is always a stand-
        alone statement
      • Can use return statement to exit
        method early
142     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      The main Method

       The main method looks just like
       all other methods

      public static void main (String[] args)

          modifiers   return method           parameter
                       type   name               list




143     Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Method Body

The method header is followed by the method body
  public static int countCharInWord (char ch, String word)
  {
          int count = 0;
          for (int i = 0; i<word.length(); i++) {
                  if (word.charAt(i) == ch) {
                           count++;
                  }
          }                          ch and word are local data
          return count;
  }
                                     They are created each time the
                                     method is called, and are
    The return expression must be    destroyed when it finishes
    consistent with the return type  executing

144        Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        Parameters

      Each time a method is called, the actual parameters in the
      call are copied into the formal parameters
       int num = countCharInWord ('e', "Heels");


 public static int countCharInWord (char ch, String word)
{
        int count = 0;
        for (int i = 0; i<word.length(); i++) {
              if (word.charAt(i) == ch) {
                    count++;
              }
        }
        return count;
}
145         Adrian Ilie      The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Parameters

      • Formal parameters
        ♦ variable declarations in the method header
        ♦ automatic local variables for the method
      • Actual parameters
        ♦ actual values that are passed to the method
        ♦ can be variables, literals, or expressions
                      printStars (35);

                      printStars (30 + 5);

                      int num = 35;
                      printStars (num);
146     Adrian Ilie          The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Parameters
       Primitive Data Type Variables


      • If a formal parameter is a variable of a
        primitive data type, can it be modified
        inside a method?
        ♦ The value from the actual parameter is
          copied
        ♦ There is no connection between variables
          inside the method and outside
        ♦ Conclusion: it cannot be modified!!




147       Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Parameters
       Reference Variables


      • If a formal parameter is a reference
        variable, can the object be modified
        inside a method?
        ♦ The address from the actual parameter is
          copied
        ♦ The local reference variable points to the
          same object
        ♦ Conclusion: it can be modified!!




148      Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Primitive Data Types



      • What if we want to modify a
        variable of a primitive data type
        inside a method?
        ♦ Encapsulate it in a class
        ♦ Example: IntClass (ch. 6, p. 306/350)

             IntClass is a class suggested in the book, but it is
               not a built-in class in Java!!!


149     Adrian Ilie          The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Overloading Methods

      • Overloading - the process of using the same
        method name for multiple methods

      • The signature of each overloaded method
        must be unique
        ♦ number of parameters
        ♦ type of the parameters
        ♦ not the return type of the method, though

      • The compiler determines which version of
        the method is being invoked by analyzing
        the parameters

150      Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Constructors

 public class Rectangle
 {
      private int length;
                                          Rectangle r2 = new
      private int width;
                                          Rectangle (5, 10);
      public Rectangle ()
      {
            length = 0;
            width = 0;
      }
      public Rectangle (int l, int w)
      {
               length = l;
               width = w;
151
      } Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       The toString Method

      • Special method in Java classes
      • Produces a String object based on the
        current object, suitable for printing
      • Mapped to the '+' operator
      • Also called when the object is a
        parameter in a print() or println()
        method
      • There is a default toString method,
        but it's better if we write our own

  System.out.println(r1);        System.out.println(r1.toString());
152        Adrian Ilie      The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      The Reference this

      • Reserved word

      • Refers to instance variables and
        methods of a class

      • Allows you to distinguish between
        member variables and local variables
        with the same name


153     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Rectangle.java

  public class Rectangle
  {
       private int length;
       private int width;

       public Rectangle (int length, int width)
       {
            this.length = length;
            this.width = width;
       }



154     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Review Classes and Methods
      ReverseString.java


      • When do you use dot operator (.)
        to access methods?
        ♦ Must use dot operator to access method
          that is in a different class
        ♦ To access a method in ReverseString from
          ReverseTester, use dot operator
        ♦ To access a method in ReverseString from
          ReverseString, NO dot operator



155     Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Review Classes and Methods
      ReverseString.java


      • When do you use public vs.
        private?
        ♦ Use private:
             • When the method or data member is only going
               to be accessed inside the same class


        ♦ Use public:
             • When the method or data member is going to
               be accessed outside the class
             • Anything that is called, or used, inside
               ReverseTester class must be public

156     Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Review Classes and Methods
       ReverseString.java

      • Why did we not use static in
        ReverseString class?
        When and why do we use static?
         • Do not need object to use method/variable
         • Consistent among all objects
         • Shared among all objects of the class




157      Adrian Ilie      The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        Review Classes and Methods
        ReverseString.java

      • Why did we not use static in
        ReverseString class?
          When and why do we use static?
            • Want all objects of class to share one copy of data
            • Do not need method/variable to be object specific

      NOTE:
        • Can't call a non-static method from a static method
        • Can't access non-static variables from a static
        method

158        Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Review Classes and Methods
      ReverseString.java

      • Why was there no main method in
        ReverseString class?
        ♦ Only a driver class (a class that tests your
          program) has a main method
        ♦ General rule:
          • For each program you write, there will only be one
            main method
          • Here, it was given in ReverseTester class




159      Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Communication between
      Classes

       • Methods provide communication
         between methods
          ♦ Parameters provide input into class
          ♦ Return value provides output

 public returnType methodName ( formal parameters )

      Output from method                    Input to method



160       Adrian Ilie      The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Arrays

      • An array is a list of values that can be
        represented by one variable
      • Members of an array must all have
        the same data type
      • Each value is stored at a specific,
        numbered position in the array
        ♦ the number corresponding to each position is
          called an index or subscript
      • All arrays have a length
        ♦ number of elements the array can hold


161     Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Review                                         0    1      2    3

       Arrays

      • Declaration                    can use variables and
         int[] counts;
                                       expressions as initial values
      • Instantiation
         counts = new int[50];
      • Initialization / Access
         for (int i=0; i<counts.length; i++) {
           counts[i] = 0;
         }
      • Initializer List
         ♦ declaration, instantiation, and initialization
         double[] grades = {98.7, 72.4, 87.5};
         int[] numbers = {num, num+1, num+2, num+3};



162        Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Parallel Arrays

       Arrays are parallel if
       corresponding components hold
       related information
               String[] studentName;
               double[] studentGPA;
      For example, studentName and
      studentGPA are parallel if
      studentGPA[3] is the GPA of the
      student with studentName[3].

163     Adrian Ilie      The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
         Copying Arrays
                                                                   counter
      int[] counter = {1, 2, 3, 4, 5};
      int[] temp = new int[counter.length];
      temp
                                                               0         1
              0            1
                                                               1         2
              1            2                                             3
                                                               2
              2            3
                                                               3         4
              3            4                                   4         5
              4            5
        for (int i=0; i<counter.length; i++) {                       i
             temp[i] = counter[i];                                  1
                                                                    4
                                                                    2
                                                                    5
                                                                    0
                                                                    3
        }
164          Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Arrays as Parameters

      • Entire array can be passed as a
        parameter
        ♦ method can change elements of the array
          permanently
        ♦ since we're passing a reference


      • Elements of an array can be
        passed as parameters, too
        ♦ normal rules apply…


165     Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Arrays as Parameters

      • Entire array can be passed as a
        parameter
        ♦ method can change elements of the array
          permanently
        ♦ since we're passing a reference


      • Elements of an array can be
        passed as parameters, too
        ♦ normal rules apply…


166     Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        Arrays of Objects

      • Can use arrays to manipulate objects
      • Create array of objects
       classname[] array = new classname[size];


      • Must instantiate each object in array
       for(int j=0; j <array.length; j++) {
           array[j] = new classname();
       }

167       Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Binary Search

      • Requires ordered (sorted) list
      • Set searchRange to the entire list
      • Repeat:
        ♦ pick a “test value” in the middle of searchRange
        ♦ if test value == value searching for
             • Stop!
        ♦ if test value > value searching for
             • searchRange = lower half of searchRange
        ♦ if test value < value searching for
             • searchRange = upper half of searchRange




168     Adrian Ilie          The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
         Example

                          Trial 1
  Looking for 46

      2 4 5 12 16 19 22 26 29 32 37 41 46 50

                                                     2
      2 4 5 12 16 19 22             26 29 32 37 41 46 50

                                                                 3
      2 4 5 12 16 19 22 26          29 32 37              41 46 50


169         Adrian Ilie      The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Selection Sort
      Methods


      • Scan the list to find the smallest value
      • Swap that value with the value in the
        first position in the list
      • Scan rest of list to find the next
        smallest value
      • Swap that value with the value in the
 loop
        second position in the list
      • And so on, until you get to the end of
        the list


170     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
         Inheritance

      • JFrame is a class provided by the package
        javax.swing

      • Instead of instantiating an object of the
        JFrame class, we're going to extend the
        JFrame class (called inheritance).
      • The new class "inherits" features (including
        methods and variables) from the existing
        class -- big time-saver!
      • We can use all of the methods and
        variables from JFrame, while adding our
        own.
171         Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Extending JFrame

      • Use the modifier extends, which is a
        reserved word
        public class BigGUI extends JFrame
        {

        }
      • JFrame is the superclass
      • BigGUI is the subclass

      • It is ok to learn the recipe

172     Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Next Step

      • We'll need a constructor for BigGUI
        ♦ set the window title setTitle
        ♦ set the window size setSize
        ♦ set the default operation when the close
          button is pressed
          setDefaultCloseOperation
        ♦ display the window setVisible(true)
      • We'll need a main method
        ♦ create an object of the BigGUI class (which
          will call the constructor)


173      Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
import javax.swing.*; // needed for JFrame

public class BigGUI    extends JFrame
{
      private final    static String TITLE = “Big GUI";
      private final    static int WIDTH = 700;
      private final    static int HEIGHT = 600;

      public BigGUI() // constructor
      {
            setTitle(TITLE);
            setSize(WIDTH, HEIGHT);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            setVisible(true);
      }

      public static void main(String[] args)
      {
            BigGUI gui = new BigGUI();
      }
}
174      Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Adding Things

        • Access the content pane so we can
          add things (buttons, labels, images)
      Container content = getContentPane();
          ♦ Container class is provided by the java.awt
            package
          ♦ add import statement for java.awt



       • Then, we set the layout type and add
         things to the content pane

175       Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Layout Managers

  • FlowLayout
      ♦ default
      ♦ components are added left to right, top to bottom
  • BorderLayout
      ♦ consists of NORTH, SOUTH, EAST, WEST, CENTER regions
      ♦ size of CENTER region depends on the number of
        components in the EAST and WEST regions
  • GridLayout
      ♦ define number of rows and columns to get equally sized
        cells
      ♦ cells are filled left to right, top to bottom



176        Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        BorderLayout

       • Select layout for BigGUI as
         BorderLayout
      content.setLayout(new BorderLayout());

    • When adding components with
      BorderLayout, you have to specify
      the section (using NORTH, SOUTH,
      EAST, WEST, CENTER constants from
                     class)
      BorderLayout BorderLayout.SECTION);
  content.add(item,
177       Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
          JLabels

        • We'll identify the regions of the
          BorderLayout with labels (text areas)
        • JLabel is a region of text
           ♦ can be assigned an alignment (left-justified, right-
             justified, centered)
      JLabel northLabel = new JLabel ("NORTH",
                                      SwingConstants.CENTER);
      JLabel southLabel = new JLabel ("SOUTH");
        • Text can be changed with setText
          method
         northLabel.setText ("Changed Text");

178          Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        Colors

      • Set the background color of the content
        pane
      • Set the foreground color of the text
        (JLabels)
      • Use Color class from the java.awt package
      • Available colors pg. 734
        ♦ constants (but lowercase)
      • Methods
        ♦ darker() - darkens the color
        ♦ brighter() - brightens the color
content.setBackground(Color.blue.darker().darker());
northLabel.setForeground(Color.white);
179         Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
         Adding Images

      • We can create images and associate
        them with labels
      • ImageIcon
        ♦ use JPG or GIF images                          filename
      ImageIcon image = new ImageIcon ("img/0.gif");

      • Use setIcon method from JLabel
        class
         centerLabel.setIcon (image);


180         Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Text Position Relative to Icon



       label.setVerticalTextPosition(vposition);
       label.setHorizontalTextPosition(hposition);



      SwingConstants.TOP          SwingConstants.LEFT
      SwingConstants.CENTER       SwingConstants.CENTER
      SwingConstants.BOTTOM       SwingConstants.RIGHT




181       Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
        BigGUI.java

      • Add icon.




182        Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      JLabel and JTextField

      • Very similar. With JTextField we can
        also type data from outside and
        access it in the program.

        JLabel output=new JLabel();
        JTextField input=new JTextField();
        …
        String inputStr=input.getText();
        output.setText(“OUTPUT RESULT”);




183     Adrian Ilie     The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Using Buttons

      • Create JButton objects

      • Buttons generate events when clicked

      • Add event handlers

      • Inside event handler, code operations
        to be executed when button is clicked
184      Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Adding Buttons

      • To create a button, we use the JButton
        class
JButton toLower = new JButton (“To Lower Case");
      • Add button to the content pane
                   content.add(toLower);
      • Change text of the button with the setText
        method
       toLower.setText(“Convert to Lower Case");
      • Enable/disable the button with setEnabled
        method
                toLower.setEnabled(false);
185       Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Buttons and Events

      • Pressing buttons triggers action
       events

      • Setup a listener for the event
        ♦ actionPerformed method from
          ActionListener class
        ♦ ActionListener class from the
          java.awt.event package
             • something else to import

186     Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      ActionListener

      • Special type of class, called
        interface
      • Interface - class that contains
       only the method headings (no
       method bodies)
public interface ActionListener
{
     public void actionPerformed (ActionEvent e);
}

187     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      ActionListener

      • In order to handle an event, define a
        class that will implement
        ActionListener.
private class ButtonHandler implements ActionListener


      • Make the class ButtonHandler an
        internal class of our main class.

      • In ButtonHandler, code the method
        actionPerformed


188     Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      ActionListener

      • Declare a ButtonHandler that will be
        a data member of the main class.
         private ButtonHandler toLowerHandler;

      • Instantiate the ButtonHandler (e.g.
        in the constructor)
        toLowerHandler=new ButtonHandler();

      • Once the JButton object is created,
        register the action listener:
        toLower.addActionListener(toLowerHandler);

189     Adrian Ilie   The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      actionPerformed

      • Variables we want to access inside
        the actionPerformed methods, must
        be declared as member variables of
        the main class
        ♦ not local to constructor


      • Make input, output, and the
        buttons member variables


190     Adrian Ilie        The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Applets

      • A Java application is a stand-alone
        program with a main method
      • A Java applet is a Java program that
        is intended to be transported over the
        web and executed using a web
        browser
        ♦ an applet doesn't have a main method
        ♦ needs an extra import statement:


         import java.applet.Applet;

191     Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Applet Methods

      • Several methods from Applet class
        that are invoked automatically at
        certain points in an applet's life
        ♦ init - executed only once when the applet is
          initially loaded
        ♦ start - called when applet becomes active (when
          browser loads / returns to the page)
        ♦ stop - called when applet becomes inactive (when
          browser leaves the page)
        ♦ paint - automatically executed and is used to
          draw the applets contents




192     Adrian Ilie       The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
       Converting Apps to Applet

      • See Ch 13, pgs. 855-858 (745-748)
      • Extends JApplet instead of JFrame
      • No main method
      • No constructor
        ♦ put code from constructor in init() method
      • No setVisible, setTitle, or
        setSize methods


193      Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Applets and the Web

      • An applet is embedded into an HTML file
        using a tag that references the bytecode file
        (ClassName.class) of the applet class

      • It is actually the bytecode version of the
        program that is transported across the web

      • The applet is executed by a Java interpreter
        that is part of the browser
         ♦ this Java interpreter not included in Windows XP, must
           download from java.com




194      Adrian Ilie         The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL
      Applets and the Web

      • Basic HTML file for an applet:
        <html> <body>
        <applet code = "ClassName.class">
        </applet> </body> </html>
      • Can also specify size of applet window
       <applet code="ClassName.class"
       height=200 width=300> </applet>
      • Put the applet HTML file (named
        something.html) and your Java applet
        bytecode (named ClassName.class) in your
        public_html folder in AFS space.


195     Adrian Ilie    The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

								
To top