Transition from C to Java - PowerPoint PPT Presentation

About This Presentation
Title:

Transition from C to Java

Description:

Transition from C++ to Java Walt Savitch University of California, San Diego wsavitch_at_ucsd.edu Java: even a simple program is not simple. public class Program1 ... – PowerPoint PPT presentation

Number of Views:91
Avg rating:3.0/5.0
Slides: 48
Provided by: WaltSa9
Learn more at: https://cseweb.ucsd.edu
Category:

less

Transcript and Presenter's Notes

Title: Transition from C to Java


1
Transition from C to Java
  • Walt Savitch
  • University of California, San Diego
  • wsavitch_at_ucsd.edu

2
Java even a simple program is not simple.
  • public class Program1
  • public static void main(String arg)
  • System.out.println("Hello World")

3
Some Similarities betweenC and Java
  • Simple (primitive) types int, double, char
  • Control Structures if-else, switch, while, for
  • Arithmetic expressions
  • Both have a string type
    C string, Java String.
  • Arrays
  • Both have classes.
  • Both have a "main".

4
Some Differences betweenC and Java
  • Java has automatic garbage collection. C does
    not.
  • C has operator overloading. Java
    does not.
  • C says "function".
    Java says "method".
  • These require no explanation, unless students
    already know C.

5
More Differences
  • C classes can be avoided. Java classes cannot
    reasonably be avoided.
  • C has built in console I/O. Java has no
    standard console input (but does have standard
    console output.)
  • C and Java divide a program into pieces (for
    separate compilation) in different ways.
  • These require some explanation.

6
C classes can be avoided.Java classes cannot
reasonably be avoided.
7
Every compilation unit in Java is a class. A
program is a class with a method named
mainpublic class Program1 public static
void main(String arg)
8
In Java, every method is a member of some
class.You cannot have a freestanding (global)
function in Java.
9
You can fake a "no classes" program in Java by
making all methods static.
  • But dont do it!

10
A Sample Java Class
11
public class PetRecord private String name
private int age//in years public
PetRecord(String initName,
int initAge) name initName if
((initAge lt 0)) System.out.println("Error"
) else age initAge
12
public void writeOutput()
System.out.println("Name "
name) System.out.println("Age "
age " years")
13
C has built in console I/O.Java has no
standard console input(but Java does have
standard console output.)
14
C has cin, cout, cerrJava has
System.out.print and System.out.printlnbut
NO console input.Solutions?
15
Solutions
  • AP does not require console input.
  • There are classes for console input that are not
    part of Java but written in Javae.g.,
    SavitchIn.readInt()
  • JOptionPane, simple GUI I/O

16
C and Java divide a program into pieces (for
separate compilation) in different ways.
17
C Traditionally has an interface (header)
file, implementation file(s), application
(driver) file.C Can confine a program to a
single file if you want.
18
  • Java A compilation unit is always a class
    definition.
  • Every class is in a separate file (except for
    some special cases).
  • No header files.
  • Normally, you have no one file programs in Java.

19
More Subtle Differences
  • C has pointer types.
  • Java has no pointer types .
  • Assignment () and equality comparison () have
    minor differences.
  • C gives a choice of parameter types.
  • Java No choice of parameter types.
  • Exception handling can be avoided in C
  • Exception handling is needed for some fundamental
    things in Java, e.g. file I/O.

20
Java has no pointer types
  • But Java does have "pointers".
  • In Java class (and array) types are REFERENCE
    TYPES.
  • A reference is a "pointer". All class values in
    Java are handled as references, but it is all
    automatic.
  • In Java primitive types are just like in C.

21
  • In Java a primitive type variable holds values,
    just as in C. int n 42
  • Java a class type variable contains a reference
    ("pointer") to the object (value).
  • However, this is all automatic. There are no
    pointer types as such in Java.
  • PetRecord myDog new PetRecord("Fido", 3)
  • Note that all class objects are created
    dynamically.

22
Assignment () and equality comparison () have
minor differences.
  • On primitive (simple) types, and are the
    same in C and Java.
  • In Java, and on classes (or arrays) are
    comparing references ("pointers"),
  • and you cannot overload (redefine) and in
    Java.

23
Assignment () and equality comparison () have
minor differences.
  • If (n 0) .
  • In C this is probably an error with no error
    message, assuming you meant to use .
  • In Java this generates a compiler error.
  • In Java ints neither are nor can they be type
    cast to Booleans

24
C a choice of parameter types.Java no choice
of parameter types.
  • C Call-by-value
  • void f(int n)
  • C Call-by-reference
  • void f(int n)
  • Other C variants
  • void f(const int n)
  • void f(const int n)

25
C a choice of parameter types.Java no choice
of parameter types.
  • Java all parameters are call-by-value.
  • But, it is almost like there are different
    parameter types for primitive types and classes.

26
Java no choice of parameter types,but
  • All primitive type
  • parameters are automatically call-by-value.
  • public void f(int n)
  • ...
  • All class types are automatically something very
    much like call-by-reference.
  • public void f(String n)
  • ...

27
C a choice of parameter types.Java no choice
of parameter types.
  • Java Full Story
  • In Java primitive types are just like in C.
  • In Java class (and array) types are REFERENCE
    TYPES.
  • A reference is a "pointer". All class values in
    Java are handled as references, but it is all
    automatic.
  • All parameters are call-by-value of a reference.

28
C a choice of parameter types.Java no choice
of parameter types.
  • Java Full Story
  • In Java all parameters are call-by-value.
  • Parameter is a local variable initialized to the
    value of the argument.
  • Primitive types no surprises.
  • Class type (local) variables hold references.
  • Class parameters are call-by-value of a reference.

29
Java no choice of parameter types.
  • public void change(PetRecord r)
  • r.name "FooFoo"
  • This really changes its PetRecord argument.
  • public void change(int n)
  • n 42
  • This does not change its int argument.

30
Java no choice of parameter types.
  • public void change(int n)
  • n 42
  • This does not change its int argument.
  • There is no way to write a Java method that has a
    parameter for an int variable and that changes
    the value of an argument variable.

31
There is no way to write a Java method that has a
parameter for an int variable and that changes
the value of an argument variable.So, how do you
manage to cope?
  • int n computeNewValue()
  • OR use class objects.

32
  • public class Stuff
  • private int n
  • ....
  • public void changeTheN(Stuff s)
  • s.n 42

33
Exception handling can be avoided in
CException handling is needed for some
fundamental things in Java, e.g. file I/O.
  • Solutions
  • AP requirements do not include file I/O.
  • Teach exception handling.
  • Fake it with "magic formulas"

34
AP Exception Requirements
  • Covers exceptions as error messages.
  • Does not cover try/throw/catch.
  • Does not cover throws clause (declaring
    exceptions).

35
Exception handling in Java
  • Fake it with "magic formulas" approach
  • public class TextFileOutputDemo
  • public static void main(String arg)
  • throws IOException
  • PrintWriter outputStream
  • new PrintWriter())
  • outputStream.println("To file")

36
  • public class TextFileOutputDemo
  • //without magic formula
  • public static void main(String arg)
  • PrintWriter outputStream null try
  • outputStream new PrintWriter(
  • new FileOutputStream("out.txt"))
  • catch(FileNotFoundException e)
  • outputStream.println("To file")

37
Style Comparison C/Java
  • Java uses loooong names
  • e.g. FileNotFoundException
  • while C uses some abbreviations
  • Java spelling conventions
  • ClassName, variableName, methodName,LITERAL_NAME
  • Java has an official commenting style
  • javadoc

38
javadoc
  • Extracts an interface from a class definition.
  • May not need full blown details for AP course,
    but be consistent with javadoc.
  • Comments before method headings/
  • javadoc comment style.
  • /

39
Getting a Java CourseOff-the-Ground
  • Need some "magic formulas," but
  • Move to real classes quickly.
  • Do something about console inputadd console
    input classuse JOptionPaneuse magic formulas

40
"Magic Formulas"
  • public class ProgramName
  • public static void main(String arg)
  • means "begin".
  • Use this to explain simple flow of control
    then quickly move to classes and explain what
    this means.

41
Console Input
  • You need to do something.
  • Use SavitchIn or some other console input class
    or
  • Use a very messy magic formula or
  • Explain the formula (still messy) or
  • Use JOptionPane.

42
GUIs (Graphical User Interfaces, i.e., Windowing
Interfaces)
43
GUIs
  • Not part of the AP requirements.
  • Applets Designed to be used over the internet.
    Can be used for ordinary programs, but have some
    problems and no easier than regular windowing
    systems.
  • "Regular Windowing Systems"
  • Swing Library is the latest version.

44
Java Software
  • Java is well standardized. SDK (aka JDK) Java
    compiler is free.
  • java.sun.com
  • Works well with Windows and Unix
  • Want Java 2, version 1.4 or higher
  • (Standard Edition is enough)
  • Mac users have traditionally had limited choices,
    but things are better now.
  • JJ works with all operating systems.

45
Java Software for Mac
  • Good (free?) Java compiler for Mac OS X (Im
    told)
  • http//developer.apple.com/java/
  • Some of the good IDEs for Mac Code Warrior,
    BlueJ.
  • JJ Works for any operating system.

46
IDEs
  • Windows
  • TextPad (shareware) www.textpad.com
  • use with Sun SDK
  • Forte (free) java.sun.com
  • Borland www.borland.com
  • Mac
  • BlueJ (free) www.bluej.org
  • CodeWarrior www.metrowerks.com
  • JJ Works with all operating systems.
  • www. .LearnJavaNow.org/

47
Text Books
  • Lots to choose from.
  • For example,
  • Walter Savitch Java An Introduction to Computer
    Science and Programming,
  • Prentice-Hall.
Write a Comment
User Comments (0)
About PowerShow.com