Počítače Okna Internet

Syntaxe java. podmíněné konstrukty. - Výchozí metody rozhraní

musí nutně odpovídat názvu třídy, jejíž metoda main() je volána při spuštění stroje Java.

  • Objekt – třída, ze které jsou zděděny Všechno objekty v Javě, včetně polí a řetězců ().
  • Specifikátory přístupu jsou pro každého člena individuální (uvedené před deklarací).
  • Všichni členové třídy jsou standardně vystaveni oboru balík. "Výchozí" rozsah je kříženec mezi soukromým a chráněným , viz .
  • Každý soubor *.java může obsahovat jen jeden třída deklarovaná jako veřejná a přístupná zvenčí.
  • Definice třídy a deklarace jsou vždy ve stejném souboru, není možné vkládat prototypy do hlaviček.
  • Nejsou zde žádné ukazatele.
  • Všechny proměnné třídy jsou ve skutečnosti odkazy na objekty, nikoli objekty samotné. Inicializace pro použití musí být provedena prostřednictvím nového<конструктор-класса>(...) .
  • Na základě předchozí odstavec- při přiřazování jednoho proměnného-objektu druhému se provede pouze změna reference, nikoli však kopie objektu.
  • Proměnné ve funkcích jsou předávány hodnotou, pokud jsou elementární typy(int, byte, long, atd...), nebo odkazem, pokud se jedná o objekty.
  • Přístup k veřejným statickým členům třídy se provádí pomocí operátoru tečka. , a ne přes :: , což podle mého názoru vnáší nějaký vnější zmatek.
  • Neexistuje žádný destruktor, ale existuje finalize() .
  • Nepleťte si finalize() s destruktorem C++. volá se finalize(). pouze na svoz odpadu, což nemá nic společného s tím, že objekt jde mimo rozsah a absencí alespoň jednoho odkazu na tento objekt.
  • Shromažďování odpadků lze vynutit voláním metody Runtime.gc() na aktuálním objektu Runtime nebo voláním statické metody System.gc(). Soudě podle provedených experimentů, uvolnění paměti funguje pouze uvnitř virtuální stroj Java a jednou přidělená paměť v OS se nevrátí, dokud stroj neskončí.
  • V kódování ve stylu Java funkce generují výjimky namísto vracení kódu. systémové Chyby nebo chyby logiky virtuálního počítače. Proto musí být mnoho funkcí nutně vykonáno v bloku try ( ... ) catch (...) ( ... ), který zpracovává výjimky, nebo metoda, která je volá, musí explicitně indikovat prostřednictvím vyvolání seznamu výjimek, které nejsou zpracovány jimi generovanými těmito funkcemi, pro manipulaci s nimi metodami "vyššími" v zásobníku volání.
  • Výjimky se dělí na a .
  • Blok try ( ... ) může také končit blokem nakonec ( ... ), který se provede bez ohledu na přítomnost/nepřítomnost výjimek v předchozím bloku try ( ... ). To je vhodné použít k provedení nějaké povinné akce bez ohledu na výsledky provedení bloku kódu, například k automatickému uvolnění všech v něm alokovaných zdrojů.
  • char není jednobajtový typ jako u C/C++, je to 16bitový typ, který podporuje unicode linky.
  • bool je v Javě známý jako boolean.
  • Podmíněné konstrukce přijmout pouze booleovský typ proměnných nebo výrazů. To znamená, že kód formuláře:
    int a; ... akce s proměnnou a ...; Pokud) ( ... )
    není správné z hlediska Syntaxe Java a nebude kompilovat.
  • Konstanty jsou deklarovány jako konečné a nikoli konst.
  • Všechna pole jsou objekty.
  • Dokonce i řetězcové konstanty (jako "libovolná řetězcová konstanta") jsou objekty.
  • Pro řetězce (třída String) je definován pouze jeden operátor - + , zřetězení.
  • Porovnání řetězců se provádí pomocí metody bool equals() třídy String, jako je s1.equals(s2) .
  • Obsah řetězcových objektů (String) je konstantní a neznamená změnu jediného prvku řetězce, to se provádí za účelem zlepšení výkonu. Pokud takové operace potřebujete, můžete použít třídu StringBuffer.
  • Při zřetězení neinicializovaného řetězce s neprázdným řetězcem získáte null + neprázdný řetězec, například s += "|řetězec"; se bude rovnat "null|řetězec"
  • Pole mají proměnnou délku veřejného člena, linky nemají, místo toho používají metodu length().
  • Jáva nepodporují vícenásobné dědictví. Část jeho funkcí je vykonávána prostřednictvím „rozhraní“ (rozhraní). Rozhraní podporují vícenásobné "dědičné" implementace (implementace) více rozhraní ve stejné třídě a obecně mnoho vztahů (rozhraní) k mnoha (třídám) a naopak.
  • Rozhraní umožňují vytváření odkazů, přes které můžete přistupovat k objektům tříd, které tato rozhraní implementují. Je pravda, že dynamické hledání vhodné metody při přístupu přes odkaz rozhraní vyžaduje velkou režii, a proto není žádoucí.
  • Místo výčtů můžete použít rozhraní bez deklarací metod v nich. V tomto případě musí být všechny proměnné rozhraní inicializovány, když je rozhraní definováno, a jejich hodnoty budou automaticky konstantní. Poté je lze pomocí nástrojů „připojit“ k definované třídě.
  • Také od JDK 5 existují navenek klasické výčty - výčty . Ve skutečnosti to není jen seznam pojmenovaných konstant, ale speciální třída zděděná z nadtřídy Enum . Každý prvek výčtu je objektem této třídy. Číselnou hodnotu objektu enum lze získat pomocí ordinální vestavěné funkce.
  • Zvyk přetížení operátora známý v C++, v Javě není podporováno.
  • Pro práci v objektovém prostředí s „primitivními typy“ (int, float, char atd...) používá Java automatické sbalení/automatické rozbalení do typů obálky (Integer, Float, Character, atd...). Ve skutečnosti se jedná o implementaci přetěžování operátorů pro několik vestavěných tříd, které implementují funkcionalitu primitivních typů + objektových metod.
  • super – klíčové slovo, které vám umožňuje volat konstruktor nadtřídy z podtřídy nebo přistupovat k členu nadtřídy skrytého člena podtřídy.
    • Při použití jako konstruktor - super by měl být vždy první operátor v konstruktoru podtřídy.
  • Pro určení abstraktní metody používají klíčové slovo abstract, třída obsahující abstraktní metodu musí být také definována jako abstraktní třída....
  • konečná zakazuje nadřazené metody v dětských třídách. Pro "krátké" metody deklarované jako final má toto klíčové slovo stejný účinek jako inline v C++ - v podtřídách namísto volání funkce možná bajtkód metody nadtřídy se vloží do kódu metody volající třídy.
  • final také zakazuje dědit třídu deklarovanou jako konečnou .
  • Jmenné prostory(namespace) v Javě jsou implementovány jako balíčky(balík).
  • Chcete-li se připojit balíčky import, můžete také použít import static ..(*|), chcete-li importovat statické členy třídy.
  • Java podporuje vlákna prostřednictvím vestavěné třídy Thread a rozhraní Runable. Pro synchronizaci se před metodou v deklaraci třídy používá synchronizovaný specifikátor nebo synchronized( ) ( ... ) pro blok kódu synchronizovaný s . Pro signály mezi synchronizovanými vlákny se používají metody nadřazené třídy Object: wait()/notify()/notifyAll() .
  • přechodný – modifikátor označující, že hodnotu objektu/proměnné není třeba „zachovat“ při ukládání objektu, například při serializaci před zápisem na disk/databázi. Je logické označit proměnné obsahující jedinečné identifikátory runtime a další podobné informace, které dávají smysl pouze v aktuální instanci java procesu.
  • instanceof - runtime operace, návraty skutečný-li je tam odkaz na třídu , nebo může být přetypován na odkaz na tuto třídu, jinak Nepravdivé.
  • Assert - příkazy v Javě se používají v podstatě stejným způsobem jako v C: Claim [: Popis selhání tvrzení] , ale je třeba mít na pamětiže jsou „všity“ do zkompilovaného bajtkódu a mohou být zahrnuty, když spuštění java- ea.
  • this(...) - lze použít uvnitř konstruktoru třídy k volání jiného konstruktoru stejné třídy, který odpovídá podpisu argumentu.
  • Namísto šablony Jsou používány zobecnění, vypadá velmi podobně: třída CLASS_NAME (...). V zobecněních je to zakázáno použití primitivní typy ( int, byte, char atd...). Jako parametry lze použít pouze třídy.
    Navíc podporované omezené typy, prostřednictvím zadání nadtřídy pro třídy parametrů. Například deklarace třídy "obecné třídy" CLASS_NAME ve kterém je přípustné používat pouze třídy potomků obecné číselné třídy Number .
  • Pro rychlé kopírování polí je vhodné použít System.arraycopy() .
  • Programování je psaní zdrojového kódu programu v jednom z programovacích jazyků. Je jich mnoho různé jazyky programování, díky kterému vznikají všemožné programy řešící určitý okruh problémů. Programovací jazyk je soubor rezervovaných slov, která se používají k zápisu zdroj programy. Počítačové systémy nejsou schopny (zatím) porozumět lidské řeči a tím spíše lidské logice (zejména ženské), proto jsou všechny programy psány v programovacích jazycích, které jsou následně přeloženy do počítačového jazyka nebo do strojového kódu. Systémy, které převádějí zdrojový kód programu do strojového kódu, jsou velmi složité a zpravidla je vytváří více než tucet měsíců a více než tucet programátorů. Takové systémy se nazývají aplikační programovací rámce nebo nástroje.

    Programovací jazyky, jako jsou regulární jazyky, jsou různé způsoby komunikovat s počítačem tak, jak chcete, aby jednal. Programovací jazyky nám umožňují instruovat počítač krok za krokem, jak mimo jiné manipulovat s daty, shromažďovat data od uživatelů a zobrazovat věci na obrazovce.

    Na mikroskopické úrovni vysílá procesor počítače elektrické signály tam a zpět, které řídí, jak funguje. Části dat jsou uloženy jako proměnné, což jsou v podstatě kontejnery, které uchovávají data. Pokud tedy například proměnná potřebuje obsahovat číslo, musíme to říci a nesmíme do ní vložit nic jiného, ​​například písmeno. Statický typ také znamená, že všechny proměnné budou zkontrolovány ještě před spuštěním programu a pokud zapomeneme deklarovat datový typ nebo prohlásíme neplatnost, zobrazí se nám chyba. "Object Oriented" je objektově orientovaný jazyk postavený na konceptu objektů. Ve fyzickém světě se rozhlédněte po místnosti a přemýšlejte o každé věci jako o předmětu. Například mám na stole právě teď hrnek. Jako předmět se tento název nazývá „hrnek“ a má vlastnosti, jako je jeho barva a množství tekutiny, které pojme. Můžeme také posílat zprávy objektům, takže pro svůj hrnek možná budu potřebovat vědět „Je prázdný?“. K pořízení snímku můžeme použít například objekt Fotoaparát.

    • "Staticky typováno".
    • Programování je ve své podstatě o práci s daty.
    Mezi těmito dvěma jazyky neexistuje absolutně žádné spojení.

    Programovací systém je obrovské, promyšlené vizuální prostředí, kde můžete psát zdrojový kód programu, překládat jej do strojového kódu, testovat, ladit a mnoho dalšího. Kromě toho existují programy, které umožňují provádět výše uvedené akce pomocí příkazového řádku.

    Pravděpodobně jste více než jednou slyšeli termín „program napsaný pod Windows nebo pod Linuxem, Unix“. Faktem je, že programovací prostředí při převodu programovacího jazyka do strojového kódu mohou být dvojího typu - jedná se o kompilátory a interprety. Kompilace nebo interpretace programu určuje, jak bude program dále spouštěn na zařízení. Programy napsané v Javě vždy fungují na základě interpretace, zatímco programy napsané v C/C++ jsou kompilace. Jaký je rozdíl mezi těmito dvěma metodami?

    Tyto dva jazyky jsou napsány odlišně a fungují odlišně, ale oba nám umožňují pracovat s programovacími funkcemi, jako jsou proměnné, metody, operátory a dokonce i objekty. Samotný jazyk je sbírka klíčových slov a symbolů, které shromažďujeme, abychom vyjádřili, jak chceme, aby náš kód fungoval.

    Každý řádek kódu má specifická pravidla o tom, jak by měl být vytvořen a co je nebo není povoleno. Pamatujte, že programovací jazyky jsou abstrakce, což znamená, že abstrahují skutečné základy fungování počítače do věcí, kterým snadněji porozumíme. V zákulisí je to opravdu všechno a nuly, ale toho se bát nemusíme. Můžeme myslet v těchto abstraktních pojmech, abychom vyjádřili své myšlenky a příkazy, a tyto abstrakce platí pro každého. odlišné typy programování.

    Překladač po napsání zdrojového kódu v době kompilace načte celý zdrojový kód programu najednou a převede jej do strojového kódu. Poté program existuje jako celek a lze jej spustit pouze v něm operační systém ve kterém bylo napsáno. Proto programy napsané pod Windows nemohou fungovat pod Linuxem a naopak. Překladač provádí program krok za krokem nebo řádek po řádku pokaždé, když je spuštěn. Při interpretaci se nevytváří spustitelný kód, ale virtuální, který je následně spuštěn virtuálním strojem Java. Proto na jakékoli platformě, Windows nebo Linux, mohou Java programy běžet stejným způsobem, pokud je v systému virtuální stroj Java, který se také nazývá Runtime System.

    - Výchozí metody rozhraní

    Zde jsou některá klíčová slova, která označují typ dat, která budeme používat a ukládat do proměnných. Protože se desetinné místo může měnit nebo plovoucí, je důležité si uvědomit, že tyto hodnoty mohou být technicky nepřesné. Mezi další primitivní datové typy patří bajty, krátké a dlouhé. Objekt se od primitivního datového typu liší tím, že má k dispozici složitější vlastnosti a metody, zatímco primitivní datové typy jsou omezené a jednoduché. Proměnná je v podstatě kontejner používaný k ukládání dat.

    Objektově orientované programování

    Objektově orientované programování je založeno na objektech, což je trochu podobné našemu světu. Když se podíváte kolem sebe, určitě najdete něco, co vám pomůže jasněji pochopit model takového programování. Například právě sedím u svého stolu a píšu tuto kapitolu na počítači, který se skládá z monitoru, systémové jednotky, klávesnice, myši, reproduktorů a tak dále. Všechny tyto části jsou objekty, které tvoří počítač. S vědomím toho je velmi snadné formulovat nějaký zobecněný model fungování celého počítače. Pokud nerozumíte složitosti vlastností softwaru a hardwaru počítače, pak můžeme říci, že objekt System Unit provádí určité akce, které zobrazuje objekt Monitor. Objekt Keyboard zase může opravit nebo dokonce nastavit akce pro objekt System block, které ovlivňují činnost objektu Monitor. Prezentovaný proces velmi dobře charakterizuje celý systém objektově orientovaného programování.

    Zde jsou základní pravidla syntaxe

    Podívejme se na příklad. Pojďme se podívat na jednotlivé očíslované části. První slovo v deklaraci proměnné je datový typ, který nám říká, jaká data budou v proměnné uložena. Druhé slovo je název proměnné, což může být cokoli, po dodržení několika základních pravidel. Názvy proměnných nesmí obsahovat mezery resp speciální znaky; mohou mít pouze písmena, čísla a podtržítka. Rovnítko je operátor, to znamená, že za nás provádí konkrétní operaci. Toto je operátor přiřazení, což znamená, že jej používáme k přiřazení hodnot proměnným. Konečně posledním znakem na tomto řádku je středník, který se používá k ukončení tohoto příkazu. Nesmí však začínat číslem. . Některé další příklady deklarací proměnných využívajících některé ze základních datových typů, které jsme probrali, jsou následující.

    Představte si nějaké mocné software, obsahující stovky tisíc řádků kódu. Celý program se provádí řádek po řádku, řádek po řádku a v zásadě bude každý z následujících řádků kódu nutně spojen s předchozím řádkem kódu. Pokud nepoužíváte objektově orientované programování a kdy to potřebujete změnit programovací kódřekněme, pokud potřebujete vylepšit některé prvky, budete muset udělat hodně práce s celým zdrojovým kódem tohoto programu.

    K uspořádání našeho kódu do opakovaně použitelných částí se používají metody, které nám šetří spoustu času a energie. Druhé slovo v metodě je datový typ, který bude vrácen. Další název je název metody. Názvy metod se řídí zhruba stejnými pravidly jako názvy proměnných: písmena, čísla a podtržítka, ale nemohou začínat číslem.

    Bezprostředně za jménem vidíme dvě závorky, mezi nimiž není nic. Závorka je potřeba, ale když je prázdná, znamená to, že při volání metody nepředáváme žádná data ani proměnné. Pokud by mezi závorky byla zahrnuta jedna nebo více proměnných, pak bychom při volání této metody museli předat odpovídající hodnoty nebo proměnné v závorce.

    V objektově orientovaném programování je vše mnohem jednodušší, zpět k příkladu počítačového systému. Řekněme, že už se nespokojíte se sedmnáctipalcovým monitorem. Klidně jej vyměníte za dvacetipalcový monitor, samozřejmě pokud máte jisté finanční možnosti. Samotný proces výměny nebude znamenat velké problémy, kromě toho, že bude nutné změnit ovladač a setřít prach zpod starého monitoru a je to. Přibližně na tomto principu fungování je postaveno objektově orientované programování, kdy určitá část kódu může představovat třídu homogenních objektů, které lze snadno upgradovat nebo nahradit.

    Řádek 1 končí otevřenou složenou závorkou a na řádku je odpovídající uzavírací složená závorka. Tato dokumentace je archivována a není udržována. Nejviditelnější změnou při přechodu mezi programovacími jazyky je změna syntaxe.

    Přestože syntaxe každého jazyka vyjadřuje metodu odlišně, funkčnost je stejná. Popis funkčnost, parametry a návratové hodnoty objektu, až na některé výjimky, platí pro všechny jazyky. Uvažujme například funkci square tak, jak je implementována v každém z těchto tří skriptovacích jazyků.

    Objektově orientované programování velmi snadno a jasně odráží podstatu řešeného problému a hlavně umožňuje odstranit nepotřebné objekty bez poškození celého programu a nahradit tyto objekty novějšími. V souladu s tím je celková čitelnost zdrojového kódu celého programu mnohem snazší. Je také důležité, že stejný kód lze použít ve zcela odlišných programech.

    Operátory inkrementace a dekrementace

    Všimněte si, že skriptovací jazyky jsou na rozdíl od programovacích jazyků volně napsané. Jinými slovy, při deklaraci funkce nemusíte zadávat datový typ parametru ani návratovou hodnotu. Místo toho jsou proměnné automaticky převedeny na příslušný datový typ.

    Tato podobnost je pouze povrchní. Pojďme se nyní rychle podívat na to, co znamenají proměnné třídy, objektu, metody a instance. Příklad: Pes má stavy – barvu, jméno, plemeno a také chování jako mávání ocasem, štěkání, přijímání potravy. To je v metodách, kde se zapisuje logika, zpracovávají se data a provádějí se všechny akce. instance proměnné. Každý objekt má svou vlastní jedinečnou sadu proměnných instance. Stav objektu je vytvořen hodnotami přiřazenými těmto proměnným instance.

    • Objekt.
    • Objekty mají stavy a chování.
    • Třída může obsahovat mnoho metod.
    Podívejme se, jak uložit soubor, zkompilovat a spustit program.

    Třídy

    Jádrem všech Java programů jsou třídy, na kterých je založeno objektově orientované programování. Ve skutečnosti už víte, co jsou třídy, ale ještě o tom nevíte. V předchozí části jsme hovořili o objektech a jako příklad jsme použili celý počítač. Každý předmět, ze kterého je počítač sestaven, je zástupcem své třídy. Například třída Monitor sdružuje všechny monitory bez ohledu na jejich typy, velikosti a schopnosti a jeden konkrétní monitor na vašem stole je objektem třídy monitorů.

    - Postupujte podle následujících kroků. Otevřete okno příkazového řádku a přejděte do adresáře, do kterého jste třídu uložili. Pokud je k vytvoření názvu třídy použito více slov, každé první písmeno prvního slova musí být velké. Všechny názvy metod musí začínat malým písmenem.

    • Otevřete poznámkový blok a přidejte kód jako výše.
    • Pokud v kódu nejsou žádné chyby, příkazový řádek vás přenese na další řádek.
    • Jména tříd.
    • U všech názvů tříd musí být první písmeno velké.
    • Příklad: třída.
    Názvy používané pro třídy, proměnné a metody se nazývají identifikátory.

    Tento přístup velmi usnadňuje simulaci všech druhů procesů v programování, což usnadňuje řešení úloh. Například existují čtyři objekty čtyř různých tříd: monitor, systémová jednotka, klávesnice a reproduktory. Chcete-li přehrát zvukový soubor, musíte k zadání příkazu použít klávesnici systémová jednotka, budete samotnou akci vydání příkazu pozorovat vizuálně na monitoru a v důsledku toho reproduktory přehrají zvukový soubor. To znamená, že jakýkoli objekt je součástí určité třídy a obsahuje všechny nástroje a schopnosti dostupné této třídě. Objektů jedné třídy může být tolik, kolik je potřeba k vyřešení úlohy.

    Všechny identifikátory musí začínat písmenem, symbolem měny nebo podtržítkem.

    • Po prvním znaku mohou mít identifikátory libovolnou kombinaci znaků.
    • Klíčové slovo nelze použít jako identifikátor.
    • Nejdůležitější je, že identifikátory rozlišují malá a velká písmena.
    Stejně jako ostatní jazyky můžete upravovat třídy, metody a tak dále. Použití modifikátorů. Existují dvě kategorie modifikátorů -.

    Podíváme se na více podrobnosti o modifikátorech v další části. Lokální proměnné Třídní proměnné Proměnné instance. . Pole jsou objekty, které ukládají více proměnných stejného typu. Samotné pole je však objektem na hromadě. Na to, jak deklarovat, sestavit a inicializovat, se podíváme v dalších kapitolách.

    Metody

    Když byl uveden příklad přehrávání zvukový soubor, pak se hovořilo o vydání příkazu nebo zprávy, na základě které byly provedeny určité akce. Úkol provádění akcí je řešen pomocí metod, které má každý objekt. Metody jsou sada příkazů, pomocí kterých můžete provádět určité akce s objektem.

    Zvyšování a snižování

    Hodnoty v tomto výčtovém seznamu se nazývají výčty. Pomocí výčtů můžete snížit počet chyb v kódu. Pokud například uvažujeme o aplikaci pro obchod s čerstvými šťávami, mohli bychom omezit velikost sklenice na malou, střední a velkou. Tím zajistí, že nikomu nedovolí objednat jiné velikosti než malé, střední nebo velké.

    Výše uvedený příklad vytvoří následující výstup. Poznámka. Výčty mohou být deklarovány jako vlastní nebo v rámci třídy. Metody, proměnné, konstruktory lze také definovat uvnitř výčtů. Tato vyhrazená slova nelze použít jako konstanty nebo proměnné ani žádné jiné názvy identifikátorů. V zásadě, pokud potřebujete vytvořit novou třídu a již existuje třída, která má nějaký kód, který potřebujete, můžete novou třídu odvodit z již existujícího kódu.

    Každý objekt má svůj vlastní účel a je určen k řešení určitého okruhu úloh pomocí metod. K čemu by bylo například v objektu Keyboard, kdyby nebylo možné mačkat klávesy a přitom zadávat příkazy? Objekt Keyboard má řadu kláves, pomocí kterých uživatel získává kontrolu nad vstupním zařízením a může zadávat potřebné příkazy. Zpracování takových příkazů probíhá pomocí metod.

    Tento koncept vám umožňuje znovu použít pole a metody existující třídy bez přepisování kódu v nové třídě. V tomto případě se existující třída nazývá nadtřída a odvozená třída se nazývá podtřída. Rozhraní hrají zásadní roli, pokud jde o koncept dědičnosti. Rozhraní definuje metody, které by měla přijímající třída používat. Ale implementace metod je zcela konzistentní s podtřídou.

    Koncepty a principy objektově orientovaného programování

    Zůstaňte naladěni na další obsah v této sérii. Zjistěte, co od tohoto návodu očekávat a jak z něj vytěžit maximum.

    • Po zobrazení výzvy uložte soubor na pevný disk.
    • Po dokončení stahování spusťte instalační program.
    Prozatím se držte výchozí perspektivy a pohledu. Vaše vývojové prostředí je připraveno k použití. Paradigma strukturovaného programování je velmi řízeno daty: máte datové struktury a poté programové instrukce působí na tato data.

    Například stisknutím klávesy Esc zrušíte jakoukoli akci a tím zadáte příkaz metodě přiřazené této klávese, která řeší tento problém na úrovni programu. Okamžitě vyvstává otázka o počtu metod objektu Keyboard, ale může existovat různá implementace - od definování metod pro každý z klíčů (což je ve skutečnosti nerozumné), až po vytvoření jediné metody, která bude sledovat obecné stavu klávesnice. To znamená, že tato metoda sleduje, zda byla stisknuta klávesa, a podle toho, která z kláves je zahrnuta, se pak rozhodne, co dělat.

    Vidíme tedy, že každý z objektů může mít k dispozici sadu metod pro řešení různých problémů. A protože každý objekt je objektem určité třídy, ukazuje se, že tato třída obsahuje sadu metod, které používají různé objekty stejné třídy. V jazyce Java musí všechny metody, které vytvoříte, patřit do určité třídy nebo být její součástí.

    Syntaxe a sémantika jazyka Java

    Aby bylo možné mluvit a číst jakýkoli cizí jazyk, je nutné se naučit abecedu a gramatiku daného jazyka. Podobný stav je pozorován při studiu programovacích jazyků, s jediným rozdílem, zdá se mi, že tento proces je poněkud jednodušší. Než však začnete psát zdrojový kód programu, musíte nejprve vyřešit zadaný problém v jakékoli formě, která vám vyhovuje.

    Vytvořme třídu zodpovědnou například za telefon, která bude mít pouze dvě metody: zapnutí a vypnutí tohoto telefonu. Protože právě neznáme syntaxi jazyka Java, napíšeme třídu Phone v abstraktním jazyce.

    Třídní telefon
    {
    Metoda Enable().
    {
    // operace pro zapnutí telefonu
    }
    Metoda Disable().
    {
    // operace pro vypnutí telefonu
    }
    }

    Třída Phone by mohla vypadat nějak takto. Všimněte si, že složené závorky označují začátek a konec těla třídy, metody nebo libovolné sekvence dat. To znamená, že závorky označují příslušnost k metodě nebo třídě. Každá otevírací závorka musí mít uzavírací závorku. Aby nedošlo k záměně, jsou obvykle umístěny na stejné úrovni v kódu.

    A teď napišme stejnou třídu pouze v Javě.

    třídní telefon
    {
    void on()
    {
    // tělo metody on().
    }
    void off()
    {
    // off() tělo metody
    }
    }

    Klíčové slovo class v jazyce Java deklaruje třídu, za kterou následuje název samotné třídy. V našem případě je to Telefon. Jen pár slov o záznamovém rejstříku. Téměř ve všech programovacích jazycích je důležité zachovat zápis jmen v případě, ve kterém byly vytvořeny. Pokud jste napsali Telefon, pak psaní jako telefon nebo TELefoN způsobí chybu kompilace. Jak bylo původně napsáno, tak by se mělo psát dále.

    Vyhrazeno popř klíčová slova jsou psány ve svém vlastním specifickém případě a nemůžete je použít při pojmenovávání metod, tříd, objektů a tak dále. Mezery mezi slovy nevadí, protože je kompilátor jednoduše ignoruje, ale jsou důležité pro čitelnost kódu.

    Tělo třídy Telefon má dvě metody: on() - zapne telefon a metoda off() - vypne telefon. Obě metody mají svá vlastní těla a teoreticky by měly obsahovat nějaký zdrojový kód, který popisuje potřebné akce obou metod. Pro nás je nyní jedno, jak jsou tyto metody implementovány, hlavní je syntaxe jazyka Java.

    Obě metody mají on() závorky, do kterých lze zapisovat parametry, jako on(int time) nebo on(int time, int time1). Pomocí parametrů dochází k jakémusi propojení metod s vnějším světem. O metodě on(int time) se říká, že přebírá časový parametr. K čemu to je? Například chcete, aby se telefon zapnul určitý čas. Poté se celočíselná hodnota v parametru time předá do těla metody a na základě přijatých dat se telefon zapne. Pokud jsou závorky prázdné, pak metoda nepřebírá žádné parametry.

    Komentáře

    Ve třídě Telefon je v těle obou metod za dvěma lomítky záznam: //. Takový záznam označuje komentáře, které budou kompilátorem ignorovány, ale jsou nezbytné pro čitelnost kódu. Čím více informací při psaní programu komentujete, tím větší je šance, že si za rok vzpomenete na to, na čem jste celou tu dobu pracovali.

    Komentáře v Javě mohou být tří typů:

    //, /*…*/ a /**…*/

    Komentáře napsané operátorem // musí být na jednom řádku:

    // Jeden řádek
    !!! Chyba! Nemůžete přejít do druhé řady!
    // První řada
    // Druhý řádek
    // …
    // Poslední řádek

    Komentáře používající operátory /*…*/ mohou zahrnovat více řádků. Na začátek komentáře vložte /* a na konec, když dokončíte komentování kódu, vložte operátor */. Poslední typ komentáře /**…*/ se používá při dokumentaci kódu a může být umístěn na libovolném počtu řádků.

    Datové typy Java

    Pro nastavení libovolné hodnoty má Java datové typy. Ve třídě Telefon jsme vytvořili dvě metody. Obě metody neměly žádné parametry, ale když byl uveden příklad metody on(int time) s parametrem time, šlo o předání hodnoty metodě. Tato hodnota udávala čas, kdy by se měl telefon zapnout. Specifikátor int pouze určuje typ časové hodnoty. Java 2 ME má šest datových typů.

    Byte je malá celočíselná hodnota od -128 do 128;
    short je krátká celočíselná hodnota v rozsahu -32768 až 32767;
    int - obsahuje libovolnou celočíselnou hodnotu od -2147483648 do 2147483647;
    long je velmi velké celé číslo, od -922337203685475808 do 9223372036854775807;
    char je znaková konstanta Unicode. Rozsah tento formát 0 až 65536, což se rovná 256 znakům. Jakýkoli znak tohoto typu musí být napsán v jednoduchých uvozovkách, například: 'G';
    boolean - booleovský typ, má pouze dvě hodnoty: false - nepravda a true - true. Tento typ se často používá ve smyčkách, o kterých o něco později. Význam je velmi jednoduchý – pokud máte v kapse peníze, je to údajně pravda, a pokud ne, tak nepravda. Máme-li tedy peníze, jdeme do obchodu pro chleba nebo pivo (podtrhni, pokud nejsou peníze, zůstáváme doma. To znamená, že je to taková logická hodnota, která přispívá k výběru další akce váš program.

    Pro deklaraci nějaké potřebné hodnoty se používá zápis:

    int time;
    dlouhý BigTime;
    znakové slovo;

    Operátor středník je vyžadován po zadání a je umístěn na konci řádku. Můžete kombinovat několik deklarací stejného typu oddělených čárkami:

    Mt čas, čas1, čas2;

    Nyní vylepšíme naši třídu Telefon přidáním několika hodnot. Už nepotřebujeme metody on() a off(), pojďme přidat nové metody, které skutečně dokážou vyřešit určité úlohy.

    třídní telefon
    {
    //S - oblast zobrazení
    //w - šířka zobrazení
    //h - výška zobrazení
    int w, h, S;
    //metoda, která vypočítá plochu zobrazení
    slovo oblast()
    {
    S = w*h;
    }
    }

    Máme tedy tři proměnné S, w a h, které jsou zodpovědné za plochu, šířku a výšku displeje v pixelech. Metoda Area() vypočítá plochu obrazovky telefonu v pixelech. Operace je zbytečná, ale velmi objevná a snadno pochopitelná. Tělo metody Area() se našlo a má tvar S = w*h. Při této metodě jednoduše vynásobíme šířku výškou a výsledek přiřadíme nebo, jak se říká, uložíme do proměnné S. Tato proměnná bude obsahovat hodnoty plochy zobrazení tento telefon.

    Nyní jsme se přiblížili operátorům jazyka Java, se kterými můžete provádět nejrůznější operace. Operátoři jazyka Java, stejně jako jiných programovacích jazyků, mají své vlastní účely. Takže existují aritmetické operátory, inkrementační a dekrementační operátory, logické operátory a relační operátory. Pojďme se podívat na každý z výše uvedených operátorů.

    Aritmetické operátory

    Všechny aritmetické operátory jsou velmi jednoduché a jsou podobné operátorům násobení "*", dělení "/", sčítání "+" a odčítání "-" používaných v matematice. Existuje modulo operátor "%" a mírně matoucí situace s operátorem rovná se "=". Operátor rovná se v programovacích jazycích se nazývá operátor přiřazení:

    Zde přiřadíte proměnné x hodnotu 3. A operátor „rovná se“ v programovacích jazycích odpovídá zápisu dvou operátorů „rovná se“ za sebou: „==“. Podívejme se na příklad toho, co dokážou různé aritmetické operátory.

    int x, y, z;
    x=5;
    y=3;
    z = 0;
    z = x + y

    V tomto případě bude z mít již hodnotu součtu x a y, tedy 8.

    Proměnná x měla hodnotu 5, ale po takovém záznamu se předchozí hodnota ztratí a zapíše se součin z*x (8*5), což je 40. Nyní, pokud budeme v našem kódu pokračovat dále, budou proměnné vypadat takhle:

    // x = 40;
    // y = 3;
    // z = 8;

    Operátory sčítání a odčítání mají stejný účel jako v matematice. Záporná čísla také souvisí.

    Operátory dekrementace "--" a inkrementace "++" jsou velmi specifické, ale velmi jednoduché. Při programování často nastanou situace, kdy chcete zvýšit nebo snížit hodnotu o jednu. Často k tomu dochází v cyklech. Operace zvýšení zvýší proměnnou o jednu.

    int x = 5;
    x++;
    // Zde x je již 6

    Operace dekrementace sníží proměnnou o jednu.

    int x = 5;
    X--;
    // x je 4

    Operátory zvýšení a snížení mohou být post a prefix:

    int x = 5;
    int y = 0;
    y=x++;

    Na posledním řádku kódu je nejprve x přiřazeno y, což je 5, a teprve potom je x zvýšeno o jedničku. Ukázalo se, že:

    Přírůstek předpony vypadá takto:

    int x = 3;
    int y = 0;
    y = ++x;

    A v tomto případě je nejprve proměnná x inkrementována o jedničku a poté přiřadí již inkrementovanou hodnotu y.

    Relační operátoři

    Relační operátory umožňují testovat rovnost obou částí výrazu. Existuje operátor rovnosti "==", operátory menší než "<» и больше «>", menší nebo rovno"<=» и больше или равно «>=", stejně jako operátor negace "!=".
    9 == 10;

    Tento výraz není pravdivý, devět se nerovná deseti, takže jeho hodnota pro tento výraz je nepravdivá.

    Zde naopak operátor negace označuje nerovnost výrazu a hodnota bude rovna true. Operátory větší než, menší než, větší nebo rovný a menší než nebo rovný jsou analogické s odpovídajícími operátory z matematiky.

    Logické operátory

    Existují dva logické operátory. Operátor "AND" označený "&&" a operátor "OR" označený dvěma lomítky "||". Existuje například výraz:

    A*B && B*C;

    V případě, že jsou pravdivé pouze obě části výrazu, je hodnota výrazu považována za pravdivou. Pokud je jedna z částí nepravdivá, pak hodnota celého výrazu bude nepravdivá.
    Oproti operátoru „&&“ existuje operátor „||“, kterému se ne nadarmo říká „OR“.

    A*B || PŘED NAŠÍM LETOPOČTEM;

    Pokud je jakákoli část výrazu pravdivá, pak se za pravdivý považuje celý výraz. Oba operátory lze kombinovat v jednom výrazu, například:

    A*B || B*C && C*D || B*A;

    S pomocí tohoto výrazu jsem vás uvedl, jak se mi zdá, do nesnáze, že? Faktem je, že v Javě, stejně jako v matematice, existuje priorita nebo takzvaná hierarchie operátorů, pomocí které se určuje, který z operátorů je důležitější, a proto se kontroluje jako první. Zvažte použití seznamu priorit všech dostupných operátorů v jazyce Java:

    , ., (),
    !, ~, ++, – –, + (unární), – (unární), nový,
    *, /, %,
    +, –,
    <<, >>, >>>,
    <, <=, >, >=,
    = =, !=,
    &, ^, |,
    &&,
    ||,
    ?:,
    =, +=, –=, *=, /=, %=, |=, ^=, <<=, >>=, >>>=.

    Asociativita operátorů v seznamu následuje zleva doprava a shora dolů. To znamená, že vše, co je nalevo a výše, má vyšší hodnost a je důležitější.