fbpx
วิกิพีเดีย

คลาส (คอมพิวเตอร์)

ในการเขียนโปรแกรมเชิงวัตถุ คลาส (อังกฤษ: class) คือต้นแบบที่กำหนดคุณสมบัติและพฤติกรรมการทำงานของอ็อบเจกต์ทึ่ถูกสร้างมาจากคลาสนั้นๆ

องค์ประกอบของคลาสมีสองส่วนหลักได้แก่

  1. ข้อมูล (data) หรือ คุณสมบัติ (property) สำหรับเก็บข้อมูลในการทำงานหรือบอกสถานะปัจจุบันของอ็อบเจกต์ ตัวอย่างเช่น คลาสชนิดบัญชีธนาคารสามารถมีข้อมูลคือ เลขที่บัญชี, ชื่อเจ้าของบัญชี, และยอดเงินปัจจุบัน
  2. พฤติกรรมการทำงาน (method หรือ function) เป็นส่วนรับคำสั่งและทำงานตามคำสั่งนั้น เช่นคลาสบัญชีธนาคารจากตัวอย่างข้างบนอาจจะมีฟังก์ชันสำหรับฝากและถอนเงินจากบัญชี เป็นต้น

นอกจากนี้ คลาสยังสามารถมีฟังก์ชันพิเศษเรียกว่า constructor ซึ่งจะถูกเรียกใช้ในเวลาที่กำลังสร้างอ็อบเจกต์จากคลาสเพื่อตั้งค่าเริ่นต้นให้กับข้อมูลและคุณสมบัติของอ็อบเจกต์นั้น

โครงสร้างของคลาส ในแบบ UML

การจำกัดการเข้าถึง

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

สมาชิกส่วนตัว (private members) มีเพียงอ็อบเจกต์ของคลาสนั้นเท่านั้นที่สามารถเห็นและใช้งานสมาชิกเหล่านี้ได้ โลกภายนอกจะไม่มีทางรู้เลยว่าคลาสมีสมาชิกเหล่านี้อยู่

สมาชิกสาธารณะ (public members) โลกภายนอกสามารถเรียกใช้สมาชิกเหล่านี้ได้โดยไม่มีข้อจำกัด

สมาชิกคุ้มครอง (protected members) อยู่ระหว่างแบบส่วนตัวกับสาธารณะ สามารถเรียกใช้ได้โดยคลาสนั้นเองและคลาสย่อยที่สร้างมาจากคลาสนั้น เท่านั้น

ความสัมพันธ์ระหว่างคลาส

  • คลาสมีคลาสอื่นเป็นส่วนประกอบ (has-a) เช่นคลาสบัญชีรถยนต์มีคลาสเครื่องยนต์เป็นส่วนประกอบอยู่ภายใน
  • คลาสหลักกับคลาสย่อย (is-a) เช่นคลาสรถยนต์เป็นคลาสหลักสามารถวิ่งได้ มีรถแข่งและรถบรรทุกเป็นคลาสย่อย ทั้งรถแข่งและรถบรรทุกเป็นรถยนต์ชนิดหนึ่งจึงสามารถวิ่งได้เช่นกัน เข้าหลักการ Inheritance แต่รถแข่งสามารถวิ่งได้เร็ว รถบรรทุกสามารถขนของได้มาก เป็นคุณสมบัติเพิ่มเติม

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

คลาสแบบพิเศษ

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

Interface คือข้อตกลงว่าคลาสที่มีอินเตอร์เฟสชนิดนั้นๆ สามารถทำงานตามข้อตกลงที่นิยามไว้ในอินเตอร์เฟสได้

ลักษณะของคลาสที่ดี

  • ซ่อนข้อมูลและคุณสมบัติส่วนตัวของคลาสโดยตั้งค่าให้เป็น private โลกภายนอกสามารถเข้าถึงข้อมูลเหล่านี้ผ่านทางฟังก์ชันพิเศษที่จะมีการตรวจสอบความถูกต้องของข้อมูล
  • ตั้งค่าเริ่มต้นของข้อมูลและคุณสมบัติของคลาสเสมอ อ็อบเจกต์จะอยู่ในสถานะที่พร้อมถูกใช้งานทันที
  • แตกคลาสที่มีภาระมาก (responsibilities) ออกเป็นส่วนย่อยๆ และแบ่งความรับผิดชอบที่เฉพาะเจาะจงให้กับคลาสเล็กๆ เหล่านั้น คลาสที่ใหญ่เกินไปและทำงานหลายอย่างจะยากต่อการบำรุงรักษาและแก้ไข
  • ตั้งชื่อสมาชิกให้สัมพันธ์กับหน้าที่ของมันเพื่อบ่งบอกจุดมุ่งหมายที่แน่ชัด จะทำให้ง่ายต่อการแก้ไขโปรแกรมต่อไป

ตัวอย่าง

ภาษาซีชาร์ป

public class Example { static void Main () { System.Console.WriteLine ("Hello, world!") ; } } 

ภาษาจาวา

public class Account { private String accountName; private String accountNumber; private double balance; public void deposit (double amount) { balance = balance + amount; } public void withdraw (double amount) { balance = balance - amount; } public String getAccountName () { return accountName; } public void setAccountName (String name) { accountName = name; } public String getAccountNumber () { return accountNumber; } public void setAccountNumber (String number) { accountNumber = number; } public double getBalance () { return balance; } public void setBalance (double amount) { balance = amount; } } 

คลาส, คอมพ, วเตอร, บทความน, ไม, การอ, างอ, งจากแหล, งท, มาใดกร, ณาช, วยปร, บปร, งบทความน, โดยเพ, มการอ, างอ, งแหล, งท, มาท, าเช, อถ, เน, อความท, ไม, แหล, งท, มาอาจถ, กค, ดค, านหร, อลบออก, เร, ยนร, าจะนำสารแม, แบบน, ออกได, อย, างไรและเม, อไร, ในการเข, ยนโปรแกรม. bthkhwamniimmikarxangxingcakaehlngthimaidkrunachwyprbprungbthkhwamni odyephimkarxangxingaehlngthimathinaechuxthux enuxkhwamthiimmiaehlngthimaxacthukkhdkhanhruxlbxxk eriynruwacanasaraemaebbnixxkidxyangiraelaemuxir inkarekhiynopraekrmechingwtthu khlas xngkvs class khuxtnaebbthikahndkhunsmbtiaelaphvtikrrmkarthangankhxngxxbecktthuthuksrangmacakkhlasnnxngkhprakxbkhxngkhlasmisxngswnhlkidaek khxmul data hrux khunsmbti property sahrbekbkhxmulinkarthanganhruxbxksthanapccubnkhxngxxbeckt twxyangechn khlaschnidbychithnakharsamarthmikhxmulkhux elkhthibychi chuxecakhxngbychi aelayxdenginpccubn phvtikrrmkarthangan method hrux function epnswnrbkhasngaelathangantamkhasngnn echnkhlasbychithnakharcaktwxyangkhangbnxaccamifngkchnsahrbfakaelathxnengincakbychi epntnnxkcakni khlasyngsamarthmifngkchnphiesseriykwa constructor sungcathukeriykichinewlathikalngsrangxxbecktcakkhlasephuxtngkhaerintnihkbkhxmulaelakhunsmbtikhxngxxbecktnn okhrngsrangkhxngkhlas inaebb UML enuxha 1 karcakdkarekhathung 2 khwamsmphnthrahwangkhlas 3 khlasaebbphiess 4 lksnakhxngkhlasthidi 5 twxyang 5 1 phasasicharp 5 2 phasacawakarcakdkarekhathung aekikherasamarthcakdkhwamsamarthinkarehnaelaichngankhxngaetlasmachikkhxngkhlashruxaemaettwkhlasexngcakolkphaynxkid phlthiidkhuxkhxmulaelakarthanganswntwkhxngkhlascathuksxniw olkphaynxksamarthkhxihxxbecktthanganphanfngkchnsatharnaethannodythiimmikhwamcaepncatxngruraylaexiydkarthanganphayinkhxngkhlasnn sungkekhahlkkarthieriykwa Encapsulation nnexngsmachikswntw private members miephiyngxxbecktkhxngkhlasnnethannthisamarthehnaelaichngansmachikehlaniid olkphaynxkcaimmithangruelywakhlasmismachikehlanixyusmachiksatharna public members olkphaynxksamartheriykichsmachikehlaniidodyimmikhxcakdsmachikkhumkhrxng protected members xyurahwangaebbswntwkbsatharna samartheriykichidodykhlasnnexngaelakhlasyxythisrangmacakkhlasnn ethannkhwamsmphnthrahwangkhlas aekikhkhlasmikhlasxunepnswnprakxb has a echnkhlasbychirthyntmikhlasekhruxngyntepnswnprakxbxyuphayin khlashlkkbkhlasyxy is a echnkhlasrthyntepnkhlashlksamarthwingid mirthaekhngaelarthbrrthukepnkhlasyxy thngrthaekhngaelarthbrrthukepnrthyntchnidhnungcungsamarthwingidechnkn ekhahlkkar Inheritance aetrthaekhngsamarthwingiderw rthbrrthuksamarthkhnkhxngidmak epnkhunsmbtiephimetimkhwamsmphnthaebbkhlashlkkbkhlasyxynithaihekidhlksakhyxikxyangkhux Polymorphism khuxthngrthaekhngaelarthbrrthuksamartheliywidodykarbngkhbphwngmaly aetrththngsxngchnidcamikartxbsnxngthitangkn khuxrthaekhngcaeliywidiwkwainkhnathirthbrrthukeliywxyangrwderwimidephraacathaihphlikkhwakhlasaebbphiess aekikhkhlasaebb Abstract khuxkhlashlkthicatxngthuksbkhlas imsamarthsrangxxbecktodytrngcakkhlasniid micudmunghmayephuxprakassmachikrwmbangswnkhxngkhlasyxyaetyngimniyamraylaexiydkarthangan plxyihepnhnathikhxngkhlasyxythicaniyamwithikarthanganaetktangkniptamkhwammunghmayphiesskhxngaetlakhlasyxyInterface khuxkhxtklngwakhlasthimixinetxrefschnidnn samarththangantamkhxtklngthiniyamiwinxinetxrefsidlksnakhxngkhlasthidi aekikhsxnkhxmulaelakhunsmbtiswntwkhxngkhlasodytngkhaihepn private olkphaynxksamarthekhathungkhxmulehlaniphanthangfngkchnphiessthicamikartrwcsxbkhwamthuktxngkhxngkhxmul tngkhaerimtnkhxngkhxmulaelakhunsmbtikhxngkhlasesmx xxbecktcaxyuinsthanathiphrxmthukichnganthnthi aetkkhlasthimipharamak responsibilities xxkepnswnyxy aelaaebngkhwamrbphidchxbthiechphaaecaacngihkbkhlaselk ehlann khlasthiihyekinipaelathanganhlayxyangcayaktxkarbarungrksaaelaaekikh tngchuxsmachikihsmphnthkbhnathikhxngmnephuxbngbxkcudmunghmaythiaenchd cathaihngaytxkaraekikhopraekrmtxiptwxyang aekikhphasasicharp aekikh public class Example static void Main System Console WriteLine Hello world phasacawa aekikh public class Account private String accountName private String accountNumber private double balance public void deposit double amount balance balance amount public void withdraw double amount balance balance amount public String getAccountName return accountName public void setAccountName String name accountName name public String getAccountNumber return accountNumber public void setAccountNumber String number accountNumber number public double getBalance return balance public void setBalance double amount balance amount ekhathungcak https th wikipedia org w index php title khlas khxmphiwetxr amp oldid 6294012, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม