"Hej, Amigo. I dag vil jeg fortælle dig om et typisk Java-program. Den store nyhed er, at hvert program skrevet i Java består af klasser og objekter."

"Jeg ved allerede, hvad klasser er. Hvad er objekter?"

"Lad os starte med en analogi. Antag, at du vil bygge et lille skib. Du arbejder på et design og sender derefter tegningen til en fabrik, hvor et skib vil blive samlet efter dit design. Eller et dusin skibe eller lige så mange skibe som du vil. Min pointe er, at dusinvis af identiske skibe kan laves baseret på én plan."

"Det er præcis sådan, det fungerer med Java."

" Java-programmører er som designingeniører, bortset fra at i stedet for at lave tegninger, skriver de klasser. Skibsdele er lavet baseret på tegninger, mens objekter skabes baseret på klasser. "

"Først skriver vi klasser (laver tegninger). Derefter, når programmet køres, opretter Java-maskinen objekter baseret på disse klasser. Det er nøjagtigt ligesom, hvordan skibe er bygget ud fra en blåkopi. Ét plan – mange skibe. Skibene er forskellige . De har forskellige navne og har forskellig last. Men de ligner stadig hinanden. De har alle et identisk design og er i stand til at udføre lignende opgaver."

"OK, jeg forstår din skibsanalogi. Kan du give mig et par mere for at hjælpe mig med at være sikker på, at jeg forstår, hvad du siger?"

"Tag for eksempel bier..."

"Nej, rids det. Jeg har haft en dårlig oplevelse med bier. Lad os tage myrer."

"En myrekoloni er et godt eksempel på, hvordan objekter interagerer. Enhver myrekoloni består af tre klasser: dronningen, soldater og arbejdermyrer. Antallet af myrer i hver klasse varierer. Normalt har en koloni kun én dronning, snesevis af soldater , og hundredvis af arbejdere. Tre klasser, hundredvis af genstande. Myrerne følger strenge regler, når de interagerer med myrer i deres egen klasse og myrer, der tilhører andre klasser."

"Dette er det perfekte eksempel. Et typisk program fungerer præcis sådan. Der er et hovedobjekt, der skaber objekter i alle klasserne. Objekterne interagerer med hinanden og med den ydre verden. Objekternes adfærd er hardwired (programmeret) internt ."

"Jeg forstår det ikke helt. Jeg mener, jeg forstår det slet ikke."

"Disse to forklaringer er to sider af samme mønt. Sandheden er et sted midt imellem. Det første eksempel (om tegninger og skibe) viser os forbindelsen mellem en klasse og dens objekter. Det er en stærk analogi. Myrekoloni-analogien demonstrerer forhold mellem objekter, som er beskrevet af klasser og kun eksisterer, mens et program kører."

"Du mener, at vi skal skrive klasser for alle objekter, der bruges i et program, og derefter beskrive deres interaktioner?"

"Ja, men det er nemmere, end det lyder. I Java, mens et program kører, er alle entiteter objekter. At skrive et program svarer til at beskrive de forskellige måder, objekter kan interagere på. Objekterne kalder simpelthen hinandens metoder og videregiver de nødvendige data til dem."

"Det er lidt sløret, men jeg tror næsten, jeg forstår det."

"Hvordan ved vi, hvilke metoder vi skal kalde, og hvilke data der skal videregives?"

"Hver klasse har en erklæring, som angiver dens tilsigtede anvendelse. På samme måde har hver metode en erklæring, der angiver, hvad den kan, og hvilke data vi skal videregive til den. For at bruge en klasse skal du have en generel forståelse af, hvad Det gør den. Du skal vide præcis, hvad hver metode gør, men ikke præcis, hvordan den gør det . Det er som en tryllestav."

"Huh! Lyder dejligt."

"Her. Tag et kig på koden for en klasse, der kopierer filer:"

Kopier c:\data.txt til 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();
    }
}

"Jeg kan ikke sige, at jeg forstår det hele, men jeg tror, ​​jeg har fået essensen af ​​det."

"Dejligt. Så ses vi næste gang."

"Jeg glemte det næsten. Her er din opgave fra Diego."