overview
play

Overview Topics Packages collections of classes Static CSE 143 - PowerPoint PPT Presentation

Overview Topics Packages collections of classes Static CSE 143 Java Final Scope Packages and Scope Reading: Sec. 10.5, 10.6 10/7/2004 (c) 2001-4, University of Washington 05-1 10/7/2004 (c) 2001-4, University of


  1. Overview • Topics • Packages – collections of classes • Static CSE 143 Java • Final • Scope Packages and Scope Reading: Sec. 10.5, 10.6 10/7/2004 (c) 2001-4, University of Washington 05-1 10/7/2004 (c) 2001-4, University of Washington 05-2 Packages Package and Type Names • Packages provide a way to group collections of related • Every class and interface has a fully qualified name: its classes and interfaces (for libraries and other purposes) package name, a “.”, and its type name java.awt.Color • A package defines a separate namespace to help avoid java.util.ArrayList name conflicts java.awt.Rectangle • Can reuse common names in different packages (List, Set, …) • Each type also has a simple name • Provides a way of hiding classes needed to implement Color, ArrayList, Rectangle the package but that should not be used by outside code • Can always refer to a type using its fully qualified name • A type does not need to be in a named package java.util.ArrayList list = new java.util.ArrayList(); • There is an “anonymous” package for classes not placed in a • Can normally use import declarations to refer to types specific package – you’ve been using this all along by their simple names 10/7/2004 (c) 2001-4, University of Washington 05-3 10/7/2004 (c) 2001-4, University of Washington 05-4 CSE143 Au04 05-1

  2. Import Declarations (1) Import Declarations (2) • Can import a single type by giving its fully qualified name • An imported type can be referenced by its simple name, import java.awt.Color; provided that reference is unique • Can import all types in a package using the package name import java.util.*; import java.util.*; ArrayList theList = new ArrayList( ); • Have to import each package individually – can’t import several in • Example of non-unique reference – both java.awt and a single import declaration uwcse.graphics contain a class Rectangle • Example import java.awt.*; import java.*; import uwcse.graphics.*; only imports top-level names in java.* Rectangle rect = new Rectangle(…); // error – ambiguous • To import, e.g., ArrayList, need to have (also) java.awt.Rectangle r = new java.awt.Rectangle(…); // ok; not ambiguous import java.util.* 10/7/2004 (c) 2001-4, University of Washington 05-5 10/7/2004 (c) 2001-4, University of Washington 05-6 Some Standard Packages Java Standard Library Statistics Version #packages # classes/interfaces • The standard Java libraries contain thousands of classes grouped into dozens of packages. A few common ones: 1.0 8 212 • java.lang – core classes; imported automatically everywhere, don’t need an 1.1 23 504 import declaration 1.2 60 1781 includes Math, Integer, Double, String, Char, etc. – lots of useful things for standard types • java.util – collections, date/time, random number generators, etc. 1.3 77 2130 • java.io – input/output streams, files 1.4 136 3020 • java.net – network I/O, sockets, URLs 1.5 ??? ???? • java.awt – original graphical user interface (GUI) • javax.swing – extension of awt, more sophisticated GUI Source: The Java Developer’s Almanac 1.4, Patrick Chan No, this will not be on the test 10/7/2004 (c) 2001-4, University of Washington 05-7 10/7/2004 (c) 2001-4, University of Washington 05-8 CSE143 Au04 05-2

  3. Defining Packages Internet Domains for Unique Names • To place a class or interface in a package, include a • Java community convention: use reversed domain package declaration in the source file before any class names as top-level package names or interface declarations package com.sun.java.awt; package outer.inner; package edu.rice.cs.drjava; • Many development tools require folder structure to • Overkill for simple projects, but a good idea if code is likely to match package names be used by other organizations or groups • Example: assume a project is in a top-level folder named c:\code • Source files for code in unnamed package should be in c:\code • Package run should be in c:\code\run • Package outer.inner should be in c:\code\outer\inner 10/7/2004 (c) 2001-4, University of Washington 05-9 10/7/2004 (c) 2001-4, University of Washington 05-10 Static Static Fields • Example: Pseudo-random number generator for objects • Normal fields and methods are associated with in a simulation individual objects • Want one pseudo-random sequence of numbers, not many • Copy of each instance variable in each class instance (object) sequences, all of which are the same • Method call is associated with particular object (i.e., a class Fish implements SimThing { particular object receives the message and its method private static Random rand = new Random( ); // shared random number gen responds) public void move( ) { huskycard.deposit(1200.55); int dx = rand.nextInt(7) – 4; … • But sometimes it makes sense to have a single unique } field or method associated with a class, not one per • All instances of Fish refer to the same (unique) random instance number generator associated with the class Fish itself 10/7/2004 (c) 2001-4, University of Washington 05-11 10/7/2004 (c) 2001-4, University of Washington 05-12 CSE143 Au04 05-3

  4. Constants (1) Constants (2) • Another example from java.awt • Named constants are often static fields in classes package java.awt; • Single instance of the constant shared by everyone class Color { • Use final to indicate the field can’t change after public static final Color red = new Color(255, 0, 0); initialization public static final Color green = new Color(0, 255, 0); public static final Color blue = new Color(0, 0, 255); • … also implies must be initialized in declaration … (not strictly true – can be initialized in other ways when the class is loaded; ask if • Use classname.fieldname to reference: Color.red, you really want to know) Color.green • Example • Convention: constant names are usually ALLCAPS private static final double initialSize = 20; • examples in the Java libraries notwithstanding • Important style point: use named constants in your (Java 1.4: we now have Color.RED in addition to Color.red. Sigh) code, not anonymous “magic numbers” (Why?) 10/7/2004 (c) 2001-4, University of Washington 05-13 10/7/2004 (c) 2001-4, University of Washington 05-14 Static Methods Scope • An identifier may appear many times in a program • Sometimes we want a method that is a singleton – one copy associated with the class • A defining occurrence establishes the identifier as the name of something (a variable, class, etc.) • Common example: main – starting point for program execution double x = 3.5; class Start { double y; … • An applied occurrence is the use of an identifier that is already // start here defined public static void main(String[ ] args) { … } Assigning a new value to a name is an applied, not defining occurrence } x = x * 2.0; y = x * 3.14;; • Another example: basic math functions in java.lang.Math • The scope of a definition is the region of the program text in double sqrt2 = Math.sqrt(2.0); which applied occurrences of the identifier refer to that double x = Math.sin(theta); definition 10/7/2004 (c) 2001-4, University of Washington 05-15 10/7/2004 (c) 2001-4, University of Washington 05-16 CSE143 Au04 05-4

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend