Co robi w tym przykładzie zmienna boolean?

Odpowiedz Nowy wątek
2018-07-19 10:28
0

Przerabiam sobie książkę "Java - rusz głową" i tam jest taki przykład:

class Perkusja {
 
    boolean talerze = true;
    boolean beben = true;
 
    void zagrajNaBebnie() {
        System.out.println("bam, bam, baaaa-am-am");
    }
 
    void zagrajNaTalerzach() {
        System.out.println("brzdk, brzrzrzdk");
    }
}
 
class PerkusjaTester {
    public static void main(String[] args) {
 
        Perkusja p = new Perkusja();
        p.zagrajNaBebnie();
        p.beben = false;
        p.zagrajNaTalerzach();
 
        if (p.beben == true) {
            p.zagrajNaBebnie();
        }
    }
}

Tak więc: do czego w ogóle służą mi tutaj zmienne boolean? Dlaczego nie mogę wpisać po prostu "p.zagrajNaBebnie();" i "p.zagrajNaTalerzach();"? Zastanawia mnie to tym bardziej, że instrukcja if pojawia się tylko dla bębna. Co stałoby się, gdyby między wywołaniem metod "zagraj" nie byłoby tego "p.beben = false"? Czy program "grałby" wtedy na bębnie przez cały czas? A dlaczego nie ma analogicznego "p.talerze = false"? I - swoją drogą - dlaczego instrukcja if pojawia się dopiero po wywołaniu jednej i drugiej metody? (To ostatnie pytanie wynika już pewnie z mojej skrajnej ignorancji w kwestii składni, ale zadaję je, żeby już wszystko było do kompletu...)

Swoją drogą - na githubie znalazłam taką czyjąś wersję, gdzie między wywołaniem metod NIE MA "p.beben = false", ale wciąż pojawia się deklaracja zmiennych boolean. Podałabym linka, ale forum wyrzuca, że muszę napisać min 1 post, żeby umieszczać linki - spróbuję może tak, usuwając kropki: github com/miguelalba-old/Head-First-Java/blob/master/ch2/DrumKitTestDrive.java

edytowany 4x, ostatnio: zuzanka, 2018-07-19 10:30

Pozostało 580 znaków

2018-07-19 10:54
0

A co pisze w ksiazke? To pewnie jakis przyklad flagi i uzycia ifa

Pozostało 580 znaków

2018-07-19 11:05
0

W książce nic nie ma - to jest po prostu rozwiązanie ćwiczenia (polegającego na ułożeniu elementów rozrzuconego kodu). Użycie ifa było omówione w innym miejscu, flagi jeszcze nie, ale nie za bardzo widzę sens we wrzucaniu jednego i drugiego "dla przykładu" w ćwiczeniu, które teoretycznie powinno sprawdzać coś innego (w tym przypadku tworzenie i używanie klas+obiektów)... Czyli sugerujesz, że równie dobrze mogłoby ich w tym kodzie nie być?

Pozostało 580 znaków

2018-07-19 11:11
3

Tak, sa zbedne

Pozostało 580 znaków

2018-07-19 11:14
1

Tak, mogłoby ich nie być, tylko wtedy ostatniego wywołania p.zagrajNaBebnie(); również nie powinno być, ponieważ zmienna która jest sprawdzana zostaje ustawiona na false i nie wejdzie w tego ifa.

Po prostu ćwiczenie z przykładem ifa.

Pozostało 580 znaków

2018-07-19 11:18
1

Wydaje mi się, że jest to po prostu pokazanie zmienianie zmiennej instancji klasy w locie. Ma to jak najbardziej sens w celach demonstracyjnych.

Pozostało 580 znaków

2018-07-19 11:22

Chyba tylko demonstracja

Poza tym w Javie takie porownanie jest niepotrzebne: ```java
if (p.beben == true) {

wystarczy if (p.beben) {


Do tego nie rob sobie krzywdy, nazywaj zmienne po angielsku.

Pozostało 580 znaków

2018-07-19 11:29
0
WhiteLightning napisał(a):

Do tego nie rob sobie krzywdy, nazywaj zmienne po angielsku.

Cóż, kod nie jest mój, tylko wzięty z książki, ale - szczerze mówiąc - podoba mi się to, że dzięki zmiennym nazwanym po polsku widzę dokładnie, co w przykładowym kodzie jest elementem Javy, a co zmienną, nadaną wartością itp. Ma ktoś pomysł, jak inaczej do tego podejść? (Poza doświadczeniem, które przyjdzie z czasem. Ale z kodem z angielskiej wersji książki czasem po prostu traciłam czas na zastanawianie się - czy coś jest elementem języka, czy nie.)

Uczyc sie z ksiazek po angielsku. Czesto czytajac tlumaczenie musze sobie przekladac z polskiego na angielski by wiedziec jakie pojecie bylo uzyte :) Tak mam np z Clean Code. A slow kluczowych nie ma duzo. - WhiteLightning 2018-07-19 12:48

Pozostało 580 znaków

2018-07-19 11:32
1

Przejrzyj slowa kluczowe. Duzo ich nie ma. Do tego jakies importy no ale jak importujesz np java.util.Scanner to wiesz o tym

Pozostało 580 znaków

2018-07-19 11:42
0

Dziękuję wszystkim bardzo serdecznie za odpowiedzi :)

Pozostało 580 znaków

2018-07-19 15:53
0

To może być przykład wprowadzający do dziedziczenia. Najpierw takie beznadziejne odróżnianie rodzaju instrumentu przez booleany, a potem pokazanie, że to mogą być dwa różne obiekty dziedziczące po klasie Instrument, bądź implementujące interfejs Grający.

edytowany 3x, ostatnio: Spine, 2018-07-19 15:54

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0