Presentation is loading. Please wait.

Presentation is loading. Please wait.

Applications Development Objects in Java Key concepts and metaphors Implicit subclassing Static methods Constructors Instance.

Similar presentations


Presentation on theme: "Applications Development Objects in Java Key concepts and metaphors Implicit subclassing Static methods Constructors Instance."— Presentation transcript:

1 N.A.Shulver@staffs.ac.uk Applications Development Objects in Java Key concepts and metaphors Implicit subclassing Static methods Constructors Instance variables Dangers of uninitialised object references

2 N.A.Shulver@staffs.ac.uk Applications Development Metaphors - inheritance A small UK company (Watsonian Squire Ltd) imports “Royal Enfield” motorcycles from India where they are still in productionWatsonian Squire Ltd The basic design has not changed substantially since 1949! The UK company does two things: checks the imported bikes and sells them on directly or modifies the bikes into “Clubman” and “Trailie” styles by changing some components

3 N.A.Shulver@staffs.ac.uk Applications Development Metaphors - inheritance The company obtains an instance of a “basic motorcycle” superclass object and can use it directly… or it can subclass the object and “override” a feature by providing a new or modified part or function This would not be possible without the cooperation of the Indian factory. The style of the motorcycle is not final.

4 N.A.Shulver@staffs.ac.uk Applications Development What about a simple object? To subclass we do this: public class Spoon extends Cutlery {.. } But what does this do? public class TaxCalcLib { … } Any class definition with no explicit extends clause is inheriting from java.lang.Object This provides the bare minimum framework for a class to function

5 Structure of a simple class import java.net.*; public class HostName {public static void main(String[] args) {InetAddress iaLocal; try {iaLocal = InetAddress.getLocalHost(); System.out.println(“Name:" + iaLocal.getHostName()); } catch (UnknownHostException e) {System.err.println("Don't know about local host"); System.exit(0); } }// end of class HostName

6 N.A.Shulver@staffs.ac.uk Applications Development Static methods Note that the example program is part of an object called “HostName” Thus the filename must be HostName.java But how does the object get instantiated? Surprise - it doesn’t! The example uses a static method (code that’s part of the class, not the object)

7 Object instantiation public class Egg {private String myColour; public Egg(String sEggColour)// NB no return type! { myColour = sEggColour; } public Egg() // NB no return type! { myColour = “Orange”; } public static void main(String[] args) {Egg e1 = new Egg(“Green”);// create some objects… Egg e2 = new Egg(); // what colour is this? Egg e[] = new Egg[6];// no objects created here! … } }// end of class Egg

8 N.A.Shulver@staffs.ac.uk Applications Development Constructors A “constructor” is an initialisation method It runs when a new object is created A class may define many object constructors Each constructor differs only in its input parameters All methods can have multiple “flavours” However, unlike other methods, constructors have no return type

9 public class Egg {private String myColour;// each instance gets its own copy public Egg(String sEggColour) {myColour = sEggColour; } public Egg() { myColour = "Orange"; } public void reportColour() {System.out.println(myColour); } public static void main(String[] args)// static – all eggs share this {Egg e1 = new Egg("Green");// green egg Egg e2 = new Egg();// orange egg Egg e[] = new Egg[6];// six references to eggs // … e1.reportColour();// should be green e2.reportColour();// should be orange e[0].reportColour();// runtime error – no eggs here yet } }// end of class Egg

10 N.A.Shulver@staffs.ac.uk Applications Development Comment on the examples The idea of using a static method of a class to instantiate objects of the same type is common practice (e.g. in small programs, for testing) It seems counter-intuitive to some people A clear separation between the concepts of static, class-based code and dynamic, object-based code …helps us gain a better perspective

11 N.A.Shulver@staffs.ac.uk Applications Development Conclusion We have seen: some of the concepts and language associated with object-orientation some practical issues of program structure, including the use of static methods constructors and their use


Download ppt "Applications Development Objects in Java Key concepts and metaphors Implicit subclassing Static methods Constructors Instance."

Similar presentations


Ads by Google