สนับสนุนโดย

วันจันทร์ที่ 31 ธันวาคม พ.ศ. 2561

XML คืออะไร

XML คืออะไร ? : เริ่มกันที่ว่า XML ย่อมาจาก Extensible Markup Language เป็นภาษาหนึ่งที่ใช้ในการแสดงผลข้อมูล ถ้าเปรียบเทียบกับภาษา HTML จะแตกต่างกันที่ HTML ถูกออกแบบมาเพื่อการแสดงผลอย่างเดียวเท่านั้น เช่นให้แสดงผลตัวเล็ก ตัวหนา ตัวเอียง เหมือนที่คุณเคยเห็นในเวบเพจทั้วไป แต่ภาษา XML นั้นถูกออกแบบมาเพื่อเก็บข้อมูล โดยทั้งข้อมูลและโครงสร้างของข้อมูลนั้นๆไว้ด้วยกัน ส่วนการแสดงผลก็จะใช้ภาษาเฉพาะซึ่งก็คือ XSL 

วันอาทิตย์ที่ 30 ธันวาคม พ.ศ. 2561

match

การจับอักษรว่าเข้ากับรูปแบบ (pattern) ที่เราต้องการตรวจสอบหรือไม่ สามารถเช็คได้ไม่ยากด้วย Regex นี่แหละครับ เดี๋ยวตัวอย่างนี้จะพาตรวจสอบ href ของ <a> tag ในภาษา HTML

ให้ทำการสร้าง package ชื่อ match และสร้างไฟล์ HrefMatch.java เขียนโค้ดเข้าไปดังนี้

วันเสาร์ที่ 29 ธันวาคม พ.ศ. 2561

การใช้ Regular Expression

ในการเขียนโปรแกรมที่ยากๆ ส่วนมากจะใช้ Regular Expression หรือสัญลักษณ์คัดกรองข้อมูลนั่นเอง อาจจะดูยากหน่อยในช่วงแรก แต่จริงๆ ไม่ยากเกินไป ผู้อ่านสามารถค้นหาข้อมูลการใช้ได้ตามเว็บทั่วไป เพราะโดยหลักแล้ว Regular Expression จะมีแนวทางเหมือนกันทั้งหมด

ลองมาดูโค้ดของ java กันครับ สร้าง package ชื่อว่า regex แล้วสร้างไฟล์ชื่อ RegexTest.java ลงไป

วันศุกร์ที่ 28 ธันวาคม พ.ศ. 2561

การใช้ Memory Map File

ในระบบปฏิบัติการทั่วไป จะทำการดึงไฟล์มาใส่ใน memory ไว้ เพื่อความเร็วเมื่อต้องการประมวลผลเกี่ยวกับไฟล์ สำหรับการเขียนโปรแกรม java เราเองก็สามารถจัดการได้เช่นกัน เราเรียกกันว่า memory map file นั่นก็คือการเอา หน่วยความจำ ไปผูกไว้กับไฟล์ นั่นเอง เพื่อให้ทราบว่าไฟล์ที่ดึงเข้ามานี้ อยู่ตำแหน่งใด ของหน่วยความจำ

ให้สร้าง package ชื่อว่า memoryMap จากนั้นสร้างไฟล์ MemoryMapTest.java เขียนโค้ดลงไปดังนี้

วันพฤหัสบดีที่ 27 ธันวาคม พ.ศ. 2561

Serialization and Cloning

ในการเขียนข้อมูลต่างๆ ลงไปแบบ Binary Data เราต้องทำการ implements Serialization เสมอ ทีนี้บางกรณีหากเราต้องการคัดลอก หรือเรียกกันว่า โคลนนิ่ง จะทำได้อย่างไร ตรงนี้มีประโยชน์มาก เมื่อเราต้องการสร้างข้อมูลใหม่ แต่เก็บรักษาข้อมูลเก่าไว้ด้วย เพื่อไม่ให้เกิดการสูญหาย และกำหนดเป็น version ได้ตามต้องการ

ลองมาดูตัวอย่างกันครับ ให้ทำการสร้าง package ชื่อว่า serialClone ขึ้นมาก่อน แล้วสร้างไฟล์ SerialCloneTest.java ใส่เข้าไป พร้อมกับเขียนโค้ดดังนี้

วันพุธที่ 26 ธันวาคม พ.ศ. 2561

ObjectStream และ Zip Programming

เรื่องนี้เราจะมาพูดเรื่องการบีบอัดข้อมูล โดยเขียนโปรแกรมสั่งให้เขียนไฟล์แบบ ไบนารี่ เหมือนเดิม เพียงแต่ว่ามีความต่างคือเป็นการเขียนค่า และบีบอัด (zip) เพื่อให้ข้อมุลในไฟล์มีขนาดเล็กลงไปอีก

ตัวอย่างนี้เพื่อไม่ให้เกิดความสับสน ขอให้สร้าง package ชื่อ objectStreamTest ขึ้นมาก่อน แล้วสร้างไฟล์ ObjectStreamTest.java ใส่เข้าไป พร้อมกับเขียนโค้ดลงไปดังนี้

วันอังคารที่ 25 ธันวาคม พ.ศ. 2561

Reading and Writing Binary Data

การอ่านเขียนไฟล์อีกแบบหนึ่งที่นิยมกันมาก คือข้อมูลแบบ ไบนารี่ ซึ่งข้างในจะเป็นอักษรที่โปรแกรมทั่วไปเปิดอ่านแล้วไม่เข้าใจ เช่น ds2348d7fsdfjskj2341237sdfjjkjwed1234340584568 อะไรพวกนี้
ข้อดีคือมีแต่โปรแกรมเราเขียนเท่านั้นอ่านข้อมูลในนั้นได้ เพื่อปกป้องให้ข้อมูลมีความปลอดภัยมากขึ้นอีกระดับหนึ่ง ซึ่งอาจจะเข้ารหัส หรือไม่เข้ารหัสก็ได้

วันจันทร์ที่ 24 ธันวาคม พ.ศ. 2561

Text File และการใช้งาน

สำหรับการเขียนโปรแกรมเพื่อ เขียน และอ่าน ข้อมูลลงในไฟล์ แบบที่ง่ายที่สุดจะเป็นการจัดการแบบข้อความ หรือที่เราเรียกกันว่า Text File นั่นเองครับ เพราะจะใช้โปรแกรมไหนมาเปิดก็ได้ ไม่ว่าจะเป็น Notepad, Editor ทั่วไป หรือแม้แต่เขียนโปรแกรมมาอ่านข้อมูลเองก็ทำได้ ไม่ว่าจะใช้ภาษาใดๆ

วันอาทิตย์ที่ 23 ธันวาคม พ.ศ. 2561

interrupt

บางครั้งการทำงานของโปรแกรมอาจจะมีการโดนขัดจังหวะบ้าง เราเรียกว่า interrupt หรือโดนขัดจังหวะนั่นเอง เช่น ขณะที่เรากำลังคุยกับอาจารย์อยู่ แล้วเพื่อนมาสะกิดหัวไหล่ ก็ทำให้เราเสียสมาธิไปโฟกัสอีกจุดหนึ่งแทน

วันเสาร์ที่ 22 ธันวาคม พ.ศ. 2561

การใช้ sleep()

สำหรับการเขียนโปรแกรมคุม thread แล้วต้องการให้บางครั้งหยุดการทำงานก่อน เราจะใช้คำสั่ง sleep() เพื่อเบรกให้หยุดทำงาน แล้วค่อยมาทำงานอีกที เมื่อครบกำหนดที่เราตั้งไว้

วันศุกร์ที่ 21 ธันวาคม พ.ศ. 2561

thread rescheduling

สำหรับคลาส Thread มี method ชื่อ yield() สำหรับเรียกเพื่อให้ thread ที่กำลังทำงานอยู่หยุดการทำงานแล้วออกมาที่สถานะ Runnable และจะกลับไปทำงานอีกในภายหลัง โดยจะหยุดทำงานอย่างยินยอมพร้อมใจ หมายถึงว่า thread นั้นเป็นผู้เรียกเอง ไม่ใช่โดน thread อื่นสั่งให้หยุด

วันพฤหัสบดีที่ 20 ธันวาคม พ.ศ. 2561

Thread Priorities

การจัดความสำคัญของเทรด ถือได้ว่าจำเป็นมากสำหรับการเขียนโปรแกรมที่ต้องแยกส่วนทำงาน และทำงานพร้อมๆ กันหลายเทรด ในเวลาเดียวกัน เพราะในบางงานมีความสำคัญมาก บางงานสำคัญน้อยกว่า ดังนั้นแล้วเราต้องจัดระดับความสำคัญ ตรงนี้เราเรียกว่า priorities ครับ

มี 3 ระดับคือ
MIN
NORM
MAX

วันพุธที่ 19 ธันวาคม พ.ศ. 2561

SRO : Self Running Object

วันนี้เราจะมารู้จักกับการทำ sro หรือการทำให้ object สามารถทำงานเป็น thread ได้ด้วยตัวเอง แนวคิดนี้ช่วยให้เราเขียนโปรแกรมขนาดใหญ่ ที่ต้องการทำงานแบบแยกส่วน หรือ multi working ได้ง่ายขึ้นมาก เพราะทุกอย่างถูกแยก และทำงานจบในตัวเอง

วันอังคารที่ 18 ธันวาคม พ.ศ. 2561

Runnable Interface

ตัวอย่างนี้จะเป็นการใช้งาน Thread แบบไม่ต้องสร้าง Class และ extends จาก Thread โดยตรง แต่ว่าเราจะไปอาศัยการ implement ตัว interface ที่ชื่อว่า Runnable กันครับ ลองดูตัวอย่างโค้ดต่อไปนี้ประกอบเนื้อหา

วันจันทร์ที่ 17 ธันวาคม พ.ศ. 2561

การใช้ Thread ในสถานการณ์จริง

หลังจากที่เราเรียนรู้เรื่อง Thread กันมาสักพักแล้วทีนี้เรามาเขียนโปรแกรมให้ทำงานแบบ Thread กันดูครับ ซึ่งมันจะทำงานหลายๆ อย่างพร้อมกันได้ โดยไม่ต้องรอให้อันนึงเสร็จก่อน ตรงนี้เป็นจุดที่เจ๋งมากๆ สำหรับภาษา java เอาล่ะ มาลุยกันเลย


  1. กฏมีอยู่ว่า คลาสใดต้องการให้ทำงานแบบ Thread จะต้อง extends Thread ก่อน
  2. และสร้าง run method เพื่อเป็นจุดเริ่มต้นในการทำงาน
  3. เรียก object.start() เพื่อให้ทำการสั่งเรียก run method ใน class อีกที


วันอาทิตย์ที่ 16 ธันวาคม พ.ศ. 2561

constructor ของ Thread Class

หลังจากได้รู้จักกับ Thread กันมานิดหน่อยแล้วทีนี้มาดูว่าเราจะทำการ new แล้วเรียก constructor แบบไหนได้บ้าง โดยจะมีหลักๆ ดังนี้

Thread()
Thread(Runnable)
Thread(ThreadGroup, Runnable)
Thread(String)
Thread(ThreadGroup, String)
Thread(Runnable)
Thread(ThreadGroup, Runnable, String)
Thread(ThreadGroup, Runnable, String, long)

วันเสาร์ที่ 15 ธันวาคม พ.ศ. 2561

thread state

สถานะต่างๆ ของ Thread ขณะโปรแกรมกำลังทำงาน ประกอบไปด้วยสถานะดังต่อไปนี้
NEW = เมื่อเทรดถูกสร้าง
RUNNABLE = เมื่อเทรดกำลังอยู่ในคิวงาน
BLOCKED = เมื่อเทรดกำลังรอที่จะ lock วัตถุเข้าสู่ synchronozed block
WAITING = เมื่อเทรดกำลังรอเหตุการณ์บางอย่างที่จะเกิดขึ้นกับ เทรดอีกเส้นหนึ่ง
TIMED_WAITING = เมื่อเทรดรอให้ถึงเวลาที่กำหนด จะเกิดเมื่อโดนเรียก sleep หรือ wait และ join แบบมีกำหนดเวลา
TERMINATED = เมื่อเทรดสิ้นสุดการทำงานแล้ว

วันศุกร์ที่ 14 ธันวาคม พ.ศ. 2561

รู้จักกับ Thread

ในการเขียนโปรแกรมที่ต้องการให้ทำงานหลายๆ อย่างพร้อมกันได้นั้น เราต้องใช้ Thread เพื่อแยกการทำงานออกเหมือนว่าเรามี cpu หลายๆ คอร์ เช่นเราต้องการเขียนโปรแกรมค้นหาข้อมูลจากไฟล์ เพื่อให้ทำงานไวขึ้น ลื่นไหลขึ้น เราก็ต้องแยกเป็นหลายๆ ตัว

java จะมีคลาส Thread ให้ใช้โดยอยู่ใน java.lang.Thread

วันพฤหัสบดีที่ 13 ธันวาคม พ.ศ. 2561

การใช้ Inner Class ซ้อนกัน

ปกติเรามักไม่ค่อยได้เห็นคนที่เขียนโค้ดเอา class มาซ้อนกัน แต่ในบางกรณีเราก็จำเป็นต้องทำแบบนั้น เพื่อจำกัดขอบเขตการใช้งาน class ใดๆ เพียงแค่ในกรอบนั้นเท่านั้น

เช่น

class A{
  class B {
  }
}

วันพุธที่ 12 ธันวาคม พ.ศ. 2561

interface กับการสืบทอดความสามารถ

วันนี้เป็นอีกหัวข้อที่หลายคนสงสัยกันมาว่า interface จะสามารถส่งต่อความสามารถไปยังรุ่นลูก เพื่อพัฒนาเพิ่มเติมได้อีกหรือไม่ คำตอบคือได้ครับ แค่เพียงใช้ extends ก็ได้เลย เหมือนคลาสเป้ะ

วันอังคารที่ 11 ธันวาคม พ.ศ. 2561

interface อีกเรื่องที่น่ารู้สำหรับสาย java

โดยปกติถ้าหากเราสร้าง class มาแล้วต้องการสืบทอด จะติดปัญหาว่ามันสืบทอดกันได้แค่คลาสเดียว จะสืบทอดจากหลาย คลาสไม่ได้ เพราะโปรแกรมจะงง บางทีโดน method ชื่อชนกัน คอมไพเลอร์จะไม่รู้ว่าต้องไปเลือก override อันไหนกันแน่

ทางแก้เลยต้องใช้ interface เข้าช่วย

วันจันทร์ที่ 10 ธันวาคม พ.ศ. 2561

การใช้ Abstract Class

การกำหนด abstract ก็คือการบอกว่า class ใดที่ทำการสืบทอดไปจะต้องสร้าง method ตามที่โดนกำหนดไว้ใน abstract keyword เช่นว่า เราอยากให้คลาสลูกมี method a(), b(), c() เราก็วางเป็น abstract ไว้ เพื่อกำหนดมาตรฐานตามที่เราต้องการ

วันอาทิตย์ที่ 9 ธันวาคม พ.ศ. 2561

constructor chain

ตัวอย่างนี้ผมจะพามาดูเส้นทางการทำงานของ constructor ว่ามันวิ่งทำงานจากตรงไหน ไปตรงไหน
หลักการมีอยู่ว่าเมื่อใดที่เรา new object อะไรก็แล้วแต่ โปรแกรมจะทำการไปเรียก constructor ก่อนเสมอ เช่นเรามี คลาส

A {
A(){}
}

วันเสาร์ที่ 8 ธันวาคม พ.ศ. 2561

super constructor

ในภาษา java มีการให้เราสร้าง super constructor ซึ่งมีข้อจำกัดว่า
- super มีไว้สำหรับให้ constructor เท่านั้นเรียกใช้งาน constructor ของคลาสแม่
- ไม่สามารถเรียกผ่าน method ใดๆ ได้
- ต้องเรียกเป็นประโยคแรกใน constructor
- ห้ามมีประโยคคำสั่งอื่นๆ อยู่ก่อน
- ห้ามเรียก super มากกว่าหนึ่งครั้ง

วันศุกร์ที่ 7 ธันวาคม พ.ศ. 2561

เจาะลึกกับ super ให้มากขึ้น

ตัวอย่างของบลอกก่อนหน้าเราได้เรียนไปแล้วว่า super ใช้อ้างอิงหาสมาชิกของคลาสแม่ แต่มันยังมีอึกเงื่อนไขหนึ่ง ที่ผมยังไม่ได้พูดถึง นั่นคือ มันจะวิ่งหาได้เพียงชั้นเดียว

เช่นว่า ถ้าเรามี x อยู่สัก 3 ชั้น มันจะมองหาได้เพียงชั้นแรกเท่านั้น

วันพฤหัสบดีที่ 6 ธันวาคม พ.ศ. 2561

super references

ในกรณีที่เกิดการ shadowing หรือ overriding หากว่าคลาสลูกต้องการไปอ้างอิงสมาชิกของคลาสแม่ ทำได้โดยการใช้คำว่า super ช่วย

แต่พอมี super แล้วก็มักมีคำว่า this ประกบ ซึ่งความหมายที่ต่างกันคือ
super = การอ้างอิงไปหาสมาชิกของ class แม่
this = การอ้างอิงไปหาสมาชิกของตนเอง

วันพุธที่ 5 ธันวาคม พ.ศ. 2561

การ casting สำหรับ object

ตัวอย่างนี้จะมีความยากขึ้นเล็กน้อย เพราะเป็นเรื่องของ oop อีกระดับนึง เวลาที่เราสร้าง object โดยปกติเราก็จะใช้

ClassName objectName = new ClassName();

เช่น

Book b = new Book();

วันอังคารที่ 4 ธันวาคม พ.ศ. 2561

การใช้ import * เพื่อเลือกทั้งหมดใน package

ในกรณีที่เราเขียนคลาสไว้เป็นจำนวนมาก และต้องการดึงเข้ามาโดยใช้ import หากต้องไล่ทีละคลาสคงไม่ไหว เช่น

import myPackage.Customer;
import myPackage.User;
import myPackage.Manager;

วันจันทร์ที่ 3 ธันวาคม พ.ศ. 2561

การใช้งานคำสั่ง import แบบง่ายๆ

เมื่อโปรแกรมเริ่มมีขนาดที่ใหญ่ขึ้นมากๆ เราต้องเก็บโค้ดไว้แยกเป็นหลายๆ แพกเกจ ทีนี้ปัญหาก็คือว่า เวลาเรียกใช้งานมันค่อนข้างลำบาก เพราะต้องพิมพ์ชื่อ เช่น myPackage.MyClass เสมอ
เขาเลยต้องมีการใช้ import มาช่วยลดความยุ่งยากตรงนี้

วันอาทิตย์ที่ 2 ธันวาคม พ.ศ. 2561

การใช้งาน protected หลักการ และการใช้จริง

จากที่เราได้เรียนกันมาบ้างแล้ว ส่วนของ private, defaut, public ทีนี้ก็เหลือตัวสุดท้ายในด้าน modifier นั่นก็คือ protected แปลกันแบบตรงตัวก็ ปกป้อง เอ้ะ ปกป้องยังไง ปกป้องในที่นี้หมายความว่า ไม่ให้ method หรือ properties ใดๆ ถูกเรียกใช้ได้ หากอยู่คนละ package กัน

พูดง่ายๆ ก็คือจำกัดห้อง ถ้าข้ามห้อง ไม่ให้เข้าถึง นั่นเอง

วันเสาร์ที่ 1 ธันวาคม พ.ศ. 2561

รู้จักกับ package

เวลาที่เราเขียนโปรแกรมไปสักพักจะพบว่ามี class จำนวนมากเกิดขึ้น ดังนั้นหากต้องการจัดระเบียบให้เป็นหมวดหมู่ ต้องมีการเก็บเป็นที่เป็นทาง สวนมากก็ใส่ลงใน folder เพื่อแยกห้องเก็บ อันนี้ในทางภาษา java เรียกว่า package หรือตัวห่อหุ้ม เพื่อให้เราสร้าง class ชื่อเดียวกันได้ (แต่ต้องอยู่คนละ package นะ)

วันศุกร์ที่ 30 พฤศจิกายน พ.ศ. 2561

final กับการใช้งานแบบง่ายๆ

คำว่า final แปลกันตรงตัวก็คือ สุดท้าย หมายความว่าอะไรที่มีคำว่า final จะไม่ถูกเปลี่ยนแปลงแก้ไข ไม่ว่าจะสืบทอดคลาสไปก็ตาม พูดง่ายๆ ภาษาชาวบ้านคือ ไม่ยอมให้ override ได้อีก

วันพฤหัสบดีที่ 29 พฤศจิกายน พ.ศ. 2561

override method คืออะไร ใช้ยังไง มาดูกัน

ปกติแล้วเวลาที่เราสร้าง class มาสักอัน แล้วทำการสืบทอดกันต่อไปอีกที class ลูกก็จะได้คุณสมบัติต่างๆ ตามไปด้วย (ยกเว้นสิ่งที่เป็น private เท่านั้น)

วันพุธที่ 28 พฤศจิกายน พ.ศ. 2561

การสืบทอด class หลายๆ ชั้น

การสืบทอดคุณสมบัตินั้น สามารถทำได้หลายชั้นโดยไม่จำกัดว่ามากสุดได้กี่ชั้น ตัวอย่างนี้ผมจะพาเขียนโปรแกรมง่ายๆ สืบทอดความสามารถลงไป และเพิ่มเติม method เรื่อยๆ ในแต่ละชั้น

วันอังคารที่ 27 พฤศจิกายน พ.ศ. 2561

สืบทอดคลาส ด้วยเทคนิคง่ายๆ

เวลาที่เราทำโปรแกรมขนาดใหญ่ขึ้น เราจะไม่เขียนโค้ดเดิมซ้ำๆ หลายรอบ แต่ใช้วิธีการสืบทอดความสามารถ จาก คลาสหนึ่ง ไปยังอีกคลาวหนึ่ง เรียกกันว่า extends โดยจะแยกเป็น

parent -> child ก็คือ แม่ และ ลูกนั่นเอง

วันจันทร์ที่ 26 พฤศจิกายน พ.ศ. 2561

static method...

สำหรับการเขียน method ทั่วไปนั้นเราต้องสร้าง object ก่อนจึงจะเรียกใช้งาน method ต่างๆ ได้แต่ในบางกรณีเราไม่ต้องการสร้าง object หรือบางทีเราต้องการใช้ method นั้นๆ เลย โดยเรียกผ่านชื่อ class หรือให้ method ชื่อ main ไปเรียก method อื่นๆ

นั่นล่ะครับ เราจึงต้องสร้าง static method ขึ้นมา กฏมันมีอยู่ว่า

วันอาทิตย์ที่ 25 พฤศจิกายน พ.ศ. 2561

method overloading

หัวข้อวันนี้เป็นอีกเรื่องที่เราจะได้พบบ่อยๆ ในการเขียนโปรแกรมด้าน OOP นั่นคือการเขียนชื่อ method ชื่อเดียวกันเป้ะ แต่แตกต่างกันที่ชนิด หรือจำนวนของ parameter นั่นเองครับ

ลองดูตัวอย่างข้างล่างนี้กันก่อน สมมุติเรามี method 3 ตัว
int calNumber(int a, int b)
int calNumber(int a, int b, int c)
int calNumber(int a, int b, String str)

วันเสาร์ที่ 24 พฤศจิกายน พ.ศ. 2561

modifier ของ method

สำหรับการกำหนดสิทธิ์การเข้าถึง method นั้น ทำได้เช่นเดียวกับ properties โดยตัวที่เราจะได้เรียนกันในหัวข้อนี้ก็คือเรื่องของ private ก่อน เพราะเห็นภาพได้ง่าย ชัดเจน

คำว่า private ก็หมายถึง ส่วนตัว นั่นแปลว่าหาก method ใดมีคำว่า private นำหน้า method นั้นจะถูกเรียกใช้งานไม่ได้ แม้ว่าจะเป็น object ก็ตาม แต่จะสามารถเรียกใช้ได้ก็ต่อเมื่อ อยู่ใน class ของตนเอง

วันศุกร์ที่ 23 พฤศจิกายน พ.ศ. 2561

method แบบ ส่งค่ากลับคืน

บางทีเราจะต้องส่ง parameter เข้าไป แล้วคำนวนอะไรบางอย่าง แล้วก็ส่งผลการทำงานกลับคืนไปยังจุดเรียกใช้ เช่นว่า เราต้องการ หาผลรวมของ 1 ถึง 10

void sumNumber(1, 10)

วันพฤหัสบดีที่ 22 พฤศจิกายน พ.ศ. 2561

method แบบหลายๆ parameter

ตัวอย่างนี้จะพาเขียนการสร้าง method ที่มีหลายๆ parameter ในทีเดียวครับ เพื่อให้รองรับการทำงานที่ซับซ้อนมากยิ่งขึ้นอีก เช่นการทำส่วนของ คำนวนบวกเลข หรือคิดภาษีมูลค่าเพิ่ม เป็นต้น

หลักการมีว่า ให้ใช้ , คั่นระหว่าง parameter แต่ละตัว เช่น
void addVat(int money, int vat) {
}

วันพุธที่ 21 พฤศจิกายน พ.ศ. 2561

การใช้ method แบบมี parameter

ตัวอย่างก่อนหน้านี้เราได้เรียนไปแล้วเรื่องของ method เบื้องต้น แต่ยังไม่พอ เพราะว่าเวลาต้องเขียนโค้ดกันจริงๆ นั้น เราต้องมีการรับค่าบางอย่างเข้าไปทำงานข้างใน

เช่น หากต้องการให้พิมพ์คำว่า

Hello Kob
Hello Tavon

วันอังคารที่ 20 พฤศจิกายน พ.ศ. 2561

method คืออะไร ใช้อย่างไร มาดูกัน

สำหรับการสร้าง class นั้นโดยทั่วไปจะไม่ได้มีเพียงแค่ คุณสมบัติ (properties) แต่จะมี ความสามารถด้วย เราเรียกกันว่า method (เมทอด) เพื่อกำหนดให้ class นั้นๆ สามารถทำสิ่งต่างๆ ได้มากขึ้น

เช่นว่าเรามี class ไม้ปิงปอง ที่มีคุณสมบัติ และความสามารถ ดังนี้

วันจันทร์ที่ 19 พฤศจิกายน พ.ศ. 2561

ว่าด้วยเรื่อง modifier ของ properties

ก่อนหน้านี้เราได้นำเสนอไปแล้วเรื่องของการสร้าง properties แต่เราจะสามารถเข้าถึงค่าต่างๆ ได้เลย เช่นเรามี class ง่ายๆ ตัวนึงดังนี้


class Book {
  int price;
  String isbn;
  String name;
}

วันอาทิตย์ที่ 18 พฤศจิกายน พ.ศ. 2561

คุณสมบัติของ object หลักการ + โค้ดจริง

จากที่เราได้เขียนบทความกันมาพักนึงแล้วสำหรับเรื่องของ Class, Object ทีนี้เราจะมาดูว่า การกำหนดคุณสมบัติให้แก่ object นั้นทำอย่างไร และมันคืออะไร

ยกตัวอย่างว่าเรามี class Racket ดังนี้


class Racket {
}

วันเสาร์ที่ 17 พฤศจิกายน พ.ศ. 2561

class และ object

สำหรับการเขียนโปรแกรมสร้างต้นแบบ หรือสร้าง class นั้นเราต้องประกาศ
class ชื่อคลาส {
}

และหากต้องการสร้างวัตถุก็เขียน
ชื่อคลาส ชื่อวัตถุ = new ชื่อคลาส

เช่น
class Book {
}

วันศุกร์ที่ 16 พฤศจิกายน พ.ศ. 2561

แนวคิดการเขียนโปรแกรมเชิงวัตถุ

สำหรับการเขียนโปรแกรมในยุคสมัยใหม่ นิยมเขียนแบบ OOP หรือเรียกกว่าเป็นการเขียนเชิงวัตถุ ซึ่งจะมองสิ่งต่างๆ เหมือนว่ามันคือวัตถุจริงๆ ในโลกแห่งความเป็นจริง
และสร้างทุกอย่างไว้ใน class เสมอ

แนวคิดการเขียนโปรแกรมแบบวัตถุ ก็คือการที่เราสร้างต้นแบบ เรียกกันว่า class แล้วนำเอาต้นแบบนี้ไปผลิตวัตถุ เรียกว่า object

วันพฤหัสบดีที่ 15 พฤศจิกายน พ.ศ. 2561

การเขียน loop ซ้อนกัน

ในบางกรณีเราอาจจะต้องได้เขียนโปรแกรมเพื่อคำนวนค่า ที่ต้องใช้การทำซ้ำ 2 ชั้น หรืออาจจะหลายชั้นกว่านั้น ตัวอย่างนี้ผมจะพาเขียนโค้ดทำ loop 2 ชั้น เพื่อหาผลรวมครับ

ลองมาดูโค้ดตัวอย่าง

วันพุธที่ 14 พฤศจิกายน พ.ศ. 2561

มหากาพย์ การทวงเงินค่าทำโปรเจค ของโปรแกรมเมอร์

เรื่องจริงอันเจ็บปวด ของโปรแกรมเมอร์ เมื่อต้องเก็บเงินลูกค้า ค่าทำระบบ สร้างจากเรื่องจริง ของไอ้เต๋อ (ตอนนี้มันเลิกเขียนโปรแกรมไปละ)
...
หวัดดีครับพี่ ผมขอเบิกเงินก้อนสุดท้ายครับ
อ้อ พอดีตอนนี้รอนายอนุมัตินะ ได้อาทิตย์นี้เลย

การดักจับข้อผิดพลาดด้วย try catch

ในการเขียนโปรแกรมที่มีความซับซ้อนมากขึ้น เราจะเริ่มพบว่าบางครั้งหากเกิดข้อผิดพลาดระหว่างทำงาน โปรแกรมจะล่มไปเลยทันที เราจึงต้องมีการตรวจเชค และดักจับข้อผิดพลาด แล้วก็โยนทิ้งไป ไม่ให้โปรแกรมพัง

ลองดูตัวอย่างเล่นๆ

Integer.parseInt("Hello");

วันอังคารที่ 13 พฤศจิกายน พ.ศ. 2561

การใช้งาน loop แบบต่างๆ

ในการเขียนโปรแกรมที่ต้องทำงานบางอย่างซ้ำๆ กันตลอดเวลา เราจะใช้ loop เพื่อให้มันทำซ้ำไปเรื่อยๆ จนกว่าจะถึงจุดออกจาก loop เช่น เราต้องการสั่งให้โปรแกรม พิมพ์คำว่า
Hello
ออกมาสัก 20 ครั้ง ถ้าต้องเขียน System.out.println ก็คงไม่ไหว ดังนั้นจึงต้องมีการใช้ loop

ปัจจุบันนี้ loop ในภาษา java มีด้วยกัน 4 แบบ ได้แก่
for
for in
do while
while

วันจันทร์ที่ 12 พฤศจิกายน พ.ศ. 2561

การใช้ Array หลายมิติ

ในการใช้งาน array ในภาษา java นั้นมีหลายแบบ เราได้เรียนกันไปแล้วในเรื่อง array แบบแรก ซึ่งเป็นเพียงมิติเดียว ทีนี้เรามาดูอีกว่าถ้าหากต้องการใช้งาน array 2 มิติ จะทำอย่างไร

สมมุติเรามี array ชุดนึง ง่ายๆ แบบนี้
int[] arr = new int[3];

วันอาทิตย์ที่ 11 พฤศจิกายน พ.ศ. 2561

การใช้งาน Array

สำหรับชนิดข้อมูลอีกแบบที่เราไม่ค่อยได้เห็นบ่อยมากนักก็คือ Array แต่จริงแล้วมีประโยชน์อย่างมากในการเขียนโปรแกรม ทั้งแบบธรรมดา จนถึงระดับสูง

คือว่า Array ก็เหมือนห้องเก็บของ ให้เรานำตัวแปรหลายๆ ตัวมาเก็บไว้ที่เดียว แต่มีข้อแม้ว่าต้องเป็นชนิดเดียวกันเท่านั้น

วันเสาร์ที่ 10 พฤศจิกายน พ.ศ. 2561

การใช้ if else if หลายๆ แบบ

ในการเขียนโปรแกรมให้ทำงานได้หลายๆ เงื่อนไข เมื่อมีความซับซ้อนมากๆ สามารถใช้ if else if ได้อย่างต่อเนื่อง เช่น

int x = 10;

if (x == 8) {
   ...
} else if (x == 9) {
   ...
} else if (x == 10) {
   ...
} else {
   เมื่อไม่เข้าข้อไหนเลยก็ทำที่นี่
}

การใช้งาน switch case

การใช้ switch case ก็เหมือนกับการใช้งาน if else นี่แหละ เพียงแต่ว่าเลือกเงื่อนไขไม่ได้มาก แล้วก็ทำงานไวกว่า if else เพราะตรวจทีเดียว เจอเงื่อนไขที่ตรงก็ทำงานเลยทันที

รูปแบบเป็นดังนี้
switch (ตัวแปรที่ต้องการตรวจ) {
    case เงื่อนไข:
        ทำงานเมื่อเป็นจริง
        break;
    case เงื่อนไขต่อมา:
        ทำงานเมื่อเป็นจริง
        break;
    default:
        ทำงานเมื่อไม่เข้าเงื่อนไขไหนเลย
}

วันศุกร์ที่ 9 พฤศจิกายน พ.ศ. 2561

การใช้ if else เพื่อควบคุมทิศทางการทำงาน

ในการเขียนโปรแกรมที่มีความซับซ้อนมากขึ้น เราต้องให้มันเลือกการทำงานได้ว่า หากเจอเงื่อนไขแบบไหนจะทำอะไร หรือไม่ทำอะไร เช่น

ถ้าวันนี้ฝนตก ฉันจะใส่เสื้อกันฝน แต่ถ้าไม่ตก ฉันก็จะไม่ใส่เสื้อกันฝน

เมื่อลองแปลงเป็นรูปแบบการเขียนโปรแกรม จะได้โค้ดประมาณนี้

วันพฤหัสบดีที่ 8 พฤศจิกายน พ.ศ. 2561

การแปลงชนิดตัวแปร

ในการเขียนโปรแกรม เมื่อเริ่มทำงานซับซ้อนมากขึ้นเรื่อยๆ เราจะได้ทำการแปลงค่าตัวแปร จากชนิดหนึ่งไปเป็นอีกชนิดหนึ่ง เช่นตัวอย่างต่อไปนี้

int x = 10;
String y = "20";

System.out.println(x + y);

สิ่งที่จะได้ก็คือ
1020

วันพุธที่ 7 พฤศจิกายน พ.ศ. 2561

ตัวดำเนินการ และประเภท

ก่อนที่่เราจะเขียนโปรแกรมได้อย่างมีประสิทธิภาพนั้น ต้องรู้ก่อนว่าโปรแกรมคำนวน หรือทำการคิดอะไรได้บ้าง โดยหลักๆ ต้องมีเครื่องหมายเพื่อดำเนินการ เราเรียกว่า operator มีด้วยกันหลายชนิดดังต่อไปนี้ครับ

operator ด้านคณิตศาสตร์พื้นฐาน
+ = ใช้ในการบวก
- = ใช้ในการลบ
* = ใช้ในการคูณ
/ = ใช้ในการหาร
% = ใช้ในการหารเอาเศษ

กฏเบื้องต้นในการเขียน java

ก่อนหน้านี้ได้พูดถึงเรื่องอื่นๆ ไปหลายส่วน มาหัวข้อนี้เราจะมาพูดกันถึงเรื่องของกฏต่างๆ เมื่อเราต้องเขียนโค้ดจริง เอาล่ะเริ่มจากทีละส่วนกันก่อน

ทุกคำสั่งต้องจบท้ายด้วยเครื่องหมาย ; เช่น
System.out.println("Hello");

ทุกไฟล์ต้องมี class เสมอ เช่น
class A {

}

วันอังคารที่ 6 พฤศจิกายน พ.ศ. 2561

ชนิดของตัวแปร

ในภาษา java นั้นมีชนิดของตัวแปรอยู่ด้วยกันมากมาย ดังนี้

String = ข้อความ เช่น "Hello"
int = เลขจำนวนเต็ม เช่น 48
char = อักษร เช่น 'a'
float = เลขทศนิยม ที่มีทศนิยมจำนวนมากๆ เช่น 42.97854347834983235f
double = เลขทศนิยม ที่มีจำนวนทศนิยมไม่มากนัก เช่น 23.7893
byte = อักษรแบบ byte ในระบบคอมพิวเตอร์
boolean = รูปแบบทางตรรกะ เช่น true, false
object = ชนิดแบบวัตถุ เก็บอะไรก็ได้ เพราะทุกสิ่งคือวัตถุ

จัดรูปแบบการแสดงผล ตัวอักษร

ในการสั่งพิมพ์อักษรออกมา เรามักใช้ System.out.println("My Message");
ทีนี้บางครั้งหากเราต้องการให้พิมพ์แบบแยกบรรทัด จะทำอย่างไร หรือพิมพ์ต่อกัน ทำอย่างไร
ลองมาดูตัวอย่างนี้

System.out.println("Hello");
System.out.println("Java");

วันจันทร์ที่ 5 พฤศจิกายน พ.ศ. 2561

ทดสอบ Hello World โปรแกรมแรกของเรา

เราจะมาเริ่มเขียนโค้ด hello กันก่อน เพื่อให้เห็นภาพการทำงานของโปรแกรม ก่อนอื่นเปิดโปรแกรม Netbeans กดตามภาพนี้


เตรียมเครื่องมือในการเขียนโค้ด

ก่อนอื่นเลยเราต้องโหลด JDK มาติดตั้งกันก่อน โดยโหลดที่
https://www.oracle.com/technetwork/java/javase/downloads/index.html

ในส่วนนี้ผมจะขอใช้โปรแกรม Netbeans นะครับโหลดกันได้เลยที่ www.netbeans.org

จากนั้นก็ทำการเปิดโปรแกรมขึ้นมา จะพบหน้าจอดังนี้

วันอาทิตย์ที่ 4 พฤศจิกายน พ.ศ. 2561

โครงสร้างโค้ดภาษา JAVA

ก่อนที่เราจะทำการเขียนโค้ดภาษา java เราจะต้องรู้โครงสร้างของโค้ดก่อนครับ
รูปแบบจะเป็นดังนี้

import lib

class ชื่อคลาส {
}

วันศุกร์ที่ 2 พฤศจิกายน พ.ศ. 2561

เครื่องมือที่ใช้ในการเขียนโปรแกรม java

วันนี้จะมาแนะนำเครื่องมือต่างๆ ที่ใช้โค้ดโปรแกรมภาษา java กันครับ จริงๆ ในตลาดมีหลายตัว แต่จะขอแนะนำเฉพาะที่เป็นตัวฟรี และใช้ง่ายนะครับ

java คืออะไร

ภาษา java เป็นอีกภาษาที่ใช้ในการเขียนโปรแกรม ที่ได้รับความนิยมมากที่สุด ตลอดระยะเวลาหลายปี เพราะความเรียบง่าย เป็น OOP และถูกนำไปใช้ในการสร้างโปรแกรม ตั้งแต่ขนาดเล็ก จนถึง ขนาดใหญ่ ในช่วงตลอด 20 กว่าปีมานี้