"Hi, Amigo. Ngayon sasabihin ko sa iyo ang tungkol sa isang tipikal na programa ng Java. Ang malaking balita ay ang bawat programang nakasulat sa Java ay binubuo ng mga klase at bagay."

"Alam ko na kung ano ang mga klase. Ano ang mga bagay?"

"Magsimula tayo sa isang analogy. Ipagpalagay na gusto mong gumawa ng isang maliit na barko. Nagtatrabaho ka sa isang disenyo at pagkatapos ay ipadala ang blueprint sa isang pabrika, kung saan ang isang barko ay tipunin ayon sa iyong disenyo. O isang dosenang barko, o kasing dami ng mga barko. ayon sa gusto mo. Ang punto ko ay dose-dosenang magkakaparehong barko ang maaaring gawin batay sa isang blueprint."

"Ganyan talaga kung paano ito gumagana sa Java."

" Ang mga programmer ng Java ay parang mga inhinyero ng disenyo, maliban sa paggawa ng mga blueprint, nagsusulat sila ng mga klase. Ang mga bahagi ng barko ay ginawa batay sa mga blueprint, habang ang mga bagay ay nilikha batay sa mga klase. "

"Una, nagsusulat kami ng mga klase (gumawa ng mga blueprint). Pagkatapos, kapag ang programa ay pinapatakbo, ang Java machine ay lumilikha ng mga bagay batay sa mga klase na ito. Ito ay eksakto kung paano ang mga barko ay binuo mula sa isang blueprint. Isang blueprint - maraming mga barko. Ang mga barko ay naiiba. . Magkaiba ang mga pangalan nila at magkaibang kargamento. Ngunit magkatulad pa rin sila. Lahat sila ay may magkaparehong disenyo, at nagagawa nilang magkatulad na mga gawain."

"OK, I get your ship analogy. Can you give me a couple more to help me be sure na naiintindihan ko ang sinasabi mo?"

"Kunin, halimbawa, ang mga bubuyog..."

"Hindi, scratch that. I've had a bad experience with bees. Kuha tayo ng langgam."

"Ang isang kolonya ng langgam ay isang magandang halimbawa kung paano nakikipag-ugnayan ang mga bagay. Anumang kolonya ng langgam ay binubuo ng tatlong klase: ang reyna, mga sundalo, at mga manggagawang langgam. Ang bilang ng mga langgam sa bawat klase ay nag-iiba. Karaniwan ang isang kolonya ay mayroon lamang isang reyna, dose-dosenang mga sundalo. , at daan-daang manggagawa. Tatlong klase, daan-daang bagay. Ang mga langgam ay sumusunod sa mahigpit na mga tuntunin habang nakikipag-ugnayan sila sa mga langgam sa kanilang sariling klase at mga langgam na kabilang sa ibang mga klase."

"Ito ang perpektong halimbawa. Ang isang tipikal na programa ay gumagana nang eksakto tulad nito. Mayroong isang pangunahing bagay na lumilikha ng mga bagay sa lahat ng mga klase. Ang mga bagay ay nakikipag-ugnayan sa isa't isa at sa panlabas na mundo. Ang pag-uugali ng mga bagay ay naka-hardwired (naka-program) sa loob. ."

"I don't quite get it. I mean, I don't get it at all."

"Ang dalawang paliwanag na ito ay dalawang panig ng parehong barya. Ang katotohanan ay nasa pagitan. Ang unang halimbawa (tungkol sa mga blueprint at barko) ay nagpapakita sa atin ng koneksyon sa pagitan ng isang klase at mga bagay nito. Ito ay isang malakas na pagkakatulad. Ang pagkakatulad ng kolonya ng langgam ay nagpapakita ng relasyon sa pagitan ng mga bagay, na inilalarawan ng mga klase at umiiral lamang habang tumatakbo ang isang programa."

"Ang ibig mong sabihin ay kailangan nating magsulat ng mga klase para sa lahat ng bagay na ginagamit sa isang programa, at pagkatapos ay ilarawan ang kanilang mga pakikipag-ugnayan?"

"Oo, ngunit ito ay mas madali kaysa ito tunog. Sa Java, habang ang isang programa ay tumatakbo, ang lahat ng mga entity ay mga bagay. Ang pagsulat ng isang programa ay katumbas ng paglalarawan sa iba't ibang paraan kung saan maaaring makipag-ugnayan ang mga bagay. Ang mga bagay ay tumatawag lamang sa mga pamamaraan ng isa't isa at ipinapasa ang kinakailangang data. sa kanila."

"Medyo malabo, ngunit sa tingin ko ay halos makuha ko na."

"Paano natin malalaman kung aling mga pamamaraan ang tatawagan at aling data ang ipapasa?"

"Ang bawat klase ay may deklarasyon, na nagpapahiwatig ng nilalayon nitong paggamit. Katulad nito, ang bawat pamamaraan ay may deklarasyon na nagsasaad kung ano ang magagawa nito at kung anong data ang kailangan nating ipasa dito. Upang gumamit ng klase, kailangan mong magkaroon ng pangkalahatang pag-unawa sa kung ano ang ginagawa nito. Kailangan mong malaman nang eksakto kung ano ang ginagawa ng bawat pamamaraan, ngunit hindi eksakto kung paano ito ginagawa . Para itong magic wand."

"Huh! Mukhang maganda."

"Narito. Tingnan ang code ng isang klase na kumukopya ng mga file:"

Kopyahin ang c:\data.txt sa c:\result.txt
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();
    }
}

"Hindi ko masasabing nakuha ko ang lahat, ngunit sa palagay ko nakuha ko ang kakanyahan nito."

"Great. See you next time then."

"I almost forgot. Here's your task from Diego."