Co robi w tym przykładzie zmienna boolean?

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

0

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

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ć?

3

Tak, sa zbedne

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.

1

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

2

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

1

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

0

Dziękuję wszystkim bardzo serdecznie za odpowiedzi :)

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.

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