Saturday, March 19, 2016

Leson 3: Program-internal To leson 20: Static-Dynamic-Binding


មេរៀនទី៣: Program-internal

ពិស្តារពី Hello Java Program
ក្នុងទំព័រពីមុន យើងបានរៀនអំពី កម្មវិធីដំបូង ពីរបៀប compile រត់កម្មវិធី java program ដំបូង។
ទីនេះយើង នឹងរៀនអំពីការ compiling នឹងរត់ដំណើរការ java program។ មានហេតុការណ៍ អ្វីកើត ឡើង
ពេលរត់ compile time?ពេល compile time, java file ត្រូវបាន compile ដោយ Java Compiler ហើយ
ប្តូរកូដ java code ក្នុង bytecode។
មានហេតុការណ៍អ្វីពេល runtime?
ពេល runtime, មានជំហានខាងក្រោម:
Classloader: គឺជា subsystem របស់ JVM ដែលប្រើសម្រាប់ load class file។
Bytecode Verifier: ឆែកកូដ code fragment អាចចូលទៅ object។
Interpreter: អាន bytecode stream ហើយប្រត្តិបត្តិការ execute។
Q) តើលោកអ្នកអាចរក្សា save java source file ឈ្មោះផ្សេងជាងឈ្មោះ class name?
លោកអ្នកអាចមើលបង្ហាញខាងក្រោម:
To compile:    javac Hard.java
To execute:    java Simple
Q) តើលោកអ្នកអាចមាន class ច្រើនក្នុង java source file?
មើលការបង្ហាញខាងក្រោម:

មេរៀនទី៤: របៀបបង្កើត path

របៀបបង្កើត path ក្នុង Java
path តម្រូវបង្កើតដោយប្រ tool ដូចជា javac, java ។ល។ ប្រសិនបើ លោកអ្នករក្សា save នៅក្នុង java source file នៅក្នុង jdk/bin directory ដែល path គឺតម្រូវអោយបង្កើត ព្រោះ tool នឹងកែប្រែ ក្នុង directory។ ប្រសិនបើមាន java file នៅខាងក្រៅ jdk/bin folder វាត្រូវការបង្កើត path របស់ JDK។
មានពីរមធ្យោបាយដើម្បីបង្កើត java path:
1.    temporary
2.    permanent
1) របៀបបង្កើត Temporary Path របស់ JDK ក្នុង Windows
ដើម្បីបង្កើត temporary path របស់ JDK លោកអ្នកត្រូវការធ្វើជំហានដូចខាងក្រោម:
•    បើក command prompt
•    copy path នៃ jdk/bin directory
•    សរសេរ command prompt: បង្កើត path=copied_path
ឧទាហរណ៍:
set path=C:\Program Files\Java\jdk1.6.0_23\bin
អនុញ្ញាតមើលការដំឡើងដូចខាងក្រោម:
2) របៀបបង្កើត Permanent Path របស់ JDK ក្នុង Windows
ដើម្បីបង្កើត permanent path របស់ JDK លោកអ្នកត្រូវការធ្វើតាមជំហានដូចខាងក្រោម:
•    ចូល MyComputer properties -> advanced tab -> environment variables -> new tab of user variable -> សរសេរឈ្មោះ path -> សរសេរ path of bin folder in variable value -> ok -> ok -> ok
ឧទារហណ៍:
ចូលក្នុង MyComputer properties
ចុចលើ advanced tab
ចុចលើ environment variables
ចុចលើ new tab of user variables
សរសេរឈ្មោះ path in variable name
Copy the path of bin folder
7)paste path of bin folder in variable value
8)click on ok button
9)click on ok button

មេរៀនទី៥: JDK, JRE និង JVM

ភាពខុសគ្នារវាង JDK, JRE និង JVM
ស្វ័យយល់ពី ភាពខុសគ្នារវាង JDK, JRE និង JVM គឺមានសារ:សំខាន់ក្នុង Java។ យើងបានសង្ខេបពី JVM
ប្រសិនបើលោកអ្នក ចង់ដើម្បីទទួលពិស្តារ ចំណេះដឹងនៃ Java Virtural Machine មើលមេរៀនមូលដ្ឋាន នៃភាពខុសគ្នារវាង JDK, JRE និង JVM។
VM
JVM (Java Virtual Machine) វាមានលក្ខណ:ពិសេសដែលផ្តល់ runtime environment ក្នុង java bytecode អាចប្រត្តិបត្តិ។
JVM សម្រាប់ hardware និង software platforms. JVM, JRE និង JDK ជា platform ឯរាជ្យ។
JVM performs មានកិច្ចការចម្បងខាងក្រោម:
•    Loads code
•    Verifies code
•    Executes code
•    Provides runtime environment
JRE
JRE គឺជាពាក្សដើមនៃ Java Runtime Environment វាប្រើដើម្បីផ្តល់ runtime environment វាគឺអនុវត្តន៍ JVM។
JDK
JDK គឺជាពាក្ស Java Development Kit វាមានផ្ទុក JRE + development tools។

មេរៀនទី៦: JVM

JVM (Java Virtual Machine) មានលក្ខណ:ពិសេសសម្រាប់ runtime environment ក្នុង java bytecode នឹងប្រត្តិបត្តិ។
តើ JVM ជាអ្វី?
វាជា:
1.    A specification កន្លែងធ្វើការ Java Virtual Machine ប៉ុន្តែការផ្តល់គឺឯករាជ្យ ដើម្បីជ្រើសរើស algorithm។ វាអនុវត្តន៍ដោយផ្តល់ក្រុមហ៊ុន Sun និងក្រុមហ៊ុនផ្សេងទៀត។
2.    An implementation វាអនុវត្តន៍ដឹងដូច JRE (Java Runtime Environment)។
3.    Runtime Instance លោកអ្នកសរសេរ java command កាលណាក៍បាន  លើ command prompt ដើម្បីរត់ java class និងជំនួន JVM ត្រូវបានបង្កើត។
តើវាធ្វើការអ្វី?
JVM perform ប្រត្តិបត្តិការណ៍ដូចខាងក្រោម:
•    Loads code
•    Verifies code
•    Executes code
•    Provides runtime environment
JVM ផ្តល់និយមន័យ:
•    តំបន់ Memory area
•    Class file format
•    បង្កើត Register set
•    Garbage-collected heap
•    Fatal error reporting ។ល។
Internal Architecture របស់ JVM
ស្វែងយល់ពី internal architecture របស់ JVM វាផ្ទុក classloader, memory area, execution engine ។ល។
1) Classloader:
Classloader គឺជា subsystem របស់ JVM ត្រូវបានប្រើសម្រាប់ load class files។
2) Class(Method) Area:
តំបន់ Class(Method) Area ផ្ទុកក្នុង class structures ដូចជា runtime constant pool, field  និងmethod data។
3) Heap:
វាជា runtime data ក្នុង object។
4) Stack:
Java Stack ផ្ទុក frame វាដាក់លើ local variable។
5) Program Counter Register:
PC (program counter) register វាផ្ទុក address របស់ Java virtual machine instruction
6) Native Method Stack:
វាផ្ទុកបណ្តា method ទាំងអស់ត្រូវបានប្រើ ក្នុង application។
7) Execution Engine:
វាផ្ទុក:
1) A virtual processor
2) Interpreter: អាន bytecode ហើយ execute។
3) Just-In-Time(JIT) compiler: វាត្រូវបានប្រើ ដើម្បីផ្តល់ performance វាជាផ្នែកមួយ compile នៃ byte code។

មេរៀនទី៧: អថេរ និង Datatype

យើងនឹងរៀនអំពី អថេរ និង java data type។ អថេរគឺជាឈ្មោះរបស់ទីតាំង memory។ វាមានបី ប្រភេទ នៃបណ្តាអថេរ: local, instance និង static។ មានពីរប្រភេទនៃ datatypes ក្នុង java, primitive និង non-primitive។
អថេរ
អថេរគឺជាឈ្មោះ ស្ថិតនៅក្នុង memory។
1.    int data=50;//Here data is variable
ប្រភេទអថេរ
មានបីប្រភេទអថេរក្នុង java
•    អថេរតំបន់ local variable
•    អថេរ instance variable
•    អថេរ static variable
អថេរ Local Variable
អថេរមួយ ត្រូវបានប្រកាស ក្នុង method ត្រូវបានហៅថាអថេរតំបន់ local variable។
អថេរ nstance Variable
គឺជាអថេរដែល ប្រកាស់ក្នុង class ប៉ុន្តែខាងក្រៅ method ត្រូវបានហៅថា អថេរ instance variable . វាមិនបានប្រកាសដូច static។
អថេរ Static variable
អថេរ ត្រូវបានប្រកាសដូចជា static វាមិនដូចជា local.
ឧទាហរណ៍ការស្វែងយល់ពីប្រភេទអថេរ
class A{
int data=50;//instance variable
static int m=100;//static variable
void method(){
int n=90;//local variable
}
}//end of class
ប្រភេទ Data Types ក្នុង Java
ក្នុង java, មានពីរប្រភេទនៃ data types
•    primitive data types
•    non-primitive data type

ប្រភេទ Data Type
Default Value
Default size
boolean false 1 bit
char ‘\u0000′ 2 byte
byte 0 1 byte
short 0 2 byte
int 0 4 byte
long 0L 8 byte
float 0.0f 4 byte
double 0.0d 8 byte
ប្រព័ន្ធយូនីកូដ Unicode System
Unicode គឺជាស្តង់ដាអក្សអន្តរជាតិ universal international standard character ដែលមានសមត្ថភាព តំណាង សរសេរភាសាលើពភពលោគ្នា។
ហេតុអ្វីបានជា java ប្រើ Unicode System?
ពីមុន Unicode មានស្តងដារភាសាច្រើន:
•    ASCII (American Standard Code for Information Interchange) សម្រាប់សហរដ្ឋអាមេរិក United States។
•    ISO 8859-1 សម្រាប់ Western European Language។
•    KOI-8 សម្រាប់រ៉ូស៊ី Russian
•    GB18030 and BIG-5 សម្រាប់ចិន Chinese និងផ្សេងទៀត។
មូលហេតុបណ្តាលអោយមានពីរបញ្ហា:
1.    លក្ខណ:ពិសេសតម្លៃកូដ code value ទាក់ទងនឹង letters ក្នុងស្តងដាភាសា language standard។
2.    កូដសម្រា់ភាសារ ជាមួយអក្សរធំ បង្កើតអថេរ variable length។ Some common
ដើម្បីដោះស្រាយ បញ្ហាទាំងនេះ មានស្តង់ដាភាសាថ្មី ត្រូវបានអភិវឌ្ឈ Unicode System។
អក្សរមាន 2 byte។
lowest value:\u0000
highest value:\uFFFF

មេរៀនទី៨: ប្រមាណវិធីក្នុង java

ប្រមាណវិធី ក្នុង java គឺជានិម្មសញ្ញា ដែលត្រូវបានប្រើ ដើម្បីកំណត់ ប្រត្តិបត្តិការ។ មានប្រភេទប្រមាណវិធីក្នុង java ដូចជា ប្រមាណវិធី arithmetic, ប្រមាណវិធី relational, ប្រមាណវិធី shift, ប្រមាណវិធី bitwise, ប្រមាណវិធី ternary និងប្រមាណវិធី assignment។
ប្រមាណវិធី
អាទិភាព
postfix expr++ expr
unary ++exprexpr +expr -expr ~ !
multiplicative * / %
additive + -
shift << >> >>>
relational < > <= >= instanceof
equality == !=
bitwise AND &
bitwise exclusive OR ^
bitwise inclusive OR |
logical AND &&
logical OR ||
ternary ? :
assignment = += -= *= /= %= &= ^= |= <<= >>= >>>=
ប្រយោជន៍ក្នុងកម្មវិធី Programs:
ដូចជាចំនួន ហ្វាក់តូរីយ៉ែល factorial number, prime number, សេរី fibonacci series ។ល។
1) Program នៃចំនួន factorial number
class Operation{
static int fact(int number){
int f=1;
for(int i=1;i<=number;i++){
f=f*i;
}
return f;
}
public static void main(String args[]){
int result=fact(5);
System.out.println(“Factorial of 5=”+result);
}
}
2) Program នៃសេរី fibonacci series.
class Fabnoci{
public static void main(String[] args)
{
int n=10,i,f0=1,f1=1,f2=0;
for(i=1;i<=n;i++)
{
f2=f0+f1;
f0=f1;
f1=f2;
f2=f0;
System.out.println(f2);
}
}
}
3) Program នៃចំនួន armstrong number។
class ArmStrong{
public static void main(String…args)
{
int n=153,c=0,a,d;
d=n;
while(n>0)
{
a=n%10;
n=n/10;
c=c+(a*a*a);
}
if(d==c)
System.out.println(“armstrong number”);
1.        else
2.        System.out.println(“it is not an armstrong number”);
3.
4.       }
5.    }
4) Program ឆែកនៃចំនួន palindrome number។
class Palindrome
{
public static void main( String…args)
{
int a=242;
int  n=a,b=a,rev=0;
while(n>0)
{
a=n%10;
rev=rev*10+a;
n=n/10;
}
if(rev==b)
System.out.println(“it is Palindrome”);
else
System.out.println(“it is not palinedrome”);
}
}
5) Program of swapping two numbers without using third variable.
class SwapTwoNumbers{
public static void main(String args[]){
int a=40,b=5;
a=a*b;
b=a/b;
a=a/b;
System.out.println(“a= “+a);
System.out.println(“b= “+b);
}
}
6) Program of factorial number by recursion
class FactRecursion{
static int fact(int n){
if(n==1)
return 1;
return n*=fact(n-1);
}
public static void main(String args[]){
int f=fact(5);
System.out.println(f);
}
}

មេរៀនទី៩: Java OOP

មេរៀននេះ រៀនពីមូលដ្ឋាននៃ OOP ជា Object Oriented Programming គឺជាគំរូ ដែលផ្តល់មូលដ្ឋានច្រើនដូចជា inheritance, data binding, polymorphism ។ល។
OOPs (Object Oriented Programming System)
Object មានន័យទំនាក់ទំនងពិត ដូចជា pen, chair, table ។ល។  Object-Oriented Programming គឺជាវិធីសាស្ត្រ ឬគំរូដើម្បីរចនា ប្រើ class និង object។  វាធ្វើអោយងាយស្រួល អភិវឌ្ឈន៍កម្មវិធី software និងថែរក្សា maintenance ដោយផ្តល់មូលដ្ឋានមួយចំនួន:
•    Object
•    Class
•    Inheritance
•    Polymorphism
•    Abstraction
•    Encapsulation
Object
ទំនាក់ទំនង ដែលមាន state និង behavior ដឹងពី object មួយឧទាហរណ៍: chair, pen, table, keyboard, bike ។ល។ វាអាចជា physical និង logical។
Class
ការប្រមូលផ្តុំនៃបណ្តា objects ត្រូវបានហៅថា class វាជា logical entity។
Inheritance
កាលណា object ត្រូវការ properties និង behaviours នៃ object មេ។ ដឹងដូចជា inheritance។ វាផ្តល់កូដ។
អត្ថប្រយោជន៍នៃ OOPs លើភាសា Procedure-oriented programming language
1) OOPs បង្កើតការអភិវឌ្ឈន៍ និងថែរក្សា maintenance ក្នុងភាសា Procedure-oriented programming language វាមិនងាយគ្រប់គ្រង ប្រសិនបើកូដ កើនឡើង។
2)OOPs ផ្តល់ទិន្នន័យ ក្នុងភាសា Procedure-oriented programming language អាចចូលពីគ្រប់កន្លែង។
សារ:ប្រយោជន៍នៃឈ្មោះអនុសញ្ញា ក្នុង java ដោយប្រើស្តង់ដា standard Java ឈ្មោះអនុសញ្ញា លោកអ្នកបង្កើតកូដ ដោយងាយ ដើម្បីអាន ដោយលោកអ្នកផ្ទាល់ និងសម្រាប់អ្នក programmer ផ្សេងទៀត។ អាចអានកម្មវិធី នៃ Java វាមានសារ:សំខាន់
ឈ្មោះ
អនុសញ្ញា
class name នឹងចាប់ផ្តើមអក្សរធំ uppercase letter មាន String, Color, Button, System, Thread ។ល។
interface name និងចាប់ផ្តើមអក្សរធំ uppercase letter ជានាម ដូចជា Runnable, Remote, ActionListener
method name និងចាប់ផ្តើមអក្សរតូច lowercase letter ជា verb ដូចជា actionPerformed(), main(), print(), println() etc.
variable name និងចាប់ផ្តើមអក្សរតូច lowercase letter ដូចជា firstName, orderNumber ។ល។
package name និងចាប់ផ្តើមអក្សរតូច lowercase letter ដូចជា java, lang, sql, util ។ល។
constants name និងចាប់ផ្តើមអក្សរតូច  RED, YELLOW, MAX_PRIORITY ។ល។

មេរៀនទី១០: Object និង Class

មេរៀននេះរៀនអំពី java objects និង classes។ ក្នុងបច្ចេកទេស object-oriented programming យើងរចនា កម្មវិធីដោយប្រើ objects និង classes។ Object គឺជា physical ដូចជាទំនាក់ទំនង logical entity ចំណែកឯ class គឺជា logical entity មួយគត់។
Object ក្នុង Java
JavaClass ក្នុង Java
class គឺជាក្រុមមួយនៃ objects ដែលមាន properties រួមវាមាន template មួយឬ blueprint ពី objects ត្រូវបានបង្កើត។
class មួយក្នុង java អាចផ្ទុក:
•    data member
•    method
•    constructor
•    block
•    class and interface
Syntax ដើម្បីប្រកាស class មួយ:
class <class_name>{
data member;
method;
}
ឧទាហរណ៍ Object និង Class
ក្នុងឧទាហរណ៍នេះ យើងបានបង្កើត Student class ដែលមានទិន្នន័យពីរ data members id និង name។ យើងកំពង់បង្កើត object របស់ Student class ដោយ keyword ថ្មី។
class Student1{
int id;//data member (also instance variable)
String name;//data member(also instance variable)
public static void main(String args[]){
Student1 s1=new Student1();//creating an object of Student
System.out.println(s1.id);
System.out.println(s1.name);
}
}
Output:0 null
អថេរ Instance ក្នុង Java
អថេរមួយត្រូវបានបង្កើតខាងក្នុង class ប៉ុន្តែនៃក្រៅ method ដូចដឹងថាអថេរ instance មិនទទួល memory ពេល compile។ វាទទួល ពេល runtime កាលណា object ប្រើ (instance) ត្រូវបានបង្កើត។
Method ក្នុង Java
ក្នុង java,  method គឺដូចអនុគមន៍
សារ:ប្រយោជន៍នៃ Method
•    Code Reusability
•    Code Optimization
Keyword ថ្មី
keyword ថ្មីត្រូវបានប្រើ ចូលទៅ memory ពេល runtime។
ឧទាហរណ៍នៃ Object និង class ដែលថែរក្សា records របស់ students
ក្នុងឧទាហរណ៍នេះ យើងកំពុងបង្កើត objects  ពីររបស់ Student class ហើយបញ្ចូល objects ក្នុង Record method លើវា។
class Student2{
int rollno;
String name;
void insertRecord(int r, String n){  //method
rollno=r;
name=n;
}
void displayInformation(){System.out.println(rollno+” “+name);}//method
public static void main(String args[]){
Student2 s1=new Student2();
Student2 s2=new Student2();
s1.insertRecord(111,”Karan”);
s2.insertRecord(222,”Aryan”);
s1.displayInformation();
s2.displayInformation();
}
}
Output:111 Karan
222 Aryan
Download ឧទាហរណ៍នេះ object និង class

មេរៀនទី១១: Method Overloading

ប្រសិនប class មួយមានច្រើន methods ដោយឈ្មោះដូចគ្នា ប៉ុន្តែខុសគ្នាប៉ារ៉ាម៉ែត្រ ដូចជា Method Overloading
Javamethod overloading អត្ថប្រយោជន៍លើអ្វី?
Method overloading បង្កើនកម្មវិធីអាន
មធ្យោបាយផ្សេងទៀតលើ overload method
មានមធ្យោបាយពីរដើម្បី overload method ក្នុង java
1.    ដោយការផ្លាស់ប្តូរ ចំនួននៃ arguments
2.    ដោយការផ្លាស់ប្តូរ ប្រភេទទិន្នន័យ data type
Methood Overloading មិនអាចប្តូរ return type របស់ method.
1)ឧទាហរណ៍នៃ Method Overloading ដោយមិនផ្លាស់ប្តូរនៃ argument
ក្នុងឧទាហរណ៍នេះបង្កើត overloaded methods ពីរដំបូង method សរុបនៃ ចំនួនពីរ និង method ទីពីរ បន្ថែម បីចំនួន។
class Calculation{
void sum(int a,int b){System.out.println(a+b);}
void sum(int a,int b,int c){System.out.println(a+b+c);}
public static void main(String args[]){
Calculation obj=new Calculation();
obj.sum(10,10,10);
obj.sum(20,20);
}
1.    }
Output:30
40
2)ឧទាហរណ៍នៃ Method Overloading ដោយការផ្លាស់ប្តូរប្រភេទ data នៃ argument
យើងបានបង្កើត overloaded methods ពីក្នុង data type។ ដែល method ទី១ទទួល បានចំនួន integer argument ពីរនឹង method ទីពីរមាន arguments ពីរ
class Calculation2{
void sum(int a,int b){System.out.println(a+b);}
void sum(double a,double b){System.out.println(a+b);}
public static void main(String args[]){
Calculation2 obj=new Calculation2();
obj.sum(10.5,10.5);
obj.sum(20,20);
}
}
Output:21.0
40
យើងអាច overload main() method?
ដោយប្រើ method overloading លោកអ្នកអាចមានចំនួនច្រើននៃ method ចម្បងក្នុង class មួយដោយ method overloading មើលក្នុងឧទាហរណ៍ខាងក្រោម:
class Overloading1{
public static void main(int a){
System.out.println(a);
}
public static void main(String args[]){
System.out.println(“main() method invoked”);
main(10);
}
}
Output:main() method invoked
10
Method Overloading និង TypePromotion
Javaឧទាហរណ៍នៃ Method Overloading ជាមួយ TypePromotion
1.    class OverloadingCalculation1{
void sum(int a,long b){System.out.println(a+b);}
void sum(int a,int b,int c){System.out.println(a+b+c);}
public static void main(String args[]){
OverloadingCalculation1 obj=new OverloadingCalculation1();
obj.sum(20,20);//now second int literal will be promoted to long
obj.sum(20,20,20);
}
}
Output:40
60
ឧទាហរណ៍នៃ Method Overloading ជាមួយ TypePromotion
ប្រសិនបើបញ្ចូល arguments ក្នុង method
class OverloadingCalculation2{
void sum(int a,int b){System.out.println(“int arg method invoked”);}
void sum(long a,long b){System.out.println(“long arg method invoked”);}
public static void main(String args[]){
OverloadingCalculation2 obj=new OverloadingCalculation2();
obj.sum(20,20);//now int arg sum() method gets invoked
}
}
Output:int arg method invoked
ឧទាហរណ៍នៃ Method Overloading ជាមួយ TypePromotion
ប្រសិនបើមិនមាន arguments ក្នុង method
class OverloadingCalculation3{
void sum(int a,long b){System.out.println(“a method invoked”);}
void sum(long a,int b){System.out.println(“b method invoked”);}
public static void main(String args[]){
OverloadingCalculation3 obj=new OverloadingCalculation3();
obj.sum(20,20);//now ambiguity
}
}
Output:Compile Time Error

មេរៀនទី១២: Constructor ក្នុង Java

Constructor ជាប្រភេទពិសេសនៃ method ដែលត្រូវបានប្រើសម្រាប់ចាប់ផ្តើម object។
តួនាទីសម្រាប់បង្កើត constructor
មានមូលដ្ឋានពីរក្នុងការបង្កើត constructor.
1.    ឈ្មោះ Constructor name ត្រូវដូចឈ្មោះ class name
2.    Constructor មិនមាន return type
បណ្តាប្រភេទនៃ constructors
មានពីរប្រភេទ constructors:
1.    default constructor (no-arg constructor)
2.    ប៉ារ៉ាម៉ែត្រ constructor
Java1) Default Constructor
A constructor that have no parameter is known as default constructor.
Syntax of default constructor:
1.    <class_name>(){}
ឧទាហរណ៍ default constructor
យើងបង្កើត no-arg constructor ក្នុង Bike class
class Bike1{
Bike(){System.out.println(“Bike is created”);}
public static void main(String args[]){
Bike1 b=new Bike1();
}
}
Output: Bike is created
ប្រសិនបើមិនមាន constructor ក្នុង class, compiler ដោយស្វ័យប្រវត្តជា default constructor។
Javaឧទាហរណ៍នៃ default constructor ដែលបង្ហាញតម្លៃ default
class Student3{
int id;
String name;
void display(){System.out.println(id+” “+name);}
public static void main(String args[]){
Student3 s1=new Student3();
Student3 s2=new Student3();
s1.display();
s2.display();
}
}
Output:0 null
0 null
ឧទាហរណ៍នៃ parameterized constructor
យើងបានបង្កើត constructor នៃ Student class ដែលមានពីរប៉ារ៉ាម៉ែត្រ
class Student4{
int id;
String name;
Student4(int i,String n){
id = i;
name = n;
}
void display(){System.out.println(id+” “+name);}
public static void main(String args[]){
Student4 s1 = new Student4(111,”Karan”);
Student4 s2 = new Student4(222,”Aryan”);
s1.display();
s2.display();
}
}
Output:111 Karan
222 Aryan
Constructor Overloading
Constructor overloading គឺជាបច្ចេកទេសមួយក្នុង Java ក្នុង class មួយអាចមានចំនួនច្រើន នៃ constructors ក្នុង parameter lists។
ឧទាហរណ៍នៃ Constructor Overloading
class Student5{
int id;
String name;
int age;
Student5(int i,String n){
id = i;
name = n;
}
Student5(int i,String n,int a){
id = i;
name = n;
age=a;
}
void display(){System.out.println(id+” “+name+” “+age);}
public static void main(String args[]){
Student5 s1 = new Student5(111,”Karan”);
Student5 s2 = new Student5(222,”Aryan”,25);
s1.display();
s2.display();
}
}
Output:111 Karan 0
222 Aryan 25
ភាពខុសគ្នារវាង constructor និង method ?
Constructor
Method
Constructor គឺត្រូវបានប្រើពេលចាប់ផ្តើមនៃ object. Method ត្រូវបានប្រើដើម្បីថ្លែងការរបស់ object។
Constructor មិនមាន return type. Method ត្រូវមាន return type.
Constructor ត្រូវបានបញ្ចេញក្រៅ Method ចូលពីក្រៅ
java compiler ផ្តល់ចា default constructor ប្រសិនបើ មិនមាន constructor ផ្សេងទៀត។ Method មិនបានផ្តល់ដោយ compiler
ឈ្មោះ Constructor name ត្រូវដូច class name. ឈ្មោះ Method name មិនអាចដូច class name.
ចម្លងតម្លៃនៃ object ទៅ constructor in C++
មានវិធីច្រើនដើម្បី copy តម្លៃនៃ object ក្នុងផ្សេងទៀត
•    ដោយ constructor
•    ដោយផ្តល់តម្លៃនៃ object ក្នុងផ្សេងទៀត
•    ដោយ clone() method នៃ Object class
ឧទាហរណ៍.
class Student6{
int id;
String name;
Student6(int i,String n){
id = i;
name = n;
}
Student6(Student s){
id = s.id;
name =s.name;
}
void display(){System.out.println(id+” “+name);}
public static void main(String args[]){
Student6 s1 = new Student6(111,”Karan”);
Student6 s2 = new Student6(s1);
s1.display();
s2.display();
}
}
Output:111 Karan
111 Karan
ចម្លងតម្លសនៃ object ទៅផ្សេងទៀតដោយមិនប្រើ constructor
class Student7{
int id;
String name;
Student7(int i,String n){
id = i;
name = n;
}
Student7(){}
void display(){System.out.println(id+” “+name);}
public static void main(String args[]){
Student7 s1 = new Student7(111,”Karan”);
Student7 s2 = new Student7();
s2.id=s1.id;
s2.name=s1.name;
s1.display();
s2.display();
}
}
Output:111 Karan
|
មេរៀនទី១៣: static keyword
ពាក្ស static keyword ត្រូវបានប្រើក្នុង java សម្រាប់គ្រប់គ្រង memory។ យើងអាចអនុវត្តន៍ static keyword ជាមួយអថេរ, methods, blocks និង class។ ដែល static អាចជា:
1) អថេរ static variable
ប្រសិនបើលោកអ្នក ប្រកាស អថេរដូចជា static វាដឹងថាអថេរ static ។
•    អថេរ static អាចប្រើដើម្បី ប្រើ property រួមនៃ objects ទាំងអស់ ឧទាហរណ៍ ឈ្មោះក្រុមហ៊ុន របស់ employees ឈ្មោះមហាវិទ្យាល័យនៃនិស្សិត ។
•    អថេរ static ទទួល memory នៅក្នុង class ពេលដែល class loading។
សារ:សំខាន់នៃអថេរ static
ស្វែងយល់ពីបញ្ហា ដោយមិនប្រើអថេរ static variable
class Student{
int rollno;
String name;
String college=”ITS”;
}
ឧបមាថាមាន  500 និស្សិតក្នុងមហាវិទ្យាល័យ , instance data នឹងទទួល memory កាលណា object ត្រូវបានបង្កើត។
static property ត្រូវបានចែកចាយ objects ទាំងអស់
ឧទាហរណ៍នៃអថេរ static variable
//Program of static variable
class Student8{
int rollno;
String name;
static String college =”ITS”;
Student8(int r,String n){
rollno = r;
name = n;
}
void display (){System.out.println(rollno+” “+name+” “+college);}
public static void main(String args[]){
Student8 s1 = new Student8(111,”Karan”);
Student8 s2 = new Student8(222,”Aryan”);
s1.display();
s2.display();
}
}
Output:111 Karan ITS
222 Aryan ITS
Javaកម្មវិធីនៃ counter ដោយមិនប្រើអថេរ static variable
ដូច្នេះ object និមួយៗនឹងមានតម្លៃ 1 ក្នុងអថេរ count។
class Counter{
int count=0;//will get memory when instance is created
Counter(){
count++;
System.out.println(count);
}
public static void main(String args[]){
Counter c1=new Counter();
Counter c2=new Counter();
Counter c3=new Counter();
}
}
Output:1
1
1
កម្មវិធី counter ដោយប្រើអថេរ static
ដូចដែលបាន ពន្យល់ខាងលើ static អថេរនឹងទទួល memory មួយគត់ ប្រសិនបើ object ផ្សេងទៀតផ្លាស់ប្តូរតម្លៃនៃអថេរ static variable។
class Counter2{
static int count=0;//will get memory only once and retain its value
Counter2(){
count++;
System.out.println(count);
}
public static void main(String args[]){
Counter2 c1=new Counter2();
Counter2 c2=new Counter2();
Counter2 c3=new Counter2();
}
}
Output:1
2
3
2) static method
ប្រសិនបើលោកអ្នកអនុវត្ត static keyword ជាមួយ method ផ្សេងទៀត វាដឹងថាដូចជា static method
•    static method កម្មសិទ្ធ class ដូចជា object របស់ class មួយ
•    static method អាចមិនប្រើ ត្រូវការបង្កើត class
•    static method អាចអនុញ្ញាត static data member និងអាចផ្លាស់ប្តូរតម្លៃរបស់វា។
ឧទាហរណ៍នៃ static method
//Program of changing the common property of all objects(static field).
class Student9{
int rollno;
String name;
static String college = “ITS”;
static void change(){
college = “BBDIT”;
}
Student9(int r, String n){
rollno = r;
name = n;
}
void display (){System.out.println(rollno+” “+name+” “+college);}
public static void main(String args[]){
Student9.change();
Student9 s1 = new Student9 (111,”Karan”);
Student9 s2 = new Student9 (222,”Aryan”);
Student9 s3 = new Student9 (333,”Sonoo”);
s1.display();
s2.display();
s3.display();
}
}
Output:111 Karan BBDIT
222 Aryan BBDIT
333 Sonoo BBDIT
ឧទាហរណ៍ផ្សេងទៀតនៃ static method //Program to get cube of a given number by static method
class Calculate{
static int cube(int x){
return x*x*x;
}
public static void main(String args[]){
int result=Calculate.cube(5);
System.out.println(result);
}
}
Output:125
ការកំណត់លក្ខខ័ណ្ឌសម្រាប់ static method
មានពីវិធីសម្រាប់កំណត់ static method:
static method មិនអាចប្រើ static data member ឬហៅ non-static method ដោយផ្ទាល់។
class A{
int a=40;//non static
public static void main(String args[]){
System.out.println(a);
}
}
Output:Compile Time Error
3)static block
•    ប្រើសម្រាប់ចាប់ផ្តើម static data member.
•    វាបានប្រត្តិបត្តិការ មុនពេល method ពេល class loading។
ឧទាហរណ៍នៃ static block
class A2{
static{System.out.println(“static block is invoked”);}
public static void main(String args[]){
System.out.println(“Hello main”);
}
}
Output:static block is invoked
Hello main
ប្រត្តិបត្តិកម្មវិធីដោយមិនប្រើ main() method?
static block អាចប្រើជាមួយ JDK មិនប្រើក្នុង JDK 1.7.
class A3{
static{
System.out.println(“static block is invoked”);
System.exit(0);
}
}
Output:static block is invoked (if not JDK7)
In JDK7 and above, output will be:
Output:Error: Main method not found in class A3, please define the main method as:
public static void main(String[] args)

មេរៀនទី១៤: ការប្រមូលផ្តុំ Aggregation

ប្រសិន class មានទំនាក់ទំនង entity ដូចជាការប្រមូលផ្តុំទំនាក់ទំនង។ Employee object ផ្ទុកពត៌មានជាច្រើនដូចជា id, name, emailId ។ល។ វាផ្ទុកឈ្មោះ object មួយឬច្រើន។ ដែលវាផ្ទុកព័ត៌មានផ្ទុកដូចជា city, state, country, zipcode បង្ហាញដូចខាងក្រោម
class Employee{
int id;
String name;
Address address;//Address is a class

}
នៅក្នុងករណីនេះ, Employee មាន entity មួយដូច្នេះ ទំនាក់ទំងគឺជា Employee។
ហេតុអ្វីប្រើ Aggregation?
ឧទាហរណ៍នៃ Aggregation
Javaនៅក្នុងឧទាហរណ៍ យើងបានបង្កើត Operation class ក្នុង Circle class.
class Operation{
int square(int n){
return n*n;
}
}
class Circle{
Operation op;//aggregation
double pi=3.14;
1.     double area(int radius){  
op=new Operation();
int rsquare=op.square(radius);//code reusability (i.e. delegates the method call).
return pi*rsquare;
}
public static void main(String args[]){
Circle c=new Circle();
double result=c.area(5);
System.out.println(result);
}
}  Output:78.5
ស្វែងយល់ពីន័យនៃការប្រើ Aggregation
Address.java
public class Address {
String city,state,country;
public Address(String city, String state, String country) {
this.city = city;
this.state = state;
this.country = country;
}
}
Emp.java
public class Emp {
int id;
String name;
Address address;
public Emp(int id, String name,Address address) {
this.id = id;
this.name = name;
this.address=address;
}
void display(){
System.out.println(id+” “+name);
System.out.println(address.city+” “+address.state+” “+address.country);
}
public static void main(String[] args) {
Address address1=new Address(“gzb”,”UP”,”Cambodia”);
Address address2=new Address(“gno”,”UP”,” Cambodia “);
Emp e=new Emp(111,”varun”,address1);
Emp e2=new Emp(112,”arun”,address2);
e.display();
e2.display();
}
}
Output:111 varun
gzb UP Cambodia
112 arun
gno UP Cambodia
Download ឧទាហរណ៍នេះ

មេរៀនទី១៥: Method Overriding

ប្រសិនបើ subclass (class កូន) ដែលមាន method ដូចគ្នាបានប្រកាសនៅក្នុង class មេ វាគឺជា method overriding។ ប្រសិនបើ subclass បែងចែកលក្ខណ:ពិសេស នៃការអនុវត្តន៍ របស់ method  ដែលបានផ្តល់អោយទៅ class មេ។
អត្ថប្រយោជន៍នៃការប្រើ Method Overriding
•    Method Overriding ត្រូវបានប្រើដើម្បីផ្តល់ការអនុវត្តពិសេសនៃ method ដែលបានផ្តល់ដោយ super class។
•    Method Overriding ត្រូវបានប្រើសម្រាប Runtime
តួនាទីសម្រាប់ Method Overriding
1.    method ត្រូវតែមានឈ្មោះដូច ក្នុង parent class
2.    method ត្រូវតែមានឈ្មោះដូច parameter ដូចក្នុង parent class.
3.    ត្រូវតែជា IS-A relationship (inheritance)។
ស្វែងយល់ពីបញ្ហាដោយមិនប្រើ method overriding
class Vehicle{
void run(){System.out.println(“Vehicle is running”);}
}
class Bike extends Vehicle{
public static void main(String args[]){
Bike obj = new Bike();
obj.run();
}
}
Output:Vehicle is running
ឧទាហរណ៍នៃ method overriding
ក្នុងឧទាហរណ៍ នេះបានកំណត់ រត់ method ក្នុង subclass កំណត់ក្នុង parent class ប៉ុន្តែវាអនុវត្តចំនួនខ្លះ។ ឈ្មោះ name និង parameter នៃ method គឺដូចនឹង IS-A relationship រវាងបណ្តា classes។
class Vehicle{
void run(){System.out.println(“Vehicle is running”);}
}
class Bike2 extends Vehicle{
void run(){System.out.println(“Bike is running safely”);}
public static void main(String args[]){
Bike2 obj = new Bike2();
obj.run();
}
Output:Bike is running safely
ឧទាហរណ៍ពិតនៃ Java Method Overriding
Javaclass Bank{
int getRateOfInterest(){return 0;}
}
class SBI extends Bank{
int getRateOfInterest(){return 8;}
}
class ICICI extends Bank{
int getRateOfInterest(){return 7;}
}
class AXIS extends Bank{
int getRateOfInterest(){return 9;}
}
class Test2{
public static void main(String args[]){
SBI s=new SBI();
ICICI i=new ICICI();
AXIS a=new AXIS();
System.out.println(“SBI Rate of Interest: “+s.getRateOfInterest());
System.out.println(“ICICI Rate of Interest: “+i.getRateOfInterest());
System.out.println(“AXIS Rate of Interest: “+a.getRateOfInterest());
}
}
Output:
SBI Rate of Interest: 8
ICICI Rate of Interest: 7
AXIS Rate of Interest: 9

មេរៀនទី១៦: Covariant Return

ប្រភេទ covariant return ដែលជា return type ប្រហាក់ប្រហែលគ្នាក្នុង subclass។
ឧទាហរណ៍នៃ Covariant Return Type
class A{
A get(){return this;}
}
class B1 extends A{
B1 get(){return this;}
void message(){System.out.println(“welcome to covariant return type”);}
public static void main(String args[]){
new B1().get().message();
}
}
Output:welcome to covariant return type
.


មេរៀនទី១៧: super keyword

super គឺយោងតាមអថេរ ដែលត្រូវបានប្រើ សម្រាប់ parent class object។
ប្រើ super Keyword
1.    super ត្រូវបានប្រើសម្រាប់អថេរ parent class។
2.    super() ត្រូវបានប្រើសម្រាប់ដំឡើង parent class constructor។
1) បញ្ហាមិនប្រើ super keyword
class Vehicle{
int speed=50;
}
class Bike3 extends Vehicle{
int speed=100;
void display(){
System.out.println(speed);//will print speed of Bike
}
public static void main(String args[]){
Bike3 b=new Bike3();
b.display();
}
}
Output:100
ដំណោះស្រាយពេលប្រើ super keyword
//example of super keyword  
class Vehicle{
int speed=50;
}
class Bike4 extends Vehicle{
int speed=100;
void display(){
System.out.println(super.speed);//will print speed of Vehicle now
}
public static void main(String args[]){
Bike4 b=new Bike4();
b.display();
}
}
Output:50
2) super ប្រើដើម្បី parent class constructor
លោកអ្នកអាចប្រ super keyword ដើម្បីដំលើង parent class constructor ដូចខាងក្រោមនេះ:
class Vehicle{
Vehicle(){System.out.println(“Vehicle is created”);}
}
class Bike5 extends Vehicle{
Bike5(){
super();//will invoke parent class constructor
System.out.println(“Bike is created”);
}
public static void main(String args[]){
Bike5 b=new Bike5();
}
}
Output:Vehicle is created
Bike is created
super() ត្រូវបានបន្ថែមទៅក្នុង class constructor និមួយៗដោយស្វ័យប្រវត្តិដោយ compiler។
Javaដូចយើងដឹងថា default constructor ត្រូវបានផ្តល់ compiler ដោយស្វ័យប្រវត្តិ វាបន្ថែម super() សម្រាប់ statement ដំបូង។ ប្រសិនបើលោកអ្នក កំពុងបង្កើត constructor របស់អ្នកដោយផ្ទាល់ លោកអ្នកមិនប្រើ () ឬ super() ដូចជា statement ដំបូង ដែល compiler នឹងផ្តល់ super() ។
ឧទាហរណ៍នៃ super keyword កាលណា super() ត្រូវបានផ្តល់ដោយ compiler ។
class Vehicle{
Vehicle(){System.out.println(“Vehicle is created”);}
}
class Bike6 extends Vehicle{
int speed;
Bike6(int speed){
this.speed=speed;
System.out.println(speed);
}
public static void main(String args[]){
Bike6 b=new Bike6(10);
}
}
Output:Vehicle is created
10
3) super អាចប្រើជាមួយ parent class method។
super keyword អាចប្រើ parent class method វានឹងប្រើក្នុងករណីផ្ទុក subclass ដូចជា method ដូច parent class បង្ហាញឧទាហរណ៍ខាងក្រោម:
class Person{
void message(){System.out.println(“welcome”);}
}
class Student16 extends Person{
void message(){System.out.println(“welcome to java”);}
void display(){
message();//will invoke current class message() method
super.message();//will invoke parent class message() method
}
public static void main(String args[]){
Student16 s=new Student16();
s.display();
}
}
Output:welcome to java
welcome
ក្នុងករណីនេះ មិនមាន method ក្នុង subclass ដូចជា parent, វាមិនត្រូវការប្រើ super។ ក្នុងឧទាហរណ៍នេះ បានអោយ message() method ពី Student class ប៉ុន្តែ Student class មិនមាន message() method ដូច្នេះលោកអ្នក អាចហៅផ្ទាល់ message() method។
កម្មវិធីករណីមិនប្រើ super
class Person{
void message(){System.out.println(“welcome”);}
}
class Student17 extends Person{
void display(){
message();//will invoke parent class message() method
}
public static void main(String args[]){
Student17 s=new Student17();
s.display();
}
}
Output:welcome

មេរៀនទី១៨: Final Keyword

final keyword ក្នុងកម្មវិធី java ត្រូវបានប្រើដើម្បីកំណត់ user ដែល final keyword អាចប្រើក្នុង context ច្រើន:
1.    អថេរ variable
2.    method
3.    class
ពាក្ស final keyword អាចអនុវត្តជាមួយអថេរជាច្រើន ហើយអថេរ final ដែលមិនមានតម្លៃ វាត្រូវបានហោះអថេរ blank final variable ឬមិនអាចចាប់ផ្តើមអថេរ final variable។
Java1) អថេរ final variable
ប្រសិនបើ លោកអ្នកបង្កើតអថេរដូចជា final, លោកអ្នកអាចប្តូរ final variable។
ឧទាហរណ៍នៃ final variable
class Bike9{
final int speedlimit=90;//final variable
void run(){
speedlimit=400;
}
public static void main(String args[]){
Bike9 obj=new  Bike9();
obj.run();
}
}//end of class
Output:Compile Time Error
2) final method
ប្រសិនបើ លោកអ្នកបង្កើត method មួយចំនួនដូចជា final លោកអ្នកមិនអាច override លើវា
ឧទាហរណ៍នៃ final method
class Bike{
final void run(){System.out.println(“running”);}
}
class Honda extends Bike{
void run(){System.out.println(“running safely with 100kmph”);}
public static void main(String args[]){
Honda honda= new Honda();
honda.run();
}
}
Output:Compile Time Error
3) final class
ប្រសិនបើលោកអ្នកបង្កើត class មួយចំនួនដូចជា final, លោកអ្នកមិនអាច extend វា។
ឧទាហរណ៍នៃ final class
1.    final class Bike{}
2.
3.    class Honda1 extends Bike{
4.      void run(){System.out.println(“running safely with 100kmph”);}
5.
6.      public static void main(String args[]){
7.      Honda1 honda= new Honda();
8.      honda.run();
9.      }
10.    }
Output:Compile Time Error
Q) Is final method inherited?
Ans) Yes, final method is inherited but you cannot override it. For Example:
1.    class Bike{
2.      final void run(){System.out.println(“running…”);}
3.    }
4.    class Honda2 extends Bike{
5.       public static void main(String args[]){
6.        new Honda2().run();
7.       }
8.    }
Output:running…
ឧទាហរណ៍នៃ blank final variable
1.    class Student{
2.    int id;
3.    String name;
4.    final String PAN_CARD_NUMBER;
5.    …
6.    }
យើងអាចចាប់ផ្តើមអថេរ blank final variable?
class Bike10{
final int speedlimit;//blank final variable
Bike10(){
speedlimit=70;
System.out.println(speedlimit);
}
public static void main(String args[]){
new Bike10();
}
}
Output:70
អថេរ static blank final
អថេរ static final មិនអាចចាប់ផ្តើមការប្រកាស ដូចចាអថេរ static blank final variable. It can be initialized only in static block.
ឧទាហរណ៍នៃ static blank final variable
class A{
static final int data;//static blank final variable
static{ data=50;}
public static void main(String args[]){
System.out.println(A.data);
}
}
ប៉ារ៉ាម៉ែត្រ final ជាអ្វី?
ប្រសិនបើប្រកាសប៉ារ៉ាម៉ែត្រ final លោកអ្នកអាចផ្លាស់ប្តូរតម្លៃវា
class Bike11{
int cube(final int n){
n=n+2;//can’t be changed as n is final
n*n*n;
}
public static void main(String args[]){
Bike11 b=new Bike11();
b.cube(5);
}
}
Output:Compile Time Error

មេរៀនទី១៩: Runtime Polymorphism

Runtime polymorphismDynamic Method Dispatch គឺដំណើរការហៅ call ទៅលើ method ត្រូវបានដោះស្រាយពេល runtime ខណ:ពេល compile។
Upcasting
កាលណាអថេរ Parent class យោងតាម object នៃ Child class
Javaclass A{}
class B extends A{}
A a=new B();//upcasting
Example of Runtime Polymorphism
ក្នុងឧទាហរណ៍នេះ យើងបង្កើតពីរ classes Bike និង Splendar ដែល Splendar class ពង្រីក Bike class ហើយ overrides លើវា run() method។  យើងហៅ run method ដោយអថេរ reference នៃ Parent class។
class Bike{
void run(){System.out.println(“running”);}
}
class Splender extends Bike{
void run(){System.out.println(“running safely with 60km”);}
public static void main(String args[]){
Bike b = new Splender();//upcasting
b.run();
}
}
Output:running safely with 60km.
ឧទាហរណ៍ SBI, ICICI និង AXIS banks នឹងផ្តល់ 8%, 7% និង 9% តម្លៃការប្រាក់។
Javaclass Bank{
int getRateOfInterest(){return 0;}
}
class SBI extends Bank{
int getRateOfInterest(){return 8;}
}
class ICICI extends Bank{
int getRateOfInterest(){return 7;}
}
class AXIS extends Bank{
int getRateOfInterest(){return 9;}
}
class Test3{
public static void main(String args[]){
Bank b1=new SBI();
Bank b2=new ICICI();
Bank b3=new AXIS();
System.out.println(“SBI Rate of Interest: “+b1.getRateOfInterest());
System.out.println(“ICICI Rate of Interest: “+b2.getRateOfInterest());
System.out.println(“AXIS Rate of Interest: “+b3.getRateOfInterest());
}
}
Output:
SBI Rate of Interest: 8
ICICI Rate of Interest: 7
AXIS Rate of Interest: 9
Runtime Polymorphism ជាមួយចំនួនទិន្នន័យ data member
Method មិនត្រូវបាន override លើ data members, ដូច្នេះ runtime polymorphism មិនអាចសម្រេច ដោយ data members។
តួនាទី: Runtime polymorphism មិនអាចសំរេច ដោយ data members។
class Bike{
int speedlimit=90;
}
class Honda3 extends Bike{
int speedlimit=150;
public static void main(String args[]){
Bike obj=new Honda3();
System.out.println(obj.speedlimit);//90
}
Output:90
Runtime Polymorphism ជាមួយ Multilevel Inheritance
class Animal{
void eat(){System.out.println(“eating”);}
}
class Dog extends Animal{
void eat(){System.out.println(“eating fruits”);}
}
class BabyDog extends Dog{
void eat(){System.out.println(“drinking milk”);}
public static void main(String args[]){
Animal a1,a2,a3;
a1=new Animal();
a2=new Dog();
a3=new BabyDog();
a1.eat();
a2.eat();
a3.eat();
}
}
Output: eating
eating fruits
drinking Milk
ព្យាយាមជាមួយលទ្ធផល Output
class Animal{
void eat(){System.out.println(“animal is eating…”);}
}
class Dog extends Animal{
void eat(){System.out.println(“dog is eating…”);}
}
class BabyDog1 extends Dog{
public static void main(String args[]){
Animal a=new BabyDog1();
a.eat();
}}
Output: Dog is eating

មេរៀនទី២០: Static Dynamic Binding

ការភ្ជាប់ method call ទៅ method body ដូចជា binding។
មានពីរប្រភេទនៃ binding
1.    static binding
2.    dynamic binding
1) បណ្តាអថេរ មាន type មួយ
1.    int data=30;
Here data variable is a type of int.
2) References មាន type មួយ
class Dog{
public static void main(String args[]){
Dog d1;//Here d1 is a type of Dog
}
}
3) Objects មាន type មួយ
An object is an instance of particular java class,but it is also an instance of its superclass.
class Animal{}
class Dog extends Animal{
public static void main(String args[]){
Dog d1=new Dog();
}
}
static binding
ឧទាហរណ៍ static binding
class Dog{
private void eat(){System.out.println(“dog is eating…”);}
public static void main(String args[]){
Dog d1=new Dog();
d1.eat();
}
}
Dynamic binding
កាលណា object ត្រូវបានកំណត់ពេលរត់ run-time, វាគឺជា dynamic binding។
ឧទាហរណ៍  dynamic binding
class Animal{
void eat(){System.out.println(“animal is eating…”);}
}
class Dog extends Animal{
void eat(){System.out.println(“dog is eating…”);}
public static void main(String args[]){
Animal a=new Dog();
a.eat();
}
}
Output:dog is eating…

Leson 2: Hello-Java-program

កម្មវិធីងាយនៃ-Java
ក្នុងទំព័រនេះ យើងនឹងរៀន ពីរបៀបសរសេរកម្មវិធីងាយ នៃ java។ យើងអាចសរសេរងាយ hello java បន្ទាប់ពីដំឡើង JDK។ ដើម្បីបង្កើត កម្មវិធីងាយ java program លោកអ្នកបង្កើត class មួយដែលផ្ទុកវិធី ចម្បង។ អនុញ្ញាតអោយយប់ពីតម្រូវការជាដំបូង។
តម្រូវការសម្រាប់ Hello Java Example
ដើម្បីប្រត្តិបត្តិការ java program លោកអ្នកត្រូវការ
  • ដំឡើង JDK ប្រសិនលោកអ្នក មិនបានដំឡើងវា ចូលដោនឡូត download the JDK ហើយដំឡើងវា។
  • បង្កើត path ជា jdk/bin directory. http://www.javatpoint.com/how-to-set-path-in-java
  • បង្កើតកម្មវិធី java program
  • compile និងរត់ java program
ការបង្កើត hello java example
អនុញ្ញាតបង្កើត hello java program:
class Simple{
public static void main(String args[]){
System.out.println(“Hello Java”);
}
}
save file ជា Simple.java
To compile: javac Simple.java
To execute: java Simple
Output:Hello Java
ស្វ័យយល់កម្មវិធី java program
អនុញ្ញាតអោយ មើលន័យ class, public, static, void, main, String[], System.out.println()។
  • class keyword ត្រូវបានប្រើសម្រាប់ប្រកាស declare class មួយក្នុង java។
  • public keyword គឺអនុញ្ញាតអោយអ្នកកែប្រែ ដែលតំណាង អ្នកទស្សនា វាមានន័យថាគឺមើលឃើញ ទាំងអស់។
  • static គឺជាពាក្ស ប្រសិនបើយើងប្រកាស declare វិធីផ្សេងដូចជា static វាគឺដឹងដូចជា static method។ សារ:សំខាន់នៃវិធី static method គឺមិនត្រូវការបង្កើត object ទៅ static method។
  • void គឺត្រឡប់ចូល ប្រភេទនៃវិធី method មានន័យថាវាមិនត្រឡប់ចូលទៅតម្លៃផ្សេង។
  • main តំណាំង startup នៃ program។
  • String[] args ត្រូវបានប្រើសម្រាប់ command line argument។​ យើងនឹងរៀន ពេលក្រោយ។
  • System.out.println() ប្រើ print statement យើងនឹងរៀនអំពីការងារនៅក្នុង System.out.println statement ពេលក្រោយ។
ដើម្បីសរសេរកម្មវិធីងាយ program បើកលើ notepad ដោយចាប់ផ្តើម start menu -> All Programs -> Accessories -> notepad ហើយសរសេរកម្មវិធីងាយ បង្ហាញដូចខាងក្រោម:
Windows 8.1
ដូចបានបង្ហាញក្នុង diagram ខាងលើ សរសេរកម្មវិធីងាយរបស់ java ក្នុង notepad ហើយបានរក្សា saved វាជា Simple.java។ ដើម្បី compile ហើយរត់ program នេះយើងត្រូវការបើក command prompt ដោយ start menu -> All Programs -> Accessories -> command prompt
Javaដើម្បី compile ហើយរត់ program ខាងលើ ចូលទៅ directory ដំបូងជា c:\new សរសេរជា:
To compile:    javac Simple.java
To execute:    java Simple
តើមានវិធីប៉ុន្មានយ៉ាង សរសេរ java program
មានច្រើនវិធី ដើម្បីសរសេរ java program។
1) ដោយការផ្លាស់ប្តូរ sequence នៃអ្នកកែប្រែ modifiers, method prototype មិនត្រូវផ្លាស់ប្តូរ។
អនុញ្ញាតអោយមើលកូដ simple code នៃ main method។
static public void main(String args[])
2) subscript notation ក្នុង java array អាចប្រើបន្ទាប់ពីវាយ មុនពេលអថេរ ឬក្រោយ អថេរ។
អនុញ្ញាតអោយប្រើកូដ code ខុសគ្នាដើម្បីសរសេរ main method។
–    public static void main(String[] args)
–    public static void main(String []args)
–  public static void main(String args[])
3)  var-args ផ្តល់អោយ main method ដោយចុច 3 ellipses (dots)
អនុញ្ញាតកូដ simple code ដោយប្រ var-args ក្នុង main method យើងនឹងរៀនអំពី var-args ក្នុង Java New Features។
1.    public static void main(String… args)
4) មានសញ្ញា ក្បៀស semicolon នៅបញ្ចប់ របស់ class ក្នុង java គឺបានជ្រើសរើស។
អនុញ្ញាតមើលកូដ simple code។
class A{
static public void main(String… args){
System.out.println(“hello java4″);
}
};
Valid java main method signature
1.    public static void main(String[] args)
2.    public static void main(String []args)
3.    public static void main(String args[])
4.    public static void main(String… args)
5.    static public void main(String[] args)
6.    public static final void main(String[] args)
7.    final public static void main(String[] args)
8.    final strictfp public static void main(String[] args)
Invalid java main method signature
1.    public void main(String[] args)
2.    static void main(String[] args)
3.    public void static main(String[] args)
4.    abstract public static void main(String[] args)
ដោះស្រាយ error “javac មិនបានរៀបចំ internal ឬ external command” ?
ប្រសិនជាមានបញ្ហា ដូចជាបានបង្ហាញ ក្នុងរូបខាងក្រោម លោកអ្នកនឹងត្រូវការបង្កើត path។ ចាប់តាំងពី DOS មិនស្គាល់ javac ឬ java យើងត្រូវការបង្កើត path។ ដែល Path មិនមែនជាតម្រូវការក្នុងដូចជា ក្នុងករណីរក្សា save កម្មវិធីរបស់អ្នកខាងក្នុង jdk/bin folder។
Java

Leson 1: ការណែនាំ-Java

តើ Java គឺជាអ្វី? Java គឺជាភាសាកម្មវិធី programming language និង platform
JavaPlatform ដែល hardware ឬ software environment ក្នុងកម្មវិធី រត់ ដំណើរការ ដូចជា platform មួយ។ កម្មវិធី Java មាន Runtime Environment ផ្ទាល់ (JRE) និងអនុគមន៍ API ត្រូវបានហៅថា platform។ ឧទាហរណ៍ Java
class Simple{
public static void main(String args[]){
System.out.println(“Hello Java”);
}
}
វាប្រើនៅកន្លែងណា? យោងតាមក្រុមហ៊ុន Sun ឧបករណ៍ 3 ពាន់លាន ឧបករណ៍ រត់ដំណើរការលើ java។ មានឧបករណ៍ជាច្រើន កំពុងប្រើជាមួយ java ដែលខាងក្រោមនេះបង្ហាញពីកម្មវិធី:
  1. កម្មវិធី Desktop Applications ដូចជា acrobat reader, media player, កម្មវិធី antivirus ។ល។
  2. កម្មវិធី វ៉ិបសាយ Web Applications ដូចជា irctc.co.in, javatpoint.com ។ល។
  3. កម្មវិធី Enterprise Applications ដូចជាកម្មវិធីធានាគារ banking applications។
  4. Mobile
  5. ប្រព័ន្ធ Embedded System
  6. Smart Card
  7. Robotics
  8. Games ។ល។
ប្រភេទកម្មវិធី Java Applications មានបួនប្រភេទ កម្មវិធី ដែលអាចបង្កើតដោយ java:
1) កម្មវិធី Standalone Application វាគឺដូចជាកម្មវិធី  desktop application ឬសន្លឹក window-based application។ កម្មវិធី application យើងត្រូវការដំឡើងលើគ្រប់ម៉ាស៊ីន ដូចចា media player, antivirus ។ល។  AWT និង Swing ត្រូវបានប្រើ java សម្រាប់ standalone applications.
2) កម្មវិធី Web Application ម្មវិធី  application ដែលរត់លើ server និងបង្កើត dynamic page ត្រូវបានហៅថាជាកម្មវិធី  web application។ ឥឡូនេះ servlet, jsp, struts, jsf ។ល។ បច្ចេកវិទ្យាត្រូវបានប្រើ សម្រាប់កម្មវិធី  web applications ក្នុង java។
3) កម្មវិធី Enterprise Application កម្មវិធី  application ដែលត្រូវ បានបែងចែកជា banking applications ។ល។ វាមានសារ:សំខាន់ សុវត្តិភាព កំរិត ខ្ពស់ load balancing និង clustering។
4) កម្មវិធី Mobile Application ម្មវិធី  application ត្រូវបានបង្កើត កម្មវិធី mobile device។ ដែលសព្វថ្ងៃប្រើ Android និង Java ME ប្រើ សម្រាប់បង្កើតកម្មវិធី mobile application។
ប្រវត្តិនៃ Java ava ចាប់ពីក្រុម Green Team សមាជិក Java ធ្វើការងារ ច្រើនដើម្បីអភិវឌ្ឈន៍ភាសាសម្រាបឧបករណ៍ digital device ដូចជាបង្កើត set-top boxes, television។
1) James Gosling, Mike Sheridan, និង Patrick Naughton បានផ្តួចផ្តើមភាសា Java language project ក្នុងឆ្នាំ 1991។
2) បានរចនាសម្រាប់ប្រព័ន្ធ embedded systems ក្នុង electronic ដូចជាបង្កើត top boxes។
3) ដំបូវវាហៅ “Greentalk” ដោយ James Gosling មាន file extension ជា.gt។
4) ក្រោយមកគេហៅថា Oak ហើយបានអភិវឌ្ឃន៍ផ្នែកនៃ Green project។
Java
ហេតុអ្វីមានឈ្មោះថា Oak សម្រាប់ភាសា java language?
5) Oak គឺជានិតិសញ្ញា symbol ជ្រើសរើសដើមឈើធម្មជាតិ មានច្រើនប្រភេទដូចជា U.S.A., France, Germany, Romania ។ល។
6) ក្នុងឆ្នាំ 1995, Oak ត្រូវបានកែជាឈ្មោះ “Java” វិធីព្រោះវាមានចុះពាណិជ្ជកម្ម trademark ដោយ Oak Technologies។
មានប្រភេទ java version ជាច្រើនដែលបានប្រើ
  1. JDK Alpha and Beta (1995)
  2. JDK 1.0 (23rd Jan, 1996)
  3. JDK 1.1 (19th Feb, 1997)
  4. J2SE 1.2 (8th Dec, 1998)
  5. J2SE 1.3 (8th May, 2000)
  6. J2SE 1.4 (6th Feb, 2002)
  7. J2SE 5.0 (30th Sep, 2004)
  8. Java SE 6 (11th Dec, 2006)
  9. Java SE 7 (28th July, 2011)
លក្ខណ:របស់ Java
Java មានលក្ខណ:បានផ្តល់ ងាយស្រួលយល់
  1. Simple
  2. Object-Oriented
  3. Platform independent
  4. Secured
  5. Robust
  6. Architecture neutral
  7. Portable
  8. Dynamic
  9. Interpreted
10. High Performance
11. Multithreaded
12. Distributed

Simple
យោងតាម Sun, ភាសា Java language គឺងាយស្រួលព្រោះ:
      syntax គឺមានមូលដ្ឋានលើ C++ (ដូច្នេះងាយស្រួលសម្រាប់អ្នក programmer រៀនវាក្រោយពី C++)។
Object-oriented
Object-oriented មានន័យយើងរៀបចំកម្មវិធី software របស់យើងដូចជាការបញ្ចូលនៃប្រភេទ objects ទាំង data និង behaviour។
Object-oriented programming(OOPs) គឺជាវិធីសាស្រ្ត ដែលងាយបង្កើត software និង maintenance។
មូលដ្ឋាននស OOP គឺជា:
  1. Object
  2. Class
  3. Inheritance
  4. Polymorphism
  5. Abstraction
  6. Encapsulation
Platform ឯករាជ្យ
platform គឺជា hardware ឬ software environment ក្នុងកម្មវិធី program run។ វាមានពីរ ប្រភេទ នៃ platforms software-based និង hardware-based។ កម្មវិធី Java ផ្តល់ software-based platform។ កម្មវិធី  Java platform ពី platform ផ្សេងទៀត ហើយ software-based platform ដែលរត់ខាងលើ hardware-based platforms ផ្សេងទៀត។ វាមានពីសមាសធាតុ:
  1. Runtime Environment
  2. API(Application Programming Interface)
Java
 កូដ Java code រត់លើ multiple platforms ឧទាហរណ៍ Windows,Linux,Sun Solaris,Mac/OS ។ល។ កូដ Java code ត្រូវបាន compiled ក្នុង bytecode។ ដែល bytecode នេះជា platform ឯករាជ្យកូដ code វារត់លើ platforms ច្រើនដូចជា Write Once និង Run Anywhere(WORA)។
Secured
Java គឺមានសុវត្តិភាព:
  • No explicit pointer
  • កម្មវិធីរត់នៅក្នុង virtual machine sandbox.
Java
  • Classloader- បន្ថែមសុវត្ថិភាព security ដោយបំបែកជា package សម្រាប់បណ្តា classes នៃ local file system ពីទាំងនោះ បានបញ្ចូលពីប្រភពណែតវឺក។
  • Bytecode Verifier- ឆែកកូដ code fragment អាចចូលទៅ object។
  • Security Manager- កំណត់អ្វីពីប្រភព class មួយអាចអនុញ្ញាតដូចជាការអាន reading និងការសរសេរ ទៅ local disk។

Robust
គឺជា Java ប្រើគ្រប់គ្រង memory management។ គឺប្រមូលផ្តុំក្នុង java។
Architecture-neutral
មិនមានការ អនុវត្តន៍ លក្ខណ: ដូចជាទំហំ size។
Portable
អាចនាំ java bytecode ទៅ platform។
High-performance
Java គឺលឿនជាង ចាប់តាំងពី byte code ទៅជា native code នៅតែយឺត compiled language (ដូចជា C++)។
Distributed
យើងអាច បង្កើតបែងចែកកម្មវិធី application ក្នុង java។ RMI និង EJB ត្រូវបានបង្កើតសម្រាប់ ការបង្កើត distributed applications។ យើងអាចចូល file ដោយហៅវិធី ពីម៉ាស៊ីនផ្សេងទៀតលើ internet

Leson 2 ទំនាក់ទំនងរវាង CSS និង HTML / XHTML

ការពិតទៅ CSS និង HTML ជាគូរដែលមិនអាចខ្វះគ្នាបាននៅពេល លោកអ្នកសំរេចចិត្តបង្កើត Website មួយ​។​ ផ្ទុយទៅវិញ ប្រសិនបើ លោកអ្នក មិនប្រើ CSSនោះ លោកអ្នកនឹងជួបការស្មុគស្មាញ នឹងពិបាក គ្រប់គ្រងលើបញ្ហា ពិបាកកំនត់ទំរង់រចនាបទ ទៅតាមការ ចង់បាន (style, Layout) មានជាអាទ៌ style សំដៅដល់ លក្ខណៈអក្សរ កំណត់ ពណ៌ ជាដើម និងLayout សំដៅដល់ margin ទំរង់ page ទីតាំង Object ជាដើមផងដែរ។ នៅក្នុងមេរៀននេះលោកអ្នក នឹង សិក្សាអំពីមូលបទដូចជាៈ
​- ទីតាំងដែលអាចបង្កើត Class របស់ CSS
– របៀបហៅ Class ទៅប្រើនៅក្នុង HTML
. តើសោភ័ណនិច្ច័យ​(CSS)​ត្រូវសរសេរនៅទីតាំងណា?
លោកអ្នកបានដឹងពីសារះប្រយោជន៏ និងរូបមន្តនៃរបៀបបង្កើត Class  នៅក្នុងមេរៀនទី១រួចមកហើយ ប៉ុន្តែមិនទាន់បានដឹង ថាតើលោក អ្នកត្រូវ សរសេរClassនោះ ទៅប្រើនៅទីណាក្នុងHTML​ នៅឡើយ ទេ។ ដូចច្នេះត្រង់ ចំនុចនេះ លោកអ្នកនឹងបានដឹង និងសិក្សាពី ទីតាំង ដែលអាចសរសេរ CSS statement ទាំងនោះ។
១.១ ទីតាំងផ្ទាល់ជាមួយ attribute style របស់ tag (inline style)
លោកអ្នកអាចសរសេរ CSS ដោយផ្ទាល់ជាមួយ tag របស់ HTML បានដោយប្រើ attribute style។ ខាងក្រោមនេះជារូបមន្ត syntax នៃការ សរសេរ CSS ជាមួយនឹង attribute style៖
Syntax
<tagName style=”property1:value1;property2:value2,…”>
កូដ២.១ សរសេរ CSS ជាមួយនឹង attribute style
<p style=”color:red; margin-left:20px;”> this inline style 1 </p>
<p>This is paragraph</p>

កូដ២.១ត្រង់បន្ទាប់ទី១ បានសរសេរថា <p style=”color:black;margin-left:20px”> This inline style</p> មានន័យថា tag <p> នឹងទទួលឥទ្ធិពលពីCSS  ដោយកំនត់អក្សរ មានពណ៌ក្រហម ហើយតំរឹមខាងឆ្វេងស្មើនឹង 20 pixels។​ ដោយឡែកចំណែកបន្ទាត់ ទី២វិញ ដែលបានសរសេរថា <p> This is paragraph</p> គឺមិនបានទទួលឥទ្ធិពល ពី CSS ឡើយ។
សំគាល់ៈ ការសរសេរCSSផ្ទាល់ ដោយប្រើ​ attribute style មិនសូវផ្តល់ គុណសម្បត្តិ និងប្រយោជន៏ដល់លោកអ្នកនៅឡើយទេ ព្រោះថាឥទ្ធិពលរបស់ CSS មានតែម្តង តែចំពោះtag HTML ដែល បានសរសេរតែប៉ុណ្ណោះ ប៉ុន្តែបើសិនជាលោក អ្នកចង់អោយ tag ផ្សេងទៀតទទួលឥទ្ធិពលដូចគ្នា តម្រូវអោយលោកអ្នកសរសេរឡើង វិញទៅអោយ tag នោះ ដូចបង្ហាញឧទាហរណ៏កូដ២.២ខាងក្រោម៖
<p style=”color: red; margin-left: 20px ;”> This is paragraph</p>
Internal Style Sheet មានឥទ្ធិពលគ្រប់ដណ្តបពេញមួយ HTML Document ដែលមានន័យថាគ្រប់ tag របស់ HTML គឺអាចទទួល ឥទ្ធិពលពី Class របស់ CSS ទាំងអស់ដែល បានបង្កើត។ Internal Style Sheet ជាទូទៅត្រូវសរសេរនៅត្រង់ tag <head> របស់​​ HTML​ ហើយត្រូវប្រើ tag​ បើកនិងបិទ ឈ្មោះថា​ <style>internal style sheet statement </style>។​ ទំរង់ Internal Style Sheet មានរូបមន្តដូចខាងក្រោម
Syntax
<HTML>
<Head>
<style type=”text/css”>
Internal Style Sheet Statements…

                        </style>
                </Head>
<Body>
</Body>
</HTML>
ឧទាហរណ៏ លោកអ្នកអាចបង្កើត Page មួយដែលមានឈ្មោះថា​ Internal Style Sheet.html ដោយប្រើនូវ Internal Style Sheet ដើម្បីកំនត់បាននូវលក្ខណៈដូចរូប ភាពខាងក្រោម
ការវិភាគៈ
​          ដូចបានបង្ហាញក្នុងរូបភាព៩ដែលបានកំណត់នូវទំរង់និងទ្រង់ទ្រយ អត្ថបទ នៅក្នុងនោះ រួមមានtag <body>ជាកត្តាចំបង់ ដែលកំណត់ ទំរង់អក្សរជារួមមានឈ្មោះថា Cambria, “Times New Roman”, Arial ។ហើយ tag title<p> សំរាប់កំណត់ពណ៌ និងទំហំជា title នៅក្នុងអត្ថបទ។ ហើយ tag <hr> 1 ជាបន្ទាត់ទី១ tag subtitle <p> សំរាប់កំនត់ពណ៌ និងទំហំជា subtitle នៅក្នុងអត្ថបទ។ ហើយមាន tag content <p> សំរាប់ កំនត់លក្ខណៈ អត្ថបទធម្មតាមានជាពណ៌ ទំហំអក្សរ។ ហើយមាន tag sub-content <p> សំរាប់កំណត់ លក្ខណៈអោយអត្ថបទជា sub-content។​​ និងចុងក្រោយត្រូវបញ្ចប់ដោយបន្ទាប់ទី២ គឺ <hr>2។
ការសរសេរដូដៈ
​       
នៅក្នុងចំនុចសរសេរកូដនេះលោកអ្នកនឹងកាន់តែយល់ច្បាស់អំពីការប្រើប្រាស់ Internal Style Sheet ដែលត្រូវបង្ហាញដូចកូដ២.២ ដូចខាងក្រោម៖
កូដ២.២ របៀបប្រើប្រាស់ Internal Style Sheet
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Inernal Style Sheet</title>
<style type=”text/css”>
<!–
p.title{   font-family: Cambria, “Times New Roman”, Arial;
font-size: 25px;
margin-left:0px;
}
hr{ border:solid; border-color:#FF0000}
.subtitle { font-family: Cambria, “Times New Roman”, Arial;
font-size: 16px;
color:#0000FF
}
.content{ font-family: Cambria, “Times New Roman”, Arial;
font-size: 14px;
margin-left:20px;
}
.subcontent{
font-family:
Cambria, “Times New Roman”, Arial;
font-size: 12px;
}

–></style>

</head>
<body>
<p class=”title”>HOW TO USE INTERNAL STYLE SHEET</p>
<hr />
<p class=”subtitle”>THIS IS INTERNAL STYLE SHEET CLASS.</p>
<p  class=”content”> We use Internal Style Sheet in the same HTML file document but we place it in head tag of HTML document.In the CSS Rule Definition dialog box, select Type, and then set the style attributes you want. <br /><br />Leave any of the following attributes empty if they are not important to the style:
</p>
<p>
<ol class=”subcontent”>
<li>Font sets the font family (or series of families) for the style. Browsers display text in the first font in the series that is installed on the user’s system. For compatibility with Internet Explorer 3.0, list a Windows font first. The font attribute is supported by both browsers.                      </li>
<br />
<li>Size defines the size of the text. You can choose a specific size by selecting the number and the unit of measurement, or you can choose a relative size. Pixels as a unit work well to prevent browsers from distorting your text. The size attribute is supported by both browsers.
</li>
<br />
<li>Style specifies Normal, Italic, or Oblique as the font style. The default setting is Normal. The style attribute is supported by both browsers.
</li>
</ol>
</p>
<hr />
</body>
</html>
បកស្រាយកូដៈ
​       
កូដ២.២ខាងលើលោកអ្នកពិតជាបានឃើញ Class របស់ CSS ទាំងអស់ ចំនួន ៥ ដែលបានបង្កើត ដើម្បីប្រាស់នៅក្នុង ឧទាហរណ៏ ខាងលើនេះ។ ការបង្កើត Class ទាំង នេះ​នៅជាមួយ File HTML តែមួយ គឹត្រូវបានហៅថា Internal Style Sheet។ ប៉ុន្តែលោក អ្នកក៏ បានឃើញផងដែរ លើភាព ខុសគ្នានៃការបង្កើត selector ហើយនឹង ការ ហៅយកវា ទៅប្រើប្រាស់វិញដែរ។
p.title{  font-family: Cambria, “Times New Roman”, Arial; font-size: 25px;margin-left:0px;}
ជា Class មួយមាន selector ឈ្មោះជា​ tag <p> ដែលមានតំលៃ​ attribute class របស់ខ្លួនស្មើនឹង title។ ដូចច្នេះ Class នេះទទួល ឥទ្ធិពលចំពោះតែ tag <p> ណាដែលមាន attribute class ឈ្មោះថា​ title ប៉ុណ្ណោះ។ ចំណែក tag ផ្សេង វិញ គឺមិនទទួលឥទ្ធិពលឡើយ។ class នេះបានកំនត់ ប្រភេទអក្សរជាទំរង់​ Cambria ឬ  Time New Roman ឬ Arial ដែលមានទំហំ ២៥ pixel និងមានគំលាតចេញ ពីព្រំ ដែន ខាងឆ្វេងនៃ Page ប្រមាណ ០pixel។
  • hr{ border:solid; border-color:#FF0000 }
    ​​ជា Class មួយមាន selector ឈ្មោះថា tag <hr> (បន្ទាត់ដេក)។ នៅពេល លោកអ្នកប្រើ tag <hr> វានឹងទទួលឥទ្ធិពលពី Class នេះភ្លាម។ លក្ខណៈរបស់ Class នេះមាន បន្ទាត់ជាទំរង់ solid ហើយនឹងមានពណ៌បន្ទាត់ក្រហម។
  • .subtitle { font-family: Cambria, “Times New Roman”, Arial; font-size: 16px;
    color:#0000FF
    ​​​ }
  • ជា Class មាន selector ឈ្មោះថា subtitle បានកំនត់លក្ខណៈរចនារបស់ខ្លួនមាន ដូចជា ទំរង់អក្សរជា ​ Cambria ឬ  Time New Roman ឬ Arial  ទំហំអក្សរ 16pixel និង ពណ៌អក្សរ ខៀវ។
Internal Style sheet មានលក្ខណៈល្អជាង Inline Style ត្រង់ថា ឥទ្ធិពល របស់អាច គ្របដណ្តប់ ពេញមួយ HTML Document មាន ន័យថាគ្រប់ Tag របស់ HTML គឺអាច ទទួលឥទ្ធិពលពី Class របស់ CSS ទាំងអស់ដែលលោកអ្នកបានបង្កើត។
១.៣​​ នៅក្រៅទីតាំង ឬ External Style Sheet
​          ការធ្វើ website លោកនឹងត្រូវការ code របស់ CSS ជាច្រើនដើម្បី ប្រើប្រាស់ កំនត់នូវទំរង់ រចនាបទ ដែលលោកអ្នកចង់បានមានដូចជា style(font, color, size, …) ឬ Layout( background, margin, padding ,…)។ លោកអ្នកគួរតែជ្រើសរើសវិធីសាស្រ្ត គ្រប់គ្រងលើ Code របស់ CSS អោយបានល្អ និងមានប្រសិទ្ធភាព ដើម្បីជាសវាងនូវ​ ការសរសេរកូដជ្រាំដែល ខាត់ពេលវេលា និង File អាចមានទំហំធំ ដែលធ្វើអោយ ល្បឿនតំណើរការអាចកាត់ បន្ថយផងដែរ។ ដូចច្នេះ External Style Sheet គឺវីធី សាស្រ្តមួយសម្រាប់ជា ដំណោះស្រាយ ដ៏ល្អសម្រាប់លោកអ្នក។ External Style Sheet គឺជាការបង្កើត File មួយដាច់ដោយឡែកសម្រាប់ផ្ទុកតែ Class របស់ CSS តែប៉ុណ្ណោះ ហើយគ្រប់ HTML File អាចប្រើ Class ទាំងនោះដោយគ្រាន់តែហៅ File (External Style Sheet) យកមក Import តាមរយះtag ឈ្មោះ <link> ដែលលោកអ្នកនឹងយល់​នៅ ចំនុចបន្ទាប់នេះ។
១.៤ របៀបបង្កើត File ជា External Style Sheet ឬ CSS file
ដើម្បីបង្កើត File ជា External Style Sheet ឬ ហៅថា file CSS បានលោកអ្នក អាចប្រើកម្មវិធី Dreamweaver រឺកម្មវិធីផ្សេងទៀតដែល លោកអ្នកអាចសរសេរ Code ឬ Script របស់ HTML បានហើយត្រូវ រក្សា ទុកឬ Save ដោយកំនត់កន្ទុយ(Extension) File នោះមានទំរង់ .CSS។ ម៉្យាងវិញទៀតការបង្កើត CSS File មិនតំរូវអោយលោក ប្រើប្រាស់​និងផ្ទុក tag  របស់ HTML ទេ។ ខាងក្រោមនេះជាឧទាហរណ៏នៃការបង្កើត Class របស់ CSS ជាលក្ខណៈ External Style Sheet ដោយប្រើប្រាស់កម្មវិធី Dreamweaver ដោយ Save និងដាក់ឈ្មោះថា class.css។
​សូមដំណើរការកម្មវីធី Dreamweaver រួចចុច File > New… ដូចបានបង្ហាញរូបភាព១០ ដូចខាងក្រោម៖
aកូដ២.៣ Class ជាលក្ខណៈ External Style Sheet
a១.៥ ហៅ CSS file មកប្រើនៅក្នុង HTML / XHTML នៅត្រង់ចំនុចនេះលោកអ្នកនឹង យល់ពីរបៀបហៅ  CSS file មកប្រើ នៅ ក្នុង HTML file បន្ទាប់ពីលោកអ្នកបានបង្កើត Class របស់ CSS មានលក្ខណៈជា External Style Sheet ដូចនៅចំនុច ១.៥។ ជាទូទៅ ទីតាំងបញ្ចូល(Import) External Sheet Sheet ឬ CSS file ត្រូវ សរសេរ នៅក្នុងប្លុក tag <head> External Sheet Sheet </head> ហើយដោយប្រើ tag ឈ្មោះថា <link> ដូចនឹងបង្ហាញរូបមន្តខាងក្រោម៖
Syntax
<link rel=”stylesheet”  type=”text/css”  href=”[url/]filename.css” >
href : ជា attribute សម្រាប់តំរូវអោយលោកអ្នកបញ្ជាក់ពីទីតាំង(path) របស់ CSS file ឬ External Style Sheet របស់លោកអ្នក។
ឧទាហរណ៏ខាងក្រោមនេះនឹងបង្ហាញលោកអ្នកកាន់តែយល់ច្បាស់ពីការបញ្ចូល CSS file ទៅក្នុង HTML file ( index.html ) ដោយសន្មត់ថា៖
  • File ទាំងពីរស្ថិតនៅទីតាំង ជាមួយគ្នាដូចរូបភាព ១១ ខាងក្រោម
  • a
កូដ២.៤ CSS file (class.css)
aកូដ២.៥ HTML file (index.html)
aFile ទាំងពីរស្ថិតនៅទីតាំង ផ្សេងគ្នាដូចរូបភាព ១២​ ខាងក្រោម
aរូបភាព១២ បង្ហាញពីFile: index.html, class.css ស្ថិតនៅទីតាំងខុសគ្នា
ប្រសិនបើទីតាំងរបស់ File ទាំងពីរស្ថិតនៅទីតាំងផ្សេងគ្នាលោកអ្នកត្រូវ
ប្រែប្រួលលើទីតាំងត្រង់ attribute href  របស់ tag <link> ដូចកូដ២.៦​ខាងក្រោម
កូដ២.៦ HTML file (index.html)
a

Leson 1: ការណែនាំ-HTML

HTML ជាអក្សរបំព្រួញនៃ Hypertext Markup Language គឺជាភាសា​ សំរាប់បង្កើត ទំព័រឯកសារផ្សេងៗ សៀវភៅឯកសារអេឡិចត្រូនិក (E-book) និង សំរាប់បង្កើតគេហទំព័រវិបសាយ នៅក្នុង​ អ៊ីនធើណែត។ វាពន្យល់បកស្រាយ អំពី អត្ថបទ​ ពត៌មាននានា នៅក្នុងឯកសារ។ HTML​ ជាភាសាគំរូ និង ជាភាសាមានប្រសិទ្ធិភាពខ្ពស់ ដែលត្រូវបានគេ ប្រើ ប្រាស់យ៉ាង ទូលំទូលាយ ដើម្បីពណ៍នា អំពី គេហទំព័រ និង នៅតែ ត្រូវ បាន គេប្រើប្រាស់ សំរាប់ អន្តរភាសា នៅក្នុង គេហទំព័រ។
ប្រវត្តិរបស់ HTML HTML ត្រូវបានបង្កើតឡើងដោយ អ្នករូបនិយម ម្នាក់ឈ្មោះ Tim Berners-Lee(កើតនៅថ្ងៃទី ៨ ខែមិថុនា ឆ្នាំ១៩៥៥) ដែលជាអ្នកម៉ៅការងាររបស់អង្គការ CERN។
HTML Tags
HTML ត្រូវបានសរសេរឡើងដោយ Tags ដូចនេះជាធម្មតាត្រូវបានគេ ហៅថា HTML Tags។
  • HTML tag គឺជាពាក្យគន្លឹះ(ឈ្មោះ Tag) ដែលត្រូវបានសរសេរនៅក្នុង សញ្ញា angle brackets, ឧ. <htm>
  • HTML tag ជាធម្មតាត្រូវចាប់ផ្តើមដោយ បើកTag រួចបិទ Tag វិញ ឧ. <b>    </b>
  • រូបមន្ត <tagname>ពាក្យពីពណ័នា</tagname>
HTML Elements វាគឺជាអ្វីៗទាំងអសល់របស់ start tag ហើយនឹង end tag រួមទាំង Tags ខ្លួនវាផងដែរ។
HTML & CSSHTML Editors  ដើម្បីសរសេរកូដ HTML អ្នកអាចប្រើកម្មវិធី Professional HTML ដូចជា៖
  • Adobe Dreamweaver
  • Microsoft Expression Web
  • FreshHTML
  • NotePad++
  • CoffeeCup HTML Editor
ទោះជាកម្មវីធីខាងលើនេះសុទ្ធតែជាកម្មវីធីដែលធ្វើអោយយើងមានអារម្មណ៍ ថាងាយស្រួលក៏ដោយ ប៉ុនតែបើអាច ពួកយើងសូមអោយ អ្នកទាំង អស់ គ្នាប្រើ កម្មវីធី Notepad របស់ Windows រឺក៏ប្រើត្រឹងតែ Notepad++ ទៅបានហើយ(សំរាប់ PC ដែលប្រើ Windows) ចំនែក Mac សូមប្រើTextEdit ដែលមាននៅលើម៉ាស៊ីនស្រាប់។
ជំហ៊ានទី១​ របៀបបើកកម្មវិធី ដើម្បីដំណើរការ កម្មវីធីដែលមាន ស្រាប់នៅក្នុង windows សុំចូលទៅកាន់
Start –>All Programs –> Accessories –>Notepad
រឺក៏ ចូលទៅកាន់Run (start+r) រួចវាយ notepad –> OK
HTML & CSSជំហ៊ានទី២​ សរសេរកូដក្នុង Notepad
វាយកូដ HTML ទៅក្នុង Notepad
HTML & CSSជំហ៊ានទី៣​ Save AS សូម Save File នេះនៅទីតាំងណា ដែលស្រួល ចាំ រួចបើកវាជាមួយ Browser ណាមួយ ដោយ Right Click លើFile ដែលយើងបាន Save –> Open with –> រើសbrowser រួច click==>បានលទ្ធផលដូចនេះ។
HTML & CSSHTML Basic សូមកុំបារម្មណ៍ ប្រសិនបើអ្នកមិនបានរៀនឧទាហរណ៍ អំពីរបៀបប្រើប្រាស់ Tags។
អ្នកនឹងបានរៀន អំពី Tags នៅមេរៀន បន្ទាប់ទៀត។ នៅ ក្នុង ចំនុច HTML Editors យើងបានបង្ហាញពីរបៀបសរសេរ HTMLL, Save, Run វារួចហើយ។ ប៉ន្តែក្នុងចំនុចនេះពួក យើង នឹងលំអិតអំពីវា។
 HTML Basic
HTML ត្រូវសរសេរដោយចាប់ផ្តើមជាមួយ បើកTags <HTML> & <BODY> ហើយបិទវិញជាមួយTags </HTML> & </BODY>
<html>
<body>
សូមសរសេរអ្វីដែលអ្នកចង់បង្ហាញនៅទីនេះ!
</body>
</html>
សាកល្បងនៅទីនេះ
HTML Comments
HTML Comments ប្រើសំរាប់ពិពណ៌នាអោយកូដណាមួយរបស់HTML ហើយComments គឺមិនបង្ហាញ នៅក្នុងBrowser ទេ។
Syntax: <!– …………….. –>
<!– This is a comment –>
សាកល្បងនៅទីនេះ
HTML Lines
HTML Lines ប្រើសំរាប់គូសបន្ទាត់ ពីក្រោមអត្ថបទណាមួយ។
Syntax: <hr>
<html>
<body>
សូមសរសេរអ្វីដែលអ្នកចង់បង្ហាញនៅទីនេះ!
<hr>
</body>
</html>
សាកល្បងនៅទីនេះ
Break Line
HTML Lines ប្រើសំរាប់ចុះបន្ទាត់
Syntax: <br>
<html>
<body>
សូមសរសេរអ្វីដែលអ្នកចង់បង្ហាញនៅទីនេះ!
<br>
Hello, World!
</body>
</html>
សាកល្បងនៅទីនេះ
HTML Output
អ្នកមិនអាចប្រាកដទេថា ការបង្ហាញលទ្ធផលរបស់ HTML ដូចគ្នា ព្រោះអាស្រ័យទៅលើទំហំ Screen កុំព្យូទ័រ ធំ​ រឺ តូច ដូចនេះលទ្ធផលដែលបង្ហាញនៅលើកុំព្យូទ័រគឺ វាមិនដូចគ្នាទេ។
ជាមួយនឹងកូដ HTML អ្នកមិនអាចកំនត់ចំនួន Spaces រឺ Line នោះទេ ព្រោះ Code HTML គិតតែមួយ Spaces ពេលយើង ចុចSpace ប៉ុន្តែបើយើងចង់បាន Space មួយទៀត យើងត្រូវប្រើ Syntax ដូចនេះ &nbsp;
<html>
<body>
R &nbsp;&nbsp;&nbsp;&nbsp;+ &nbsp;&nbsp;&nbsp;T = RT
<br>
<br>
<br>
<br>
<br>
Hello, World!
</body>
</html>
HTML Elements
HTML documents ត្រូវបានអោយអត្ថន័យដោយ HTML elements
HTML elements គឺជាអ្វីគ្រប់យ៉ាងដែលមាននៅក្នុង Open Tags និង End Tags
Start tag ជារឿយៗត្រូវបានគេហៅថា opening tag
End tag​ ជារឿយៗត្រូវបានគេហៅថា closing tag
Start tag *
Element content
End tag *
<p> នេះគឺជា កថាខណ្ឌ </p>
<a href=”default.htm”> នេះគឺជា ការភ្ជាប់ Files </a>
<br> នេះសំរាប់ចុះបន្ទាត់
**** សំរាប់ Tag ចុះបន្ទាត់យើងអាចសរសេរបានពីររបៀប គឺ <br> និង <br />
សង្ខេប
  • HTML element ត្រូវតែចាប់ផ្តើមដោយ start tag / opening tag
  • HTML element ត្រូវតែបញ្ចប់ដោយ end tag / closing tag ខ្លួនវា
  • element content គឺជាអ្វីៗដែលស្តិតនៅចន្លោះ start tag និង end tag
  • element content មានក៏បាន អត់ក៏បាន
  • ចំពោះ HTML Tags Name យើងអាចសរសេរជា តួអក្សរធំក៏បាន តូចក៏បាន ប៉ុន្តែយកល្អយើងគួរតែសរសេរ ជាតួរអក្សរតូច ពីព្រោះ វាជាការណែនាំដោយ W3C តាំងពីជំនាន់ HTML4 មកម្លេះ
  • ស្ទើតែគ្រប់ HTML Elements ទាំងអស់ អាចមាន attributes។
ចំពោះ attributes អ្នកនឹងរៀននៅមេរៀបបន្ទាប់ទៀត។
Nested HTML Elements វាគឺជា HTML Element ដែលប្ររួម គ្នា ក្នុង HTML Elements តែមួយ​ រួមទាំង​ HTML documents ផងដែរ។
ឧទាហរណ៍របស់ HTML Document
<!DOCTYPE html>
<html>
<body>
<p>This is my first paragraph.</p>
</body>
</html>
នៅក្នុង ឧទាហរណ៍របស់ HTML មាន ៣ ដែលជា HTML Document៖
  • <html>
  • <body>
  • <p>
Empty HTML Elements វាគឺជា HTML Elements ទាំងឡាយ ណាដែលមិនចាំបាច់មាន Closing Tags។
ឧទាហរណ៍៖   <br> , <hr> …
HTML Attributes Attributes ផ្តល់នូវពត៌មានបន្ថែម អំពី HTML Elements
សូមមើលឧទាហរណ៍ខាងក្រោម
  • HTML Elements អាចមាន​ Attributes
  • Attributes ផ្តល់ពត៌មានបន្ថែមអំពី element
  • Attributes តែងតែស្ថិតនៅក្នុង Start Tags បន្ទាប់ពី Tag Name
  • Attributes មានឈ្មោះ/តំលែ ជាគូៗ ដូចជា name=”value”
  • នៅក្នុង Attributes អ្នកអាចប្រើ Double style quotes រឺ Single style quotes
  • Attributes អាចសរសេរជាអក្សរតូចក៏បាន ធំក៏បាន, ប៉ុន្តែយកល្អសូមសរសេរ ជាអក្សរតូច ព្រោះ ជំនាន់ថ្មីរបស់ (X) HTML នឹងប្រើជាមួយ តួរអក្សរតូច (ការណែនាំរបស់ W3C)
ចំនាំ កុំភ្លេចបិទ Quotes វិញផង
HTML Headings HTML Headings គឺវាមានស្រាប់នៅក្នុង HTML documents
គេប្រើវាដើម្បីអោយ តួអក្សរមានទំហំធំ ហើយឌិតជាងមុន។
Headings មានពី <h1> រហូតដល់ <h6> ដែល <h1>ធំជាងគេ។
Headings វាពិតជាមានសារៈសំខាន់នៅក្នុងការបង្ហាញ document structure។
HTML Headings Headings ប្រើសំរាប់បញ្ជាក់ទៅលើ តួអក្សរ ដើម្បីអោយអក្សរកាន់តែធំ ហើយដិត
<html>
<body>
<h1>This is a heading</h1>
<h2>This is a heading</h2>
<h3>This is a heading</h3>
</body>
</html>
HTML Paragraphs
Paragraphs យើងប្រើវាសំរាប់សរសេរអត្ថបទជាកថាខណ្ឌ។
នៅក្នុង Paragraph មា​ន Attributes ជាច្រើន ដូចនេះយើងនឹងលើកយក Attribute មួយ ដែលពេញនិយមយកមកប្រើ គឺ Align=””
គ្រប់ Browsers ស្ទើតែទាំងអស់វាបង្ហាញលទ្ធផងដូចធម្មតា ទោះបីយើងមិនបាន បិទ Tag paragraph ក៏ដោយ។
Syntax: <p align=”left”>……</p>
 HTML Paragraphs
Paragraphs សំរាប់សរសេរអត្ថបទជា កថាខណ្ឌ ៗ។
នៅក្នុង Open Tags <p> យើងអាចប្រើជា៖
<p align=”left”> តំរឹមអត្ថបទខាងឆ្វេង
<p align=”right”> តំរឹមអត្ថបទខាងស្តាំ
<p align=”center”> តំរឹមអត្ថបទមកកណ្តាល
<p align=”justify”>តំរឹមអត្ថបទទាំងសងខាង
<html>
<body>
<p aling=”left”>This is a Paragraphs 1</p>
<p align=”right”>This is a Paragraphs 2</p>
<p align=”center”>This is a Paragraphs 3</p>
</body>
</html>
HTML Formatting
យើងអាចកំនត់អក្សរ អោយក្លាយជាអក្សរទ្រេត រឺក៏អក្សរដឹត ទៅតាម Elements ស្រាប់ៗ របស់HTML៖
<b>…</b> សំរាប់បង្ហាញអក្សរដិត
<strong>…</strong> សំរាប់បង្ហាញអក្សរដិត
<em>…</em> សំរាប់បង្ហាញអក្សរទ្រេត
<i>…</i> សំរាប់បង្ហាញអក្សរទ្រេត
​ HTML Paragraphs
<html>
<body>
<em> Hello! Webkhmerlearning.com</em>
</body>
</html>
HTML Links
Links សំរាប់ភ្ជាប់ទៅកាន់ Files ឬ URL ផ្សេង ដែលស្ថិត នៅទីតាំងជាមួយគ្នា រឺផ្សេងគ្នា។ ដើម្បីប្រើវាបាន អ្នកត្រូវ សរសេរបើកTags <a> និងបិទវិញដោយ </a>។
នៅ ក្នុង Tag <a> មាន Attributes ដូចជា៖
href=”” ផ្លូវទៅកាន់ File រឺ URL
title=”hello” សំរាប់ដាក់ពាក្យពិពណ៌នា
target=”” ពាក្យបង្គាប់ Page ថ្មី
សូមមើលរបៀបប្រើ Target=””
target=”_blank”​ បោះ Page ចេញទៅ Tap ថ្មីមួយទៀត
target=”_parent” បោះ Page ជំនួស Page ដើម
target=”_self” បោះ Page ជំនួស Page ដើម
target=”_top” បោះ Page ជំនួស Page ដើម
<html>
<body>
<a href=”http://www.facebook.com/GB_Hunter” target=”_blank” title=”This is my Facebook Page!”> សាកល្បងនៅទីនេះ </a>
</body>
</html>
HTML Head
Head Element វាគឺជា element មួយប្រភេទ​ ដែលសំខាន់ជាងគេក្នុង HTML ព្រោះវាមានលទ្ធភាពគ្រប់គ្រង Element របស់ភាសារ ផ្សេង ទៀតបាន ទាំងនៅក្នុងFile ខ្លួនឯង និងនៅខាងក្រៅបាន។
Tags ដែលនៅខាងក្រោយនេះត្រូវបាន Add ចូលទៅ Head Tag តាមតម្រូវការ ផ្សេងៗគ្នាដូចជា <title>, <style>, <meta>, <link>, <script>, <noscript>, and <base&g;
The HTML <title> Element
Tags នេះប្រើសំរាប់បង្ហាញចំនងជើង រឺមតិកាផ្សេងៗក្នុង Browser toolbar។
  • ជាអ្នកកំណត់ Title ជាក់លាក់មួយសំរាប់ Page មួយក្នុង Browser toolbar
  • បង្ហាញការពិពណ៌នាសំរាប់ Page Website នៅពេលគេប្រើ search-engine
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
The content of the document……
</body>>
</html>
មើលលទ្ធផល
The HTML <base> Element
<base> tags កំនត់ទីតាំងជាក់លាក់របស់ URL/targetដែលទាក់ទងនឹង URL នៅក្នុងPage ណាមួយ។
<head>
<base href=”http://www.w3schools.com/images/” target=”_blank”>
</head>
The HTML <link> Element
<link> tags ជានាក់កំនត់ទំនាក់ទំនងរវាង ឯកសារនៅខាងក្នុង នឹងប្រភពឯកសារនៅខាងក្រៅ។
ជាធម្មតាវាប្រើជាមួយ style sheets(CSS)។
<head>
<link rel=”stylesheet” type=”text/css” href=”mystyle.css”>
</head>
The HTML <meta> Element <meta> tags ជាពត៍មានអំពី ទិន្នន័យ របស់វេបសាយ ដែលយើងបានសរសេរដាក់ពីលើ ហើង វាមានឥទ្ធិពលនៅពេលគេប្រើ ការស្វែងរក (Search Engines) តាមរយះ Google រឺ Yahoo…។
គ្រប់ទិន្នន័យរបស់ Meta មិនបានបង្ហាយចេញនៅលើ Pages ខ្លួនវាទេ ប៉ុន្តែវាបង្ហាញ ចេញនៅពេលគេ Search Engines។ គ្រប់ Attributes របស់ Meta ត្រូវបានប្រើបា្រស់ខុសៗគ្នា៖
កំនត់ពាក្យគន្លឹងសំរាប់ប្រើក្នុង ការស្វែងរក (Search Eninges)
<meta name=”keywords” content=”HTML, CSS, XML, XHTML, JavaScript”>
កំនត់ការពីពណ៌នាសំរាប់ Website <meta name=”description” content=”Free Web tutorials on HTML and CSS”>
បង្ហាញឈ្មោះអ្នកនិពន្ធ វេបសាយ
<meta name=”author” content=”រុន​ រដ្ឋា (Run Rotha)”>
កំនត់រយៈពេល សំរាប់ការ Refresh Webpage។
ឧទាហរណ៍៖ ចង់ refresh 30 វិនាទីម្តង
<meta http-equiv=”refresh” content=”30″>
The HTML <style> Element
<style> tags សំរាប់កំនត់រូបរាង រឺពណ៌របស់ web page
<head>
<style type=”text/css”>
body {background-color:yellow}
p {color:blue}
</style>
</head>
HTML CSS គេប្រើ CSS សំរាប់រចនាវេបសាយ អោយកាន់តែ ស្រស់ស្អាត ជាងមុន នឹងងាយស្រួលសរសេរជាងមុន
ពាក្យបំព្រួញរបស់ CSS គឺ Cascading Style Sheets
រៀបសរសេរ CSS ជាមួយ HTML (Styling HTML with CSS)
យើងអាចសរសេរ CSS បាន ៣​ បៀប គឺ៖
  • Inline ប្រើAttribute ឈ្មោះ style ក្នុង HTML Element
  • Internal ប្រើ <style> element នៅក្នុង <head>
  • External សរសេរនៅក្នុង File មួយផ្សេងទៀត
Inline Styles កំនត់ពណ៌ Background តាម Element នីមួយៗ
<!DOCTYPE html>
<html>
<body style=”background-color:yellow;”>
<h2 style=”background-color:red;”>This is a heading</h2>
<p style=”background-color:green;”>This is a paragraph.</p>
</body>
</html>
កំនត់ពណ៌ ទំហំ ម៉ូត អក្សរ
<!DOCTYPE html>
<html>
<body>
<h1 style=”font-family:verdana;”>A heading</h1>
<p style=”font-family:arial;color:red;font-size:20px;”>A paragraph.</p>
</body>
</html>
Internal Style Sheet យើងត្រូវសរសេរ វាក្នុង <head> element
<!DOCTYPE html>
<html>
<head>
<style type=”text/css”>
body {background-color:yellow;}
p {color:blue;}
</style>
</head>
<body>
</body>
</html>
External Style Sheet

ប្រើ Link element សំរាប់ភ្ជាប់ទៅ file នៅខាងក្រៅឈ្មោះ mystyle.css
<head>
<link rel=”stylesheet” type=”text/css” href=”mystyle.css”>
</head>
HTML Images
<img> tag ប្រើសំរាប់បង្ហាញរូបភាពនៅលើ web page
Attribtutes របស់ <img> tag មានដូចជា ៖
  • src=”” ផ្លូវទៅកាន់រូបភាព
  • title=”” ពាក្យពិពណ៌នានៅលើ រូបភាព
  • width=””​ កំនត់ប្រវែងរូបភាព
  • height=”” កំនត់កំពស់រូបភាព
  • border=”” កំនត់កំរាសស៊ុម
សូមមើលឧទាហរណ៍ យើងមានរូបភាពឈ្មោះ my photo.jpg
<img src=”my photo.jpg” alt=”photo in wonderful day!” width=”300″ height=”260″ border=”5″ />
HTML Tables
ដើម្បីបង្កើតតារាបាន យើងចាំបាច់ត្រូវចាប់ផ្តើមដោយ open tag <table> និងបញ្ចប់ដោយ close tag </table>។
តារា កើតឡើងដោយ បន្ទាត់ដេក(ជួរដេក) ហៅថា (Rows) និង បន្ទាត់ឈរ(ជួរឈរ) ហៅថា (Columns)
Tags Row គឺ <tr> …… </tr>
Tags Column គឺ <td>……</td>
សូមមើលឧទាហរណ៍
Ex:1
<table border=”1″>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
Result 1
row 1, cell 1 row 1, cell 2
row 2, cell 1 row 2, cell 2
បង្កើតក្បាលតារាង ដោយប្រើ Tags <th>……</th>
<table border=”1″>
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
Result:
Header 1
Header 2
row 1, cell 1 row 1, cell 2
row 2, cell 1 row 2, cell 2
ចង់បានកំរាស់បន្ទាត់ស្តើងជាងមុន
<table border=”1″ cellpadding=”0″ cellspacing=”0″ >
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
Header 1
Header 2
row 1, cell 1 row 1, cell 2
row 2, cell 1 row 2, cell 2
ភ្ជាប់ Table ជាមួយ CSS
<table border=”1″>
<tr>
<th style=”background:#0099FF;”>Header 1</th>
<th style=”background:#FF3333; color:#FFFFFF;”>Header 2</th>
</tr>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
</table>
Header 1
Header 2
row 1, cell 1 row 1, cell 2
HTML Lists List ដែលប្រើច្រើនមាន ២ប្រភេទគឺ ordered និង unordered lists។
Ordered
<ol>
<li>Coffee</li>
<li>Milk</li>
</ol>
Result:
  1. Coffee
  2. Milk
HTML Unordered Lists
<ul>
<li>Coffee</li>
<li>Milk</li>
</ul>
Result:
  • Coffee
  • Milk
HTML Definition Lists
<dl>
<dt>Coffee</dt>
<dd>- black hot drink</dd>
<dt>Milk</dt>
<dd>- white cold drink</dd>
</dl>
Result:
Coffee
– black hot drink
Milk
– white cold drink
HTML Blocks យើងប្រើ ខ្ចប់element នៅក្នុងក្រុមជាមួយគ្នាបាន ដោយប្រើ <div>…..</div> ហើយនឹង <span>…..</span>
Block level elements ជាធម្មតាតែងតែចាប់ផ្តើម(start) និងបញ្ចប់(end)ជាមួយនឹងបន្ទាត់ថ្មី នៅពេលបង្ហាញនៅក្នុង browser។
Examples: <h1>, <p>, <ul>, <table>
HTML Inline Elements ជាធម្មតាមិនដែលចាប់ផ្តើមដោយបន្ចាត់ថ្មីទេ នៅពេលបង្ហាញ។
Examples: <b>, <td>, <a>, <img>
The HTML <div> Element គឺជា Block Level element សំរាប់ដាក់ HTML element ជាក្រុមៗ
<div>
<p style=”background-color:#0099FF;”> Hello world!</p>
<h2> This is Heading 2</h2>
<p aling=”left”>this is second paragraph</p>
</div>
<div>
<h2>This is block image </h2>
<img src=”my photo.jpg” title=”This is my photo” />
<p align=”center”> Lovely Photo </p>
</div>
Result: how to use DIV
HTML & CSSThis is Heading 2
this is second paragraph
This is block Image
The HTML <span> Element
<span>
<h3>This is block Span</h3>
<p style=” text-align:right; color:#0000FF; background-color:#00CC00″>
Block Span
</p>
</span>