Java (II) - 3. lekcia
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Java (II) - 3. lekciaJava (II) - 3. lekcia

 

Java (II) - 3. lekcia

Google       Google       19. 6. 2006       33 614×

Obsah tretej lekcie:

  • Definovanie tried
  • Premenné v definícii triedy
  • Metódy v definícii triedy
  • Prístup k členom triedy
  • Úloha č. 3

Reklama
Reklama

Definovanie tried

Triedu definujeme (čiže určíme jej obsah a význam) pred vytváraním objektu. Je to vlastne vzor, podľa ktorého budeme vytvárať objekty. Telo triedy je umiestnené medzi dvomi zloženými zátvorkami:


public class Bicykel {

}

Do definície triedy dávame:

  • Premenné (angl. variables a v Jave sa označujú aj ako fields) – pomenované kúsky pamäte, ktoré slúžia na uloženie nejakej informácie alebo dátovej položky.
  • Metódy (angl. methods) – funkcie definované v triede, ktoré vykonávajú operácie pre triedu. Metódy väčšinou pracujú s premennými.

public class Bicykel {
    // premenna
    private int rychlost;

    // metoda
    public int zistiRychlost() {
        return rychlost;
    }

    // metoda
    public void nastavRychlost(int novaRychlost) {
        rychlost = novaRychlost;
    }
}

Premenné v definícii triedy

Objekt vytvorený z triedy (objekt môžeme nazvať aj ako inštanciu triedy) obsahuje všetky premenné, ktoré sú súčasťou definície danej triedy. Tieto premenné sa rozdeľujú na dva druhy:

  • Inštančné premenné (angl. instance variables) – každý objekt vytvorený z danej triedy bude mať svoju vlastnú kópiu každej inštančnej premennej, ktoré boli uvedené v definícii vzorovej triedy. Objekt je jedným výskytom (inštanciou) triedy a hodnoty premenných, ktoré sú v ňom uložené sa odlišujú od ostatných hodnôt premenných objektov vytvorených z tej istej triedy. Inštančná premenná je v triede deklarovaná normálnym spôsobom:

    
    private int rychlost;
    
  • Statické premenné (angl. static variables) – všetky objekty vytvorené zo vzorovej triedy budú túto premennú a jej hodnotu spoločne zdielať. Na rozdiel od inštančných premenných, kde zmena hodnoty pre jeden objekt nemá vplyv na hodnoty iných objektov, je hodnota statickej premennej dostupná v nezmenenej podobe vo všetkých objektoch vzorovej triedy. Takáto premenná musí byť v triede deklarovaná s kľúčovým slovom static:

    
    private static int maximalnaRychlost;
    

Keď v triede definujeme nejaké premenné, tak im nemusíme priradiť žiadnu hodnotu (viď príklad hore, vtedy sa im priradí implicitná hodnota) alebo ich inicializujeme sami na nejakú hodnotu:


private static int maximalnaRychlost = 130;

Metódy v definícii triedy

Metódy definované v triede predstavujú vlastnosti, správanie alebo akcie, ktoré môžu byť vykonávané s premennými budúceho objektu. Tak isto ako u premenných, aj metódy sú rozdelené na inštančné


public int zistiRychlost() {
    return rychlost;
}

a statické


public static int zistiMaximalnuRychlost() {
    return maximalnaRychlost;
}
s tým istým významom. Každá metóda musí mať určený typ návratovej hodnoty a poprípade zoznam parametrov, ktore prijíma na spracovanie.


Prístup k členom triedy

K členom triedy, čiže k premenným alebo metódam, sa pristupuje po vytvorení objektu pomocou operátoru „.“ (bodka). Po vytvorení objektu napr. z triedy Bicykel


Bicykel mojBicykel = new Bicykel();

môžeme pristúpiť k jeho celočíselnej premennej rýchlosť a zmeniť jej hodnotu.


mojBicykel.rychlost = 5;

V zásade by sa nemalo pristupovať priamo k premenným objektu, tak ako je to vidno na vyššie uvedenom zdrojáku, lebo sa tým narúša integrita zapúzdrenia dát. Preto sa tento problém rieši pomocou geterov (od angl. get – získa hodnotu premennej) a seterov (od angl. set – nastaví hodnotu premennej):


// metoda pre ziskanie hodnoty premennej (geter)
public int zistiRychlost() {
    return rychlost;
}

// metoda pre nastavenie hodnoty premennej (seter)
public void nastavRychlost(int novaRychlost) {
    rychlost = novaRychlost;
}

...

mojBicykel.nastavRychlost(5);

System.out.println(mojBicykel.zistiRychlost());

To, ako sú členy triedy alebo jej objektu prístupné napr. iným triedam, určujú prístupové kľúčové slová.

Kľúčové slovo určujúce prístup Povolený prístup
žiadne z metód hociktorej triedy toho istého balíku*
public z metód v hociktorej triede, hocikde
private iba z metódy vo vnútri danej triedy (zvonku žiadny prístup)
protected z metód v hociktorej triede toho istého balíku* a z hociktorej podtriedy

* – Tomu, čo sú to balíky a načo slúžia, sa budem venovať neskôr.

Príklad

Trieda Zakaznik


// trieda Zakaznik a jej definicia
public class Zakaznik {
	// PREMENNE:
	
	/*
	 * instancna premenna pre ulozenie hodnoty
	 * hotovosti zakaznika (klucove slovo 
	 * pristupu - protected)
	 */
	protected int hotovost;
	
	// METODY:
	
	/*
	 * - zisti hodnotu premennej "hotovost";
	 * - navratova hodnota je typu int, lebo vracia
	 *   celocislenu hodnotu premennej "hotovost"
	 */
	public int zistiHotovost() {
		return hotovost;
	}
	
	/*
	 * - nastavi hodnotu premennej "hotovost";
	 * - navratova hodnota je typu void (prazdna), lebo
	 *   metoda nevracia ziadnu hodnotu;
	 * - tato metoda prijima ako parameter premennu 
	 *   "novaHotovost", ktorou sa nastavi premenna 
	 *   "hotovost" na jej hodnotu 
	 */
	public void nastavHotovost(int novaHotovost) {
		hotovost = novaHotovost;
	}
}

Trieda Banka


// trieda Banka a jej definicia
public class Banka {	
	// PREMENNE:
	
	/*
	 * staticka premenna urcujuca maximalnu
	 * vysku vkladu (klucove slovo pristupu
	 * - public); tato premenna je inicializovana
	 * na urcitu hodnotu (v nasom pripade 70000)
	 */
	public static int maxVyskaVkladu = 70000;
	
	/*
	 * instancna premenna pre ulozenie hodnoty
	 * vysky vkladu zakaznika (klucove slovo 
	 * pristupu - private)
	 */
	private int vkladZakaznika;
	
	// METODY:
	
	/*
	 * - zisti hodnotu premennej "vkladZakaznika";
	 * - navratova hodnota je typu int, lebo vracia
	 *   celocislenu hodnotu premennej "vkladZakaznika"
	 */
	public int zistiVkladZakaznika() {
		return vkladZakaznika;
	}
	
	/*
	 * - nastavi hodnotu premennej "vkladZakaznika";
	 * - navratova hodnota je typu void (prazdna), lebo
	 *   metoda nevracia ziadnu hodnotu;
	 * - tato metoda prijima ako parameter premennu 
	 *   "novyVkladZakaznika", ktorou sa nastavi premenna 
	 *   "vkladZakaznika" na jej hodnotu 
	 */
	public void nastavVkladZakaznika(int novyVkladZakaznika) {
		vkladZakaznika = novyVkladZakaznika;
	}
}

Trieda Test


// trieda Test a jej definicia
public class Test {	
	// PREMENNE:
	
	// METODY:

	/*
	 * hlavna staticka metoda obsahujuca zdrojovy kod, podla 
	 * ktoreho sa bude program vykonavat
	 */
	public static void main(String[] args) {
		/*
		 * novy objekt "mojaBanka" vytvoreny na zaklade
		 * vzoru triedy "Banka"
		 */ 
		Banka mojaBanka = new Banka();
		
		/*
		 * novy objekt "mojZakaznik" vytvoreny na zaklade
		 * vzoru triedy "Zakaznik"
		 */ 
		Zakaznik mojZakaznik = new Zakaznik();
		
		// nastavime vysku hotovosti mojhoZakaznika
		mojZakaznik.nastavHotovost(50000);
		
		/*
		 * novy objekt "mojDruhyZakaznik" vytvoreny na zaklade
		 * vzoru triedy "Zakaznik"
		 */ 
		Zakaznik mojDruhyZakaznik = new Zakaznik();
		
		// nastavime vysku hotovosti druheho zakaznika
		mojDruhyZakaznik.nastavHotovost(20000);
		
		// vypis hodnot hotovosti zakaznikov; vsimnite si, ze hodnoty
		// instantnych premennych su odlisne
		System.out.println("1. Hotovost prveho zakaznika v jeho penazenke: "
                		   + mojZakaznik.zistiHotovost());
		System.out.println("2. Hotovost druheho zakaznika v jeho penazenke: "
                		   + mojDruhyZakaznik.zistiHotovost());
		
		// nastavenie vkladu zakaznika do banky pomocou toho, ze
		// ako parameter metody "nastavVkladZakaznika" (objekt mojaBanka) 
		// sa prijima hodnota cez metodu zistiHotovost (objekt mojZakaznik)
		mojaBanka.nastavVkladZakaznika(mojZakaznik.zistiHotovost());
		
		// vypis vysky vkladu zakaznika v banke
		System.out.println("3. Vklad prveho zakaznika v banke: "
				           + mojaBanka.zistiVkladZakaznika());
		
		// vypis maximalnej moznej vysky vkladu v banke
		System.out.println("4. Maximalna mozna vyska vkladu v prvej banke: "
		                   + mojaBanka.maxVyskaVkladu);
		
		/*
		 * novy objekt "mojaDruhaBanka" vytvoreny na zaklade
		 * vzoru triedy "Banka"
		 */
		Banka mojaDruhaBanka = new Banka();
		
		// vypis maximalnej moznej vysky vkladu v druhej banke
		System.out.println("5. Maximalna mozna vyska vkladu v druhej banke: "
		                   + mojaDruhaBanka.maxVyskaVkladu);
		
		// urcenie novej hodnoty pre staticku premennu a jej vypis; vsimnite si, 
		// ze jej hodnota sa zmeni aj v druhej banke
		mojaBanka.maxVyskaVkladu = 75000;
		System.out.println("6. Maximalna mozna vyska vkladu v prvej banke: "
                		   + mojaBanka.maxVyskaVkladu);
		System.out.println("7. Maximalna mozna vyska vkladu v druhej banke: "
						   + mojaDruhaBanka.maxVyskaVkladu);
    }
}

Úloha č. 3

Spusťte uvedený príklad a zmeňte ho tak, aby testoval, či výška vkladu zákazníka vyhovuje maximálnej možnej výške vkladu do banky, a spravte pre statickú premennú metódy na získanie a nastavenie jej hodnoty.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
Autor je studentom FEI STU v Bratislave, odbor Aplikovana Informatika a vo svojom volnom case sa zaobera hlavne programovanim a rad sportuje.
Web    

Nové články

Obrázek ke článku NEWTON Media prohledá 200  milionů mediálních zpráv během sekund díky Cisco UCS

NEWTON Media prohledá 200 milionů mediálních zpráv během sekund díky Cisco UCS

Česká společnost NEWTON Media provozuje největší archiv mediálních zpráv ve střední a východní Evropě. Mezi její zákazníky patří například ministerstva, evropské instituce nebo komerční firmy z nejrůznějších oborů. NEWTON Media rozesílá svým zákazníkům každý den monitoring médií podle nastavených klíčových slov a nabízí online službu, kde lze vyhledat mediální výstupy v plném znění od roku 1996.

Reklama
Reklama
Obrázek ke článku Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý