590 likes | 704 Views
CS@KKU Java Summer Camp 2011. Day 1 - 1 Java Technology Object Oriented Programming Concepts. ข้อตกลง และ ลักษณะการอบรม. เป้าหมายหลัก : ให้ผู้เข้าอบรมเขียนโปรแกรมภาษา Java ได้จริง การอบรมเน้นปฏิบัติ 70 ทฤษฎี 30 Student Centered Project Based Learning Group Learning
E N D
CS@KKU Java Summer Camp 2011 Day 1 - 1 Java Technology Object Oriented Programming Concepts โดย วชิราวุธ ธรรมวิเศษ
ข้อตกลง และ ลักษณะการอบรม • เป้าหมายหลัก : ให้ผู้เข้าอบรมเขียนโปรแกรมภาษา Java ได้จริง • การอบรมเน้นปฏิบัติ 70 ทฤษฎี 30 • Student Centered • Project Based Learning • Group Learning • แบ่งกลุ่มงานกลุ่มละ 4 คน • สร้าง 2D Java Game ข้อตกลง : ระหว่างการอบรม ห้ามเล่นเกมส์ โดยวชิราวุธธรรมวิเศษ
ประวัติของ Java • ปี 1991 พัฒนาซอฟต์แวร์ควบคุมอุปกรณ์ขนาดเล็ก ซึ่งได้ผลลัพธ์คือ ภาษาโอ๊ค (Oak) • ปี 1993 ภาษาโอ๊คถูกปรับปรุงใช้สร้างเว็บแอพพลิเคชั่นพร้อมกับสร้างเว็บเบราว์เซอร์ (web browser) • ปี 1995 • บริษัทซันได้เปิดตัวภาษาจาวา (Java) (ภาษาโอ๊คเดิม) พร้อมกับเว็บเบราว์เซอร์ ที่รองรับภาษานี้ ชื่อว่า ฮอตจาวา (HotJava) • ได้รับการสนับสนุนจากบริษัทใหญ่ทั้งเน็ตสเคบ (Netscape), ไมโครซอฟต์ (Microsoft), และ ไอบีเอ็ม (IBM) • บริษัทซันได้เริ่มแจกจ่าย Java development Kit (JDK) ซึ่งเป็นชุดพัฒนาโปรแกรมภาษาจาวาในอินเตอร์เน็ต James Gosling โดย วชิราวุธ ธรรมวิเศษ
คำถามความรู้รอบตัว • ปัจจุบัน JAVA เป็น ลิขสิทธิ์ของบริษัทใด โดย วชิราวุธ ธรรมวิเศษ
Java Technology โดย วชิราวุธ ธรรมวิเศษ
Programming • คอมพิวเตอร์ถูกใช้เพื่อทำอะไร? • อะไรที่ทำให้คอมพิวเตอร์ทำงานได้ • ? • ? • ? • มีอาชีพ หรือ บุคคลใดที่เกี่ยวกับ คอมพิวเตอร์ บ้าง • อนาคต คุณจะเป็นอะไร ? โดย วชิราวุธ ธรรมวิเศษ
Programmer • เป้าหมายของอบรมนี้ เพื่อเรียนรู้การเป็น Java Programmer • แต่ก็ยังมีบทบาทอื่น ๆ ที่ต้องเรียนรู้เช่น • Software Designer • Software Tester • Users • Graphics Designer โดย วชิราวุธ ธรรมวิเศษ
Program คืออะไร ? • “ลำดับของคำสั่งที่สามารถถูกประมวลผลได้โดยคอมพิวเตอร์เพื่อใช้ในการแก้ปัญหาบางอย่าง” • การเขียนโปรแกรม เรียกว่า Coding • ภาษาที่ใช้เขียนโปรแกรมเรียกว่า Programming Language • รหัสโปรแกรมที่เขียนเรียกว่า Source Code • ภาษาของคอมพิวเตอร์เรียกว่า Machine Language • รหัสโปรแกรมนี้เรียกว่า Binary Code โดย วชิราวุธ ธรรมวิเศษ
คุณสมบัติของ Software ที่ดี • Correctness • Robustness • Interface Usability • Simplicity • Presentation and Document • Efficiency โดย วชิราวุธ ธรรมวิเศษ
Programming Languages • Structural programming การเขียนโปรแกรมเชิงโครงสร้าง • Object-Oriented programming (OOP) การเขียนโปรแกรมเชิงวัตถุ • Logical programming การเขียนโปรแกรมเชิงตรรก โดย วชิราวุธ ธรรมวิเศษ
Programming กับการเขียนนิยาย • การเขียนโปรแกรมก็คล้ายกับการแต่งนิยาย • การแต่งนิยายแบบโครงสร้าง • ดำเนินเรื่องเป็นขั้นตอน • เหมาะกับเรื่องสั้นที่ไม่ซับซ้อน • การแต่งนิยายแบบ Object-Oriented • ออกแบบตัวละคร สภาพแวดล้อม ดำเนินเรื่องโดยสร้างสถานการณ์ • เหมาะกับนิยายเรื่องยาวที่สลับซับซ้อน โดย วชิราวุธ ธรรมวิเศษ
Structural Programming languages • เขียนโค้ดเป็นลำดับขั้นตอน สำหรับการแก้ปัญหา โดยคำสั่งจะทำงานจากบนลงล่าง • บางครั้งก็ทำซ้ำ ๆ หรือ มีการใช้เงื่อนไข ในการตัดสินใจ ซึ่งโดยปกติแล้วจะมีโครงสร้างของโปรแกรม 3 ขั้น คือ 1. Input คือ ขั้นการนำข้อมูลเข้า เช่นรับข้อมูลจากผู้ใช้ 2. Process คือ ขั้นการประมวลผล คำนวณ หรือ ตัดสินใจ 3. Output คือ การแสดงผล โดย วชิราวุธ ธรรมวิเศษ
Object-Oriented Programming • ใช้แนวคิดว่าโปรแกรมมีคุณสมบัติเป็น Object • สิ่งที่จับต้องได้ เป็น รูปธรรม • สิ่งที่จับต้องไม่ได้ เป็น นามธรรม • การหาว่ามี Object หรือสิ่งใดในปัญหานั้นบ้าง และ มีความสัมพันธ์กันอย่างไร • การนิยามคุณลักษณะ สถานะ และ พฤติกรรมของ Object • ควบคุมให้ Object ทำงานร่วมกัน โดย วชิราวุธ ธรรมวิเศษ
ข้อดีของ OOP • เพิ่มคุณภาพของงานขนาดใหญ่ และ ใช้เวลาน้อยกว่า • ใช้แรง และ คนน้อยกว่า • ลดค่าใช้จ่ายในการดูแล • ซอฟท์แวร์มีความน่าเชื่อมากขึ้น • สามารถปรับปรุง เปลี่ยนแลง เพิ่มเติมได้ง่าย โดย วชิราวุธ ธรรมวิเศษ
Object และ Class • Object หมายถึงสิ่งใดๆ (ที่มีตัวตน) ทุกสิ่งเป็น Object • Class คือสิ่งที่ใช้นิยาม Object • ภายใน Object จะประกอบไปด้วย • ข้อมูล (State) • พฤติกรรม (Behavior) • Class จะอธิบายว่า Object นี้ควรจะมีข้อมูลอะไรบ้าง และ มีพฤติกรรมการทำงานอย่างไร (ทำอะไรได้บ้าง) โดย วชิราวุธ ธรรมวิเศษ
Object และ Class(ต่อ) • ตัวอย่างคำว่า ไข่ เป็น class • เมื่อถามว่าไข่คืออะไร เราจะนึกถึงอยู่ 2 อย่าง • 1. ลักษณะข้อมูลของไข่ที่ใช้จำแนกตัวตนของมัน เช่น รูปทรง ขนาด น้ำหนัก สี อะไร ที่ต้องบันทึกเพื่อที่จะได้จำมันได้ • 2. ความสามารถของไข่ ไข่ทำอะไรได้บ้าง เช่น กินได้ ตกแตกได้ • ถ้าเราหยิบไข่ขึ้นมา 1 ฟอง ไข่ฟองที่เราถืออยู่นั่นคือ Object • Object เป็นสิ่งที่มีตัวตน สามารถระบุตัวได้ โดย วชิราวุธ ธรรมวิเศษ
Object และ Class(ต่อ) • ถ้าเปรียบเทียบกับโลกในชีวิตจริง Class จะเปรียบได้กับนามธรรมที่เราสร้างเพื่อใช้แทนสิ่งใดๆ ทำให้เราสามารถจินตนาการถึงของสิ่งนั้นได้ และหากพบของสิ่งหนึ่งที่รู้ว่าเป็น class อะไร ก็จะสามารถปฏิสัมพันธ์กับของสิ่งนั้นได้ • จินตนาการถึงของสิ่งใดสิ่งหนึ่ง ก็คือการสร้าง Object ขึ้นภายในสมองของเรา • การจะจินตนาการอะไรได้ เราจะต้องถูกสอนให้รู้จัก class ของสิ่งนั้นก่อน โดย วชิราวุธ ธรรมวิเศษ
เป้าหมายของ เทคโนโลยีจาวา • เพื่อ สร้างภาษาที่ง่ายในการพัฒนาโปรแกรม • สร้างตัวรันโปรแกรมจาวา (Java Interpreter) เพื่อให้จาวาสามารถนำไปใช้ทำงานบนหลายๆ ระบบ โดย วชิราวุธ ธรรมวิเศษ
Java Programming Language • ไวยกรณ์คล้ายกับภาษา C และ C++ • พัฒนาโดยบริษัท Sun Microsystems • โปรแกรมทั้งหมดอยู่ในรูปของ Class ไม่สามารถเขียนอยู่นอก Class ได้ • ไฟล์ Source Code จะเก็บในไฟล์ .java • เมื่อ Compile แล้วจะรหัสที่เรียกว่า Byte Code • โดย Byte Code ของแต่ละ Class จะแยกเก็บอยู่ในไฟล์ .class ตามชื่อของ Class นั้น โดย วชิราวุธ ธรรมวิเศษ
จาวาสามารถทำงานบนหลาย Platform โดย วชิราวุธ ธรรมวิเศษ
Compiler & Interpreter • คอมพิวเตอร์เข้าใจเฉพาะ Machine Language ที่เป็น Binary Code • โปรแกรมเมอร์จะเข้าใจ Programming Language ที่เป็น Source Code • Compiler จะแปล Source Code เป็น Binary Codeพร้อมกันทั้งหมดโปรแกรม • Interpreter จะแปลที่ละชุดคำสั่ง • Compiler = นักแปล , Interpreter = ล่าม โดย วชิราวุธ ธรรมวิเศษ
จาวามีทั้งCompiler และ Interpreter โดย วชิราวุธ ธรรมวิเศษ
ประเภทของโปรแกรม Java • Java Application • โปรแกรม Java ที่รันเหมือนกับโปรแกรมประยุกต์อื่นๆทั่วไป • Java Applet • โปรแกรม Java ที่รันบน Web Browser โดย วชิราวุธ ธรรมวิเศษ
Java Development Kit (JDK) • JDK เป็นเครื่องมือที่จำเป็นสำหรับการพัฒนาโปรแกรม JAVA • ใน JDK จะมี Java Compiler, เอกสารคู่มือ, ตัวอย่างโปรแกรม และ โปรแกรมอรรถประโยชน์ต่าง • สามารถ Download ได้ที่เว็บไซต์ http://java.sun.com/ โดย วชิราวุธ ธรรมวิเศษ
DEMO โดย วชิราวุธ ธรรมวิเศษ
สิ่งที่ใช้ในการเขียนโปรแกรม Java • Java Development Kit (JDK) • Java Code Editorหรือ Java IDE • Notepad,Editplus • Eclipse, Netbean, JBuilder,JEdit • Java Runtime Environment (JRE) โดย วชิราวุธ ธรรมวิเศษ
Hello World โดย วชิราวุธ ธรรมวิเศษ
Hello World Editing, compiling, and executing. โดย วชิราวุธ ธรรมวิเศษ
ฝึกปฏิบัติ 1. • 1. การติดตั้ง JDK • 2. การติดตั้ง Eclipse • 3. การสร้าง Java Project • 4. การสร้าง Class HelloWorld • 5. การรัน • ดูสาธิตและทำตาม เวลา 10 นาที โดย วชิราวุธ ธรรมวิเศษ
Resource • http://www.oracle.com/ • Download JDK (Java for Developer) • http://www.eclipse.org • Download Eclipse IDE for Java Developer โดย วชิราวุธ ธรรมวิเศษ
ไวยากรณ์พื้นฐาน • การนิยาม class • การนิยาม attribute หรือ fields • การนิยาม method • package โดย วชิราวุธ ธรรมวิเศษ
ตัวอย่าง โครงสร้างของ Class โปรแกรม Java จะต้อง เขียนในรูปของ class โดย วชิราวุธ ธรรมวิเศษ
การนิยาม Class ของจาวา • ไวยกรณ์ <modifiers> class <class_name>{ [attribute declaration] [constructor declaration] [method declaration] } public class Person { } โดย วชิราวุธ ธรรมวิเศษ
การนิยาม Attributes (Instance Variable) • ต้องเขียนอยู่ภายในปีกกาของ class(ไม่สนใจลำดับก่อนหลัง) • ไวยกรณ์ • [<modifiers>] type name [= value ]; public class Person { private String id; private String name; public int number; } โดย วชิราวุธ ธรรมวิเศษ
การนิยาม Instance Method • เป็นส่วนที่ใช้นิยามการทำงานของ object (Operation/Behavior) • ไวยกรณ์ • [<modifiers>] type name([ argument list ]){ คำสั่ง } public class Person { private String id; private String name; public int number; public void setData(String aId, String aName){ id = aId; name = aName; } } โดย วชิราวุธ ธรรมวิเศษ
ตัวอย่าง โดย วชิราวุธ ธรรมวิเศษ
"main" static Method • class ที่จะสามารถใช้คำสั่ง java ในการรันได้ จะต้องมี method main • รูปแบบการประกาศpublic static void main(String[ ] args) • ตัวอย่าง public class Test { public static void main(String[ ] args) { System.out.println("This is a test. " ); } } โดย วชิราวุธ ธรรมวิเศษ
คำถาม : class Person สามารถ RUN ได้หรือไม่ ? โดย วชิราวุธ ธรรมวิเศษ
"new" Keyword • ใช้สำหรับสร้าง object (instance) จาก class • ใช้ขณะที่ประกาศตัวแปร (attributes) หรือ ภายใน method ก็ได้ • เช่น new Person( ); เป็นการสร้าง object ของ class Person public class Test { public static void main(String[ ] args) { new Person( ); Person p = new Person( ); } } แบบไม่ตั้งชื่อตัวแปร แบบมีการตั้งชื่อตัวแปร โดย วชิราวุธ ธรรมวิเศษ
"new" Keyword ใช้ new พร้อมการประกาศ attribute class ทั้งหมดสามารถนำมาใช้สร้างเป็นตัวแปรได้ class ก็คือ ชนิดข้อมูล (data type) แบบหนึ่ง p1 และ p2 เป็น attributes ของ Greeter จะต้อง new Greeter ก่อนจึงจะเกิด p1,p2 โดย วชิราวุธ ธรรมวิเศษ
"new" Keyword โดย วชิราวุธ ธรรมวิเศษ
static • static เป็นการระบุว่าตัวแปร หรือ method นั้นเป็นของ class • ตัวแปร และ method ที่ไม่ใช่ static เป็นของ instance • Id และ name จะเป็น instance variable • Count เป็น static variable package test; publicclass Person { String id; String name; staticintcount=0; } โดย วชิราวุธ ธรรมวิเศษ
static publicclass TestPerson { publicstaticvoid main(String[] args) { Person a = new Person(); Person b = new Person(); a.name = "Mr.A"; b.name = "Mr.B"; a.count = 5; b.count = 10; Person.count = 30; System.out.printf("%s count = %d\n",a.name, a.count); System.out.printf("%s count = %d\n",b.name, b.count); } } โดย วชิราวุธ ธรรมวิเศษ
การอ้างถึงสมาชิก (member) ของ object • member ของ object คือ attribute และ method • เราจะใช้ เครื่องหมายจุด (.) ในการอ้างถึงสมาชิก • เช่น p1.number อ้างถึง number ของ p1 • p2.number หมายถึง number ของ p2 ซึ่งเป็นคนละตัวกับของ p1 • g.p1.number หมายถึง number ที่เป็นของ p1 ของ g • สมาชิกที่เป็น method เวลาเรียกใช้ต้องมีวงเล็บ โดย วชิราวุธ ธรรมวิเศษ
Access Control • เราจะควบคุมการเข้าถึง สมาชิกใน Class โดยใช้ Modifier • public หมายถึง สมาชิกนั้นเปิดเผยให้เข้าถึงได้จาก class ภายนอกอื่นทั้งหมด • private หมายถึง สมาชิกนั้นไม่อนุญาตให้เข้าถึงจาก class ภายนอก • (default) ไม่ระบุ modifier หมายถึง อนุญาตให้เข้าถึงสมาชิกนั้น เฉพาะ class ที่อยู่ใน package เดียวกัน • เป็นคุณสมบัติ "Encapsulation" โดย วชิราวุธ ธรรมวิเศษ
Encapsulation โดย วชิราวุธ ธรรมวิเศษ
การแสดงผลออก console (standard output) • คำสั่ง System.out.println( ) ขึ้นบรรทัดใหม่ • คำสั่ง System.out.print( ) ไม่ขึ้นบรรทัดใหม่ • คำสั่ง System.out.printf(format,args..) แสดงผลกำหนดรูปแบบ System คือ class มาตรฐานของ Java out เป็น member ของ System (อ้างถึง standard output) print,println เป็น method ของ out โดย วชิราวุธ ธรรมวิเศษ
ตัวอย่าง Output: The average of 34, 89 and 17 is 46.666666666666664 The average of 34, 89 and 17 is 46.666666666666664 เครื่องหมาย + ใช้ต่อข้อความที่ต้องการแสดงผลได้ 34 + 89 เป็นการบวกตัวเลข "34" + "89" เป็นการเชื่อมต่อข้อความ โดย วชิราวุธ ธรรมวิเศษ
ประโยค package • ใช้ในการจัดกลุ่มของ class • package <ชื่อ>[.<ชื่อย่อย] ; • ตัวอย่าง • package kku; • package kku.game.ox; • package kku.app.talk; • ในไฟล์ .java หนึ่งไฟล์จะระบุ package ได้เพียง 1 อัน โดย วชิราวุธ ธรรมวิเศษ
ประโยค import • ใช้เมื่อต้องการใช้งาน class ที่อยู่ต่าง package • import package[.subpackage].classname; • import package[.subpackage].*; • ตัวอย่าง • import kku.*; • import kku.game.ox.Game1; • import kku.game.ox.*; โดย วชิราวุธ ธรรมวิเศษ