Java Programming Mr. Suradet Petcharanon
Chapter 1 Object Oriented 16 December 2006
Object Oriented Programming (OOP) การเขยนโปรแกรมเชงวตถ
OOP การเขยนโปรแกรมทประกอบไปดวยกล!มของObject ซ(งแต!ละ Object จะถ+กจดกล!มอย+ใ! นร+ ปของClass ซ(งแต!ละ Class จะมการถ!ายทอดลกษณะ(Inheritance)กนลงมาอย!างเป: นล;าดบ แนวคดแบบ Object Model Technology (OMT)
แนวคดเกยวกบ Abstraction Object และ Class Message และ Method Interface และ Implementation Encapsulation และ Information Hiding
Suradet Petcharanon
Java Programming
2
Object Oriented Programming (OOP) การเขยนโปรแกรมเชงวตถ
แนวคดแบบ Object Model Technology (OMT)
Reuse
Inheritance Composition
Polymorphism
Suradet Petcharanon
Java Programming
3
แนวคดแบบ Object Model Technology (OMT)
Abstraction
หรL อการมองแบบนามธรรม หมายถ(งการมองออปเจ:กตNต!างๆ แลวใส! แนวความคด (Concept) ลงไปเพLอก;าหนด คณสมบตทส;าคญและจ;าเป: นของออปเจ:กตNนS นๆ โดย คณสมบตทถ+กก;าหนดข(Sนจากออปเจ:กตNเดยวกนอาจจะแตกต!างกนไดตามความสนใจ ของผ+มอง
Object และ Class
Object คLอตวแทนของบคคล สถานท หรL อสงของทเราสนใจในเหตการณNหน(ง ซ( ง อาจจบตองไดหรL อไม!ได โดยทออปเจ:กตNจะประกอบไปดวย Class คLอกล!มของออปเจ:กตNทมคณลกษณะ (Attribute) และพฤตกรรม (Behavior) หรL อการกระท;า (Action) โดยทวไปเหมLอนกน
Suradet Petcharanon
Java Programming
4
แนวคดแบบ Object Model Technology (OMT)
Object และ Class
การแยกแยะออปเจ:กตNนS นจะตองใชลกษณะดงต!อไปนS
Identity เป: นเอกลกษณNทใช!แยกความแตกต!างระหว!างออปเจ:กตNของคลาสหน(งกบอกคลาสหน(ง ซ(งในภาษาจาวา Identity จะหมายถ(ง Attribute หรL อตวแปร (Variable) State หมายถ(งสถานะของออปเจ:กตN ณ เวลาใดๆ ซ(งสามารถเปลยนแปลงไดเมLอมการกระตน จากออปเจ:กตNอLน โดยการส! ง Message ซ(งในภาษาจาวา State จะหมายถ(งค!าของ Attribute (Value of Attribute) Behavior คLอ พฤตกรรมทออปเจ:กตNกระท;าและตอบสนองทกครS ง โดยการกระตนของออปเจ:กตN อLนดวยการส! ง Message ซ(งในภาษาจาวา Behavior จะหมายถ(ง Method
Suradet Petcharanon
Java Programming
5
แนวคดแบบ Object Model Technology (OMT) ตวอย!างของ Class และ Object //Books.java class Books{ private String names; private String author; private String years; Books(String strName){ names = strName; } // End Constructor
Suradet Petcharanon
String getName(){ return names; }// End Method getName() Void setAuthor(String strAuthor){ author = strAuthor; }//End Method setAuthor() String getAuthor(){ return author; }// End Method getAuthor() Java Programming
6
แนวคดแบบ Object Model Technology (OMT) Void setYear(String strYear){ years = strYear; } // End Method setYear() String getYear(){ return years; } // End Method getYear() } //End Class Books
Suradet Petcharanon
ชLอClass
Books -names
:String
-author
:String
-years
:String
Attribute / ตวแปร
Books(strName : String) getName()
:String
setAuthor(strAuthor :String
:Void
getAuthor()
:String
setYear(strYear : String)
:Void
getYear()
:String
Java Programming
Method
7
แนวคดแบบ Object Model Technology (OMT)
Message และ Method
ในทาง Object Orientation นS นการทออปเจ:กตNจะเกดกจกรรมใดๆ ไดนS นจะตองม interaction กบอกออปเจ:กตNหน(ง จะกระท;าโดยการส! ง Message จากออปเจ:กตNหน(งท เป: นฝ! ายส! ง ไปยงออปเจ:กตNหน( งทเป: นฝ! ายรบ ซ( งเรยกวธการส! ง Message แบบนS วา! “ Method Invocation” ซ( งเมธอดสามารถเปรยบไดกบ Function และ Procedure ในการเขยนโปรแกรมแบบ เดม
Suradet Petcharanon
Java Programming
8
แนวคดแบบ Object Model Technology (OMT)
ตวอย!าง Message และ Method
//TestMethod.java class TestMethod{ public static void main(String args[]){ Books javaProgram = new Books(Java Programming); javaProgram.setAuthor(“Suradet Petcharanon”); javaProgram.setYear(“2549”); System.out.println(“หนงสL อเรL อง :” + javaProgram.getName()); System.out.println(“แต!งโดย :” +javaProgram.getAuthor()); System.out.println(“แต!งเมLอป :”+ javaProgram.getYear()); } //End of method main() } //End of Class TestMethod
Suradet Petcharanon
Java Programming
9
แนวคดแบบ Object Model Technology (OMT)
Interface และ Implementation
Interface หมายถ(ง ส!วนทใช!แสดงเฉพาะโครงสรางภายนอกของคลาส ทสามารถ มองเห:นไดจากออปเจ:กตNของคลาสอLนๆ กล!าวคLอ คลาสทเป: น Interface นS นจะบอก แค!วา! คลาสนS ทา; อะไรแต!จะไม!บอกว!าท;าอย!างไร Implementation คLอ คลาสทจะน;าเอาคลาสทเป: น Interface ไปใชโดยจะบอกราย ละเอยดว!าคลาสนS ทา; อะไรและท;าอย!างไร
Suradet Petcharanon
Java Programming
10
แนวคดแบบ Object Model Technology (OMT)
ตวอย!าง Interface และ Implementation // TestInterface.java class TestInterface{ public static void main(String args[]){ Circle newCircle = new CircleA(5.3); System.out.pirntln(“พLSนทวงกลม”); newCircle.showArea(); } //End of Main() } //End of class TestInface
Suradet Petcharanon
Java Programming
11
แนวคดแบบ Object Model Technology (OMT)
ตวอย!าง Interface และ Implementation // Interface Circle //Circle.java interface Circle{ public finall double PI = 3.14159; public double findArea(double r); public void showArea(); }
Suradet Petcharanon
Java Programming
12
แนวคดแบบ Object Model Technology (OMT)
ตวอย!าง Interface และ Implementation
// class CircleA //CircleA.java class CircleA implement Circle{ private double r; CircleA(double r){ this.r = r; } //End of constructor public double findArea(double r){ return PI*r*r; } //End of findArea() public void showArea(){ System.out.println(“รศม = ”+r); System.out.println(“พLSนทวงกลมคLอ : ”+findArea(r)); } //End of showArea() } // End of Calss
Suradet Petcharanon
Java Programming
13
แนวคดแบบ Object Model Technology (OMT)
Encapsulation และ Information Hiding
Encapsulation คLอ การห!อหม Attribute และ Method ของออปเจ:กตN เขาไวดวยกน เพLอปกปดการมองเห:นและการเขาถ(งจากออปเจ:กตNอLน Information Hiding หมายถ(ง การซ!อนขอม+ลของออปเจ:กตNทS งส! วนทเป: น Attribute และ Method
Suradet Petcharanon
Java Programming
14
แนวคดแบบ Object Model Technology (OMT)
Reuse
Inheritance คLอการทคลาสหน(งคลาส หรL อหลายๆ คลาสถ+กสรางข(Sนมาใหม!(subclass) ภายใตคลาสใดๆ (superclass) โดยจะสL บทอดคณ ลกษณะ(Attribute) และ พฤตกรรม(Behavior) หรL อการกระท;า(Method) มาดวย ดง นS น Subclass จะม Attribute และ Method เหมLอนกบ Superclass และยงสามารถเพม ไดอก Composition คLอการทคลาสหน(งสามารถเรยกใชคลาสอLนทสรางไวแลวมาใชใหม!ได โดยคลาสทถ+กสรางไวแลวเรยกว!า Composition แต!เมLอมนถ+กเรยกโดยคลาสอLน จะ เรยกคลาสนS นว!า Component
Suradet Petcharanon
Java Programming
15
แนวคดแบบ Object Model Technology (OMT)
Polymorphism
หมายถ(ง การทออปเจ:กตNมากกว!า 1 ออปเจ:กตNสามารถตอบสนองต!อ Message เดยว กนดวยการแสดงพฤตกรรมทแตกต!างกน เช!น สตวN ทกตวมพฤตกรรมการเคลLอนไหว แต!มวธการทแตกต!างกน อาท ง+ เลLSอย ปลาว!ายน;Sา เป: นตน
Suradet Petcharanon
Java Programming
16
แนวคดแบบ Object Model Technology (OMT)
ตวอย!าง Polymorphism // TestPolymorphiam.java class TestPolymorphism{ public static void main(String args[]){ Animal kapongA = new Fish(); Animal nokkaewA = new Bird(); System.out.println(“เรยก polymorphism ดวยปลา”); runPolymorphism(kapongA); System.out.println(“เรยก polymorphism ดวยนก”); runPolymorphism(nokkaewA); } static void runPolymorphism(Animal Obj){ Obj.move() } }
Suradet Petcharanon
Java Programming
17
แนวคดแบบ Object Model Technology (OMT) Polymorphism //Animal.java interface Animal{ public void move(); } // End of Class Animal //Fish() class Fish implement Animal{ public void move(){ System.out.println(“ปลาว!ายน;Sา”); } //end of method move } //end of class Fish
Suradet Petcharanon
Java Programming
18
แนวคดแบบ Object Model Technology (OMT) ตวอย!าง Polymorphism class Bird implement Animal{ public void move(){ System.out.println(“นกบน”); } //end of method move } //end of class Bird class Snake implement Animal{ public void move(){ System.out.println(“ง+เลLSอย”); } //end of method move } //end of class Snake
Suradet Petcharanon
Java Programming
19