"Hej Amigo. Idag ska jag berätta om ett typiskt Java-program. Den stora nyheten är att varje program som är skrivet i Java består av klasser och objekt."

"Jag vet redan vad klasser är. Vad är objekt?"

"Låt oss börja med en analogi. Anta att du vill bygga ett litet fartyg. Du arbetar med en design och skickar sedan ritningen till en fabrik, där ett fartyg kommer att monteras enligt din design. Eller ett dussin fartyg, eller lika många fartyg som du vill. Min poäng är att dussintals identiska fartyg kan tillverkas baserat på en ritning."

"Det är precis så det fungerar med Java."

" Java-programmerare är som designingenjörer, förutom att istället för att skapa ritningar, skriver de klasser. Fartygsdelar görs utifrån ritningar, medan objekt skapas utifrån klasser. "

"Först skriver vi klasser (gör ritningar). Sedan, när programmet körs, skapar Java-maskinen objekt baserat på dessa klasser. Det är precis som hur fartyg byggs från en ritning. En ritning – många fartyg. Fartygen är olika . De har olika namn och bär olika laster. Men de är fortfarande lika. De har alla en identisk design och kan utföra liknande uppgifter."

"OK, jag förstår din skeppsliknelse. Kan du ge mig ett par till för att hjälpa mig att vara säker på att jag förstår vad du säger?"

"Ta till exempel bin..."

"Nej, skrapa det. Jag har haft dåliga erfarenheter av bin. Låt oss ta myror."

"En myrkoloni är ett bra exempel på hur föremål interagerar. Varje myrkoloni består av tre klasser: drottningen, soldater och arbetarmyror. Antalet myror i varje klass varierar. Vanligtvis har en koloni bara en drottning, dussintals soldater , och hundratals arbetare. Tre klasser, hundratals föremål. Myrorna följer strikta regler när de interagerar med myror i sin egen klass och myror som tillhör andra klasser."

"Detta är det perfekta exemplet. Ett typiskt program fungerar precis så. Det finns ett huvudobjekt som skapar objekt i alla klasser. Objekten interagerar med varandra och med den yttre världen. Objektens beteende är fast (programmerat) internt ."

"Jag fattar det inte riktigt. Jag menar, jag fattar det inte alls."

"Dessa två förklaringar är två sidor av samma mynt. Sanningen är någonstans mittemellan. Det första exemplet (om ritningar och skepp) visar oss sambandet mellan en klass och dess objekt. Det är en kraftfull analogi. Myrkolonianalogin visar relation mellan objekt, som beskrivs av klasser och endast existerar medan ett program körs."

"Du menar att vi måste skriva klasser för alla objekt som används i ett program och sedan beskriva deras interaktioner?"

"Ja, men det är lättare än det låter. I Java, medan ett program körs, är alla entiteter objekt. Att skriva ett program innebär att beskriva de olika sätten som objekt kan interagera på. Objekten anropar helt enkelt varandras metoder och skickar den data som krävs. till dem."

"Det är lite flummigt, men jag tror att jag nästan förstår det."

"Hur vet vi vilka metoder vi ska anropa och vilka data som ska skickas?"

"Varje klass har en deklaration som anger dess avsedda användning. På samma sätt har varje metod en deklaration som anger vad den kan göra och vilken data vi behöver skicka till den. För att använda en klass måste du ha en allmän förståelse för vad det gör det. Du måste veta exakt vad varje metod gör, men inte exakt hur den gör det . Det är som en trollstav."

"Huh! Låter trevligt."

"Här. Ta en titt på koden för en klass som kopierar filer:"

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

"Jag kan inte säga att jag förstår allt, men jag tror att jag förstod essensen av det."

"Jättebra. Vi ses nästa gång då."

"Jag glömde nästan. Här är din uppgift från Diego."