undefined

Interakcja z obiektem

Składnia Java
Poziom 2 , Lekcja 1
Dostępny

– 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...

Interakcja z obiektem - 1

– 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.

undefined
3
Zadanie
Składnia Java, poziom 2, lekcja 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.
Komentarze (27)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Zaaxel Poziom 2
27 March 2021
Poziom 2, lekcja 1 Koniec ciemnej materii. I co tu robić bez premium :(
Karol Poziom 4 Jaworzyna Slaska
2 November 2020
W metodzie main mamy zadeklarowane zmienne do wyświetlenia, mówi o tym słowo print(" "); w kolejnej lini te 3 pojedyńcze zdania sa zadeklarowane dla jednej zmiennej s. nie mozemy napisać 12 linijek system.out.println dla kazdego zdania, ale dla zmiennej s ktora jest zadeklarowana dla całej metody main juz tak, mamy 3 zdania wiec wystarczy napisac 4 razy polecenie wyswietlające zmienna s. Nie rozumiem tylko dlaczego program wyswietla tekst 1111,2222,3333 a nie 123,123,123,123
18 September 2020
How are we supposed to know how to "implement print method"? It hasn't been explained in previous lessons! 😒 What's the deal here?
Patryk Poziom 3 Augsburg
29 August 2020
Skad poczatkujacy moze wiedziec ze wogole cos takiego istnieje ? for (int i=0;i<4;i++) nikt tego wczesniej nie wytlumaczyl ani nawet nie wspomnial o czyms takim i jak jest to interpretowane w JAVA. Int ok wartosc liczb calkowitych, ale skad tutaj i=o; i<4; i++ kazde cos znaczy, szkoda ze nikt nie wyjasnil w kursie co..
Robert Poziom 8 Debica
9 April 2020
"main(String[] args)" Mam nadzieję że, w późniejszych lekcjach będzie wytłumaczone dlaczego w nawiasie po słowie main występuje nazwa string i te klamerki [ ] co oznacza args? a także, "public static void print(String s)" Skąd się wzięło tutaj "s" dlaczego tutaj jest, dlaczego tam są klamerki a tu pojawia się "s" bez klamerek? Czy ten "print" jest jakoś powiązany z print'ami powyżej a może to "s" jest powiązane?
Daniel Poziom 7 Debowiec
27 February 2020
Dlaczego wcześniej nie było opisane co robi public static void main(String[] args) { print("Javy łatwo się nauczyć!"); print("Java otwiera wiele możliwości!"); I co ma do tego public static void print(String s)?? Skąd jest te "s"? Czy wpisujemy cokolwiek w miejscu "s"? Dlaczego metoda print drukuje każdy wiersz po 4 razy (8), a nie ogólnie 4?
Dariusz Poziom 2 Warszawa
15 February 2020
I to by było na tyle, w tym kursie. Żeby sprawdzić co dalej - musisz zapłacić 30 dolców za miesiąc … ale nie jestem wcale przekonany że warto. Było zaledwie kilka lipnych ćwiczeń, jeśli tak ma być dalej to rezygnuję. Codecademy - co prawda po angielsku - też ma wersję płatną ale w wersji free jest cała masa ćwiczeń w javie - online.
Piotr K Poziom 2 Ulsteinvik
21 January 2020
It's no easy to understand... Codegym! The source code it should be more explain and give more detail information what happened there. For me this lesson is not clearly.
Adrien05 Poziom 2 Katowice
12 January 2020
Co jeśli nie mam już tego czegoś co odblokowuje kolejny poziom, a nie mam konta premium i nie moge zrobić więcej zadań? :c
Bartosz Poziom 5 Murowana Goslina
11 December 2019
Jak wyświetlić w metodzie print ciąg 4 razy za każdym razem w nowej linii, aby całe zadanie było zaliczone?