Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
CS@KKU Java Summer Camp 2011 •Day 1 - 1 •Java Technology •Object Oriented Programming Concepts 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 1 ข้ อตกลง และ ลักษณะการอบรม เป้าหมายหลัก : ให้ผเู ้ ข้าอบรมเขียนโปรแกรมภาษา Java ได้จริ ง การอบรมเน้นปฏิบตั ิ 70 ทฤษฎี 30 Student Centered Project Based Learning ข้ อตกลง : Group Learning ระหว่างการอบรม ห้ามเล่นเกมส์ แบ่งกลุ่มงานกลุ่มละ 4 คน สร้าง 2D Java Game 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 2 ประวัติของ Java ปี 1991 พัฒนาซอฟต์แวร์ควบคุมอุปกรณ์ขนาดเล็ก ซึ่ งได้ผลลัพธ์คือ ภาษาโอ๊ค (Oak) ปี 1993 ภาษาโอ๊คถูกปรับปรุ งใช้สร้างเว็บแอพพลิเคชัน่ James Gosling พร้อมกับสร้างเว็บเบราว์เซอร์ (web browser) ปี 1995 บริ ษทั ซันได้เปิ ดตัวภาษาจาวา (Java) (ภาษาโอ๊คเดิม) พร้อมกับเว็บเบราว์เซอร์ ที่รองรับภาษานี้ ชื่อว่า ฮอตจาวา (HotJava) ได้รับการสนับสนุนจากบริ ษทั ใหญ่ท้ งั เน็ตสเคบ (Netscape), ไมโครซอฟต์ (Microsoft), และ ไอบีเอ็ม (IBM) บริ ษทั ซันได้เริ่ มแจกจ่าย Java development Kit (JDK) ซึ่ งเป็ นชุดพัฒนา โปรแกรมภาษาจาวาในอินเตอร์เน็ต 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 3 คาถามความรู้รอบตัว ปัจจุบนั JAVA เป็ น ลิขสิ ทธิ์ของบริ ษทั ใด 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 4 Java Technology 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 5 Programming คอมพิวเตอร์ถูกใช้เพื่อทาอะไร? อะไรที่ทาให้คอมพิวเตอร์ทางานได้ ? ? ? มีอาชีพ หรื อ บุคคลใดที่เกี่ยวกับ คอมพิวเตอร์ บ้าง อนาคต คุณจะเป็ นอะไร ? 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 6 Programmer เป้าหมายของอบรมนี้ เพื่อเรี ยนรู ้การเป็ น Java Programmer แต่กย็ งั มีบทบาทอื่น ๆ ที่ตอ้ งเรี ยนรู ้ เช่น Software Designer Software Tester Users Graphics Designer 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 7 Program คืออะไร ? “ลาดับของคาสัง่ ที่สามารถถูกประมวลผลได้โดยคอมพิวเตอร์เพื่อใช้ใน การแก้ปัญหาบางอย่าง” การเขียนโปรแกรม เรี ยกว่า Coding ภาษาที่ใช้เขียนโปรแกรมเรี ยกว่า Programming Language รหัสโปรแกรมที่เขียนเรี ยกว่า Source Code ภาษาของคอมพิวเตอร์เรี ยกว่า Machine Language รหัสโปรแกรมนี้เรี ยกว่า Binary Code 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 8 คุณสมบัตขิ อง Software ที่ดี Correctness Robustness Interface Usability Simplicity Presentation and Document Efficiency 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 9 Programming Languages Structural programming การเขียนโปรแกรมเชิงโครงสร้าง Object-Oriented programming (OOP) การเขียนโปรแกรมเชิงวัตถุ Logical programming การเขียนโปรแกรมเชิงตรรก 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 10 Programming กับการเขียนนิยาย การเขียนโปรแกรมก็คล้ายกับการแต่งนิยาย การแต่งนิยายแบบโครงสร้าง ดาเนินเรื่ องเป็ นขั้นตอน เหมาะกับเรื่ องสั้นที่ไม่ซบั ซ้อน การแต่งนิยายแบบ Object-Oriented ออกแบบตัวละคร สภาพแวดล้อม ดาเนินเรื่ องโดยสร้างสถานการณ์ เหมาะกับนิยายเรื่ องยาวที่สลับซับซ้อน 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 11 Structural Programming languages เขียนโค้ดเป็ นลาดับขั้นตอน สาหรับการแก้ปัญหา โดยคาสัง่ จะทางาน จากบนลงล่าง บางครั้งก็ทาซ้ า ๆ หรื อ มีการใช้เงื่อนไข ในการตัดสิ นใจ ซึ่งโดยปกติ แล้วจะมีโครงสร้างของโปรแกรม 3 ขั้น คือ 1. Input คือ ขั้นการนาข้อมูลเข้า เช่นรับข้อมูลจากผูใ้ ช้ 2. Process คือ ขั้นการประมวลผล คานวณ หรื อ ตัดสิ นใจ 3. Output คือ การแสดงผล 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 12 Object-Oriented Programming ใช้แนวคิดว่าโปรแกรมมีคุณสมบัติเป็ น Object สิ่ งที่จบั ต้องได้ เป็ น รู ปธรรม สิ่ งที่จบั ต้องไม่ได้ เป็ น นามธรรม การหาว่ามี Object หรื อสิ่ งใดในปัญหานั้นบ้าง และ มีความสัมพันธ์กนั อย่างไร การนิยามคุณลักษณะ สถานะ และ พฤติกรรมของ Object ควบคุมให้ Object ทางานร่ วมกัน 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 13 ข้ อดีของ OOP เพิ่มคุณภาพของงานขนาดใหญ่ และ ใช้เวลาน้อยกว่า ใช้แรง และ คนน้อยกว่า ลดค่าใช้จ่ายในการดูแล ซอฟท์แวร์มีความน่าเชื่อมากขึ้น สามารถปรับปรุ ง เปลี่ยนแลง เพิ่มเติมได้ง่าย 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 14 Object และ Class Object หมายถึงสิ่ งใดๆ (ที่มีตวั ตน) ทุกสิ่ งเป็ น Object Class คือสิ่ งที่ใช้นิยาม Object ภายใน Object จะประกอบไปด้วย ข้อมูล (State) พฤติกรรม (Behavior) Class จะอธิบายว่า Object นี้ควรจะมีขอ้ มูลอะไรบ้าง และ มีพฤติกรรม การทางานอย่างไร (ทาอะไรได้บา้ ง) 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 15 Object และ Class (ต่ อ) ตัวอย่าง คาว่า ไข่ เป็ น class เมื่อถามว่าไข่คืออะไร เราจะนึกถึงอยู่ 2 อย่าง 1. ลักษณะข้อมูลของไข่ที่ใช้จาแนกตัวตนของมัน เช่น รู ปทรง ขนาด น้ าหนัก สี อะไร ที่ตอ้ งบันทึกเพื่อที่จะได้จามันได้ 2. ความสามารถของไข่ ไข่ทาอะไรได้บา้ ง เช่น กินได้ ตกแตกได้ ถ้าเราหยิบไข่ข้ ึนมา 1 ฟอง ไข่ฟองที่เราถืออยูน่ นั่ คือ Object Object เป็ นสิ่ งที่มีตวั ตน สามารถระบุตวั ได้ 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 16 Object และ Class (ต่ อ) ถ้าเปรี ยบเทียบกับโลกในชีวิตจริ ง Class จะเปรี ยบได้กบั นามธรรมที่เรา สร้างเพื่อใช้แทนสิ่ งใดๆ ทาให้เราสามารถจินตนาการถึงของสิ่งนั้นได้ และหากพบของสิ่ งหนึ่ งที่รู้ว่าเป็ น class อะไร ก็จะสามารถปฏิสัมพันธ์ กับของสิ่ งนั้นได้ จินตนาการถึงของสิ่ งใดสิ่ งหนึ่ ง ก็คือการสร้าง Object ขึ้นภายใน สมองของเรา การจะจินตนาการอะไรได้ เราจะต้องถูกสอนให้รู้จกั class ของสิ่ ง นั้นก่อน 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 17 เป้าหมายของ เทคโนโลยีจาวา เพื่อ สร้างภาษาที่ง่ายในการพัฒนาโปรแกรม สร้างตัวรันโปรแกรมจาวา (Java Interpreter) เพื่อให้จาวาสามารถ นาไปใช้ทางานบนหลายๆ ระบบ 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 18 Java Programming Language ไวยกรณ์คล้ายกับภาษา C และ C++ พัฒนาโดยบริ ษทั Sun Microsystems โปรแกรมทั้งหมดอยูใ่ นรู ปของ Class ไม่สามารถเขียนอยูน่ อก Class ได้ ไฟล์ Source Code จะเก็บในไฟล์ .java เมื่อ Compile แล้วจะรหัสที่เรี ยกว่า Byte Code โดย Byte Code ของแต่ละ Class จะแยกเก็บอยูใ่ นไฟล์ .class ตามชื่อของ Class นั้น 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 19 จาวาสามารถทางานบนหลาย Platform 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 20 Compiler & Interpreter คอมพิวเตอร์เข้าใจเฉพาะ Machine Language ที่เป็ น Binary Code โปรแกรมเมอร์จะเข้าใจ Programming Language ที่เป็ น Source Code Compiler จะแปล Source Code เป็ น Binary Code พร้อมกันทั้งหมด โปรแกรม Interpreter จะแปลที่ละชุดคาสัง่ Compiler = นักแปล , Interpreter = ล่าม 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 21 จาวามีท้งั Compiler และ Interpreter 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 22 ประเภทของโปรแกรม Java Java Application โปรแกรม Java ที่รันเหมือนกับโปรแกรมประยุกต์อื่นๆทัว่ ไป Java Applet โปรแกรม Java ที่รันบน Web Browser 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 23 Java Development Kit (JDK) JDK เป็ นเครื่ องมือที่จาเป็ นสาหรับการพัฒนาโปรแกรม JAVA ใน JDK จะมี Java Compiler, เอกสารคู่มือ, ตัวอย่างโปรแกรม และ โปรแกรมอรรถประโยชน์ต่าง สามารถ Download ได้ที่เว็บไซต์ http://java.sun.com/ 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 24 DEMO 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 25 สิ่ งที่ใช้ ในการเขียนโปรแกรม Java Java Development Kit (JDK) Java Code Editor หรื อ Java IDE Notepad,Editplus Eclipse, Netbean, JBuilder,JEdit Java Runtime Environment (JRE) 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 26 Hello World 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 27 Hello World 24 พฤษภาคม 2560 Editing, compiling, and executing. โดย วชิราวุธ ธรรมวิเศษ 28 ฝึ กปฏิบัติ 1. 1. การติดตั้ง JDK 2. การติดตั้ง Eclipse 3. การสร้าง Java Project 4. การสร้าง Class HelloWorld 5. การรัน ดูสาธิตและทาตาม เวลา 10 นาที 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 29 Resource http://www.oracle.com/ Download JDK (Java for Developer) http://www.eclipse.org Download Eclipse IDE for Java Developer 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 30 ไวยากรณ์ พืน้ ฐาน การนิยาม class การนิยาม attribute หรื อ fields การนิยาม method package 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 31 ตัวอย่าง โครงสร้างของ Class โปรแกรม Java จะต้อง เขียนในรู ปของ class 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 32 การนิยาม Class ของจาวา ไวยกรณ์ <modifiers> class <class_name>{ [attribute declaration] [constructor declaration] [method declaration] } public class Person { } 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 33 การนิยาม Attributes (Instance Variable) ต้องเขียนอยูภ่ ายในปี กกาของ class (ไม่สนใจลาดับก่อนหลัง) ไวยกรณ์ [<modifiers>] type name [= value ]; public class Person { private String id; private String name; public int number; } 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 34 การนิยาม 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; } } 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 35 ตัวอย่ าง 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 36 "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. " ); } } 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 37 คาถาม : class Person สามารถ RUN ได้ หรื อไม่ ? 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 38 "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( ); แบบมีการตั้งชื่ อตัวแปร } } 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 39 "new" Keyword ใช้ new พร้ อมการประกาศ attribute class ทั้งหมดสามารถนามาใช้สร้างเป็ นตัวแปรได้ class ก็คือ ชนิดข้อมูล (data type) แบบหนึ่ง p1 และ p2 เป็ น attributes ของ Greeter จะต้อง new Greeter ก่อนจึงจะเกิด p1,p2 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 40 "new" Keyword 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 41 static static เป็ นการระบุวา่ ตัวแปร หรื อ method นั้นเป็ นของ class ตัวแปร และ method ที่ไม่ใช่ static เป็ นของ instance package test; public class Person { String id; String name; static int count=0; } Id และ name จะเป็ น instance variable Count เป็ น static variable 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 42 static public class TestPerson { public static void 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); } } 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 43 การอ้ างถึงสมาชิก (member) ของ object member ของ object คือ attribute และ method เราจะใช้ เครื่ องหมายจุด (.) ในการอ้างถึงสมาชิก เช่น p1.number อ้างถึง number ของ p1 p2.number หมายถึง number ของ p2 ซึ่งเป็ นคนละตัวกับของ p1 g.p1.number หมายถึง number ที่เป็ นของ p1 ของ g สมาชิกที่เป็ น method เวลาเรี ยกใช้ตอ้ งมีวงเล็บ 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 44 Access Control เราจะควบคุมการเข้าถึง สมาชิกใน Class โดยใช้ Modifier public หมายถึง สมาชิกนั้นเปิ ดเผยให้เข้าถึงได้จาก class ภายนอก อื่นทั้งหมด private หมายถึง สมาชิกนั้นไม่อนุญาตให้เข้าถึงจาก class ภายนอก (default) ไม่ระบุ modifier หมายถึง อนุญาตให้เข้าถึงสมาชิกนั้น เฉพาะ class ที่อยูใ่ น package เดียวกัน เป็ นคุณสมบัติ "Encapsulation" 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 45 Encapsulation 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 46 การแสดงผลออก 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 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 47 ตัวอย่ าง 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" เป็ นการเชื่อมต่อข้อความ 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 48 ประโยค package ใช้ในการจัดกลุ่มของ class package <ชื่อ>[.<ชื่อย่อย] ; ตัวอย่าง package kku; package kku.game.ox; package kku.app.talk; ในไฟล์ .java หนึ่งไฟล์จะระบุ package ได้เพียง 1 อัน 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 49 ประโยค import ใช้เมื่อต้องการใช้งาน class ที่อยูต่ ่าง package import package[.subpackage].classname; import package[.subpackage].*; ตัวอย่าง import kku.*; import kku.game.ox.Game1; import kku.game.ox.*; 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 50 Directory Layout and Packages เมื่อเรา compile ไฟล์ class จะถูกเก็บแยกลงใน directory ตามชื่อ package C:\Kku\ game\ app\ 2 มิ.ย 2552 ox\ Game1.class talk\ Talk.class Client.class โดย วชิราวุธ ธรรมวิเศษ 51 ตัวอย่ าง package class Person อยูใ่ น package ch2.app จะต้องเก็บใน folder <root folder>\ch2\app 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 52 การ import ถ้า class Greeter ไม่มี package แต่ตอ้ งการใช้ class Person ก็จะต้องมีการ import ch2.app.Person 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 53 การ Compile สมมติวา่ root folder อยูท่ ี่ c:\322251\ การ compile ให้ใช้คาสัง่ javac ใน folder c:\322251 หรื อ compile class Greeter (javac จะตามไป compile class ที่ถูก import ด้วย) 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 54 Compile-time Error และ Runtime Error Compile-time Error เป็ นข้อผิดพลาดที่เกิดเมื่อตัวแปลภาษา (Compiler) ไม่สามารถแปล SoureCode ได้กจ็ ะแจ้งข้อผิดพลาดให้ทราบ Runtime Error เป็ นข้อผิดพลาดที่เกิดระหว่างการรันโปรแกรม ซึ่งตัว Java Virtual Machine (JVM) จะแจ้งให้ทราบในระหว่างการรันโปรแกรม 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 55 การแก้ ไขข้ อผิดพลาด 1. เขียนทีละน้ อย เขียนเสร็ จตามโครงสร้างไวยากรณ์แล้ว compile ค่อยๆ เขียน code เพิ่มที่ละส่ วน และ compile อย่าเขียน code ยาวๆ ในคราวเดียว 2. แก้ปัญหาทีล่ ะข้ อ เมื่อพบ Error ที่ถูกแจ้งออกมาให้ เริ่ มแก้ไขปัญหาจากข้อบนสุ ดก่อน อ่านคาอธิบายว่าผิดที่ไฟล์ไหน บรรทัดอะไร โดยให้สนใจเฉพาะ Error ในไฟล์ที่เราเป็ นคนเขียน Code เองก่อน 2 มิ.ย 2552 โดย วชิราวุธ ธรรมวิเศษ 56 การใช้ Eclipse ในการเรียนภาษา Java Eclipse หรื อ Java IDE อื่นๆ จะมีความสามารถในการแนะนา ให้ฝึกสังเกต และ ทาตามคาแนะนา ที่ได้รับ Eclipse จะทาการ Compile โปรแกรม ตลอดเวลาระหว่างที่เรากาลังพิมพ์ Code เมื่อพบว่าเราเขียนโปรแกรมผิด Eclipse จะแสดงคาแนะนา วิธีการแก้ไขที่เป็ นไปได้ท้ งั หมด 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 57 Comment และ หมายเหตุในโปรแกรม การเขียนหมายเหตุ เขียนไว้ในส่ วนใดของไฟล์กไ็ ด้ compiler จะไม่แปล ประโยคที่เป็ น comment •แบบ 1 บรรทัด ใช้ เครื่ องหมาย // เช่น // This is comment •แบบหลายบรรทัด ใช้ เครื่ องหมาย /* */ เช่น /* This is My First Program In Java.. */ •แบบใช้เป็ นเอกสารประกอบ (Document Comment) ใช้ /** */ java จะมีเครื่ องมือคือ JavaDoc ที่ช่วยสร้างเอกสารอธิ บายโปรแกรม โดย ใช้ขอ้ มูลจาก Comment 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 58 Eclipse และ Comment เขียน comment ใน class 24 พฤษภาคม 2560 โดย วชิราวุธ ธรรมวิเศษ 59