Exercise 1: Intro to Java & Eclipse
• Discussion of exercise solution
– We do not put the exercise solution’s source code online!
– There are sometimes several possible solutions
• Tips for the next exercise
• Remarks about the week’s topic
• Tips about programming tools, libraries, etc.
• ...
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
1
No testat, but exercises are exam material
• Exercises:
– Exercises 1-3:
– Exercises 4-11:
Recomended to do alone
Teams of two are recomended (it is a lot
of work)
• Hand-in (by Email)
– Stefan Stevsic, stefan.stevsic@inf.ethz.ch
– Seonwook Park, spark@student.ethz.ch
– Deadline:
Two weeks after hand-in (there are exceptions)
Assistants may not be able to provide feedback for late submissions
– Ask specific questions
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
2
Today
• Installation of Java + Eclipse
• First steps with eclipse (Demo)
• Hello World in Java
• Vektor-Class
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
3
Installation of Java
• install Java Development Kit (JDK)
– Version 8 aka. 1.8, (versions 1.4 lack features used in this course)
– Windows / OSX: Download from
http://www.oracle.com/technetwork/java/javase/downloads/index.html
– Linux: Installation via Package-Manager (apt-get, Synaptic etc.) or
download from Oracle
• Attention:
– Java Runtime Environment (JRE) is not sufficient: The compiler is missing!
– JRE is part of the JDK.
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
4
Hello World Application in Java
• Enter source in text-editor and save as HelloWorld.java
• Filename must be equal to the class name.
public class HelloWorld {
public static void main(String args[]) {
System.out.println(”Hello World!”);
}
}
HelloWorld.java
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
5
Hello World Programm in Java
• Name of the class: “HelloWorld”
• Application entrance point: main(…)
– The Java Virtual Machine (VM) searches the static method
“static void main(String[])“ within the class that was given to the
java command.
– Array args contains the command line arguments.
public class HelloWorld {
public static void main(String args[]) {
System.out.println(”Hello World!”);
}
}
object method
class
‘System’ static field (class variable)
public
visibility (all)
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
6
Start java from the command line
• The Java VM (java.exe) as well as the compiler (javac.exe) can be
started from the console:
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
7
Extend the searchpath (Windows)
• The ‘bin’ directory of the JDK must be in the PATH environment
variable: Unter : My Computer Properties
extend Path (append)
“;C:\<INSTALLATION-DIRECTORY>\Java\jdk1.8.0_121\bin;”
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
8
Eclipse – IDE
• Download:
http://www.eclipse.org/downloads
recomended
24 February 2017
• Eclipse is an open-source
framework, primarlily used
as a Integrated
Development Environment
(IDE)
• Eclipse is modular and can
be extended by plugins
• Eclipse is available in
several packages (different
set of pre-installed plugins)
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
9
Eclipse – Workspaces
• Workspace: Contains the projects
• Where is my workspace? Shown at startup
– It is possible to have several workspaces
Hides this dialog in the future.
Can be changed later in:
Window Preferences General Startup and Shutdown
Workspaces Prompt for workspace on startup
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
10
Eclipse
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
11
Eclipse
• Execute Application
– Icon
or:
– Run As => Java Application in contextmenu of Hello.java
• Helpers while coding:
– Code formatting: CTRL+SHIFT+F
– Code Completion: CTRL+SPACE
– Refactoring: Renaming of methods, classes, fields, incl. changing of all
references.
– a lot more...
24 February 2017
Stefan Müller· Software Design – Übungsstunde · Frühlingssemester 2012
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
12
Documentation
• Complete Java Documentation:
– http://docs.oracle.com/javase/8/docs/
• Documentation of all Classes that come with java
– http://docs.oracle.com/javase/8/docs/api/
• Tooltips in Eclipse:
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
13
Java Coding Style
• Guideline for Java-Programming style
–
–
–
–
Increases readability of the code
80% of software cost is from maintenance
Code usually is not maintained by the original author
Makes it easier for assistantsto read
• „Code Conventions for the Java Programming
Language“
http://www.oracle.com/technetwork/java/codeconv-138413.html
– Used by almost all professional java developers
• Automatic in Eclipse : Source Format
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
14
Some Code Conventions
• Package names are lower-case (e.g. ch.ethz.inf.sd.math)
• Classes start with an upper-case letter (e.g. Complex)
• Java Files are named after the public class they contain. UNIX-like
operating systems are case sensitive!
• Static constants are written all upper-case.
• Fields and methods start with a lower-case letter.
• Seperation of words by an upper-case letter:
get_first_element()
• Brackets:
void foo()
{
if (x>y)
{
}
else
{
}
}
getFirstElement()
void foo() {
if (x>y) {
} else {
}
}
• Indent code blocks
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
15
Console output of objects
• Output of primive types (int, float, double, usw.)
int a, b;
...
System.out.println(a+b*3.0);
Result appears in
console
• Output of objects by converting them to strings:
Foo foo = new Foo();
System.out.println(foo);
24 February 2017
Output:
Foo@82ba41
(Classe+hash value)
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
16
A class for vector operations
• Encapsulation: Class “Vector” capsulates vector operations in
R3
• Possible operations (not complete):
–
–
–
–
–
–
–
Constructors: Construct vector from the three components
R3 x R3 R3 : addition, subtraction
R3 x R R3 : scaling
R3 R : norm
getter and setter methods for the individual components.
normalizing
Output as string
• Source code available online after the exercise
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
17
Basic structure
public class Vector {
private double x, y, z;
public Vector(double x, double y, double z) {
this.x = x; this.y = y; this.z = z;
}
// ...
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public void add(Vector v) {
x+=v.x; y+=v.y; z+=v.z;
}
// ...
also possible:
public Vector add(Vector v) {
return new Vector(x+v.x,
y+v.y, z+v.z);
}
}
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
18
How to use the vector class:
• The class VectorTest uses Vector
public class VectorTest {
public static void main(String args[]) {
Vector a = new Vector(3.0, 1.0, 5.0);
Vector b = new Vector(1.0, 0.0, 0.0);
a.add(b);
System.out.println(a.getX());
}
}
24 February 2017
(C) Hochschule für Technik
Fachhochschule Nordwestschweiz
19