outline
play

Outline More Java Classes class declaration static members - PDF document

Outline More Java Classes class declaration static members access controls CS2704: Object-Oriented Software Design packages and Construction member functions ( including constructors and destructor equivalents )


  1. Outline More Java • Classes – class declaration – static members – access controls CS2704: Object-Oriented Software Design – packages and Construction – member functions ( including constructors and “destructor” equivalents ) – exceptions – creating own classes Constantinos Phanouriou • Objects Department of Computer Science • Object Reference Variables Virginia Tech CS2704 (Spring 2000) 1 CS2704 (Spring 2000) 2 A touch of class A touch of class • Classes in Java? • Why class? – Generally similar to C++ – encapsulation – Where there are differences, Java has gone back to other • packaging together of data structures and code that older models ( like original Simula67, Apple’s Object Pascal (1980s), manipulates those structures Eiffel, and to lesser extent Smalltalk ) – information hiding • implementation details are hidden; “client” code – A pervasive change cannot become dependent on current structures • as in Smalltalk and Eiffel, all Java classes regarded as being (facilitating future changes and extensions) extensions of a “base class” provided by the language (inevitably called class Object ) CS2704 (Spring 2000) 3 CS2704 (Spring 2000) 4 A universe of classes class declaration • One new contribution • A class declaration will – A systematic way of uniquely naming every class – specify any use of inheritance ( next topic ), if nothing invented by any Java programmer on the network! specified then “ extends Object” is implicit – OK, not routinely used; but does provide solution to – define constants (if any) problem of putting together code using class libraries from – specify instance data members ( type, access, initial value ) different sources --- each library could for example define a class List but there would be no confusions because – specify class data members (shared static) when using a List would have to specify its unique name – define instance and class member functions ( Java prefers • Example: edu.vt.cs.cs2704.List the term “methods” ) C++ ‘namespace’ feature provides similar control CS2704 (Spring 2000) 5 CS2704 (Spring 2000) 6 1

  2. class MyCanvas extends Canvas { class declaration Structure s; public MyCanvas() { } public void setStructure(Structure st){ } • A class declaration is a single syntactic unit --- it public void paint(Graphics g){ } must contain the definitions of all member } functions. class Structure extends Object { • No restrictions on order of declaration of different final int kPTSMAX = 100; members of a class. double[] fX = new double[kPTSMAX]; • Each member declaration should include its “access ... specification” ( public, private, protected ) int fNumPts; ( a default value applies if nothing specified, you don’t continue with most recent private int GetCount(BufferedReader input) specification as you do in C++ ) {... } ... } CS2704 (Spring 2000) 7 CS2704 (Spring 2000) 8 static qualifier static qualifier • “static” has same meaning in class declaration • As in C++, static member functions are as it did in C++. invoked via the class ( syntactic difference, use <class name> . <static function name> – a “static” data member is one that is shared by all rather than instances of the class <class name>::<static function name> ) – a “static” member function (method) is one that does not use any data members or only uses static • Example: data members – int Integer.parseInt(String) CS2704 (Spring 2000) 9 CS2704 (Spring 2000) 10 Access controls Access controls • Where C++ distinguished – class, • Java has controls similar to, but not identical – subclasses, to those of C++. – instance, – friends • Access controls depend in part on new Java • Java has concept of a “package” – class, – package --- a group of classes that in some way – other classes in same package, – subclasses in same package, belong together, and whose instances often – other subclasses, interact – instance. • “package” access has some similarities to C++’s friend relations CS2704 (Spring 2000) 11 CS2704 (Spring 2000) 12 2

  3. Packages, files, “modules”, Public Default Protected Private classes, ... instance Yes No No No • File: something that your operating system understands, a unit for editing, Package Yes Yes No No copying etc Subclass Yes Yes Yes No • Module: a unit for compilation ( if C++ then in package typically two files - header and implementation; Other Yes No Yes No for Java it is one file ); so, for Java “ a file is a subclass module ” CS2704 (Spring 2000) 13 CS2704 (Spring 2000) 14 Packages, files, “modules”, Packages, files, “modules”, classes, ... classes, ... • “a file is a module is a class” • If you want your classes to be reusable In practice, that isn’t really appropriate. components, then tempting to think in terms like “ a file is a module is a class ” • Your class List needs an auxiliary Link class • Each file then contains just one class – Although some might want your List class, no one else needs to know about ‘Links’ . – class Queue – Having separate file for Links just complicates life. – class Structure – class MyCanvas • A class like “MyCanvas” really has no – ... prospects of reuse CS2704 (Spring 2000) 15 CS2704 (Spring 2000) 16 Java “module” (file) Example • Generally, a Java module will contain some in List.java: number of auxiliary classes along with a single principal class. public class List { Link link; • A source file can only contain one ‘public’ ... class } – if only one class defined in file, it is public class Link { ... } – otherwise, one and only one class must be declared as public CS2704 (Spring 2000) 17 CS2704 (Spring 2000) 18 3

  4. package package • Java’s packages provide an organizational unit • Typical packages greater than a single file – java.math • Packages provide a defined and therefore clearer model of what we’ve been referring to as “ class • classes for multi-digit arithmetic libraries ” – java.awt – a package is a set of modules, each module defines one • Graphics User Interface classes ( publically known ) class ( and possibly some associated auxiliary classes ) – the classes defined in the different modules in a package “belong together” CS2704 (Spring 2000) 19 CS2704 (Spring 2000) 20 package access package and directory • Just as a file must have the same name as • The awt classes provide examples of where the (principal) class that it contains, the “package” access mechanisms might be • so a package name must match a directory useful name. • GUI classes typically work closely together – windows interact with subwindows and menus etc • The java math classes are all in the “math” – so, there may be places where want a Window to directory which is a subdirectory of the have more access to a Menu than would really “java” directory. wish to allow to an ordinary client CS2704 (Spring 2000) 21 CS2704 (Spring 2000) 22 package and classnames packages and imports • Your classes can specify data members that are • It is this naming convention that provides the basis instances of other classes - specifying qualified class for the scheme that assigns a unique name for name every class. • Unique class name: computer domain name class Communications { ( actually reversed ), pathname down to package java.net.Socket fMySocket; directory, class name. java.net.URL fURL; ... void Setup(String host, String file) { ... fURL = new java.net.URL (“http:”, host, 80, file); ... CS2704 (Spring 2000) 23 CS2704 (Spring 2000) 24 4

  5. packages and imports Example in edu/vt/cs/cs2704/List.java: • An import statement saves you from having to specify such qualified class names package edu.vt.cs.cs2704; public class List { import java.net.URL; ... Link link; class Communications { ... URL fURL; } ... class Link { ... } • You can import individual classes, or all classes in a package (import java.net.*;) import edu.vt.cs.cs2704.List; • If you do manage to import two class URLs from different packages, you will again have to use List l; qualified class names. edu.vt.cs.cs2704.List ll; CS2704 (Spring 2000) 25 CS2704 (Spring 2000) 26 Member functions Java • From C++, you should remember: • Accessors and mutators – accessor functions – not much change from C++ ( except without the • allow code read access to information belonging to an object const tag that C++ can use to flag accessors ) – mutator functions • make changes to an object • Constructors – constructors – Java changes working of overloaded • initialize an object constructors (one can call another, which you can’t – destructors do in C++ --- this() ) • release resources held by an object • Destructor? CS2704 (Spring 2000) 27 CS2704 (Spring 2000) 28 Java & destructors Java & destructors • Destructor • Java has automated garbage collection so it – Which C++ classes had destructors? The is not necessary to explicitly free memory. resource manager classes. – Why did they have them? So that instances • So, “Java doesn’t need destructors.” could free any resources that they had acquired. – What kinds of resources? Most commonly, the resource was memory (heap space used for auxiliary data); other resources were things like files, sockets, ... • But what about other types of resource? CS2704 (Spring 2000) 29 CS2704 (Spring 2000) 30 5

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