Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský rudolf@pecinovsky.cz

Podobné dokumenty
10 Balíčky, grafické znázornění tříd, základy zapozdření

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Seminář Java II p.1/43

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Algoritmizace a programování

Projekty pro výuku programování v jazyce Java

Programování v Javě I. Únor 2009

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v Javě I. Leden 2008

Výčtový typ strana 67

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java)

3. Třídy. Základní pojmy objektového programování. Třídy

Vytváření a použití knihoven tříd

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Reflexe RTTI Runtime Type Identification

1. Programování proti rozhraní

20. Projekt Domácí mediotéka

Quo vadis programování? Automatizace vyhodnocování studentských úloh

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

JAVA Moduly Java, letní semestr 2018

Z. Kotala, P. Toman: Java ( Obsah )

4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ

Vývojové nástroje jazyka Java

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Programátorská příručka

PREPROCESOR POKRAČOVÁNÍ

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo

Objekty strana 11. Abstrakce je základní objektovou vlastností. Skutečnost, kterou chceme do programu promítnout,

Teoretické minimum z PJV

Datové abstrakce v programovacích jazycích

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

PB161 Programování v jazyce C++ Přednáška 7

8 Třídy, objekty, metody, předávání argumentů metod

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

PB161 Programování v jazyce C++ Přednáška 7

Pokud neuvedeme override, vznikne v synu nová (nevirtuální) metoda (a pochopitelně se nezavolá, jak bychom

Programovací jazyk Java

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Cumulant program usnadňující tvorbu série výukových projektů postupně kumulujících funkcionalitu vyvíjeného programu

Objektově orientované programování

Java a XML. 10/26/09 1/7 Java a XML

Remote Method Invocation RMI

Regulární výrazy. Vzory

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

7. Statické prvky třídy

1. Dědičnost a polymorfismus

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Programovací jazyk Java

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Ukazka knihy z internetoveho knihkupectvi

TÉMATICKÝ OKRUH Softwarové inženýrství

Soubor jako posloupnost bytů

9. Polymorfismus a rozhraní

KTE / ZPE Informační technologie

Windows je registrovaná obchodní známka firmy Microsoft v USA a v ostatních zemích.

Dědění, polymorfismus

1. Téma 12 - Textové soubory a výjimky

Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka.

1. ÚVOD ZÁKLADY JAZYKA...

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

Studijní zdroje. Studijní zdroje. Studijní zdroje. Podmínky ukončení předmětu. Vlastnosti a použití jazyka Java. Semestrální projekt

ČÁST 1. Zahřívací kolo. Co je a k čemu je návrhový vzor 33

5. Objektové modelování v Javě

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

knihovna programátora

11. Dědičnost. Dědičnost strana 103

3. Základy programovacího jazyka Java

JAVA. Krátce o Reflection API

Seminář Java IV p.1/38

Objekty, třídy, instance

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

Algoritmizace a programování. Terminálový vstup a výstup

Abstraktní třída a rozhraní

NPRG031 Programování II 1 / :25:46

NMIN201 Objektově orientované programování 1 / :36:09

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Úvodní informace. Petr Hnětynka 2/2 Zk/Z

Java GUI události. Událostmi řízené programování. Zpracování = obsluha událostí

Kurzy, Podrobnější informace najdete na Dotazy a přihlášky můžete posílat na

Algoritmizace a programování

Výchozí a statické metody rozhraní. Tomáš Pitner, upravil Marek Šabo

7.3 Diagramy tříd - základy

Dědičnost (inheritance)

Vývoj a ověřování metodiky výuky programování

Abstraktní datové typy: zásobník

VÝVOJ DISTRIBUOVANÝCH APLIKACÍ V SYSTÉMU PLAANT

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Transkript:

Vaše jistota na trhu IT Balíčky Rudolf Pecinovský rudolf@pecinovsky.cz

Problémy velkých aplikací Rozsáhlé aplikace používají velké množství názvů objektů a jejich zpráv, které různé části programu sdílí V rozsáhlých programátorských týmech se těžko zaručovalo, že někdo z jedné skupiny nezavede objekt se stejným názvem jako někdo z jiné skupiny Pro řešení tohoto problému se v 70. letech začaly používat jmenné prostory V rámci jmenného prostoru je možné používat názvy svobodně, názvy z jiného jmenného prostoru je třeba kvalifikovat názvem jejich jmenného prostoru Jmenné prostory mají hierarchickou stromovou strukturu obdobnou struktuře složek (adresářů) na disku 2

Balíčky v jazyku Java Java zavádí ekvivalent jmenných prostorů pod názvem package balíček, balík Balíček může obsahovat podbalíčky Balíček obsahující podbalíčky označujeme jako rodičovský Podbalíčky označujeme jako dceřiné balíčky či potomky svého rodiče Název balíčku se skládá z názvu rodičovského balíčku následovaného tečkou a vlastním názvem daného balíčku Balíčky standardní knihovny a podbalíčky balíčku java Příklady: java.lang.reflect, java.util.concurrent 3

Balíčky a uložení na disku Při uložení přeložených souborů na disku musí umístění souborů ve složkách odpovídat jejich umístění v balíčku => Každému balíčku je přiřazena jeho složka Složka se musí jmenovat přesně stejně jako daný balíček (včetně velikosti písmen) Podbalíčku daného balíčku je přiřazena podsložka rodičovského balíčku Třída může patřit pouze do jediného balíčku (Pra)rodičovský balíček celého stromu nemá jméno a označujeme jako kořenový balíček Rozbalené balíčky java.lang a java.util 4

Balíčky v jazyku Java Aplikace může mít kořenový balíček umístěný v několika složkách; obsah všech těchto složek je pak považován za obsah kořenového balíčku aplikace Obdobně se slučují obsahy párových složek v různých stromech Seznam složek s kořenovými balíčky je třeba předat překladači a virtuálnímu stroji v proměnné CLASSPATH Vývojová prostředí od této povinnosti osvobozují, informaci vygenerují a dodají sama Na obrázku vpravo je kořenovou složkou standardní knihovny složka C:\Java\JDK.1.5.0\src 5

Příkaz package Zdrojový kód každé třídy musí začínat příkazem package deklarujícím název balíčku, do nějž třída patří; před ním smí být jen bílé znaky a komentáře Příkaz_package: package název_balíčku ; Výjimkou jsou pouze třídy z kořenového balíčku, které příkazem package naopak začínat nesmí Kořenový balíček není plnohodnotný, řada konstrukcí v něm není použitelná používá se proto jen pro rychlé testy proveditelnosti některých nápadů (a v prvních lekcích výuky) 6

Příkaz import 1/2 Název třídy sestává z názvu jejího balíčku následovaného tečkou a vlastním názvem třídy Příklad: java.lang.string (třída String je v balíčku lang, který je podbalíčkem balíčku java, jenž je podbalíčkem kořenového balíčku Uvnitř balíčku se na třídu lze odvolávat jejím vlastním názvem bez kvalifikace názvem jejího balíčku Bez kvalifikace se lze odvolávat i na třídy z balíčku java.lang Při posílání zprávy třídě z jiného balíčku je třeba uvádět její plný název včetně kvalifikace balíčkem (java.util.list) Z předchozího pravidla se lze vylhat uvedením názvu třídy v příkazu import 7

Příkaz import 2/2 Příkaz_import: import název_balíčku. vlastní_název_třídy ; import název_balíčku. * ; Druhá verze příkazu import importuje všechny třídy z daného balíčku Každý příkaz import může importovat pouze jedinou třídu nebo všechny třídy z jediného balíčku Příkaz import musí být uveden na počátku zdrojového kódu, před ním smí být pouze příkaz package nebo jiný import Příklad: import java.io.file; //Třída File z balíčku java.io import java.util.*; //Všechny třídy z balíčku java.util 8

Příklad použití package a import package adventura.rup; import java.util.arrays; import adventura.rámec.abatoh; import adventura.rámec.ahra; import adventura.rámec.amístnost; import adventura.rámec.kroktestu; import adventura.rámec.testhry; /***************************************************** * Instance třídy {@code Hra_RP} představují hru, * při níž se hráč ocitne v malém bytě, který je třeba * projít a najít v něm ledničku. */ public class Hra_RP extends AHra { //== KONSTANTNÍ ATRIBUTY TŘÍDY ======================= 9

Balíčky a BlueJ 1/2 BlueJ považuje každý balíček za samostatný projekt; pro každý balíček tedy otevře samostatné aplikační okno Mezi balíčky/projekty není možné natahovat čáry závislostí ani dědičnosti příslušné informace je třeba zadat ručně přímo do zdrojového kódu Každý balíček/projekt musí mít ve své složce svůj vlastní soubor package.bluej a/nebo bluej.pkg BlueJ původně používal soubor bluej.pkg, ale ten nebylo možno asociovat s aplikací, protože přípona byla již blokována jiným programem. Proto autoři zvolili jinou příponu a soubor s informacemi o vzhledu aplikačního okna a diagramu tříd se nyní jmenuje package.bluej. V zájmu zpětné kompatibility však BlueJ reaguje i na starší soubor. Kořenovým balíčkem/projektem stromu projektů je projekt, v jehož rodičovské složce se již soubor package.bluej ani bluej.pkg nenachází 10

Balíčky a BlueJ 2/2 Balíčky mají v diagramu tříd vlastní ikony připomínající ikony složek Balíček lze vytvořit zadáním příkazu z místní nabídky plochy Balíček lze odstranit zadáním příkazu z místní nabídky balíčku S ikonou rodičovského balíčku není možno nijak hýbat V místní nabídce rodičovského balíčku je seznam názvů rodičovských balíčků až ke kořeni; klepnutím na název se přesuneme do projektu příslušného danému balíčku 11

Příklad 12

Implicitní modifikátor přístupu Vedle modifikátorů přístupu public a private existuje i implicitní modifikátor přístupu, který se uplatní, když žádný modifikátor přístupu neuvedeme Entity s implicitním modifikátorem přístupu jsou viditelné a dosažitelné pouze v rámci daného balíčku Implicitní modifikátor přístupu bývá označován jako package private; je to ale pouze označení pro doprovodné texty, v programu se nijak neoznačuje Zdrojové kódy tříd s implicitním přístupem nemusejí být v souborech, které mají stejné jméno jako třída => těchto tříd může být i několik v jednom souboru Jako neveřejné je vhodné deklarovat opravdu jen třídy určené pro interní potřebu celého daného balíčku 13

Pravidla pro tvorbu balíčků Balíček by měl být jednoúčelový, tj. obsahovat pouze třídy a rozhraní přímo se vážící k řešení stejného problému Název balíčku má být dle konvencí jen malými písmeny U prodávaných aplikací by měl začátek názvu balíčku odpovídat internetové adrese výrobce Kdyby katedra informačních technologií dodávala aplikace, měly by být v podbalíčcích balíčku cz.vse.kit Tato konvence zabezpečí jedinečnost názvu použitých tříd na celém světě (za podmínky, že výrobce zaručí jedinečnost názvu v rámci svého webu) 14

Statický import Java 5.0 zavedla možnost importovat i statické členy jiných tříd a používat je pak bez kvalifikace Statický_import: import static balíček. třída. člen ; import static balíček. třída. * ; Používání statického importu znepřehledňuje program Má smysl pouze u členů, které se používají velice často a u nichž nehrozí vyvolání dojmu, že se jedná o členy dané třídy 15

Vaše jistota na trhu IT Děkuji za pozornost Rudolf Pecinovský http://vyuka.pecinovsky.cz/vse mail: rudolf@pecinovsky.cz ICQ: 158 156 600