วัตถุที่มุ่งเน้นคืออะไร?
วัตถุวัตถุ, oriendted ... มุ่งเน้นการเขียนโปรแกรมการเขียนโปรแกรม
วิธีการเชิงวัตถุโดยใช้วัตถุสำหรับการเขียนโปรแกรมย่อเป็น OOP
การเปรียบเทียบระหว่าง SP และ OOP
สามหลักการสำคัญของการห่อหุ้มวัตถุและการสืบทอดความหลากหลาย
วัตถุ
วัตถุเป็นส่วนสำคัญของการเขียนโปรแกรมเชิงวัตถุพวกเขาเป็นหน่วยงานเฉพาะที่แท้จริงที่มีสถานะและพฤติกรรมที่กำหนดไว้อย่างชัดเจน
วัตถุเป็น encapsulations ของ "ข้อมูล" และ "ฟังก์ชั่น" ซึ่ง:
ข้อมูลแสดงถึงสถานะของตัวเองหรือที่เรียกว่า "แอตทริบิวต์" หรือ "ข้อมูลสมาชิก";
ฟังก์ชั่นแสดงถึงฟังก์ชั่นของตัวเองหรือที่เรียกว่า "วิธีการ" หรือ "ฟังก์ชั่นสมาชิก"
ใจดี
เพื่อให้เข้าใจโลกได้ดีขึ้นผู้คนจะแบ่งสิ่งต่าง ๆ (วัตถุ) ในชีวิตจริงออกเป็นหมวดหมู่
สิ่งต่าง ๆ ในหมวดหมู่เดียวกันมักจะมีความสามัคคีอยู่เสมอ
ชั้นเรียนกำหนดเอนทิตีที่มีลักษณะทั่วไปและพฤติกรรม
คลาสคือชุดของกลุ่มวัตถุที่มีคุณสมบัติและพฤติกรรมเดียวกัน
คุณสมบัติ
ลักษณะของสิ่งต่าง ๆ แสดงโดยตัวแปรในชั้นเรียน
แต่ละคุณสมบัติของแต่ละวัตถุมีค่าเฉพาะ
ชื่อแอตทริบิวต์ถูกแชร์โดยวัตถุทั้งหมดของคลาส
คุณสมบัติที่เป็นเจ้าของโดยวัตถุหรือเอนทิตีเรียกว่าแอตทริบิวต์เมื่อแสดงในชั้นเรียน
วิธี
พฤติกรรมและการกระทำของสิ่งต่าง ๆ ถูกแสดงโดยฟังก์ชั่นในชั้นเรียน
แต่ละวัตถุมีการกระทำและพฤติกรรมเดียวกัน
การกระทำที่ดำเนินการโดยวัตถุจะแสดงเป็นวิธีการในชั้นเรียน
ความแตกต่างระหว่างคลาสและวัตถุ
ชั้นเรียนคือ "แม่แบบ" หรือ "ต้นแบบ" ที่ใช้อธิบายเอนทิตี
วัตถุเป็นเอนทิตีจริงและแต่ละวัตถุเป็นอินสแตนซ์ที่เป็นรูปธรรมของคลาส
คลาสถูกใช้เพื่อกำหนดคุณสมบัติและวิธีการทั้งหมดของวัตถุและวัตถุทั้งหมดของคลาสเดียวกันมีลักษณะและการดำเนินงานเดียวกัน
ชั้นเรียนสามารถเข้าใจได้ว่าเป็นแม่พิมพ์ที่ผลิตผลิตภัณฑ์และวัตถุเป็นผลิตภัณฑ์ที่ผลิตตามแม่พิมพ์นี้
ชั้นเรียนและโครงสร้าง
บรรจุุภัณฑ์
บรรจุบางสิ่งบางอย่างเข้าด้วยกันและนำเสนอในรูปแบบใหม่และสมบูรณ์
วิธีจัดการกับคุณลักษณะวิธีการหรือรายละเอียดการใช้งานที่ซ่อนอยู่เรียกว่าการห่อหุ้ม
การห่อหุ้มเป็นการเลือกหรือซ่อนข้อมูลบางอย่างซึ่งแก้ปัญหาความปลอดภัยของข้อมูล
สืบทอด
การสืบทอดเป็นคุณสมบัติของการนำคลาสที่มีอยู่มาใช้ใหม่เพื่อสร้างคลาสใหม่
ในแง่ของคนธรรมดามันเป็นกระบวนการในการสร้างคลาสใหม่ (คลาสย่อยหรือคลาสที่ได้รับ) จากคลาสที่มีอยู่ (เช่นคลาสแม่หรือคลาสฐาน);
ในชีวิตจริงการสืบทอดสามารถบรรลุวัตถุประสงค์ของการใช้ทรัพย์สินซ้ำในขณะที่อยู่ใน Java การสืบทอดสามารถนำรหัสกลับมาใช้ใหม่ได้
เกี่ยวกับความหลากหลาย
Polymorphism หมายถึงการใช้งานที่แตกต่างกันของฟังก์ชั่นเดียวกันในคลาสที่แตกต่างกัน
ข้อได้เปรียบของ polymorphism คือทำให้ชั้นเรียนมีความยืดหยุ่นและขยายง่ายขึ้น
นอกจากนี้ยังมี "นามธรรม" ที่ฉันต้องพูดถึงที่นี่
เชิงนามธรรม
กระบวนการของการจำแนกวัตถุเดียวกันหรือคล้ายกันในหมวดหมู่เดียวกันคือนามธรรมดังนั้นนามธรรมจึงเป็นวิธีการวิเคราะห์ปัญหา
หลักการพื้นฐานของสิ่งที่เป็นนามธรรม:
ใส่ใจเฉพาะเรื่องหลักไม่ใช่ปัญหารอง
เพียงแค่ใส่ใจเกี่ยวกับความขัดแย้งหลักไม่ใช่ความขัดแย้งที่สอง
แค่ใส่ใจในสิ่งเดียวกันไม่ใช่สิ่งที่แตกต่าง
เพียงแค่สนใจว่าปัญหาคืออะไรและสามารถทำได้ แต่ไม่ใช่วิธีการทำสำเร็จ
กระบวนการนามธรรมเป็นแนวคิดหลักของการเขียนโปรแกรมเชิงวัตถุ
กำหนดชั้นเรียนใน Java
สร้างวัตถุใน Java
ไวยากรณ์สำหรับการสร้างวัตถุ
คล้ายกับอาร์เรย์วัตถุยังอ้างถึงชนิดข้อมูลและสามารถจัดสรรหน่วยความจำจากกองโดยใช้ตัวดำเนินการใหม่เท่านั้น
ไวยากรณ์ทั่วไปสำหรับการสร้างวัตถุ:
ชื่ออ้างอิงชื่อคลาส = ชื่อคลาสใหม่ ();
การใช้คลาสที่กำหนดไว้แล้วกระบวนการสร้างวัตถุในคลาสนั้นเรียกว่า "อินสแตนซ์"
ผู้ประกอบการสมาชิก "."
โดยการสร้างอินสแตนซ์วัตถุของชั้นเรียนแรกสามารถเข้าถึงสมาชิก (คุณสมบัติและวิธีการ) ในชั้นเรียน;
ใช้ผู้ให้บริการสมาชิก (.) เพื่อเข้าถึงคุณสมบัติของสมาชิกหรือวิธีการสมาชิก
ไวยากรณ์ทั่วไปคือ:
ชื่อวัตถุ ชื่อสมาชิกเช่น:
std.age = 18; // กำหนดค่าให้กับแอตทริบิวต์สมาชิก std.dining (); // วิธีการโทรสมาชิก
สิทธิ์การเข้าถึง: สาธารณะและส่วนตัว
สมาชิกของโครงสร้างในภาษา C สามารถเข้าถึงได้จากทุกที่ซึ่งจะทำให้อันตรายที่ซ่อนอยู่อย่างมากต่อความปลอดภัยของข้อมูล
เพื่อหลีกเลี่ยงการทุจริตข้อมูลที่เกิดจากการเข้าถึงสมาชิกชั้นเรียนโดยตรงจากนอกชั้นเรียน Java กำหนดข้อ จำกัด ในการเข้าถึงสมาชิกชั้นเรียน
คำหลักของรัฐและเอกชนเป็นตัวดัดแปลงการเข้าถึงเพื่อระบุว่าสมาชิกสามารถเข้าถึงได้จากนอกชั้นเรียนหรือไม่
สมาชิกของการดัดแปลงสาธารณะสามารถเข้าถึงได้ทุกที่โดยไม่มีข้อ จำกัด ใด ๆ
สมาชิกที่แก้ไขโดยส่วนตัวสามารถเข้าถึงได้โดยสมาชิกคนอื่น ๆ ในชั้นเรียนนี้และไม่สามารถเข้าถึงได้จากนอกชั้นเรียน
ไม่สามารถเข้าถึงสมาชิกส่วนตัวจากนอกชั้นเรียนได้
สมาชิกส่วนตัวของชั้นเรียนอื่น ๆ ก็ถูกซ่อนไว้จากชั้นเรียนปัจจุบัน
ตัวอย่างการเข้าถึง
นักเรียนชั้นเรียน {ชื่อสตริงส่วนตัว; // ชื่อ, ส่วนตัว, ส่วนตัว, ส่วนตัว, ส่วนตัว, ส่วนตัว, ส่วนตัว, ส่วนตัว, ส่วนตัว, ส่วนตัว, ส่วนตัว, ส่วนตัว, ส่วนตัว, เข้าถึงโดยตรงจากนอกชั้นเรียน; // น้ำหนัก, ส่วนตัว, เข้าถึงโดยตรงจากนอกชั้นเรียน // วิธีการรับประทาน, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ, สาธารณะ วิธีการเป็นสมาชิกภายในของชั้นเรียนและคุณสามารถเข้าถึงสมาชิกส่วนตัวของชั้นเรียนนี้ได้โดยตรง}} การทดสอบคลาสสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {นักเรียน std = นักเรียนใหม่ (); // อินสแตนซ์วัตถุนักเรียน std.age = 18; // พยายามเข้าถึงสมาชิกส่วนตัวจากนอกชั้นเรียนจะมีการรายงานข้อผิดพลาด std.dining (); // ยอมรับการเข้าถึงสมาชิกสาธารณะ}}
สิทธิ์การเข้าถึง (ต่อ)
การเพิ่มตัวดัดแปลงการเข้าถึงบางครั้งอาจทำให้เกิดความไม่สะดวกในการใช้งานข้อมูล แต่สามารถมั่นใจได้ถึงความปลอดภัยของข้อมูลในระดับใหญ่
โดยทั่วไปเราประกาศคุณลักษณะของสมาชิกว่าเป็นวิธีการส่วนตัวและสมาชิกในฐานะสาธารณะ แต่การทำเช่นนั้นไม่สมบูรณ์
บางครั้งสมาชิกข้อมูลส่วนตัวบางคนอาจต้องดำเนินการนอกชั้นเรียนดังนั้นวิธีการสาธารณะสามารถเพิ่มได้และวิธีนี้สามารถใช้ในการใช้งานข้อมูลส่วนตัวเพื่อหลีกเลี่ยงการทุจริตข้อมูลที่เกิดจากการเข้าใจผิดนอกชั้นเรียน
เนื่องจากวิธีการหลักจะต้องเรียกโดยเครื่องเสมือนนอกชั้นเรียนวิธีหลักจะต้องประกาศสาธารณะ
ตัวอย่างเช่น: แก้ไขชั้นเรียนของนักเรียน
นักเรียนชั้นเรียน {// กำหนดชื่อสตริงส่วนตัวของนักเรียนชั้นเรียน; // ชื่ออายุ int ส่วนตัวส่วนตัว; // อายุน้ำหนักลอยตัวส่วนตัว // น้ำหนักโมฆะสาธารณะส่วนตัว setName (ชื่อสตริง) {// เมธอดสำหรับการกำหนดค่าให้กับชื่อ, public.name = name; } การตั้งค่าโมฆะสาธารณะ (int a) {// วิธีการกำหนดค่าให้กับอายุ, อายุสาธารณะ = a; } โมฆะสาธารณะ setweight (float w) {// วิธีการสำหรับการกำหนดค่าให้กับน้ำหนักน้ำหนักสาธารณะ = w; } การแสดงโมฆะสาธารณะ () {// วิธีการพิมพ์ข้อมูลทั้งหมดเป็นของสาธารณะเป็นเจ้าของระบบ. out.println ("ชื่อ:" + ชื่อ + ", อายุ:" + อายุ + ", น้ำหนัก:" + น้ำหนัก); } การรับประทานอาหารโมฆะสาธารณะ () {... } // วิธีการกินสาธารณะรหัสโมฆะสาธารณะเล็กน้อย () {... } // วิธีการเดินสาธารณะรหัสเล็กน้อย} การทดสอบชั้นเรียนสาธารณะ // อินสแตนซ์วัตถุชั้นเรียนนักเรียน std.setName ("จางซาน"); // กำหนดชื่อ std.setage (18); // กำหนด std.setweight (55); // กำหนด std.dining () ถึงน้ำหนัก; // เรียกวิธีการกิน std.display (); // พิมพ์ข้อมูล}} การเริ่มต้นวัตถุ
ในตัวอย่างข้างต้นคุณสามารถกำหนดค่าให้กับสมาชิกข้อมูลได้ทีละคนเท่านั้น หากคุณต้องการเริ่มต้นแอตทริบิวต์สมาชิกในขณะที่สร้างอินสแตนซ์วัตถุคุณใช้วิธีการก่อสร้าง
ตัวสร้างเป็นวิธีการสมาชิกพิเศษซึ่งมีชื่อเดียวกันกับคลาสและถูกเรียกโดยอัตโนมัติโดยเครื่องเสมือนจริงเมื่อวัตถุถูกสร้างอินสแตนซ์
โปรดทราบ: คอนสตรัคเตอร์ไม่มีประเภทค่าส่งคืนและไม่สามารถมีค่าคืนได้
ตัวอย่างของวิธีการก่อสร้าง:
/ *กำหนดคลาส constructordemo และทดสอบวิธีตัวสร้าง */ คลาส constructordemo {/ *constructor ชื่อเมธอดนั้นเหมือนกับชื่อคลาสไม่จำเป็นต้องระบุประเภทค่าคืนและไม่มีค่าส่งคืน */ public constructordemo () }} /*คลาสทดสอบใช้เพื่อรองรับวิธีการหลักโดยทั่วไปประกาศคลาสที่มีวิธีการหลักเป็นสาธารณะ* / การทดสอบระดับสาธารณะ { /*วิธีการหลักรายการโปรแกรม* / โมฆะสาธารณะคงที่ (สตริง [] args) { /*อินสแตนซ์วัตถุของ constructordemo คลาส* }} // มันจะส่งออก "นี่คือวิธีการสร้าง" วิธีการก่อสร้าง
มันเป็นเพราะวิธีตัวสร้างจะถูกเรียกโดยอัตโนมัติในขณะที่อินสแตนซ์วัตถุดังนั้นวิธีการสร้างโดยทั่วไปจะใช้ในการจัดสรรทรัพยากรให้กับสมาชิกข้อมูลหรือเริ่มต้นสมาชิกข้อมูล
รูปแบบทั่วไปของวิธีการก่อสร้าง:
ชื่อคลาสสิทธิ์การเข้าถึง (รายการพารามิเตอร์อย่างเป็นทางการ) {
วิธีการ
-
เนื่องจากตัวสร้างถูกเรียกโดยเครื่องเสมือนจริงตัวสร้างควรถูกกำหนดให้เป็นสาธารณะ
ตัวอย่างเช่น: เพิ่มตัวสร้างให้กับชั้นเรียนนักเรียน
นักเรียนชั้นเรียน {// กำหนดชื่อสตริงส่วนตัวของนักเรียนชั้นเรียน; // ชื่ออายุ int ส่วนตัวส่วนตัว; // อายุน้ำหนักลอยตัวส่วนตัว // weight, private // วิธีการก่อสร้าง, กำหนดค่าให้กับสมาชิกข้อมูลตามพารามิเตอร์ที่ผ่านการผ่านพารามิเตอร์นักเรียนสาธารณะ (String n, int a, float w) {// กำหนดค่าเริ่มต้นให้กับชื่อสมาชิกแต่ละชื่อ = n; อายุ = A; น้ำหนัก = W; } โมฆะสาธารณะ setName (String n) {... } // กำหนดค่าให้กับชื่อ, สาธารณะ, รหัสการตั้งค่าโมฆะสาธารณะเล็กน้อย (int a) {... } // กำหนดค่าให้กับอายุ, สาธารณะ, รหัสโมฆะสาธารณะเล็กน้อย (ลอยน้ำ w) {…} // วิธีการพิมพ์สาธารณะ // วิธีการกิน, สาธารณะ, รหัสสาธารณะเล็กน้อย Walk () {…} // วิธีการเดิน, สาธารณะ, รหัสการเดินโมฆะสาธารณะเล็กน้อย () {…} // วิธีการเดิน, สาธารณะ, รหัสการทดสอบระดับสาธารณะเล็กน้อย std.display (); // พิมพ์ข้อมูล}}
วิธีการสร้าง (ต่อ)
แต่ละวัตถุจะต้องดำเนินการคอนสตรัคเตอร์เมื่อสร้างขึ้นและสามารถดำเนินการได้เพียงครั้งเดียวเท่านั้น
หากการเรียกใช้เมธอดตัวสร้างล้มเหลววัตถุจะไม่สามารถสร้างได้
ตัวสร้างไม่สามารถเรียกได้โดยตรงอย่างชัดเจน
หากไม่มีตัวสร้างที่กำหนดคลาสจะสร้างตัวสร้างเริ่มต้นโดยอัตโนมัติโดยไม่มีพารามิเตอร์ซึ่งไม่ได้ทำอะไรเลย
เมื่อตัวสร้างถูกกำหนดไว้อย่างชัดเจนคอนสตรัคเตอร์เริ่มต้นจะหายไปโดยอัตโนมัติ ดังนั้นโดยทั่วไปจะมีการกำหนดวิธีการก่อสร้างสองวิธี: ไม่มีพารามิเตอร์และไม่มีพารามิเตอร์
สรุป