"สวัสดี Amigo วันนี้ฉันจะบอกคุณเกี่ยวกับโปรแกรม Java ทั่วไป ข่าวใหญ่คือทุกโปรแกรมที่เขียนด้วย Java ประกอบด้วยคลาสและวัตถุ"
"ฉันรู้แล้วว่าคลาสคืออะไร วัตถุคืออะไร"
"เรามาเริ่มด้วยการเปรียบเทียบกัน สมมติว่าคุณต้องการต่อเรือลำเล็กๆ คุณทำงานออกแบบแล้วส่งพิมพ์เขียวไปที่โรงงาน ซึ่งเรือจะถูกประกอบตามการออกแบบของคุณ หรือเป็นโหลๆ หรือเป็นหลายๆ ลำ ตามที่คุณต้องการ ประเด็นของฉันคือสามารถสร้างเรือที่เหมือนกันได้หลายสิบลำจากพิมพ์เขียวเดียว"
"นั่นคือวิธีการทำงานกับ Java"
" โปรแกรมเมอร์ Java ก็เหมือนกับวิศวกรออกแบบ แทนที่จะสร้างพิมพ์เขียว พวกเขาเขียนคลาส ส่วนเรือถูกสร้างขึ้นตามพิมพ์เขียว ในขณะที่วัตถุถูกสร้างขึ้นตามคลาส "
"อย่างแรก เราเขียนคลาส (สร้างพิมพ์เขียว) จากนั้นเมื่อโปรแกรมทำงาน เครื่อง Java จะสร้างอ็อบเจกต์ตามคลาสเหล่านี้ มันเหมือนกับวิธีการสร้างเรือจากพิมพ์เขียว พิมพ์เขียวเดียว – หลายลำ เรือต่างกัน พวกมันมีชื่อต่างกันและบรรทุกของต่างกันแต่พวกมันก็ยังคล้ายกันพวกมันทั้งหมดมีการออกแบบที่เหมือนกันและสามารถทำงานที่คล้ายกันได้”
"ตกลง ฉันเข้าใจการเปรียบเทียบเรือของคุณ คุณช่วยบอกฉันอีกสองสามข้อเพื่อให้แน่ใจว่าฉันเข้าใจสิ่งที่คุณพูดได้ไหม"
"ยกตัวอย่างเช่นผึ้ง ... "
"ไม่ เกานั่นสิ ฉันมีประสบการณ์แย่ๆ กับผึ้ง มาจับมดกันเถอะ"
"ฝูงมดเป็นตัวอย่างที่ดีของการโต้ตอบของวัตถุ ฝูงมดใดๆ ประกอบด้วยสามประเภท ได้แก่ มดราชินี มดทหาร และมดงาน จำนวนมดในแต่ละคลาสจะแตกต่างกันไป โดยปกติแล้ว ฝูงมดจะมีราชินีเพียงหนึ่งตัวและทหารอีกหลายสิบตัว และคนงานหลายร้อยคน สามคลาส วัตถุนับร้อย มดปฏิบัติตามกฎที่เข้มงวดเมื่อพวกมันมีปฏิสัมพันธ์กับมดในคลาสของตัวเองและมดที่อยู่ในคลาสอื่น"
"นี่คือตัวอย่างที่สมบูรณ์แบบ โปรแกรมทั่วไปทำงานแบบนั้น มีวัตถุหลักที่สร้างวัตถุในทุกคลาส วัตถุมีปฏิสัมพันธ์ระหว่างกันและกับโลกภายนอก พฤติกรรมของวัตถุเป็นแบบเดินสาย (ตั้งโปรแกรม) ภายใน "
“ฉันไม่ค่อยเข้าใจ ฉันหมายความว่า ฉันไม่เข้าใจเลย”
"คำอธิบายทั้งสองนี้เป็นสองด้านของเหรียญเดียวกัน ความจริงอยู่ระหว่างนั้น ตัวอย่างแรก (เกี่ยวกับพิมพ์เขียวและเรือ) แสดงให้เราเห็นถึงความเชื่อมโยงระหว่างคลาสกับวัตถุ มันเป็นการเปรียบเทียบที่ทรงพลัง การเปรียบเทียบฝูงมดแสดงให้เห็นถึง ความสัมพันธ์ระหว่างวัตถุซึ่งอธิบายโดยคลาสและมีอยู่ในขณะที่โปรแกรมกำลังทำงานเท่านั้น"
"คุณหมายความว่าเราต้องเขียนคลาสสำหรับออบเจกต์ทั้งหมดที่ใช้ในโปรแกรม จากนั้นจึงอธิบายการโต้ตอบของออบเจกต์เหล่านั้น"
"ใช่ แต่มันง่ายกว่าที่คิด ใน Java ในขณะที่โปรแกรมกำลังทำงาน เอนทิตีทั้งหมดเป็นวัตถุ การเขียนโปรแกรมเท่ากับการอธิบายวิธีต่างๆ ที่วัตถุสามารถโต้ตอบได้ วัตถุเพียงเรียกวิธีการของกันและกันและส่งข้อมูลที่จำเป็น ถึงพวกเขา."
"มันคลุมเครือเล็กน้อย แต่ฉันคิดว่าฉันเกือบจะเข้าใจแล้ว"
"เราจะรู้ได้อย่างไรว่าจะเรียกด้วยวิธีใดและข้อมูลใดที่จะส่งผ่าน"
"แต่ละคลาสมีการประกาศซึ่งระบุจุดประสงค์การใช้งาน ในทำนองเดียวกัน ทุกเมธอดมีการประกาศที่ระบุว่าสามารถทำอะไรได้บ้าง และข้อมูลใดบ้างที่เราต้องส่งต่อ ในการใช้คลาส คุณต้องมีความเข้าใจโดยทั่วไปเกี่ยวกับสิ่งที่ มันทำได้ คุณจำเป็นต้องรู้ให้แน่ชัดว่าแต่ละวิธีทำอะไรแต่ไม่แน่ชัดว่าทำได้อย่างไรมันเหมือนกับไม้กายสิทธิ์"
"หึ!
"นี่ ดูโค้ดของคลาสที่คัดลอกไฟล์:"
package com.codegym.lesson2;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopy
{
public static void main(String[] args) throws IOException
{
FileInputStream fileInputStream = new FileInputStream("c:\data.txt");
FileOutputStream fileOutputStream = new FileOutputStream("c:\result.txt");
while (fileInputStream.available() > 0)
{
int data = fileInputStream.read();
fileOutputStream.write(data);
}
fileInputStream.close();
fileOutputStream.close();
}
}
"ฉันไม่สามารถพูดได้ว่าฉันเข้าใจทั้งหมด แต่ฉันคิดว่าฉันเข้าใจสาระสำคัญของมัน"
"เยี่ยมเลย แล้วเจอกันใหม่"
“ฉันเกือบลืม นี่คืองานของคุณจากดิเอโก”
GO TO FULL VERSION