2. Java Basics
Class – why?
Class Description
Class Fields
Defining Methods
Return Type
Parameters
Constructors
Objects
Using the this Keyword
Complex Numbers (1 of 4)
Complex Numbers (2 of 4)
Complex Numbers (3 of 4)
Complex Numbers (4 of 4)
Exercise 2.4.1.
Step by Step Solution
Step by Step Solution
Class for Complex Numbers
Step by Step Solution
Class for Complex Numbers
Step by Step Solution
Class for Complex Numbers
Class for Complex Numbers
Class for Complex Numbers
Accessors in Eclipse
Step by Step Solution
Class for Complex Numbers
Step by Step Solution
Unit Test for getModule I
Unit Test for getModule II
Step by Step Solution
Class for Complex Numbers
Class for Complex Numbers
Unit Test for getModule
Class for Complex Numbers
Exercise 2.4.1.
Exercise 2.4.2 (1 of 2)
Exercise 2.4.2 (2 of 2)
239.00K
Категория: ПрограммированиеПрограммирование

2. Java Basics. 4. Java Classes

1. 2. Java Basics

4. Java Classes

2. Class – why?

• Classes split application code to parts
(from sophisticated to simple)
• Very often class is a model of an object
from the real world
• Java says: Everything is an object
• Class describes object behaviour
• Class is a type
26.12.2016 1:27
Infopulse Training Center
2

3. Class Description

class name {
// field declarations
// method declarations
}
26.12.2016 1:27
Infopulse Training Center
3

4. Class Fields

• Class fields should be declared inside
class out of all class methods
• Fields can have primitive type, or
reference type such as array or object
• Fields are visible to all instance methods
• Fields are automatically initialized
(reference types with null, number types
with zero, boolean – with false)
26.12.2016 1:27
Infopulse Training Center
4

5. Defining Methods

return_type method_name (parameter_list){
// method body
}
Example:
int getFinalData(int a, int r){
int b = r % 18;
return a * 2 + b;
}
26.12.2016 1:27
Infopulse Training Center
5

6. Return Type

• The return type describes the value that
comes back from the method
• A method can have void return type
• Any method that is not declared void must
contain a return statement with a
corresponding return value
• Return statements for void return type is
not necessary
26.12.2016 1:27
Infopulse Training Center
6

7. Parameters

• Any data type is possible for a parameter of a
method
• Construct varargs is used to pass an arbitrary
number of values (e.g. type... args)
• Varargs can be used only in the final argument
position
• Parameters are passed into methods by value.
• The values of the object's fields can be
changed in the method
26.12.2016 1:27
Infopulse Training Center
7

8. Constructors

• Constructor name should be the same as class
name
• Constructor has no return type
• The compiler automatically provides a noargument, default constructor for any class
without parameters – don’t use this possibility,
declare such constructor explicitly
• A class can have several constructors (with
different sets of parameters)
26.12.2016 1:27
Infopulse Training Center
8

9. Objects

• Creating Object:
class_name object_variable = new construtor_call;
• Declaring a Variable to Refer to an Object:
class_name object_variable;
• Calling an Object's Methods:
object_variable.methodName(argumentList);
26.12.2016 1:27
Infopulse Training Center
9

10. Using the this Keyword

• this is a reference to the current object
• The most common example:
class Point {
int x = 0;
int y = 0;
//constructor
Point(int x, int y) {
this.x = x;
this.y = y;
}
}
26.12.2016 1:27
Infopulse Training Center
10

11. Complex Numbers (1 of 4)

• Is it always possible to solve square
2
ax
bx c 0 within real
equation
numbers set?
26.12.2016 1:27
Infopulse Training Center
11

12. Complex Numbers (2 of 4)

• Is it always possible to solve square
2
equation ax bx c 0 within real numbers
set?
• No, if b 2 4ac 0 it is impossible.
• We can expand real number set to complex
number set introducing new number type complex unit i - in such a way:
i * i = -1
26.12.2016 1:27
Infopulse Training Center
12

13. Complex Numbers (3 of 4)

• Number of a + b * i type where a and b are
real is called complex number.
• Every square equation can be solved
within complex numbers set.
• Moreover, every algebraic equation (with
arbitrary power) always can be solved
within complex numbers set.
26.12.2016 1:27
Infopulse Training Center
13

14. Complex Numbers (4 of 4)

• To add complex numbers use formula
(a1 b1i) (a2 b2i) (a1 a2 ) (b1 b2 )i
• To multiply complex numbers use formula
(a1 b1i) * (a2 b2i) (a1a2 b1b2 ) (a1b2 a2b1 )i
• To find absolute value of complex number
use formula r a 2 b 2
26.12.2016 1:27
Infopulse Training Center
14

15. Exercise 2.4.1.

• Create a class for saving and manipulating
complex numbers.
26.12.2016 1:27
Infopulse Training Center
15

16. Step by Step Solution

1. Check problem definition. If it is clear go
to step 2
2. Create class
3. Describe class fields
4. Create constructors and accessors
5. Create method prototypes
6. Create unit tests
7. Create method bodies
26.12.2016 1:27
Infopulse Training Center
16

17. Step by Step Solution

1. Check problem definition. If it is clear go
to step 2
2. Create class
3. Describe class fields
4. Create constructors and getters/setters
5. Create method prototypes
6. Create unit tests
7. Create method bodies
26.12.2016 1:27
Infopulse Training Center
17

18. Class for Complex Numbers

/**
* Represents complex numbers
*/
class Complex {
}
26.12.2016 1:27
Infopulse Training Center
18

19. Step by Step Solution

1. Check problem definition. If it is clear go
to step 2
2. Create class
3. Describe class fields
4. Create constructors and getters/setters
5. Create method prototypes
6. Create unit tests
7. Create method bodies
26.12.2016 1:27
Infopulse Training Center
19

20. Class for Complex Numbers

class Complex {
/**
* Real part of a complex number
*/
double r;
/**
* Imaginary part of a complex number
*/
double im;
}
26.12.2016 1:27
Infopulse Training Center
20

21. Step by Step Solution

1. Check problem definition. If it is clear go
to step 2
2. Create class
3. Describe class fields
4. Create constructors and getters/setters
5. Create method prototypes
6. Create unit tests
7. Create method bodies
26.12.2016 1:27
Infopulse Training Center
21

22. Class for Complex Numbers

/**
* Default constructor sets complex zero
*/
Complex(){
r = 0.0;
im = 0.0;
}
26.12.2016 1:27
Infopulse Training Center
22

23. Class for Complex Numbers

/**
* Initializes a complex number
* @param r - real part of a complex number
* @param im - imaginary part of a complex
number
*/
Complex(double r, double im){
this.r = r;
this.im = im;
}
26.12.2016 1:27
Infopulse Training Center
23

24. Class for Complex Numbers

double getR() { return r; }
void setR(double value){ r = value; }
double getIm() { return im; }
void setIm(double value){ im = value; }
26.12.2016 1:27
Infopulse Training Center
24

25. Accessors in Eclipse

• Right click in text editor, and select Source >
Generate Getters and Setters .. Menu item
• Check necessary boxes for creating getters
and / or setters, select access modifiers and
click Ok button.
26.12.2016 1:27
Infopulse Training Center
25

26. Step by Step Solution

1. Check problem definition. If it is clear go
to step 2
2. Create class
3. Describe class fields
4. Create constructors and getters/setters
5. Create method prototypes
6. Create unit tests
7. Create method bodies
26.12.2016 1:27
Infopulse Training Center
26

27. Class for Complex Numbers

/**
* Returns module of the complex number
*/
double getModule(){
}
26.12.2016 1:27
Infopulse Training Center
27

28. Step by Step Solution

1. Check problem definition. If it is clear go
to step 2
2. Create class
3. Describe class fields
4. Create constructors and getters/setters
5. Create method prototypes
6. Create unit tests
7. Create method bodies
26.12.2016 1:27
Infopulse Training Center
28

29. Unit Test for getModule I

public class E241TestComplex {
public static void main(String[] args) {
Complex test1 = new Complex();
test1.setR(3.0);
test1.setIm(4.0);
System.out.println("module = " +
test1.getModule());
}
}
26.12.2016 1:27
Infopulse Training Center
29

30. Unit Test for getModule II

public class E241TestComplex {
public static void main(String[] args) {
Complex test1 = new Complex();
test1.setR(3.0);
test1.setIm(4.0);
double res = test1.getModule();
if (res == 5.0){
System.out.println("getModule test is true");}
else{
System.out.println("getModule test failed");}
}
}
26.12.2016 1:27
Infopulse Training Center
30

31. Step by Step Solution

1. Check problem definition. If it is clear go
to step 2
2. Create class
3. Describe class fields
4. Create constructors and getters/setters
5. Create method prototypes
6. Create unit tests
7. Create method bodies
26.12.2016 1:27
Infopulse Training Center
31

32. Class for Complex Numbers

/**
* Returns module of the complex number
*/
double getModule(){
return Math.sqrt(r * r + im * im);
}
26.12.2016 1:27
Infopulse Training Center
32

33. Class for Complex Numbers

Complex add(Complex value){
}
Complex multiply(Complex value){
}
26.12.2016 1:27
Infopulse Training Center
33

34. Unit Test for getModule

public class E241TestComplex {
public static void main(String[] args) {
Complex conjugate1 = new Complex(3.0, 2.0);
Complex conjugate2 = new Complex(3.0, -2.0);
Complex result = conjugate1.add(conjugate2);
r = result.getR(); im = result.getIm();
if ((r == 13.0) && (im == 0.0)){
System.out.println("multiply test 1 is true");}
else{ System.out.println("multiply test 1 failed");}
}
}
26.12.2016 1:27
Infopulse Training Center
34

35. Class for Complex Numbers

Complex add(Complex value){
return new Complex(this.r + value.getR(), this.im + value.getIm());
}
Complex multiply(Complex value){
double rr = this.r * value.getR() - this.im *
value.getIm();
double rim = this.r * value.getIm() + this.im * value.getR();
return new Complex(rr, rim);
}
26.12.2016 1:27
Infopulse Training Center
35

36. Exercise 2.4.1.

• See 241Complex project for the full text
26.12.2016 1:27
Infopulse Training Center
36

37. Exercise 2.4.2 (1 of 2)

• 3D Vector is ordered sequence of 3
numbers (vector’s coordinates):
r ( x1 , x2 , x3 )
• Sum of two vectors
r 1 ( x11 , x12 , x13 )
r 2 ( x21 , x22 , x23 )
is a vector
r r1 r2 ( x11 x21 , x12 x22 , x13 x23 )
26.12.2016 1:27
Infopulse Training Center
37

38. Exercise 2.4.2 (2 of 2)

• Scalar product of two vectors
r 1 ( x11 , x12 , x13 )
r 2 ( x21 , x22 , x23 )
p x11 x21 x12 x22 x13 x23
is a number
• Vector product of two vectors is a vector
r r1 r2 ( x12 x23 x13 x22 , x13 x21 x11 x23 , x11 x22 x12 x21 )
• Vector’s module is a number m x12 x22 x32
• You should create a class Vector3D for
vector saving and manipulating
26.12.2016 1:27
Infopulse Training Center
38
English     Русский Правила