Stránka 1 z 1

[Naprosté Základy] Klíčová slova

PříspěvekNapsal: 13 červenec 2012 14:55:17
od Ariczek
Takze v dnesni casti se budu drzet teorie :) a vysvetlime si nektera klicova slova pouzita v tutorialu i dalsi nepouzita a co znamenaji :)

package

Pokud nepiseme zrovna zcela trivialni kod, je dobrou zvyklosti delit zdrojove kody do adresaru - napriklac Client, Server, Shared, Testing a podobně :)

to že se zdrojový kód nenachází přímo v kořenovém adresáři se zdrojáky, ale v podadresáři (či ve větší hloubce - např. Client/Protocol/Basic) specifikujeme na začátku zdrojového kódu klíčovým slovem

Kód: Vybrat vše
package


následovaným jménem onoho adresáře, či celé adresářové struktury - příklady:

Kód: Vybrat vše
package Client;
package Client.Protocol.Basic;


tento příkaz se na začátku souboru může vyskytovat maximálně 1x.

import

Klíčové slovo import v tutorialu potřeba nebylo, v rozsáhlejších projektech je používáno téměř vždy. Jeho funkce je podobná #include známého z C/C++ - zpřístupňuje funkcionalitu.
Celá java je organizována do balíčků (packages). Ten základní se importuje defaultně - java.lang.* . Pro všechno ostatní je potřeba import explicitně uvést. Eclipse nám to ulehčuje pomocí klávesové zkratky Ctrl+Shift+O, která zorganizuje a doplní importy. Příklad použití klíčového slova import:

Kód: Vybrat vše
import java.util.Iterator;
import java.util.Queue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;


Lze takto importovat jednotlivé třídy, jak je uvedeno v příkladu, nebo importovat celý balíček - např. import java.util.*;

Řízení přístupu

U každé třídy či funkce/metody je potřeba specifikovat kdo ji může použít.

Základní přístupy jsou 4: public, protected, (default) a private.

Samotná třída k sobě samé může přistupovat vždy.
Ostatní třídy ze stejného balíčku mohou přistupovat ke všemu co není private.
Třída která dědí z dané třídy, a není přitom ve stejném balíčku může přistupovat jen k public a protected.
A všechno ostatní může přistupovat jen k public.

Každý soubor *.java obsahuje definici právě jedné public třídy (klíčové slovo class) která se jmenuje stejně jako soubor. V příkladě tutoriálu HelloWorld.java je to třída HelloWorld. Může obsahovat libovolný počet dalších nepublic tříd.

class

Klíčové slovo slouží k definici třídy. (více v nějakém dalším díle seriálu) :)

příklad z tutorialu:

Kód: Vybrat vše
public class HelloWorld {
// definice proměnných třídy, metod objektů a statických funkcí třídy
}


static a ne-static funkce, metody a proměnné
(Téměř) všechno v javě je třída. :) Každý soubor .java obsahuje právě jednu public třídu.

statické proměnné a funkce jsou volány pro třídu, ne-statické proměnné a metody jsou volány pro instanci objektu dané třídy.

tutoriál obsahoval právě jednu statickou metodu -
Kód: Vybrat vše
public static void main(String[] args) {
 // tělo funkce
}


tato statické funkce je vstupním bodem celého programu. Musí být veřejná (public), statická (static), bez návratové hodnoty (void), jmenovat se main() a přijímat jako parametr pole proměnných typu String. String je třída javy pro řetězec znaků. Pole args je naplněno jednotlivým slovy příkazové řádky, tak jak byl program spuštěn.

K přístupu ke členským proměnným, funkcím a metodám třídy se používá operátor tečka (.). Statické funkce a proměnné se volají přes jméno třídy, nestatické přes jmého objektu. Pokud bych tedy chtěl zavolat funkci main z tutoriálu:

Kód: Vybrat vše
HelloWorld.main(parametry);


pokud mam proměnnou typu Integer, a chtěl bych jí převést do Stringu, zavolám:
Kód: Vybrat vše
Integer i = 20;
String s = i.toString();


kde toString() je nestatická metoda třídy Integer.

return
Klíčové slovo return slouží k řízení běhu programu. Lze ho volat bez parametru, či s parametrem - v případě funkcí a metod s návratovými hodnotami.

input output
Poslední věc nevysvětlená z tutorialu je výpis do konzole. To sice není klíčové slovo, ale hodí se abych to osvětlil.
Java obsahuje třídu System, která obsahuje spoustu užitečných věcí. V tutorialu jsem přistupoval ke statické proměnné out (System.out) která reprezentuje standardní výstup. Dále zde jsou proměnné in pro standardní vstup a err pro standardní chybový výstup. Tato statická proměnná (instance objektu třídy) má nestatické metody print() a println() - první vypíše parametry, druhá udělá totéž a navíc skočí na nový řádek.

Pro úplnost zde dodám, že:
Kód: Vybrat vše
"Nazdar světe"
je vlastně proměnná typu String reprezentována hodnotou.

Závěr
V dnešním díle jsme si pověděli něco o klíčových slovech - alespoň některých, další popíši až na ně někde narazíme :)

Za domácí cvičení si zkuste upravit tutoriál HelloWorld.java.
Zapouzdřete třídu do balíčku basics.lekce1 - pozor budete muset změnit adresář kde je umístěn zdrojový soubor.
Přidejte do třídy HelloWorld novou statickou funkci, která bude dělat výpis. Tuto funkci udělejte přístupnou pouze třídě HelloWorld.
Z funkce main odstraňte výpis do konzole - (System.out.println(...);) a zavolejte vámi vytvořenou privátní funkci.

Na reakce a u příštího dílu naviděnou se těší Ariczek. :diablo:

Re: [Naprosté Základy] Klíčová slova

PříspěvekNapsal: 14 červenec 2012 21:06:32
od Ariczek
Řešení domácího úkolu - pozor SPOILER !! :D :diablo:

Kód: Vybrat vše
package basics.lekce1;

public class HelloWorld {
   public static void main(String[] args) {
      HelloWorld.vypis();
   }
   
   private static void vypis() {
      System.out.println("Tady se neco vypisuje z vypis()");
   }
}


P.S. Wolfe toz kurde ty tu nemas spoiler tag ?!! :diablo:

Re: [Naprosté Základy] Klíčová slova

PříspěvekNapsal: 14 červenec 2012 21:07:10
od Forlis
Kód: Vybrat vše
public class HelloWorld {
  public static void main(String[] args) {
  String s;
  s = "ariczku";
  System.out.println(s);
  }
}

Ja to rešil takhle, je to moc špatne? Btw. private tam ješte nemám ;)

MERGE BY WOLF: Tak som pochopil, ako má fungovať to private. Možno wolf tiež chcel splniť cvičeine, ale asi to už nestihol :D Rád by som privítal tutoráil (keď budeš mať čas) na premenné a definovanie ich. (int, boolean), ale aj príklady a vysvetlenie príkladov ;) Diki

Re: [Naprosté Základy] Klíčová slova

PříspěvekNapsal: 16 červenec 2012 23:42:21
od Wlezley
Wolf (já) se na to trochu vykašlal po tom, co to tady chcíplo. :D Chtělo by to ale osvěžit. ;) I WANT MORE!!! :P