– Cześć, Amigo. Dziś opowiem Ci o typowym programie Java. Najważniejszą informacją jest to, że każdy program napisany w Javie składa się z klas i obiektów.

– Wiem już, czym są klasy. Co to są obiekty?

– Zacznijmy od analogii. Załóżmy, że chcesz zbudować mały statek. Pracujesz nad projektem, a następnie wysyłasz plan do fabryki, w której statek zostanie skonstruowany zgodnie z Twoim projektem. Albo tuzin statków, albo tyle statków, ile tylko zechcesz. Chodzi o to, że na podstawie jednego planu można tworzyć dziesiątki identycznych statków.

– Dokładnie tak dzieje się w Javie.

Programiści Java są jak konstruktorzy, z tym wyjątkiem, że zamiast tworzyć plany, piszą klasy. Części statku są tworzone na podstawie planów, a obiekty na podstawie klas.

– Najpierw piszemy klasy (tworzymy plany). Następnie, po uruchomieniu programu, maszyna Java tworzy na podstawie tych klas obiekty. To działa dokładnie tak, jak budowanie statków na podstawie planów. Jeden plan – wiele statków. Statki są różne. Mają różne nazwy i przewożą różne ładunki. Ale nadal są podobne. Wszystkie mają identyczną konstrukcję i są w stanie wykonywać podobne zadania.

– Rozumiem Twój przykład ze statkiem. Czy możesz podać jeszcze kilka przykładów, aby pomóc mi upewnić się, że rozumiem, o czym mówisz?

– Weźmy na przykład pszczoły...

– Nie, wolę nie. Mam złe doświadczenia z pszczołami. To weźmy mrówki.

– Kolonia mrówek jest dobrym przykładem interakcji między obiektami. Każda kolonia mrówek składa się z trzech klas: królowej, żołnierzy i robotnic. Liczba mrówek w każdej klasie jest różna. Zwykle kolonia ma jedną królową, dziesiątki żołnierzy i setki robotnic. Trzy klasy, setki obiektów. Mrówki przestrzegają surowych zasad, gdy wchodzą w interakcje z mrówkami własnej klasy i mrówkami należącymi od innych klas.

– To idealny przykład. Typowy program działa tak samo. Istnieje główny obiekt, który tworzy obiekty innych klas. Obiekty te wchodzą w interakcje ze sobą i ze światem zewnętrznym. Zachowanie obiektów jest przypisane (zaprogramowane) na stałe.

– Nie do końca rozumiem. To znaczy, nic nie rozumiem.

– Te dwa przykłady to dwie strony tej samej monety. Prawda leży gdzieś pośrodku. Pierwszy przykład (dotyczący planów i statków) pokazuje nam związek między klasą i jej obiektami. To bardzo znacząca analogia. Analogia do kolonii mrówek pokazuje relacje pomiędzy obiektami opisanymi przez klasy i istniejącymi tylko podczas działania programu.

– Masz na myśli, że musimy pisać klasy dla wszystkich obiektów używanych w programie i potem opisywać ich interakcje?

– Tak, ale to łatwiejsze, niż się wydaje. W Javie, gdy program jest uruchomiony, wszystkie byty są obiektami. Napisanie programu sprowadza się do opisania różnych sposobów interakcji pomiędzy obiektami. Obiekty po prostu wywołują nawzajem swoje metody i przekazują do nich wymagane dane.

– Trochę to niejasne, ale myślę, że prawie rozumiem.

– Skąd wiemy, które metody wywoływać i jakie dane przekazać?

– Każda klasa ma deklarację opisującą jej przeznaczenie. Podobnie – każda metoda ma deklarację wskazującą, co może zrobić i jakie dane musimy do niej przekazać. Aby użyć klasy, musisz ogólnie rozumieć, co ona robi. Musisz dokładnie wiedzieć, co robi każda metoda, ale już niekoniecznie, jak to robi. To jak magiczna różdżka.

– Ha! Brzmi nieźle.

– Tutaj. Popatrz na kod klasy, która kopiuje pliki:

Kopiuj c:\dane.txt do c:\wynik.txt
package com.codegym.lesson2;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class KopiujPlik
{
    public static void main(String[] args) throws IOException
    {
        FileInputStream fileInputStream = new FileInputStream("c:\dane.txt");
        FileOutputStream fileOutputStream = new FileOutputStream("c:\wynik.txt");

        while (fileInputStream.available() > 0)
        {
            int dane = fileInputStream.read();
            fileOutputStream.write(dane);
        }

        fileInputStream.close();
        fileOutputStream.close();
    }
}

– Nie mogę powiedzieć, że wszystko rozumiem, ale myślę, że łapię główny przekaz.

– Świetnie. Do zobaczenia następnym razem.

– Prawie zapomniałam. Oto Twoje zadanie od Diego.

3
Zadanie
Składnia Java,  poziom 2lekcja 1
Niedostępne
Zaimplementuj metodę print
Pisanie swoich własnych metod daje nam nieograniczoną wolność, ale jest to także wielka odpowiedzialność. Metody implementujemy ostrożnie i z rozmysłem. To zadanie wymaga napisania metody, która wyświetli określony ciąg. Nie raz, ale cztery razy. Ciąg jest argumentem metody, co oznacza, że zostanie podany jako dane wejściowe.