1 / 46

A Quick Java Course part 1

A Quick Java Course part 1 . Michael McDougall CIS 573 September 27 th , 1999. Outline. State the purpose of the discussion A Java Review/Introduction <- today’s lecture Java tips & tricks Programming for GUI Applications Identify yourself Michael McDougall

jkline
Télécharger la présentation

A Quick Java Course part 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A Quick Java Coursepart 1 Michael McDougall CIS 573 September 27th, 1999

  2. Outline • State the purpose of the discussion • A Java Review/Introduction <-today’s lecture • Java tips & tricks • Programming for GUI Applications • Identify yourself • Michael McDougall • 1 yr programming in Industry in C++ • ~8 months programming in Java for Mocha project. • My 1st Powerpoint presentation! Bear with me.

  3. Good References • The Java Programming LanguageSecond Edition. Ken Arnold & James Gosling, Addison Wesley, 1998. Good for basics. • http://www.javasoft.comJava software, news, documentation • http://www.javasoft.com/products/jdk/1.2/docs/index.html Documentation for the vast libraries.

  4. What is Java? • An island in Indonesia (beyond the scope of this lecture). • A programming language. • Imperative (like C or Pascal). • Object Oriented (like C++) • Goal: Portable and Safe (unlike C)

  5. Java Virtual Machine (JVM) • Java gets compiled into bytecode • Bytecode is like machine-code but runs on a Java Virtual Machine (instead of Pentium, Sparc etc.) • Goal: Programs compiled to bytecode will run on any machine that has a JVM program.

  6. JVM Continued javac runs on Java file bytecode JVM runs on compiler compiler FASTER gcc runs on Pentium Chip machine code C file

  7. How to use Java - Preliminary • Make sure ‘javac’ and ‘java’ are available on whatever system you are using. • On gradient or saul you should set your path to include /pkg/java-1.2.2/bin/

  8. How to use Java • Write a program and save it in a ‘.java’ file. (tip: emacs has a nice Java mode) Example: MyProgram.java • Compile by typing: %javac MyProgram.java • Run the program: %java MyProgram

  9. Example 1: MyProgram.java class MyProgram { public static void main(String[] arg) { String message = "Hello!"; System.out.println(message); } }

  10. Example 1 cont. C:\School\cis573>javac MyProgram.java C:\School\cis573>java MyProgram Hello! C:\School\cis573>

  11. Variables • Variables are similar to C variables • Examples: int x = 3; // integer with initial value int y; // integer, no initial value boolean b = true; y = x + x; if (b) { y = 5; }

  12. Arrays • Java has arrays which are similar to arrays in C. • Indexes begin at 0 int[] intArr = new int[2]; intArr[0] = 3; intArr[1] = 5 + intArr[0]; String[] names = new String[100]; names[45] = “Software”;

  13. Loops and Ifs • The syntax for control flow is similar to C. if (x==y) {...} if (x==y) {...} else {...} while (x!=y) {...} for (int i=0; i < 50 ; i++) {...} do {...} while (x!=y);

  14. Switch • Java has a switch statement which is like the C switch statement. switch (x) { case 0: s=“zero”; break; case 1: case 2: s=“1 or 2”; break; default: s= “unknown”; }

  15. Classes • Java programs are structured using Classes • Each class contains fields (a set of variables) and methods (a set of functions). • All procedures in Java must belong to a class. • A class can control access to its fields and methods using public and private keywords in the declarations (more later). • An object is an instance of a class.

  16. Class Fields • class Point { public int x; public int y; } • class Prog2 { public static void main(String[] arg) { Point p = new Point(); //create a Point p.x = 2; p.y = p.x + 1; } }

  17. Class Methods class Foo { public int twice(int x) { return (x+x); } } ... Foo f = new Foo(); //create a Foo object int count = f.twice(5); //set count to 10 //using f’s methods ...

  18. Subclasses • Classes can be extended by another class. • If a class B extends a class A then we say that B is a subclass of A. A is the superclass of B. • A subclass can be used wherever the class can be used. • The subclass inherits the fields and methods of the superclass (well, some of them).

  19. Subclasses example 1 • Class Point { public int x; public int y; } • Class BoolPoint extends Point { public boolean b; }

  20. Subclasses example 2 ... BoolPoint boolP = new BoolPoint(); boolP.b = true; //we can use the b field boolP.x = 5; //AND the x & y fields boolP.y = 7; ...

  21. Subclasses example 3 • We can use a BoolPoint whenever we use a Point... ... Point p = new BoolPoint(); p.x = 4; p.y = 8; ...

  22. Subclasses example 4 • But we can’t use a Point in place of a BoolPoint (it has no ‘boolean b’ field). ... BoolPoint boolP = new Point(); // BAD - will not compile ...

  23. Overriding methods • If a subclass has a method with the same name as a method in the super class then the subclass method is the one that gets executed. • We say that the subclass method overrides the super class method.

  24. Overriding: example class A { public String getName() { return “A!”; } } class B extends A { public String getName() { return “B!”; } }

  25. Overriding example cont. A a = new A(); //create an A object System.out.print(a.getName()); //Prints “A!” a = new B(); //create a B object System.out.print(a.getName()); //Prints “B!”

  26. The Object Class • In fact, all Java classes are subclasses of a special class called Object. • The Object class contains some simple methods like clone(), equals() and toString().

  27. Subclasses are nice • Subclasses allow you to add functionality to pre-existing code without copying it or modifying the original code. • Subclasses allow a limited form of polymorphism. public genericPrint(Object arg) { String msg = arg.toString(); System.out.print(msg); }

  28. Hiding Methods and Fields • Access to fields and methods can be restricted by using private and protected declarations. • Allows classes to be treated as ‘black-boxes’; the messy details of a class’ implementation is hidden.

  29. Public, Private, Protected • public - visible to all classes • protected - visible to all subclasses, hidden from other classes • private - hidden from all other classes. • Good Style: never set fields to be public; always require the programmer to call a method to access data in a class.

  30. Public, Private, Protected example class List { public void insert(int i) { ... }; private void setNewCell(Cell c) {...}; protected int getSize() { ... }; } class ExtList extends List { public void foo() { insert(3); //OK setNewCell(c); //not allowed int x = getSize(); //OK } }

  31. Public, Private, Protected example continued Class Prog5 { public static main() { List bunch = new List(); bunch.insert(3); // OK bunch.insertNewCell(c); //not allowed int i = bunch.getSize(); //not allowed } }

  32. Constructors • When you create a new object using new you often want to initialize it using particular values. • Constructors are methods that create new objects of a class. • Example: when we create a Point we should be able to set the x and y fields during the creation.

  33. Constructor example Class Point { public int x; public int y; public Point(int xArg, int yArg) { x = xArg; y = yArg; } } ... Point p = new Point(43,21); int sum = p.x + p.y; //sets sum = 64 ...

  34. Arrays and Classes • You can declare and use arrays of classes just as you would for integers. ... Point[] pointArr = new Point[10]; pointArr[0] = new Point(1,5); pointArr[1] = new BoolPoint(4,5); int sum= pointArr[0].x + pointArr[0].y; ...

  35. Null • Any class variable can be set to null. • An exception gets raised if you try to use a variable that is null (more on exceptions later). Point p = new Point(2,5); int sum = p.x + p.y; p = null; sum = p.x + p.y; // this will raise an exception

  36. Interfaces • An interface is a list of methods and fields • A class which implements the interface must contain all of the methods and fields listed. • Interfaces allow a class to have more than one superclass. • Interface types can be used just like class types; we can use them for variables, arrays, etc.

  37. Interface example • interface PhdStudent { public Prof getAdvisor(); } • Class CISPhdStudent implements PhdStudent { private Prof myBoss; public Prof getAdvisor() { return myBoss; } }

  38. Interface example cont • PhdStudent[] phdArr = new PhdStudent[5]; phdArr[2] = new CISPhdStudent(); Prof pr = phdArr[2].getAdvisor();

  39. Why Interfaces? • Q: Why do we bother with interfaces? Why don’t we always extend classes? • A: Sometimes it isn’t appropriate to put all the functionality in one superclass.

  40. This slide took me 8 hours to draw! Why Interfaces? example Student superclass Phd Student CIS Student English Student subclass CIS Phd Student CIS Undergrad Student English Phd Student English Undergrad Student

  41. Casting 1 • Subclasses have more functionality than their superclasses. What if we want to use that functionality even if we only have an object of the superclass type? • Example: Say we have a Student object and we want to use it as a CISStudent.

  42. Casting 2 • In general we can’t force a Student to be a CISStudent (it might be an EnglishStudent), but if we know that a Student object is actually a CISStudent we can cast the Student. • Student s = new CISStudent(); CISStudent cis = (CISStudent) s;

  43. Casting & instanceof • If you try to cast something that can’t be casted (e.g. cast an EnglishStudent to CISStudent) then an exception will be raised (more on exceptions later, I promise). • You can check if an object is of a certain class by using instanceof.

  44. Instanceof example String getBuilding(Student s) { if (s instanceof CISStudent) { return “Moore Bldg”; } else if (s instanceof EnglishStudent) { return “Bennett Hall”; } }

  45. Instanceof example 2 • To avoid getting exceptions when you cast you should check an object using instanceof before you cast: CISStudent cis; if (s instanceof CISStudent) { cis = (CISStudent) s; }

  46. Garbage Collection • Java uses garbage collection for memory management (like ML, Scheme). • Programmer does not have to worry about memory leaks or pointers. BigStructure b; //BAD in C, OK in Java for (int i = 0; i < 1000 ; i++) { b = new BigStructure(); }

More Related