JAVAPROGRAMING
CHAPTER-I
INTRODUCTION
- What is Java?
- Java is computer high level programming language
- Java is object oriented programming language
- Java is relate to C++
- Java is platform independent
- The reason that make up Java because of using C++ is very complicated
- History
- Java was conceived by James Gosling, Patrick Naughton, Chris Warth, Ed Frank, and Mike Sheridan at Sun Microsystems, Inc. in 1991. It took 18 month to develop the first working version. This language was initially called “Oak” but was rename “Java” in 1995.
- Between the initial implementation of Oak in the fall of 1992 and the public announcement of Java in the spring of 1995, many more people contributed to the design and evolution of the language.
- Versioning
- Java v.1.0
- Java v.1.1
- Java v.1.2
- Java v.1.3
- Java v.1.4
- Java v.1.5
- Java v.1.6
Year 2,
Semester 2,
08th January, 2011,
Java Programming,
Taught by: teacher MAM Pahnavuth,
Java
Programming
ទិដ្ឋភាពទូទៅស្តីអំពី Java
Q: តើរៀន Java
ដើម្បីអ្វី?
A: រៀន Java ដើម្បីបង្កើតកម្មវិធី (Program)។ (www.sun.com)
Q: ចុះរៀន C++ ដើម្បីអ្វី?
A: រៀន C++ ដើម្បីបាន Concepts ជាមូលដ្ឋានក្នុងការបង្កើតកម្មវិធី។
របៀបតំឡើង Java
- ត្រូវ Install JDK (Java Development Kit) មុនព្រោះវាជា Compiler សំរាប់ Java
- បន្ទាប់មកត្រូវ Install NetBeans ព្រោះវាជា File សំរាប់សរសេរ Code ។ File NetBeans មាន ច្រើន Versions ដូចជា៖


Chapter
1
Datatype and Variable
1. Datatype


-
Integer number : ជា Datatype អាចផ្ទុកលេខគត់ធម្មជាតិរួមមាន៖
byte, short, int, long ។
-
Floating-point number : ជា Datatype អាចផ្ទុកលេខទសភាគរួមមាន៖
float, double ។
-
Character : ជា Datatype អាចផ្ទុកតួរអក្សរ ឬតួរលេខរួមមាន៖
char
-
Boolean : ជា Datatype អាចផ្ទុកពីរពាក្យ គឺ true ឬ false រួមមាន៖ boolean
។
1.1.
Integer
number
Datatype Size Range
byte 1 byte -
128 to 127
short 2 bytes -
215 to 215 -1
int 4 bytes - 231 to 231 -1
long 8 bytes -
263 to 263 -1
1.2.
Floating-point
number
Datatype Size Range
float 4 bytes 3.4e-38 to 3.4e+38
double 8 bytes 1.7e-308 to 1.7e+308
Q: តើ 3.4e+38 មានន័យដូចម្តេច?
A: 3.4e+38 មានន័យថា 3.4 x 1038 ។
1.3.
Character
Datatype Size Range
char 2 bytes 0 to 65, 536 តំណាងឲ្យចំនួនតួរអក្សរ

1.4.
Boolean
Datatype Size Range
boolean 1 byte true or false
ឧទាហរណ៍៖

b = true;

// b = true
Output លើ Console
ឧទាហរណ៍៖
boolean b;
b=false;
if(b)
System.out.println(“It
is OK”);
else
Sytem.out.println(“Not
OK”);
ឧទាហរណ៍៖
int
a=10;
int
b=20;
boolean x;
x=a>b;
if(x)
System.out.println(“Max
is A”);
else
Sytem.out.println(“Max
is B”);

ឧទាហរណ៍ទី១៖
String stName;
stName = “Sok Rotha”;
System.out.print(“Hi!, ”+stName);
ឧទាហរណ៍ទី២៖
String st1 = “Java”;
String st2 = “Programming”;
String st = st1 + “ ” +st2;
System.out.print(“st = ” +st);
// st = Java Programming
ឧទាហរណ៍ទី៣៖

String a = “1”;
String b = “2”;

System.out.print(“Sum = ”+sum);
// Sum = 12
ឧទាហរណ៍ទី៤៖
int a = 1;
String b = “2”;
String sum = a + b;
System.out.print(“Sum = ”+sum);
// Sum = 12
ឧទាហរណ៍ទី៥៖
int a = 1;
int b = 2;
String sum =””+ (a + b);
System.out.print(“Sum = ”+sum);
// Sum = 3
2.
Variables
គឺជាអញ្ញាត ឬអថេរប្រើសំរាប់ផ្ទុកទិន្នន័យបណ្តោះអាសន្ន។
នៅក្នុងភាសា Java ដើម្បីបង្កើត VariableName មួយ វាគឺត្រូវបានផ្សំឡើងដោយ៖
-
តួអក្សរពី a → z ឬ A → Z
-
ឬក៏អាចផ្សំជាមួយតួអក្សរពី 0 → 9
-
ហើយអាចប្រើនិមិត្តសញ្ញាបានតែមួយប្រភេទគឺ Underscore
( _ )
ឧទាហរណ៍៖
int age;
long ID;
float price;
char ch1;
double total_price;

ឧទាហរណ៍៖
int age=18; → Initialization
int age; → Declaration
age=18; → Assignment (ដូច C++
100%) លើកលែងតែ float
។

x = 2.5;

y = 2.5f;

4 bytes<8 bytes
The End!
Chapter
2
Control
Statement
1.
Overview
នៅក្នុងភាសា Java យើងបែងចែក Control Statement ជា 3 ក្រុម៖
-
Selection Statements ៖ ជា Statement ប្រើសំរាប់ជ្រើសរើស Statement មួយ ឬច្រើន ដើម្បី execute រួមមាន៖ if-else,
switch ។
-
Loop Statements ៖ ជា Statement ប្រើសំរាប់ execute សារទៅសារមករហូតជួបលក្ខ
ខណ្ឌមិនពិត រួមមាន៖ while, do
while និង for ។
-
Jumping Statements ៖ ជា Statement ប្រើសំរាប់ execute រំលងទៅ Statement ផ្សេង ទៀត ដោយគ្មានលក្ខខណ្ឌ
រួមមាន៖ break , continue និង return ។
2.
Selection
Statement
2.1.
if-else
ជា statement មួយ មានតួនាទីដាក់លក្ខខណ្ឌឲ្យ statement ផ្សេងទៀត ប្រសិនបើ
លក្ខ ខណ្ឌរបស់ if ពិត statements ទាំងអស់របស់ if ត្រូវបាន execute
តែបើមិនពិត
statements ទាំងអស់របស់ else ត្រូវបាន execute ។
ទំរង់ = Form :
if(condition){
statement(s);
}else{
Statement(s);
}
ឧទាហរណ៍៖
int a = 0;
if(a>0)
System.out.print(“A is positive.”);
else if(a<0)
System.out.print(“A is negative.”);
else
System.out.print(“A is zero.”);
Homework:
ចូរសរសេរ Program មួយ ដើម្បីគណនារកប្រាក់ខែរបស់កម្មករក្នុងរោងចក្រមួយ។
-
កម្មករត្រូវធ្វើការឲ្យបាន 100 ម៉ោង/ខែ នឹងទទួលប្រាក់ខែបាន
50 ដុល្លារ
-
ក្នុងករណីដែលកម្មករបានធ្វើការច្រើនម៉ោងលើសការកំណត់ ចាប់ពី 1 ម៉ោងដល់ 20 ម៉ោង នោះទទួលប្រាក់បន្ថែមបាន 1.25 ដុល្លារ/ម៉ោង
-
ក្នុងករណីដែលកម្មករបានធ្វើការច្រើនម៉ោងលើសការកំណត់ លើសពី 20 ម៉ោងឡើង ទៅ នោះទទួលប្រាក់បន្ថែមបាន 1.5 ដុល្លារ/ម៉ោង
-
ក្នុងករណីដែលកម្មករបានធ្វើការតិចជាងម៉ោងដែលបានកំណត់ នោះនឹងកាត់ប្រាក់ខែ
0.5 ដុល្លារ/ម៉ោង។
ចូរបង្ហាញរបាយការណ៍កម្មករ។
Enter Total Time = 118
-
Extra time1 = 18
-
Extra time2 = 0
-
Bonus rate1 = $ 1.25/h
-
Bonus rate2 = $ 1.5/h
-
Bonus Salary =(Extra time1 * Bonus rate1)+
(Extra time2 * Bonus rate2)
-
Basic Salary = $50
-
….……………………..…………
-
Total Salary = Basic Salary + Bonus Salary
Enter Total Time = 80
-
Basic Salary = $50
-
Lost rate = $0.5
-
Lost Salary =(100-
Total Time)*Lost rate
-
…………………………………………………………..
-
Total Salary =Basic
Salary – Lost Salary
2.2.
switch
Switch statement ជា statement មួយប្រើសំរាប់ជ្រើសរើស
Statement ផ្សេងៗទៀត ដើម្បី Execute ហើយ Execute ចាប់ពីករណីពិតចុះមកក្រោម។
Form: ទំរង់
switch
(expression){
case value1:
statement(s);
case value2:
statement(s);
case value3:
statement(s);
default:
statement(s);
}
ឧទាហរណ៍ទី១៖
char ch = ‘R’;
switch(ch){
case ‘R’:
System.out.print(“Red”);
break;
case ‘G’:
System.out.print(“Green”);
break;
case ‘B’:
System.out.print(“Blue”);
break;
default:
System.out.print(“Unknown
color”);
}
3.
Loop
Statement
ប្រើសំរាប់ execute statements មួយ ឬច្រើន សារទៅសារមករហូតទាល់
តែជួបលក្ខខណ្ឌមិនពិត។
3.1.
while
ជា Loop ដែលចាំបាច់ត្រូវផ្ទៀងផ្ទាត់ជាមុនសិន ទើប execute statement របស់វា។
Form :
while(condition){
statement(s);
}
ឧទាហរណ៍ទី១៖
int i = 1;
while(i<=5){
System.out.print(i + “ , ”);
i++;
}
// 1, 2, 3, 4, 5,
ឧទាហរណ៍ទី២៖
int i = 5;
while(i>=1){
System.out.print(i + “ , ”);
i-- ;
}
// 5, 4, 3, 2, 1,
3.2.
do
while
ជា Loop
ចាំបាច់ execute
statements ជាមុន ទើបផ្ទៀងលក្ខខណ្ឌ ជាក្រោយ។
Form:
do{
statements;
}while(condition);
ឧទាហរណ៍ទី១៖
int i = 1;
do{
System.out.print(i
+ “ , ”);
i++;
}while(i<=5);
//1,2,3,4,5.
ឧទាហរណ៍ទី២៖
int i = 5;
do{
System.out.print(i
+ “ , ”);
i--;
}while(i>=1);
//5,4,3,2,1
3.3.
for ជា Loop មួយដែលមានលក្ខណៈពិសេសជាង
Loop ដទៃ ព្រោះនៅក្នុង Expression របស់វាមាន 3 statements ដោយ statements ទាំង 3 នេះមានតួនាទីដូចជា៖
- Initialization: ជា Statement មួយប្រើសំរាប់កំណត់តម្លៃចាប់ផ្តើមរបស់ Loop ហើយ statement នេះ execute តែម្តងគត់សំរាប់មួយជីវិតនៃ Loop។
- Condition:
ជា Statement មួយប្រើសំរាប់ដាក់លក្ខខណ្ឌឲ្យ
Loop
- Step:
ជា Statement
ប្រើសំរាប់កំណត់ជំហានរបស់
Loop។
Form:
for(initialization;
condition; step){
statements;
}
ឧទាហរណ៍ទី១៖
for(int i=1; i<=5; i++)
System.out.print(i
+“ , ”);
// 1, 2, 3, 4, 5,
ឧទាហរណ៍ទី២៖
for(int i=5; i>=1; i--)
System.out.print(i
+ “ , ”);
// 5, 4, 3, 2, 1,
4. Jumping statement ៖ ជា statement មួយប្រើសំរាប់ execute រំលងទៅកាន់ statement ផ្សេង មួយទៀតដោយគ្មានលក្ខខណ្ឌ។
4.1. Break statement ៖ ជា statement មួយប្រើសំរាប់ចាកចេញពី switch ឬពី Loop។
ឧទារហរណ៍៖
for(int i=1;
i<=1000; i + +){
System.out.print(i
+“ , ”);
if(i
= = 5)
break;
}
// output: 1, 2, 3, 4, 5,
4.2. Continue statement ៖ ជា statement មួយប្រើសំរាប់ចាកចេញពីរំលង1ជុំ
នៃ Loop។
ឧទារហរណ៍៖
for(int i=1; i<=1000; i + +){
if(i = = 5)
continue;
System.out.print(i +“ , ”);
}
// output: 1, 2, 3, 4, 6,7……,1000,
4.3.Return statement ៖ ជា statement មួយប្រើចាកចេញពី Sub-Program (Method)
The End!
Code receive data from
Keyboard:
import java.util.Scanner;
public class Maximum{
public static void main(String
arg[ ]){
Scanner cin=new
Scanner(System.cin);
float a, b;
System.out.print(“A = ”);
a=cin.nextFloat();
System.out.print(“B = ”);
b=cin.nextFloat();
if(a>b)
System.out.print(“Maximum
is ”+a);
Else
System.out.print(“Maximum
is ”+b);
}
}
Chapter
3
Array
Q. What
is array?
A. Array គឺជាបណ្តុំ Variables ដែលមានឈ្មោះដូចគ្នា
និង Datatype ដូចគ្នា ហើយពួកវាខុស គ្នាដោយ Index ។
1.
One
dimensional array
One dimensional array គឺសំដៅលើ Array មួយវិមាត្រ។
Datatype arrayName[ ] = new Datatype[elements];
ឧទាហរណ៍៖
int
a[ ] = new int[5];
a[0]
|
a[1]
|
a[2]
|
a[3]
|
a[4]
|
ចំណាំ៖
ក្នុងភាសា Java យើងអាចបង្កើត array n ធាតុបាន ដោយសារតែចំនួន
elements របស់វា យើងអាចប្រើ
Variable ជំនួសបាន។
ឧទាហរណ៍៖
int n;
n=cin.nextInt();
int a[]=new int[n];

public class InputArrayN{
public static void main(String arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter n = ”);
n=cin.nextInt();
int a[]=new int[n];
System.out.println(“Now, you can enter ”+n+“ values”);
for(int i=0; i<n; i++){
System.out.print(“Enter a[“+i+”] = ”);
a[i] = cin.nextInt();
}
System.out.println(“Now, you can display ”+n+“ values”);
for(int i=0; i<n; i++)
System.out.println(“a[“+i+”]
= ”+a[i]);
}
}

public class Max{
public static void main(String []arg){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter number of elements = ”);
n=cin.nextInt();
int a[]=new int[n];
System.out.println(“Now, you can enter ”+n+“ values”);
for(int i=0; i<n; i++){
System.out.println(“Enter a[“+i+”] = ”);
a[i]=cin.nextInt();
}
int max;
max=a[0];
for(int i=1; i<n; i++)
if(max<a[i])
max=a[i];
System.out.println(“Maximum is ”+max);
}
}

public class Main{
public static void main(String arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter number of elements = ”);
N=cin.nextInt();
int a[]=new int[n];
System.out.println(“Now, you can enter ”+n+ “ values”);
for(int i=0; i<n; i++){
System.out.print(“Enter a[“+i+”] = ”);
a[i]=cin.nextInt();
}
for(int i=0; i<n-1; i++)
for(int j=1+i; j<n; j++)
if(a[i]>a[j]){
int temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
for(int i=0; i<n; i++)
System.out.println(“[“+i+”] = ”+a[i]);
}
}

public class Main{
public static void main(String arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter number of elements = ”);
n=cin.nextInt();
int a[]=new int[n];
System.out.println(“Now, you can enter ”+n+ “values”);
for(int i=0; i<n; i++){
System.out.println(“Enter a[“+i+”] = ”);
a[i]=cin.nextInt();
}
int Search;
System.out.print(“Enter number you need to Search = ”);
Search=cin.nextInt();
System.out.print(“Index”);
boolean b=false;
for(int i=0; i<n; i++)
if(a[i]==Search){
b=true;
System.out.print(i+“,”);
}
if(b==true)
System.out.print(“Found in array.”);
else
System.out.print(“Not found in array.”);
}
}

public class Main{
public static void main(String arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter number of elements = ”);
n=cin.nextInt();
int a[]=new int[n];
System.out.println(“Now, you can enter ”+n+ “ values.”);
for(int i=0; i<n; i++){
if(i==0){
System.out.print(“Enter a[“+i+”] = ”);
a[i]=cin.nextInt();
}else{
System.out.print(“Enter a[“+i+”] = ”);
boolean b=false;
int value;
value=cin.nextInt();
for(int j=0; j<i; j++)
if(a[j]==value){
System.out.println(“Number already exist.”);
b=true;
break;
}
if(b==false)
a[i]=value;
else i--;
}
}
System.out.println(“Now, you can display ”+n+ “ values”);
for(int i=0; i<n; i++)
System.out.println(“a[“+i+”]=
”+a[i]);
}
}
*Add new Elements to Array
import java.util.Scanner;
public class AddNewElements {
public static void
main(String arg[]){
Scanner cin=new
Scanner(System.in);
int n;
System.out.print("Enter n=");
n=cin.nextInt();
int a[]=new
int[n];
for(int
i=0;i<n;i++){
System.out.print("Enter a["+i+"]=");
a[i]=cin.nextInt();
}
int newElement;
System.out.print("Enter new Elements=");
newElement=cin.nextInt();
int b[];
b=a;
a=new
int[a.length+newElement];
for(int
i=0;i<n;i++)
a[i]=b[i];
System.out.println("Please Enter new Values for new
Elements");
for(int
i=n;i<a.length;i++){
System.out.print("Enter a["+i+"]=");
a[i]=cin.nextInt();
}
for(int
i=0;i<a.length;i++)
System.out.println("a["+i+"]="+a[i]);
}
}
2.
Multidimensional
Array
សំដៅលើ Array ច្រើនវិមាត្រ។ ជាទូទៅ
គេច្រើនប្រើត្រឹមតែ ២វិមាត្រ។
FORM:
DataType ArrayName[][]=new DataType[element1][element2];
ឧទាហរណ៍៖


int a[][]=new int[2][3];
a[0][0]
|
a[0][1]
|
a[0][2]
|
a[1][0]
|
a[1][1]
|
a[1][2]
|
import
java.util.Scanner;
public
class InputArray2{
public static void main(String
arg[]){
Scanner cin=new
Scanner(System.in);
int r, c;
System.out.print(“Enter rows = ”);
r=cin.nextInt();
System.out.print(“Enter columns = ”);
c=cin.nextInt();
int a[][]=new int[r][c];
for(int i=0; i<r; i++){
for(int j=0; j<c; j++){
System.out.println(“Enter a[“+i+”][“+j+”] = ”);
a[i][j]=cin.nextInt();
}
System.out.println();
}
System.out.println(“Now, you can display “+r+” Rows “+c+”
Columns”);
for(int i=0; i<r; i++){
for(int j=0; j<c; j++)
System.out.print(a[i][j]
+ “\t”);
System.out.println();
}
}
}
import
java.util.Scanner;
public
class AddElementArray{
public static void main(String
arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter n = ”);
n=cin.nextInt();
int a[]=new int[n];
for(int i=0; i<n; i++){
System.out.println(“Enter a[“+i+”] = ”);
a[i]=cin.nextInt();
}
int temp[];
temp=a;
int m;
System.out.print(“Enter m = ”);
m=cin.nextInt();
a=new int[n+m];
for(int i=0; i<n; i++)
a[i]=temp[i];
System.out.println(“Please, enter data for new elements.”);
for(int i=0; i<n+m; i++){
System.out.print(“Enter a[“+i+”] = ”);
a[i]=cin.nextInt();
}
for(int i=0; i<n+m; i++)
System.out.println(“a[“+i+”]
= ”+a[i]);
}
}
Chapter
4
Introduction
to Class
1.
Overview
Class ជាបណ្តុំ Instances variables និង Methods
ដែល Instances
variables
និង Methods ទាំងនោះ ជា Members របស់ Class ។
2.
Class
Fundamentals
2.1.
The
General form of Class
class ClassName{
DataType instanceVariable;
returnType
methodName(arg){
//body
}
}
ឧទាហរណ៍៖




return (w+n)*2;
}

return w*n; Method
}
}
ចំណាំ៖
·
Instance variable ជា Variable ដែលត្រូវបានគេបង្កើតឡើងនៅក្នុង
Class Variable ដែល មានឥទ្ធិពលពេញមួយ Class ហើយយើងក៏អាចយក variable
នេះទៅប្រើប្រាស់នៅ
ខាងក្រៅ class បានដែរ។
·
Method ជា Function មួយដែលត្រូវបានបង្កើតឡើងនៅក្នុង Class ដែលយើងបង្កើត
Method នេះក្នុងគោលបំណងបង្កើនសមត្ថភាពឲ្យ Class ។
2.2.
Execute
member of Class
ដើម្បី
Execute Members របស់ Class បាន យើងចាំបាច់ត្រូវតែបង្កើត Object ចេញពី Class ជាមុនសិន ហើយប្រើ
Object នោះ ដើម្បីកោះហៅ Members របស់ Class ។
Form:
ClassName ObjectName = new
ClassName();
Retangle obj = new Rectangle();
ឧទាហរណ៍៖
public class Main{
public static void main(string arg[]){
Rectangle obj=new Rectangle();
obj.h = 10;
obj.w = 20;
System.out.println(“Parameter = ”
+obj.parameter());
System.out.println(“Area = ”+obj.area());
}
}
3.
Method
3.1.
Method
has return type ជា Method ដែលមាន return type ជា double,
long, int, ... នឹង នៅក្នុង Method មាន return value ។
3.2.
Method
has not return type ជា Method
ដែលមាន
return type ជា void នឹងនៅក្នុង Method គ្មាន return value ទេ។
ឧទាហរណ៍៖
public class SubProgram{ 700
double max(double a, double b){ 67
if(a>b)
return a;
else
return b;
}
void showStars(int n){
for(int i=1; i<=n; i++){
for(int j=1; j<=i; j++)
System.out.print(“*”);
System.out.println();
}
}
}
Practice
របៀបបង្កើត User
Interface (អាចសរសេរ Code + Design)
- Right-Click on Package → new → Jframe → Form → ដាក់ឈ្មោះ → Finish
- Click F6 to run form
- Click Palette to Design form
|
UserName:
|
Password:
|
|
|
- Click on Frame → Property → Code → …
- Exit (cmdExit) → System.exit(0); (ចុច exit វាចាកចេញ)
- ប្តូរ Font → click on Label → Property → Font
- ដាក់ រូបភាព ឬ Logo : Label → Right-Click → Property → Icon
- ដាក់ Background ឲ្យ Frame → Label គូសពេញផ្ទៃ Frame
របៀបបង្កើត Menu bar (Open Project
→ D:\SH5)
- Right-Click on Package → New → JFrame Form → ដាក់ឈ្មោះ → Finish
- Palette (ផ្ទាំង Tool) → Swing Menu → ចាប់ Menu bar អូសដាក់លើផ្ទាំង Project
- Right-Click on Menu ដែលបានបង្កើត → យក Edit Text → ដើម្បីកែ Variable Name ដើម្បី ដាក់ជា (cmdFile, cmdEdit, ...)
- ដើម្បីសរសេរ Code ក្នុង Exit គឺត្រូវ Right-Click on Exit → យក Event →
- បើយើងចង់បន្ថែម Menu យើងត្រូវចុច Right-Click on Mouse លើ Menu ទាំងមូល រួចយក Add Menu
- នៅក្នុង File Menu យើងអាចបង្កើត Menu បន្ថែមទៀតដោយយើង Add from palette → Menu Item
- ដើម្បីសរសេរ Code ឲ្យ Exit មានដំណើរការ→ Right-Click on Exit → Event → Action → Performed → កន្លែង cmdExit វាយអក្សរថា System.exit(0);
- នៅក្នុង File, Edit ឬ ផ្សេងទៀត …. បើយើងចង់បបង្កើត Menu យើងអាចបង្កើតបានទៀត បើយើងបង្កើត Menu item គឺយើងបង្កើតបានតទៅទៀត។
ឧទាហរណ៍៖
Navigate

19/Feb/2011
4.
Constructors
ជា Method មួយដែលមានឈ្មោះដូច Class ហើយ Method នេះនឹងត្រូវបាន execute នៅ ពេលដែល Object កកើតចេញពី Class ។
Constructor
មានតួនាទី
Initialize ទិន្នន័យទៅឲ្យ Member របស់ Class ។
Create object
ClassName ObjectName = new Constructor();
ឧទាហរណ៍៖
Rectangle Object = new Rectangle();
public class Boxes{
double w, h, d;
public Boxes(){
w = 10;
h = 10;
d = 10;
}
double area(){
return
w*h*d;
}
}
public class MainBox{
public static void main(String arg[]){
Boxes obj=new Boxes();
System.out.println (“width = ”+obj.w);
System.out.println (“height = ”+obj.h);
System.out.println (“depth = ”+obj.d);
System.out.println (“area =
”+obj.area());
}
}
v
Overloaded
constructors: ជាការបង្កើត Constructor ច្រើននៅក្នុង Class
តែមួយ ហើយ
Constructors ទាំងអស់នោះចាំបាច់ត្រូវខុសគ្នាដោយចំនួន Arguments ឬ DataType
របស់ Arguments ។
ឧទាហរណ៍៖
public class Boxes{
double w, h, d;
public Boxes(){
w = 10;
h = 10;
d = 10;
}
public Boxes(double width, double
height, double depth){
w = width;
h = height;
d = depth;
}
double area(){
return
w*h*d;
}
}
public class MainBox{
public static void main(String arg[]){
Boxes obj1=new Boxes();
System.out.println (“area = ”+obj1.area());
System.out.println (“………………………….”);
Boxes obj2=new Boxes(5,5,5);
System.out.println (“area = ”+obj2.area());
}
}
v
Overloaded
constructor មានផលប្រយោជន៍អាចឲ្យយើង initialize ទិន្នន័យទៅឲ្យ Object បានច្រើនរបៀប។
5.
“this” keyword: ជា keyword មានអត្ថន័យស្មើ
Current object វាមានតួនាទីកោះហៅ Members របស់ Class ។
ឧទាហរណ៍៖
public class Boxes{
double w, h, d;
public Boxes(double w, double h, double
d){
this.w = w;
this.h = h;
this.d = d;
}
}
6.
Object
and Array
យើងអាចបង្កើត object ជា array
បាន ហើយយើងចាំបាច់យកធាតុនីមួយៗរបស់
array object ឲ្យកើតចេញពី constructor ណាមួយដាច់ខាត។
Form :
ClassName obj [] = new
ClassName [elements];
ឧទាហរណ៍៖
Boxes obj1;
obj1.w = 6 // can’t use
Boxes obj[] = new Boxes[2];
// obj[0].w = 1; can’t use
obj[0] = new Boxes();
obj[1] = new Boxes(5,5,5);
obj[0].w = 1; // can use
public class Student{
long id;
string name;
char gender;
string address;
public Student(long id, string name,
char gender, string address){
this.id = id;
this.name = name;
this.gender = gender;
this.address = address;
}
}
import java.util.Scanner;
public class TestArray{
public static void mani(String arg[]){
Scanner cin=new Scanner(System.in);
int n;
System.out.print(“Enter n = ”);
n=cin.nextInt();
Student obj[]=new Student[n];
long id; string name; char gender;
string address;
for(int i=0; i<obj.length; i++){
System.out.print(“Enter ID = ”);
id = cin.nextLong();
System.out.print(“Enter Name = ”);
cin.nextLine();
name = cin.nextLine();
System.out.print(“Enter Gender = ”);
gender = cin.nextLine().charAt(0);
System.out.print(“Enter Address = ”);
address = cin.nextLine();
obj[i] = new Student(id, name, gender,
address);
System.out.println(“____________________”);
}
System.out.println(“ID\tName\tGender\tAddress”);
for(int i=0; i<n; i++){
System.out.print(obj[i].id + “\t”);
System.out.print(obj[i].name + “\t”);
System.out.print(obj[i].gender + “\t”);
System.out.print(obj[i].address + “\t”);
System.out.println(“____________________”);
}
}
}
12 March, 2011

ឧទាហរណ៍៖
ចូរសរសេរកម្មវិធីមួយដើម្បីបញ្ចូលទិន្នន័យជា
Records នៃផលិតផលដែល Records នីមួយ ៗមាន Field ដូចខាងក្រោម៖
-
ID មានប្រភេទទិន្នន័យជា long
-
PName មានប្រភេទទិន្នន័យជា String
-
Qty មានប្រភេទទិន្នន័យជា long
-
UPrice មានប្រភេទទិន្នន័យជា float
-
Amount មានប្រភេទទិន្នន័យជា double (Not input by user)
public class
Product{
long id;
string pname;
long qty;
float uprice;
double amount;
public Product(long
id, string pname, long qty, float uprice){
this.id = id;
this.pname = pname;
this.qty = qty;
this.uprice =
uprice;
this. amount =
qty*uprice;
}
}
Import
jave.util.Scanner;
Public class
MainProduct{
Public static void
main(String arg[]){
Scanner cin=new
Scanner(System.in);
int n;
System.out.print(“Enter
number of records = ”);
n=cin.nextInt();
Product obj[]=new
Product[n];
long id; string
pname; long qty; float uprice;
for(int i=0;
i<obj.length; i++){
System.out.print(“Enter
ID = ”);
id=cin.nextLong();
System.out.print(“Enter
Pname = ”);
cin.nextLine();
pname=cin.nextLine();
System.out.print(“Enter
Qty = ”);
qty =
cin.nextLong();
System.out.print(“Enter
Uprince = $”);
uprice =
cin.nextFloat();
obj[i]=new Product
(id, pname, qty, uprice);
System.out.print(“Amount
= $”+obj[i].amout);
System.out.println(“\n______________________\n”);
}
System.out.println(“ID\tPName\t\tQty\tUPrice\tAmount\n”);
for(int i=0;
i<n; i++){
System.out.print(obj.[i].id+
“\t”);
System.out.print(obj.[i].pname+
“\t”);
System.out.print(obj.[i].qty+
“\t”);
System.out.print(“$”+obj.[i].uprice+
“\t”);
System.out.print(“$”+obj.[i].amount+
“\t”);
System.out.print(_______________________________________\n);
}
}
}
Homework:
ចូរសរសេរកម្មវិធីមួយដើម្បីផ្ទុក N Records របស់ Students
ដែល Records នីមួយៗមាន
Field ដូចខាងក្រោម៖
-
ID មានប្រភេទទិន្នន័យជា long
-
SName មានប្រភេទទិន្នន័យជា String
-
Gender មានប្រភេទទិន្នន័យជា String
-
Address មានប្រភេទទិន្នន័យជា String
-
Year មានប្រភេទទិន្នន័យជា int
-
Class
មានប្រភេទទិន្នន័យជា String
-
Java មានប្រភេទទិន្នន័យជា
float
-
Acc មានប្រភេទទិន្នន័យជា float
-
C++
មានប្រភេទទិន្នន័យជា float
-
AVG មានប្រភេទទិន្នន័យជា double (Not input by user)
និងតំរៀបតាមលំដាប់ថយចុះនៃ AVG ។ (ធំជាងគេនៅខាងលើ)
public class Student{
long id;
string sname;
string gender;
string address;
int year;
string class;
float java, acc, cpp;
double avg(){
return(java+acc+cpp)/3;
}
Student copy(){
Student temp=new Student(id, sname, gender, address, year,
Class, java, acc, cpp);
return temp;
}
public Student(long id, string sname, string gender, string
address, int year, string
class, float java, float acc, float cpp){
this.id = id;
this.sname = sname;
this.gender = gender;
this.address = address;
this.year = year;
this.class = class;
this.java = java;
this.acc = acc;
this.cpp=cpp;
}
}
import
java.text.DecimalFormat;
import java.util
Scanner;
pubic class
ArrayObj{
public static void
main(String arg[]){
Scanner cin=new
Scanner(System.in);
int n;
System.out.print(“Enter
number of Records = ”);
n=cin.nextInt();
Student obj[]=new
Student[n];
long id; string
sname; string gender; string address, int year; string class; float java; float
acc; float cpp;
for(int i=0;
i<obj.length; i++){
System.out.print(“Enter
ID = ”);
id=cin.nextLong();
System.out.print(“Enter
Student Name = ”);
cin.nextLine();
sname=cin.nextLine();
System.out.print(“Enter
Gender = ”);
cin.nextLine();
gender=cin.nextLine();
System.out.print(“Enter
Address = ”);
address=cin.nextLine();
System.out.print(“Enter
Year = ”);
year=cin.nextInt();
System.out.print(“Enter
CLass = ”);
cin.nextLine();
CLass=cin.nextLine();
System.out.print(“Enter
Java = ”);
java=cin.nextFloat();
System.out.print(“Enter
Access =”);
acc=cin.nextFloat();
System.out.print(“Enter
C++ = ”);
cpp =
cin.nextFloat();
obj[i]=new
Student(id, sname, gender, year, class, java, acc, cpp);
System.out.println(“AVG
= ”+obj[i].avg);
System.out.println(______________________________________\n);
}
System.out.println(\n__________________________________________\n);
System.out.println(“ID\tStudentName\t\tGender\tYear\tClass\tJava\tAcc
\tC++\tAVG\n”);
for(int i=0;
i<n-1; i++)
for(int j=1+i;
j<n; j++)
if(obj[i].avg()<obj[j].avg()){
Student temp;
temp=obj[i].copy();
obj[i]=obj[j].copy();
obj[j]=temp.copy();
}
DecimalFormat
df=new DecimalFormat(“0.00”);
for(int i=0;
i<n; i++){
System.out.print(obj[i].id+
“\t”);
System.out.print(obj[i].sname+
“\t”);
System.out.print(obj[i].gender+
“\t”);
System.out.print(obj[i].address+
“\t”);
System.out.print(obj[i].year+
“\t”);
System.out.print(obj[i].CLass+
“\t”);
System.out.print(df.format(obj[i].java)+
“\t”);
System.out.print(df.format(obj[i].acc)+
“\t”);
System.out.print(df.format(obj[i].c++)
+ “\t”);
System.out.print(df.format(obj[i].avg())+
“\t”);
System.out.print(\n______________________________________\n);
}
}
}
20/March/2011

យើងអាចបញ្ចូលទិន្នន័យពី Object
មួយទៅកាន់ Object មួយផ្សេងទៀត តែយើងត្រូវចង
ចាំថា Object ទាំងពីរនោះ មានលក្ខណៈជា
Reference។ Referent Object មានន័យថា មាន Object ច្រើនឈរលើ Address រួមគ្នា បើសិនមាន Object ណាមួយផ្លាស់ប្តូរតម្លៃ
នោះតម្លៃរបស់ Object ផ្សេងទៀតនឹងផ្លាស់ប្តូរតាមជាដាច់ខាត។
ឧទាហរណ៍៖
Boxes
obj1=new Boxes();
Boxes
obj2=new Boxes(5,5,5);
Obj1=obj2; // Referent Object
ចំណាំ៖
Referent Object គេតែងប្រើសំរាប់ចង Object ជាច្រើនបញ្ចូលគ្នា បើយើងត្រូវការបំបែកវា
ចេញពីគ្នាវិញ យើងអាចយក Object ណាមួយឲ្យ Initialize ចេញពី Constructor ឬក៏អឲ្យ Object ណាមួយជា Referent ជាមួយ Object មួយផ្សេងទៀត។

យើងអាចបង្កើត Method ដែលមាន Return Type ជា Class ហើយ Return value របស់វាចាំ
បាច់ជា Object ដែលចេញពី Class នោះ។
Return Object គេច្រើនប្រើសំរាប់បញ្ជូនទិន្នន័យពី
Object មួយទៅកាន់ Object មួយផ្សេង ទៀតដោយ Object ទាំងនោះ គ្មានលក្ខណៈជា
Referent Object ទេ។
public class Boxes{
double w;
double h;
double d;
Boxes copy(){ // Return object
Boxes temp=new Boxes(w, h, d);
Return temp;
}
public Boxes(){
w=10;
h=10;
d=10;
}
public Boxes(double w, double h, double d){
this.w=w;
this.h=h;
this.d=d;
}
double area(){
return w*h*d;
}
}
public class MainBox{
public static void main(String arg[]){
Boxes
obj1=new Boxes();
Boxes
obj2=new Boxes(5,5,5);
// obj1=obj2; // Referent Object
/*



obj1.w=obj2.w; */
obj1.d=obj2.copy(); // Not Referent Object
obj2.d=1;
obj2.h=1;
obj2.w=1;
System.out.println(“Width = ”+obj1.w);
System.out.println(“Height = ”+obj1.h);
System.out.println(“Depth = ”+obj1.d);
System.out.println(“_______________________”);
}
}
ចំណាំ៖


7. ArrayList ជា Class ដែលស្ថិតនៅក្នុង Package Java.util.ArrayList វាមានតួនាទីផ្ទុក
n records ដូចជា ArrayObject ដែរ តែយើងមិនចាំបាច់កំណត់ចំនួនធាតុជាមុនទេ។
Form:
ArrayList<class> obj=new
ArrayList<class>();
Ex: // ArrayList
ArrayList<student> obj=new
ArrayList<student>();
Ex: // ArrayObject
Student obj[]=new Student[n];
Method
in ArrayList
-
boolean add(Object record); ជា Method មានតួនាទី add
object record ចូលក្នុង ArrayList បើសិនជា Record ណាមួយត្រូវបាន add មុនគេ Record
នោះនឹងស្ថិតនៅក្នុង Index ទី ០
ហើយ Record ដែលបាន add បន្តបន្ទាប់ នឹងស្ថិតនៅក្នុង index បន្តបន្ទាប់ដោយស្វ័យប្រ
វត្តិ។
-
Object set(int index, object record); ជា Method
មានតួនាទីកែប្រែ
Record ដែលស្ថិតនៅក្នុង index ណាមួយនៃ ArrayList ។
-
Object get(int index); ជា Method មានតួនាទីទាញយក
Record ពី ArrayList ដែលស្ថិតនៅ ក្នុង Index ណាមួយ។
-
int size(); ជា Method មួយមានតួនាទីទទួលយកចំនួន
Record របស់ ArrayList។
-
boolean remove(object record); ជា Method មួយមានតួនាទី
Remove record ពី ArrayList ទៅតាម Record ដែលយើងបានកំណត់។
Chapter
5
More on Class
1.
Overview
យើងអាចបង្កើត
Method ដែលមាន Arguments ជា Objects បាន ហើយ
Arguments នោះ ត្រូវការ Parameters ជា Objects ដែលមានប្រភេទដូចគ្នា។
//Sub-program
public class
Product{
long id;
String pname;
long qty;
float uprice;
double amount(){
return qty*uprice;
}
boolean
equal(Product obj){
if(obj.id==id&&obj.paname.equals(pname)&&
obj.qty==qty&&obj.uprice==uprice)
return true;
else
return false;
}
public Product(long
id, string pname, long qty, float uprice){
this.id=id;
this.pname=pname;
this.qty=qty;
this.uprice=uprice;
}
}
//Main-program
public class
Mproduct{
public static void
main(String[] args){
Product obj1=new
Product(1, “ABC”, 200, 23);
Product obj2=new
Product(1, “ABC”, 200, 23);
if(obj1.equal(obj2))
System.out.println(“The same
record.”);
else
System.out.println(“Not the same
record.”);
}
}
2.
Parameter
passing
ការបញ្ជូនទិន្នន័យពី Parameter
ទៅ Arguments
យើងអាចបញ្ជូនបានពីរយ៉ាងគឺ៖
Pass by value និង Pass by reference ។
2.1
Pass by value
//Sub-program
public class Data{
void changeValue(int a, int b){
a+=2;
b+=4;
}
}
//Main-program
public class main{
public static void main(String[] args){
int a, b;
a=10;
b=10;
obj.changeValue(a, b); // Pass by value
System.out.println(“A = ”+a);
System.out.println(“B = ”+b);
}
}
2.2
Pass by reference
//Sub-program
public class Data{
int a, b;
void changeValue(Data obj){
obj.a+=2;
obj.b+=4;
}
}
//Main-program
public class main{
public static void main(String[] args){
Data obj=new Data();
obj.a=10;
obj.b=10;
obj.changeValue(obj); // Pass by reference
System.out.println(“A = ”+obj.a);
System.out.println(“B = ”+obj.b);
}
}
ចំណាំ៖
ចំពោះ Parameter ដែលជា Variable ជាធម្មតា វាចាំបាច់ត្រូវមានលក្ខណៈជា Pass by value ដាច់ខាត។
ចំពោះ Parameter ដែលជា object ឬក៏ជា Array វាចាំបាច់ត្រូវមានលក្ខណៈជា Pass by reference ដាច់ខាត។
3.
static “keyword”
ជា Keyword
ដែលបញ្ជាក់ឲ្យ Members របស់ Class ថា Member ទាំងនោះមាន Address មួយជាក់លាក់ដែលវាមិនអាចប្រែប្រួល
Address របស់វាទៅតាម Object នោះទេ។
Sub-program
public class Data{
static int a;
int b;
}
Main-program
class Main{
public static void main(String[] args){
Data obj1=new Data();
// All members can use object(Static or non-static)
obj1.a=1;
obj2.b=1;
// Static members can use without object
Data.a=10;
// Non-static member cannot use without object
// Data.b=10;
Data obj2=new Data();
// All objects use the same static members
Obj2.a=20;
System.out.println(“A = ”+obj1.a);
System.out.println(“A = ”+obj2.a);
System.out.println(“A = ”+Data.a);
}
}
ចំណាំ៖
Static keyword ជាទូទៅ គេច្រើនយកទៅប្រើដើម្បីបង្កើតជា
Global variable។ Global variable នៅក្នុង Java ជា Variable មួយដែលអាចប្រើឆ្លងពី Class មួយទៅកាន់ Class មួយផ្សេង ទៀត ឬក៏ពី Package មួយទៅកាន់ Package មួយផ្សេងទៀត។
Chapter
6
Inheritance
1.
What
is inheritance?
Inheritance គឺជាការផ្ទេរមរតកពី Class មួយទៅកាន់ Class
មួយផ្សេងទៀត។
·
SuperClass
គឺជា Class មួយដែលផ្តល់ Members ទៅឲ្យ Class ដទៃទៀត។
·
SubClass
គឺជា Class ដែលទទួល Member ពី Class ដទៃ។
2.
Inheritance
Form:
class SubClass entends SuperClass{
// Member SubClass
}
ឧទាហរណ៍៖
class SuperClass{
int a, b;
}
class Sub extends SuperClass{
int c;
}
3.
Using
“super” keyword
3.1.
“super”
keyword call Constructors of SuperClass
ឧទាហរណ៍៖
class SuperClass{
int a, b;
public SuperClass(int a, int b){
this.a=a;
this.b=b;
}
}
class Sub extends SuperClass{
int c;
public Sub(int a, int b, int c){
super(a, b);
this.c=c;
}
}
3.2.
“super”
keyword call Member SuperClass
ឧទាហរណ៍៖
class SuperClass{
int a, b;
void show(){
System.out.println(“A = ”+a);
System.out.println(“B = ”+b);
}
public SuperClass(int a, int b){
this.a=a;
this.b=b;
}
}
class Sub extends SuperClass{
int c;
void show(){
super.show();
System.out.println(“C = ”+c);
}
public Sub(int a, int b, int c){
super(a, b);
this.c=c;
}
}
4.
Method
overriding
- Overriding method គឺជាការបង្កើត Method នៅក្នុង SubClass ដែលមានឈ្មោះ និង Arguments ដូចគ្នាទាំងស្រុងទៅនឹង Method ដែលស្ថិតនៅក្នុង SuperClass ។
ឧទាហរណ៍៖
class Star{
void show(){
for(int i=1; i<=5; i++){
System.out.print(“*”);
System.out.println();
}
}// Overloaded method
void show(int n){
for(int i=1; i<=n; i++){
for(int j=1; j<=i; j++){
System.out.print(“*”);
System.out.println();
}
}// Overloaded method
}
class MoreStar extends Star{
void show(int n, char ch){
for(int i=1; i<=n; i++){
for(int j=1; j<=i; j++){
System.out.print(“*”);
System.out.println();
}
}// Overloaded method
void show(){
for(int i=1; i<=5; i++){
for(int j=1; j<=i; j++){
System.out.print(“*”);
System.out.println();
}
}// Override method
}
public class MainStart{
public static void main(String[] args){
MoreStar obj=new MoreStar();
obj.show();
obj.show(10);
obj.show(20, @);
}
}
ចំណាំ៖
Overloaded VS Override
1. Method ច្រើនមានឈ្មោះដូចគ្នា
ហើយ ពួកវាត្រូវខុសគ្នាទៅដោយចំនួន Argu-ments ឬ DataType
របស់ Arguments ។
2. គ្រប់ Overloaded method ទាំងអស់ យើងអាចបង្កើត Object ចេញពី Class ហើយកោះហៅ Method ទាំងនោះយក មកប្រើដោយគ្រាន់តែប្តូរប្រភេទ Arguments ។
3. យើងអាចបង្កើត Overloaded Method បានទាំងនៅក្នុង SuperClass និងនៅក្នុង SubClass ។
1. Method ច្រើនមានឈ្មោះដូចគ្នា
ហើយ ពួកវាត្រូវដូចគ្នាទាំងស្រុង ទាំងចំនួន Arguments និង DataType
របស់ Arguments ។
2. គ្រប់ Overrided Method ទាំងអស់ យើងអាចបង្កើត Object ចេញពី Class ហើយកោះហៅប្រើ បានតែមួយគត់ គឺ Method ដែលស្ថិតនៅក្នុង Class នោះ។
3.
យើងអាចបង្កើត Overrided method បានតែនៅក្នុង SubClass តែប៉ុណ្ណោះ។
08 –
May – 2011
5.
Abstract
class
Abstract
class ជា class មាន method មួយចំនួនមានលក្ខណៈមិនពេញលេញ។
Abstract
class can refer with other SubClass។
ឧទាហរណ៍៖
abstract class AbSimple{
void show(){
System.out.println(“You can call me.”);
}
abstract void show(String txt);
}
class Sub extends AbSimple{
void show(String txt){
System.out.println(“txt”);
}
}
public class Main{
public static void main(String[] args){
AbSimple obj=new AbSimple(){
// @override
void show(String txt){
Systme.out.println(txt);
}
};
obj.show(“Just override”);
Sub obj2=new Sub();
Obj2.show();
}
6.
Using
“final” keyword
6.1.
Using
“final” keyword to prevent overriding
ឧទាហរណ៍៖
abstract class AbSimple{
abstract void show(String txt); // Must override
final void show(){
System.out.println(“Cannot
override at SubClass.”);
}
void show (String txt, int n){
System.out.println(txt+“ ”+n);
System.out.println(“Can or cannot override.”);
}
}
class Sub extends AbSimple{
void
show(String txt){
System.out.println(txt);
}
}
public class Main{
public static void main(String[] args){
AbSimple obj=new AbSimple(){
// @override
void show(String txt){
Systme.out.println(txt);
}
};
obj.show(“Just override”);
Sub obj2=new Sub();
Obj2.show();
}
6.2.
Using
“final” keyword to prevent Inheritance
Ex:
final
class FinalClass {
int a;
void show(){
System.out.println(“A=”+a);
}
}
//can’t Inheritance
class
Sub extends FinalClass{
}// FinalClass can not extends to other
SubClass
No comments:
Post a Comment