วิธีการใช้ Data Abstraction ใน Java?

เผยแพร่แล้ว: 2022-05-17

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

สารบัญ

นามธรรมข้อมูลคืออะไร?

การแยกข้อมูลเป็นคุณลักษณะเฉพาะที่แสดงให้ผู้ใช้เห็นรายละเอียดที่สำคัญที่สุดเท่านั้น ผู้ใช้จะไม่รับรู้ถึงรายละเอียดที่ไม่สำคัญหรือไม่จำเป็น ตัวอย่างเช่น รถยนต์ถือเป็นส่วนรวมมากกว่าชิ้นส่วนที่แตกต่างกัน การปฏิบัติในการระบุเฉพาะคุณลักษณะที่จำเป็นของรายการในขณะที่ละทิ้งข้อมูลภายนอกนั้นเรียกว่า data abstraction

ในแง่ง่ายๆ data abstraction จะแสดงรายการที่สำคัญให้กับผู้ใช้ในขณะที่ซ่อนองค์ประกอบที่ไม่มีนัยสำคัญไว้

เราใช้คำหลัก "นามธรรม" เพื่อนำสิ่งที่เป็นนามธรรมไปใช้ด้วยความช่วยเหลือของคลาสและอินเทอร์เฟซ เราสามารถมีทั้งวิธีนามธรรมและรูปธรรมในชั้นเรียนนามธรรม

คลาสนามธรรมคืออะไร?

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

ไวยากรณ์ของมันคือ:

คลาสนามธรรมสาธารณะ Name_of_Class

{

บทคัดย่อสาธารณะ Name_of_Method();

}

ตัวอย่างของการนำคลาสนามธรรมไปใช้คือ:

//การตั้งชื่อคลาสนามธรรม

คลาสนามธรรม DemoClass

{

//การตั้งชื่อเมธอดนามธรรม

นามธรรมโมฆะ disp ();

}

//ดำเนินการกับคลาสนามธรรม

คลาสสาธารณะ MainClass ขยาย DemoClass

{

//กำหนดเมธอดของคลาสนามธรรม

การแสดงเป็นโมฆะ ()

{

System.out.println("วิธีนามธรรมที่เรียกว่า.");

}

โมฆะคงที่สาธารณะ main(String[] args)

{

MainClass obj = MainClass ใหม่ ();

//เรียกวิธีนามธรรม

obj.display();

}

}

ในการแสดงรายการตามจุด:

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

วิธีการเชิงนามธรรมคืออะไร?

วิธีนามธรรมมีเพียงการประกาศวิธีการและไม่มีการนำไปใช้ วิธีการที่เป็นนามธรรมสามารถแสดงได้โดยวิธีการที่ไม่มีเนื้อความของตัวเอง ต้องประกาศวิธีการนามธรรมเฉพาะในคลาสนามธรรมเท่านั้น

หากคุณต้องการให้คลาสมีเมธอด แต่การใช้งานจริงของเมธอดนั้นถูกกำหนดโดยคลาสย่อย ให้กำหนดเมธอดเป็นนามธรรมในคลาสพาเรนต์

ข้อดีของ Data Abstraction ในการเขียนโปรแกรมเชิงวัตถุ

  • ในการเขียนโปรแกรมเชิงวัตถุ นามธรรมช่วยลดความซับซ้อนของการออกแบบโปรแกรมและกระบวนการของการใช้งานซอฟต์แวร์
  • ข้อได้เปรียบที่สำคัญที่สุดของการนำ abstraction ไปใช้ในการเขียนโปรแกรม Java คือผู้ใช้สามารถจัดระเบียบคลาสตามความคล้ายคลึงกันได้อย่างง่ายดาย เช่น พี่น้อง ดังนั้นการสืบทอดข้อมูลและการย้ายข้อมูลจึงกลายเป็นเรื่องง่ายและเป็นไปได้
  • มรดกเป็นไปได้ ตัวอย่างเช่น:

/* ชื่อไฟล์ : DemoAbstract.java */

DemoAbstract คลาสสาธารณะ {

โมฆะคงที่สาธารณะหลัก (สตริง [] args) {

/* ไม่สามารถเขียนสิ่งต่อไปนี้และเริ่มข้อผิดพลาดได้ */

พนักงาน e = พนักงานใหม่ (“Peter D.”, “Hartford, CT”, 35);

System.out.println(“\n ใช้การอ้างอิงพนักงานและโทร MailCheck–“);

e.mailCheck();

}

}

นี่แสดงข้อผิดพลาดต่อไปนี้:

Employee.java:46: พนักงานเป็นนามธรรม ไม่สามารถยกตัวอย่างได้

พนักงาน e = พนักงานใหม่ (“Peter D.”, “Hartford, CT”, 35);

^

1 ข้อผิดพลาด

ดังนั้นเราจึงใช้คลาสนามธรรมเป็น:

/* ชื่อไฟล์ : employee.java */

พนักงานระดับนามธรรมสาธารณะ {

สตริงส่วนตัว N;

เพิ่มสตริงส่วนตัว;

จำนวน int ส่วนตัว;

พนักงานสาธารณะ (String N, String Add, int Num) {

System.out.println("การสร้างพนักงาน");

this.name = N;

this.address = เพิ่ม;

this.number = จำนวน;

}

compute_pay สาธารณะคู่ () {

System.out.println("ภายในพนักงาน compute_pay");

ผลตอบแทน 0.0;

}

Mailcheck เป็นโมฆะสาธารณะ () {

System.out.println(“ส่งเช็คไปที่ ” + this.name + ” ” + this.address);

}

สตริงสาธารณะ toString () {

ส่งคืน N + ” ” + เพิ่ม + ” ” + N;

}

สตริงสาธารณะ getName() {

กลับ N;

}

สตริงสาธารณะ getAddress () {

กลับ เพิ่ม;

}

โมฆะสาธารณะ setAddress (String newAddress) {

เพิ่ม = ที่อยู่ใหม่;

}

int สาธารณะ getNumber() {

ส่งคืนจำนวน;

}

}

เราจะใช้คลาสนามธรรมหรือวิธีนามธรรมเมื่อใด

เมื่อเราพิจารณาตัวอย่างทั่วไปของ "รูปร่าง" เราอาจจินตนาการว่ามันถูกใช้โดยอ้างอิงถึงระบบการออกแบบโดยใช้คอมพิวเตอร์ช่วยหรือสำหรับการจำลองวิดีโอเกม ประเภทพื้นฐานที่อ้างถึงในที่นี้คือ "รูปร่าง" โดยทุกรูปร่างมีลักษณะสี ขนาด ฯลฯ เฉพาะ คลาสเฉพาะของรูปร่าง - วงกลม สี่เหลี่ยม สามเหลี่ยม ฯลฯ ได้มา (สืบทอด) จากสิ่งนี้ ซึ่งแต่ละประเภท อาจมีคุณสมบัติและพฤติกรรมพิเศษเฉพาะตัว ตัวอย่างเช่น รูปร่างบางอย่างสามารถสมมาตรได้ ในขณะที่รูปร่างอื่นๆ ไม่สมมาตร ทั้งความคล้ายคลึงและความแตกต่างที่ชัดเจนระหว่างรูปร่างนั้นรวมอยู่ในลำดับชั้นของประเภท

ดังนั้น รูปร่างสามารถเปรียบได้กับคลาสนามธรรม ในขณะที่รูปร่างประเภทต่าง ๆ สามารถแสดงเป็นคลาสที่เป็นรูปธรรมได้

นี่คือสถานการณ์จริงเพื่ออธิบายคลาสนามธรรม:

// โปรแกรม Java เพื่อสาธิต Abstraction

รูปร่างคลาสนามธรรม {

สีสตริง;

พื้นที่คู่นามธรรม ();

นามธรรมสาธารณะ String toString();

// คลาสนามธรรมสามารถมีตัวสร้างได้

รูปร่างสาธารณะ (สีสตริง)

{

System.out.println("ตัวสร้างรูปร่างที่เรียกว่า");

this.color = สี;

}

// นี่คือวิธีที่เป็นรูปธรรม

สตริงสาธารณะ getColour () { return color; }

}

คลาส Circle ขยายรูปร่าง {

ดับเบิ้ลอาร์;

วงกลมสาธารณะ (สีสตริง ดับเบิล (r)

{

// เรียกตัวสร้างรูปร่าง

ซุปเปอร์(สี);

System.out.println("ตัวสร้างวงกลมถูกเรียก");

this.r = r;

}

@แทนที่พื้นที่สองเท่า ()

{

ส่งคืน Math.PI * Math.pow(r, 2);

}

@Override สตริงสาธารณะ toString()

{

ส่งคืน “สีวงกลมคือ ” + super.getColor()

+ “และพื้นที่คือ : ” + พื้นที่ ();

}

}

คลาสสี่เหลี่ยมผืนผ้าขยายรูปร่าง {

ความยาวสองเท่า;

ความกว้างสองเท่า

สี่เหลี่ยมผืนผ้าสาธารณะ (สีสตริง, ความยาวสองเท่า,

ความกว้างสองเท่า)

{

// เรียกตัวสร้างรูปร่าง

ซุปเปอร์(สี);

System.out.println("ตัวสร้างสี่เหลี่ยมผืนผ้าเรียกว่า");

this.length = ความยาว;

this.width = ความกว้าง;

}

@ แทนที่พื้นที่สองเท่า () { ความยาวกลับ * ความกว้าง; }

@Override สตริงสาธารณะ toString()

{

ส่งคืน “สีสี่เหลี่ยมผืนผ้าคือ ” + super.getcolor()

+ “และพื้นที่คือ : ” + พื้นที่ ();

}

}

การทดสอบระดับสาธารณะ {

โมฆะคงที่สาธารณะ main(String[] args)

{

รูปร่าง s1 = วงกลมใหม่("สีแดง", 2.2);

รูปร่าง s2 = ใหม่ สี่เหลี่ยมผืนผ้า("สีเหลือง", 2, 4);

System.out.println(s1.toString());

System.out.println(s2.toString());

}

}

โค้ดส่วนนี้เป็นเวอร์ชันที่แก้ไขแล้วของโค้ด ที่ นี่

ข้อมูลโค้ดของโปรแกรมที่ใช้ data abstraction ใน Java:

// นามธรรมใน Java

คลาสนามธรรม ElecBill

{

//วิธีนามธรรม

นามธรรมลอย compBill ();

}

คลาส Comm ขยาย ElecBill

{

float compBill() {

กลับ 1.00*100;

}

}

คลาส ในประเทศ ขยาย ElecBill

{

float compBill() {

ผลตอบแทน 0.50*75;

}

}

บทสรุป

การแยกข้อมูลเป็นส่วนสำคัญของการเขียนโปรแกรมเชิงวัตถุ สำหรับภาษาต่างๆ เช่น Java, abstraction และแนวคิด OOP อื่นๆ เช่น การสืบทอด การห่อหุ้ม และพหุสัณฐาน มีบทบาทสำคัญในการเขียนโปรแกรมที่มีประสิทธิภาพ

หากคุณต้องการเรียนรู้ OOP ในเชิงลึกและรับทักษะการเขียนโปรแกรมชั้นหนึ่ง เราขอแนะนำให้เข้าร่วม การรับรอง PG ที่เชื่อมโยงกับงานของ upGrad ในวิศวกรรมซอฟต์แวร์ ซึ่งออกแบบมาเพื่อช่วยให้นักเรียนได้รับทักษะใน Java, OODAP, DSA, HTML5, CSS3 , JavaScript, MERN, AWS, SQL & NoSQL Databases, Spring Boot และอื่นๆ หลักสูตร 5 เดือนครอบคลุมความเชี่ยวชาญพิเศษสองอย่าง – MERN Stack Specialization และ Cloud-Native Specialization และให้การเข้าถึงเซสชันการให้คำปรึกษาด้านอาชีพ upGrad 360°

เรียนรู้ หลักสูตรการพัฒนาซอฟต์แวร์ ออนไลน์จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม Executive PG โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

ความหลากหลายคืออะไร? แตกต่างจาก data abstraction อย่างไร?

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

Encapsulation และ Data Abstraction แตกต่างกันอย่างไร

ENCAPSULATION - 1. การห่อหุ้มซ่อนข้อมูล (ข้อมูล) ในขณะที่สิ่งที่เป็นนามธรรมซ่อนรายละเอียด (การซ่อนการใช้งาน) 2. Object-Oriented Programming ที่เป็นนามธรรมแก้ปัญหาในระดับการออกแบบ 3. เพื่อความปลอดภัย การห่อหุ้มหมายถึงการซ่อนข้อมูลภายในหรือกลไกการทำงานของวัตถุ บทคัดย่อ - 1. ในขณะที่การห่อหุ้มจะเชื่อมโยงข้อมูลและวิธีการที่ดำเนินการกับข้อมูลนั้น การแยกข้อมูลเกี่ยวข้องกับการเปิดเผยส่วนต่อประสานผู้ใช้ในขณะที่ปิดบังรายละเอียดการใช้งาน 2. ได้รับการแก้ไขในระดับการใช้งานผ่านการห่อหุ้ม 3. ใน Java data abstraction ช่วยให้คุณมีสมาธิกับสิ่งที่อ็อบเจ็กต์ข้อมูลต้องมี

อะไรคือคุณสมบัติที่แตกต่างระหว่างอินเทอร์เฟซและคลาสนามธรรม?

อินเทอร์เฟซ - 1. เฉพาะวิธีการที่เป็นนามธรรมเท่านั้นที่พบว่าตัวเองเป็นส่วนหนึ่งของอินเทอร์เฟซ 2. รองรับการสืบทอดหลายรายการ 3. ไม่สามารถนำเสนอการใช้งานคลาสนามธรรมได้ 4. อนุญาตเฉพาะวิธีการนามธรรมสาธารณะในอินเทอร์เฟซ 5. สามารถใช้ตัวแปรสุดท้ายแบบสแตติกสาธารณะได้เพียงตัวเดียวในอินเทอร์เฟซ คลาสนามธรรม - 1. นามธรรม เช่นเดียวกับวิธีการที่ไม่ใช่นามธรรม สามารถพบได้ในคลาสนามธรรม 2. ไม่รองรับการสืบทอดหลายรายการ 3. สามารถใช้อินเทอร์เฟซได้ 4. วิธีการสาธารณะที่มีการป้องกันและเป็นนามธรรมเป็นไปได้ในคลาสนามธรรม 5. ด้วยตัวระบุการเข้าถึงใดๆ คลาสนามธรรมสามารถมีตัวแปรสุดท้ายขั้นสุดท้าย แบบคงที่ หรือแบบคงที่ได้