Seznam, tabulka, strom
|
|
- Bohumír Mareš
- před 7 lety
- Počet zobrazení:
Transkript
1 Seznam, tabulka, strom RICHARD LIPKA
2 Properties JavaBean třída, která nese data objektu Všechny atributy neveřejné (private) Přístup k atributům přes get (), set (), is () a Bean() metody stejné jméno jako atribut Takový atribut se označuje jako Property (vlastnost) Snadný automatický přístup podle jména (viz CellValueFactory a podobné objekty později) Sousta automaticky generovaného kódu využít prostředky IDE Konstruktor bez parametrů Po vytvoření je objekt neinicializovaný, nutné ho nastavit jeho settry JavaBean by měla být schopna naslouchat událostem a generovat zprávy pro ostatní objekty Observable observer pattern V Jave API pro tvorbu JavaBean java.beans package, javafx.beans package použití v JavaFX
3 JavaFX beany - Property Velmi často použity pro reprezentaci dat (modely) Označovány jako Property slouží jako atributy metod JavaFX Obvykle typováno na data která jsou v Property uložena Mohou mít přiřazené jméno Umožňují sledování svých hodnot, potomek Rozhraní Observable, ObservableValue<T> - manipulace s posluchači, získání hodnoty Rozhraní WritableValue<T> pro zápis a získání hodnoty Rozhraní Property<T> pro binding spojení hodnot dvou objektů Implementace hotové třídy pro všechny základní objekty Property, ReadOnly Property abstraktní Simple Property lze vytvářet instance, má inicializační konstruktory
4 Simple Property Primitivní datové typy typované na příslušný typ SimpleBooleanProperty SimpleDoubleProperty SimpleFloatProperty SimpleIntegerProperty SimpleLongProperty Objekty SimpleStringProperty SimpleObjectProperty nastavení většiny vlastností JavaFX objektů (pozice, zarovnáni, editovatelnost, sloupce tabulky,.) Kolekce typované na typ dat v kolekci SimpleListProperty<E> implementuje ObservableList<E> SimpleMapProperty<K, V> SimpleSetProperty<E>
5 Definice vlastní property (?abstract?) class Account { private DoubleProperty amountdue = new SimpleDoubleProperty(); nejde překrýt potomek ji musí využít public final double getamountdue() { return amountdue.get(); public final void setamountdue(double value){ amountdue.set(value); public DoubleProperty amountdueproperty() { return amountdue;
6 Práce s vlastní property Data zapouzdřena v objektu odvozeném z Simple Property všechny změny prováděny v něm Lze snadnou naslouchat jeho změnám Account personalaccount = new Account(); personalaccount.amountdueproperty().addlistener(new ChangeListener(){ public void changed(observablevalue o, Object oldval, Object newval){ System.out.println( Account has changed!"); );
7 Binding Umožňuje provázat dvě Property, tak aby se změna jedné projevila Základní propojení Metoda bind(observablevalue()) int1.bind(int2) změna int2 se projeví v int1 (stejná hodnota getvalue()) int1 nemohu nastavit jen ukazuje na int2 Property ví jestli je jen svázaná (int1) nebo jestli obsahuje hodnotu (int2) Lze testovat přes isbound() jen int1 je svázaná Obousměrné propojení Metoda bindbidirectional(property) int1.bindbidirectional(int2) mohu měnit int1 i int2 a změna se propaguje oběma směry
8 Skládané objekty High level API Lze vytvářet objekty třídy Bindings, které obsahují automaticky aktualizovaný výsledek vzorce IntegerProperty num1 = new SimpleIntegerProperty(1); IntegerProperty num2 = new SimpleIntegerProperty(2); NumberBinding sum = num1.add(num2); V sum bude vždy součet num1 a num2 sum lze použít pro sestavení dalších vzorců NumberBinding mult = sum.multiply(num2) API obsahuje metody pro všechny základní aritmetické operace
9 Skládané objekty Low level API Pokud nestačí základní aritmetika je možné definovat si vlastní vzorce Sada tříd Binding pro primitivní číselné typy V inicializačním bloku je nutné nastavit všechny Property použité pro výpočet Inicializační blok statický nebo dynamický, dynamický vložen do každého konstruktoru V metodě computevalue() samotný výpočet DoubleProperty a = new SimpleDoubleProperty(1); DoubleProperty b = new SimpleDoubleProperty(2); DoubleBinding db = new DoubleBinding() { { super.bind(a, b, c, d); protected double computevalue() { return (Math.sin(a.get()) * Math.cos(b.get())); ;
10 Seznam (ListView<T>) Zobrazení seznamu Typováno typ položek v modelu který je zobrazován Zobrazuje model Spojen s ObservableList<T> Pro výpis použita metoda tostring() ListView<String> listview = new ListView<String>(); ObservableList<String> items = FXCollections. observablearraylist ("Single", "Double", "Suite", "Family App"); list.setitems(items); Lze nastavit vertikální nebo horizontální podobu
11 Druhy výběru (SelectionModel) Nastavení co je možné vybrat getselectionmodel().setsele ctionmode(selectionmode) SelectionModel.SINGLE SelectionModel.MULTIPLE Získání vybraných prvků getselectionmodel(). getselectedindices() seznam indexů getselecteditems() seznam prvků Vrácené seznamy aktualizované, jen pro čtení
12 Zpracování výběru Od verze 8.40 funguje, opraveno removeall(collection) i s částí téže kolekce V čemkoliv starším se to bude chovat divně musíte provést mazání s kopií ObservableList<Person> selectioncopy = FXCollections.observableArrayList (personview.getselectionmodel().getselecteditems()); Mazání označeného prvku posouvá označení personview.getselectionmodel().clearselection(); Při čtení výběru problémy nejsou
13 Přidávání prvků Vkládat do původní kolekce ListView se aktualizuje automaticky Pokud není dostupná, lze ji získat přes getitems() Metody add(item) add(index, Item) posouvá zbytek kolekce, index musí být uvnitř stávající kolekce addall(collection) vkládání celé další kolekce
14 Buňka Dostane prostor uvnitř seznamu a může ho využít podle sebe Defaultně implementována pomocí Label / TextField Musí rozumět datům které zobrazuje nebo upravuje a být s nimi propojena Defaultně využívá tostring() nebo binding, pokud je to možné Musí umět zobrazit prázdný řádek (doplnit komponentu) Dva režimy Zobrazovací (renderer) vykreslení dat tostring() převádí data do zobrazitelné podoby Editační (editor) úprava dat, vstup od uživatele Je možné data získat z textového / poskytnutého vstupu? Komponenta zajišťuje přepínání režimů, implementace buňky musí zajistit zobrazení Pozor, na akce které přepínání režimů obejdou / nevynutí
15 Buňky (ListCell<T>) Každý řádek je vykreslován jednou buňkou Typovány na obsah, stejně jako ListView Je možné vytvořit vlastní buňku Musí být potomek ListCell, hodí se znát typ dat která má zobrazovat private class MyCell extends ListCell<Person> { public void updateitem(person item, boolean empty) { super.updateitem(item, empty); if (item!= null) { settext(item.getname()); personview.setcellfactory(new Callback<ListView<Person>, ListCell<Person>>() { public ListCell<Person> call(listview<person> param) { return new MyCell(); );
16 Editovatelné buňky (pro String) Připraveno několik typů buněk (CheckBoxListCell, ComboBoxListCell, TextFieldListCell, ) a pro ně továrny Je možné je použít rovnou Má defaultní implementaci pro uložení hodnoty do kolekce, lze překrýt vlastní obsluhou Použití s kolekcí String personview.setcellfactory(textfieldlistcell.forlistview()); personview.seteditable(true); personview.setoneditcommit(event -> personview.getitems().set(event.getindex(), event.getnewvalue())); personview.setoneditcancel(event -> {);
17 Editovatelné buňky Pokud v seznamu není String, lze použít StringConverter<T> Potřebuje metody tostring() i fromstring() personview.seteditable(true); personview.setcellfactory(textfieldlistcell.forlistview (new StringConverter<Person>() { public Person fromstring(string string) { return new Person(string); )); public String tostring(person object) { return object.getname(); Pozor, konvertor nemá referenci na ukládané objekty vytváří nový! Ve vlastní obsluze je možné ho využít k nastavení změněné hodnoty
18 Vlastní buňka CellFactory může vracet libovolnou buňku, může vracet různé buňky podle objektů v seznamu Platí pro seznamy, tabulky i stromy stejné buňky Je potřeba překrýt implementaci public void updateitem(t item, boolean empty)- vznik buňky pro vykreslení Minimálně tohle je třeba překrýt vždy Testovat jestli v item něco je public void startedit() vznik buňky pro editaci Přes setgraphics() lze vložit vlastní uzel provádějící editaci Je třeba zajistit reakci na potvrzení editace (ENTER) volat commitedit(t) public void canceledit() obnovení stavu po editaci Nezapomenout odstranit grafiku editace
19 Tabulka (TableView<S>) Zobrazení strukturovaných dat Vnitřně složena ze sloupců (TableColumn), řádek (TableRow) a buněk (TableCell) Sloupce se dají vnořovat do sebe Model založený na ObservableList<S> Je třeba zajistit mapování sloupců na položky v kolekci Tabulka typována na typ obsahu Lze nastavit table.getselectionmodel().setselectionmode (SelectionMode.MULTIPLE);
20 Sloupce (TableColumn<S, T>) Sloupce se definují při tvorbě tabulky Typovány na typ obsahu tabulky a sloupce TableView table = new TableView(); TableColumn firstnamecol = new TableColumn("First Name"); TableColumn col = new TableColumn(" "); TableColumn first col = new TableColumn("Primary"); TableColumn second col = new TableColumn("Secondary"); col.getcolumns(). addall(first col, second col); table.getcolumns(). addall(firstnamecol, col);
21 Datový model V kolekci musí být objekty s metodami get() a set() pro všechny zobrazované atributy Java Bean neveřejné atributy, veřejné getry a setry, bezparametrický konstruktor, serializovatelné; ideálně Property Nám stačí getry, setry a property Nastavení modelu přes setitems() Pro každý sloupec je třeba nastavit zdroj dat setcellvaluefactory<s, T>(property) firstnamecol.setcellvaluefactory (new PropertyValueFactory<Person, String>("name")); z name automaticky dohledá getname() metodu a využije ji k nastavení hodnoty v buňce (reflexe) Pokud metoda neexistuje, nic se nestane ( těžší hledání chyb)
22 Datový model - ukázka public class Person { private StringProperty name; public Person(String name) { super(); this.name = new SimpleStringProperty(name); public final String getname() { return name.get(); public final void setname(string name) { this.name.set(name);; public StringProperty nameproperty() { return name;
23 Datový model - property Pozorovatelné kdokoliv ví o jejich změnách Property slouží jen jako wrapper kolem skutečných dat Základní property jednoduché (uvnitř jen jedna proměnná) Složitější s objektovými property SimpleObjectProperty<T> Wrapper kolem objektu T Reaguje jen na vložení nového objektu SimpleListProperty<T> Potřebuje v konstruktoru dostat ObservableList<T> s prvky T Reahuje jen na vložení dat do seznamu, ne na změny dat uvnitř T
24 Řazení ve sloupci Tabulka automaticky řadí data ve sloupcích Po kliknutí na záhlaví sloupce Přirozené řazení, podle typu dat ve sloupci Řazení lze ovlivnit setsortable(false) zakáže / povolí řazení setsorttype(tablecolumn.sorttype.descending) nastavení směru řazení Sloupci lze nastavit komparátor setcomparator(comparator<t>) Má přístup jen k datům sloupce tomu co získá z CellValueFactory Nahrazuje výchozí komparátor
25 Chování tabulky Rozšiřování Tabulka umí vyplnit dostupný prostor tabletv.setcolumnresizepolicy( TableView.CONSTRAINED_RESIZE_POLICY); UNCONSTRAINED_RESIZE_POLICY Lze si napsat vlastní ResizePolicy nutné pro každý sloupec sestavit ResizeFeature<S> s jeho velikostí většinou stačí výchozí policy Řazení celé tabulky Lze provádět přes řazení kolekce FXCollections.sort(tableView.getItems()) Lze nastavit styl řazení (setsortpolicy()) Callback ve kterém se vyvolá řazení Užitečné pokud má řazení zajistit někdo jiný (databáze)
26 Editace buněk Funguje podobně jako u ListView Nutné nastavit buňky podporující editaci firstnamecol.setcellfactory (TextFieldTableCell.forTableColumn()); Nastavení obsluhu při úpravě buňky (není nutné při použití property) firstnamecol.setoneditcomit(event -> { ((Person) event.gettableview().getitems().get( event.gettableposition().getrow()) ).setname(event.getnewvalue()); ); Pozor, bez nastavení obsluhy se změna sice propaguje do buňky (u předem připravených buněk), ale ne do modelu Pozor, lambda výrazy fungují jen pokud jsou sloupce důsledně typovány (event je typu <CellEditEvent<Person, String>> )
27 Existující buňky (potomci TableCell) Potomci IndexedCell Lze získat index (pořadí v kolekci) getindex() Pro sudost a lichost také rozhraní Stylable getpseudoclassstates().contains (PseudoClass.getPseudoClass("even")) (PseudoClass.getPseudoClass("odd")) Existující buňky a továrny CheckBoxTableCell ChoiceBoxTableCell ComboBoxTableCell ProgressBarTableCell TextFieldTableCell Obecně typované nemusí zobrazovat String, ale jakýkoliv objekt (stejný typ jako sloupec!) U textových je možné nastavit StringConverter, u seznamů seznam položek (tovární metoda fortablecolumn()) Updatují automaticky editor a renderer, ale ne datový model!
28 Vytvoření vlastní buňky Potomek TableCell<S, T> Rovnou typovat na data která má zobrazovat (může být napsána obecně - složitější) Vždy má textové pole pro zobrazení řetězce (Label) Spojena se zobrazovaným prvkem (getitem()) 2 režimy editační a zobrazovací TableCell umí zajistit přepínání Zajistit zobrazení vlastních komponent typicky má privátní editor a renderer (nebo jen editor) Je třeba zajistit Načtení dat z modelu Zobrazení správné komponenty v obou režimech Nastavení dat do editační a zobrazovací komponenty Propagaci dat z buňky do modelu
29 Kostra buňky Vlastní editor a obsluha jeho událostí rozhodnutí o commit a cancel public class TextFieldCell extends TableCell<Person, String>{ private TextField texttf; private void createeditor() { texttf = new TextField(); texttf.setonkeyreleased(event -> { if (event.getcode() == KeyCode.ENTER) { commitedit(texttf.gettext()); else if (event.getcode() == KeyCode.ESCAPE) { canceledit(); );
30 Vlastní buňka přepnutí režimů public void startedit() { super.startedit(); if (texttf == null) { createeditor(); settext(null); texttf.settext(createeditorcontent()); setgraphic(texttf); public void canceledit() { super.canceledit(); settext(createcontent()); setgraphic(null); private String createcontent() { return getindex() + " : " + getitem(); private String createeditorcontent() { return getitem();
31 Vlastní buňka - update public void updateitem(string item, boolean empty) { super.updateitem(item, empty); if (empty) { settext(null); setgraphic(null); else { if (isediting()) { if (texttf!= null) { texttf.settext(createeditorcontent()); settext(null); setgraphic(texttf); else { settext(createcontent()); setgraphic(null);
32 Vlastní továrna Rozhraní Callback<P, R> P parametr metody call(p) R návratový typ metody R call(p) Správně typovat P sloupec tabulky (TableColumn<RowData, CellData>) R buňka tabulky (TableCell<RowData, CellData>) namecolumn.setcellfactory (new Callback<TableColumn<Person,String>, TableCell<Person,String>>(){ public TableCell<Person, String> call (TableColumn<Person, String> column) { return new TextFieldCell(); ); namecolumn.setcellfactory(column -> {return new TextFieldCell(); );
33 Událost CellEditEvent<E, T> Typována na Položku tabulky (E), typ buňky / sloupce (T) Vzniká při Potvrzení editace (setoneditcomit()) Zrušení editace (setoneditcancel()) pokud jsou buňky editovatelné, je nutné na ni reagovat v obsluze uložit data do modelu Obsahuje Kde došlo k editaci - gettableposition(), v ní getrow(), getcolumn() Starou (getoldvalue()) a novou (getnewvalue()) hodnotu buňky (získanou při potvrzení commitu), aktuální hodnotu řádky (getrowvalue()) Tabulku kde došlo k události (gettableview())
34 Uložení dat do modelu Obsluha události CellEditEvent<E, T> Metoda setoneditcommit() (buňka nemá referenci na celý řádek, ale jen na svou hodnotu) namecolumn.setoneditcommit(event -> { comitname(event); ); private void comitname(celleditevent<person, String> event) { tabletv.getitems().get (event.gettableposition().getrow()).setname(event.getnewvalue()); // nebo event.getrowvalue(). setname(event.getnewvalue());
35 Manipulace s daty Přidávání do kolekce modelu Lze získat přes getitems() Tabulka automaticky aktualizována Získání vybraných dat selection = table.getselectionmodel().getselecteditems(); Mazání stejné jako u seznamu (probíhá nad kolekcí nezáleží na tom jestli jde o tabulku) Řádky Kontejner TableRow v sobě má buňky jednoho řádku, obvykle stačí výchozí Kontextové menu Dá se nastavit pro celou tabulku nebo pro každý sloupec zvlášť Vypočtené sloupce Data lze vytvářet v tovární metodě, v datovém modelu (získat přes get ()) nebo přes binding sestavení vlastní vypočtené property
36 Získání dat bez getrů Nutné vytvořit si vlastní továrnu na tvorbu dat Musí vracet implementaci ObservableValue<ColumnType> - obalové objekty Property<> pro všechny datové typy namecolumn.setcellvaluefactory( new Callback<TableColumn.CellDataFeatures<Person,String>, ObservableValue<String>>() { public ObservableValue<String> call (CellDataFeatures<Person, String> param) { return new SimpleStringProperty(param.getValue().getName()); ); namecolumn.setcellvaluefactory(celldata -> { return new SimpleStringProperty(cellData.getValue().getName()); ); CellDataFeatures<RowType, ColumType> obaluje hodnotu v jednom řádku, reference na tabulku, sloupec a data RowType getvalue()
37 Vypočtený sloupec connectednamecolumn.setcellvaluefactory(value -> new StringBinding() { { super.bind(value.getvalue().nameproperty(), protected String computevalue() { return value.getvalue().nameproperty().getvalue() + " " + value.getvalue().surnameproperty().getvalue(); );
38 Strom (TreeView<T>) Zobrazení stromových dat Složen z TreeItem<T> Jen obaluje uživatelský typ T není nutné řešit zařazení prvku do stromu Není Node, jen tvoří logickou strukturu stromu Ve stromu TreeCell<T> Sestavení podobné jako u grafu scény Jeden kořen Prvky mají potomky getchildren(), jako kolekci prvků stromu
39 Sestavení stromu Je nutné vytvořit dopředu alespoň kořenový uzel TreeItem<String> rootnode = new TreeItem<String>("MyTree"); TreeView<String> treeview = new TreeView<String>(rootNode); Další uzly je možné přidávat jako potomky getchildren().add() nebo addall() Uzly je možné programově expandovat rootnode.setexpanded(true) Expanduje se TreeItem, ne TreeCell! Uzel vykreslen přes tostring() metodu obalovaného objektu S každým prvkem stromu může být spojen Node vykreslí se před jeho popis
40 Zpracování prvků Podobné jako v seznamu Lze nastavit režim výběru pozor při výběru více prvků mohou být na různých místech ve stromu getselectionmodel().getselecteditems() vrací kolekci prvků typováno na <TreeItem<T>>, ne na samotné T Vkládat potomky za vybrané prvky jde snadno Stačí přidat jako jeho děti Mazání je složité Strom není jednoduchá kolekce nemá nic jako removeall(), to funguje jen u jednotlivých uzlů
41 Editace buněk Funguje podobně jako u seznamu Pokud je strom sestaven ze String, funguje automatická editace treeview.seteditable(true) treeview.setcellfactory(textfieldtreecell.fortreeview()) Pro primitivní datové typy se model sám aktualizuje Pro jiné objekty ve stromu je třeba použít vlastní TreeCell<T> Nastavit přes CellFactory Překrýt updateitem() zobrazení dat startedit() vytvoření editoru, obsluha ukončení editace (ENTER, ESC) canceledit() návrat do zobrazovacího režimu Nastavit obsluhu setoneditcommit() nebo ukládat data do modelu přímo v buňce (přes getitem())
42 Existující buňky Podobné jako u seznamu CheckBoxTreeCell ChoiceBoxTreeCell ComboBoxTreeCell TextFieldTreeCell Textové buňky mohou mít StringConverter<T> Nastaven jako parametr fortreeview() Výběrové buňky mohou mít ObservableList<T> Nastaven jako parametr fortreeview() Podobně jako u tabulky lze zjistit index (getindex(), je to potomek IndexedCell) Pořadí mezi aktuálně rozbalenými buňkami není stálý! Mění se i jestli je buňka odd nebo even
43 Naslouchání událostem Stačí poslouchat na kořeni stromu Je nežádoucí poslouchat na každém TreeItem TreeItem nemá seton metody Pro naslouchání addeventhandler(eventtype, EventHandler) Události: TreeItem.valueChangedEvent TreeItem.treeItemCountChangedEvent TreeItem.branchExpandedEvent() TreeItem.branchCollapsedEvent()
44 Vlastní CellFactory treeview.setcellfactory( new Callback<TreeView<String>, TreeCell<String>>(){ public TreeCell<String> call(treeview<string> p) { ); return new TextFieldTreeCellImpl(); Využívá rozhraní Callback<P, R> P typ parametru volané metody R typ návratové hodnoty treeview.setcellfactory(treev -> {return new TextFieldTreeCellImpl(); );
45 Porovnávání potomků Lze řadit potomky v jednom uzlu Potomci jsou v ObservableList(), ten má metodu sort(comparator) Parametr sort() může být null, pokud jsou prvky Comparable Bohužel TreeItem<Item> není Comparable a nedeleguje compareto() na svůj Item implementovat vlastní TreeItem jako potomka nebo napsat komparátor Pokud jsou Item porovnatelné, je to snadné parent.getchildren().sort((item1, item2) -> { return item1.getvalue().compareto(item2.getvalue()); );
46 Vlastní buňka TreeCell<T> class TextFieldTreeCellImpl extends TreeCell<String> { private TextField textfield; public void startedit() { super.startedit(); if (textfield == null) { createtextfield(); settext(null); setgraphic(textfield); textfield.selectall(); public void canceledit() { super.canceledit(); settext((string) getitem()); setgraphic(gettreeitem().getgraphic());
47 Vlastní buňka TreeCell<T> private void createtextfield() { textfield = new TextField(getString()); textfield.setonkeyreleased(new EventHandler<KeyEvent>() { public void handle(keyevent t) { if (t.getcode() == KeyCode.ENTER) { commitedit(textfield.gettext()); else if (t.getcode() == KeyCode.ESCAPE) { canceledit(); );
48 Vlastní buňka TreeCell<T> public void updateitem(string item, boolean empty) { super.updateitem(item, empty); if (empty) { settext(null); setgraphic(null); else { if (isediting()) { if (textfield!= null) { textfield.settext(getstring()); settext(null); setgraphic(textfield); else { settext(getstring()); setgraphic(gettreeitem().getgraphic());
49 Reakce na změnu výběru Hodí se při aktualizaci komponent s doplňující informací Výběr je kolekce ObservableList<T>, je třeba reagovat na změnu jejího obsahu Společné pro všechny komponenty umožňující výběr Dvě metody addlistener() nutné uvést typ parametru ancestortrv.getselectionmodel().getselecteditems(). addlistener((listchangelistener.change <? extends TreeItem<Ancestor>> change) -> { dosomething(); ); ListChangeListener.Change obsahuje informace o provedené změně (jaké prvky byly přidány)
50 Tabulka TreeTableView<S> Kombinace tabulkového a stromového zobrazení První sloupec se chová jako strom je možné v něm rozbalovat a sbalovat uzly musí fungovat jako klíč ke stromu Datový model je stejný jako u stromu Může obsahovat složitý objekt Jednotlivé vlastnosti mohou být ve sloupcích tabulky Lze vybírat celé řádky nebo jednotlivé buňky
51 Sloupce TreeTableColumn<S, T> Podobný jako sloupec tabulky S typ dat v řádku T typ dat ve sloupci Stejně jako u tabulky může mít podsloupce Stejně jako u tabulky funguje řazení podle sloupců Datový model není 1 kolekce data se řadí jen v rámci uzlů Řazení celého stromu lze omezit jen na prvky první úrovně
52 Data pro sloupec Nutné nastavit setcellvaluefactory(), jako u tabulky Pokud jsou v modelu beany (mají setry a getry), lze použít TreeItemPropertyValueFactory column.setcellvaluefactory( new TreeItemPropertyValueFactory<Employee, String>("property")); Pokud chci hodnotu určit sám, musím továrnu vytvořit Musí vracet data zabalená do ObservableItem<ColumnType> ReadOnlyStringWrapper, SimpleStringProperty, column.setcellvaluefactory( (TreeTableColumn.CellDataFeatures<Employee, String> param) -> { return new ReadOnlyStringWrapper (param.getvalue().getvalue().get ()); );
53 Buňky Datový model sestaven z TreeItem<RowType> Stejná třída jako u TreeView Potomci musí být stejného typu trochu složitější vytvořit heterogenní strom Buňky jsou potomci TreeTableCell<RowType, CellType> Existují ekvivalenty všech buněk pro TableView Nové buňky a továrny na buňky lze vytvářet stejně jako u TableView (včetně zpracování obsluh při editaci) Při editaci nutné uložit změny do modelu empcolumn.setoneditcommit(event -> { event.gettreetableposition().gettreeitem(). getvalue(). setname(event.getnewvalue()); );
54 Heterogenní strom Nelze mít různé typy uzlů ve stromu má taková komponenta smysl? Lze vytvořit hierarchickou strukturu (např. oddělení a zaměstnanci) se stejným typem vyplním jen jméno (první sloupec) a ostatní data nechám prázdná Potřebuji zajistit aby byly prázdné i kolonky v cellvaluefactory upravím získání hodnoty když vrátí null, buňka nic nezobrazí (pozor na vlastní buňky) column.setcellvaluefactory(param -> { if (param.getvalue().getvalue().ishierarchy()) { return null; else return new ReadOnlyStringWrapper (param.getvalue().getvalue().getdata()); );
55 Vybraná data Lze nastavit mnohonásobný výběr treetableview.getselectionmodel(). setselectionmode(selectionmode.multiple); Přes getselecteditems() lze získat kolekci vybraných TreeItem<RowType> Lze povolit výběr jednotlivých buněk (funguje i u TableView) treetableview.getselectionmodel(). setcellselectionenabled(true); Metoda getselecteditems() opět vrací všechny vybrané řádky Metoda getselectedcells() vrací kolekci TreeTablePositions<RowType, CellType> ze které jde získat číslo řádku a sloupce buňky a TreeItem<RowType> z příslušného řádku
56 Děkuji za pozornost OTÁZKY? NÁZORY, PŘIPOMÍNKY? PŘÍŠTĚ: FXML, CSS, TOK UDÁLOSTÍ V APLIKACI
UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/
UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok
Generické programování
Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =
Bridge. Známý jako. Účel. Použitelnost. Handle/Body
Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době
Zapouzdření. Tomáš Pitner, upravil Marek Šabo
Zapouzdření Tomáš Pitner, upravil Marek Šabo Co je zapouzdření Naprosto zásadní vlastnost objektového přístupu, možná nejzásadnější Jde o spojení dat a práce s nimi do jednoho celku - objektu Data jsou
typová konverze typová inference
Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie
Výčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
Dynamicky vázané metody. Pozdní vazba, virtuální metody
Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:
Semestrální práce 2 znakový strom
Semestrální práce 2 znakový strom Ondřej Petržilka Datový model BlockFileRecord Bázová abstraktní třída pro záznam ukládaný do blokového souboru RhymeRecord Konkrétní třída záznamu ukládaného do blokového
Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39
Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy
20. Projekt Domácí mediotéka
Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý
Java - řazení objektů
Java - řazení objektů Kapitola seznamuje se základními principy řazení objektů Klíčové pojmy: Přirozené řazení, absolutní řazení, ideální porovnávatelná třída ŘAZENÍ OBJEKTŮ U objektů není příliš jasné,
14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Java a XML. 10/26/09 1/7 Java a XML
Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis
8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
IRAE 07/08 Přednáška č. 1
Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní
Dědění, polymorfismus
Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá
GUI. JavaFX. Java UI, letní semestr 2017/2018 1
GUI JavaFX 1 Přehled Java GUI Java 1.0 (1996) AWT použití nativních GUI komponent Java 1.2 (2000) Swing kompletní GUI v Javě JavaFX (2007) nová technologie běžící nad Java VM ale vlastní jazyk deklarativní
Teoretické minimum z PJV
Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov
Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí
Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků
1. Téma 12 - Textové soubory a výjimky
1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
NPRG031 Programování II 1 / :25:46
NPRG031 Programování II 1 / 26 28. 2. 2018 11:25:46 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat jiné objekty
NMIN201 Objektově orientované programování 1 / :36:09
NMIN201 Objektově orientované programování 1 / 26 8.10.2013 15:36:09 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat
OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC
OMO 4 - Creational design patterns A Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC Ing. David Kadleček, PhD. kadlecd@fel.cvut.cz, david.kadlecek@cz.ibm.com 1 Creational
11.5.2012. 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
Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií
11 Diagram tříd, asociace, dědičnost, abstraktní třídy
11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,
Abstraktní datové typy: zásobník
Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní
KTE / ZPE Informační technologie
4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší
Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako.
Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako. Otevře se tabulka, v které si najdete místo adresář, pomocí malé šedočerné šipky (jako na obrázku), do kterého
Kolekce, cyklus foreach
Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro
boolean hasnext() Object next() void remove() Kolekce
11. Kontejnery Kontejnery Kontejnery jako základní dynamické struktury v Javě Kolekce, iterátory (Collection, Iterator) Seznamy (rozhraní List, třídy ArrayList, LinkedList) Množiny (rozhraní Set, třída
Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý
Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části
Jazyk C# (seminář 6)
Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí
Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo
Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)
Programování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant
KOMPONENTY APLIKACE TreeINFO Petr Štos ECM Business Consultant CO JE TO APLIKACE TreeINFO Sada komponent Komponenty rozšiřující sloupce Komponenty rozšiřující pohledy na data Aplikační části Využití jednotlivě
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 25. Otázka : Komponentní technologie - základní pojmy a principy, metody specifikace komponent. Obsah : 1. Základní pojmy 1.1 Komponenta Komponenta
Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.
23. Třídy, generické třídy, instance, skládání, statické metody a proměnné. Zapouzdření, konstruktory, konzistence objektu, zpřístupnění vnitřní implementace, modifikátory public a private. Polymorfismus,
Generické typy. Podrobněji: The Java Language Specification ( Third Edition ) , 18
Generické typy jsou třídy či interfejsy deklarující tzv. typové parametry jimiž: - systematizují typovou kontrolu kompilátorem, - vyjadřují jasněji smysl, zlepšují čitelnost a robustnost programu, - ulehčují
Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky
Google Web Toolkit Martin Šurkovský, SUR096 Vysoká škola Báňská - Technická univerzita Ostrava Katedra informatiky 29. března 2010 Martin Šurkovský, SUR096 (VŠB - TUO) Google Web Toolkit 29. března 2010
NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
NetBeans platforma Aplikační programování v Javě (BI-APJ) - 7 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme
Programování v Javě I. Leden 2008
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory
Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
Abstraktní třída a rozhraní
Abstraktní třída a rozhraní Někdy se může stát, zejména při psaní v hierarchické struktuře hodně nadřazených tříd, že tušíme, že bude ve zděděných třídách vhodné použít nějakou metodu. Tuto metodu ještě
Programování v Javě I. Únor 2009
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory
Algoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová
1. Programování proti rozhraní
1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní
Seminář Java IV p.1/38
Seminář Java IV Seminář Java IV p.1/38 Rekapitulace Deklarace tříd Proměnné, metody, konstruktory, modifikátory přístupu Datové typy primitivní, objektové, pole Dědičnost Řídící konstrukce Podmínky, cykly
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.
1 Grafické rozhraní Studijní cíl Tento blok je věnován vytváření programů s využitím grafického rozhraní (GUI). Vysvětlen bude základní filozofie pro vytváření aplikací s GUI ve srovnání s konzolovými
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
1. Dědičnost a polymorfismus
1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář
Základy objektové orientace I. Únor 2010
Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných
Technologie JavaBeans
Technologie JavaBeans doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Historie Komponentový model Typy komponent
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
Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro
Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15
Platforma Java Objektově relační mapování II Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, 2016 1 / 15 Dotazování vyhledání objektu podle
Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy
Základní pojmy Stromy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Graf uzly hrany orientované / neorientované Souvislý
Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců.
Přehledy pro Tabulky V programu CONTACT Professional 5 naleznete u firem, osob a obchodních případů záložku Tabulka. Tuto záložku lze rozmnožit, přejmenovat a sloupce je možné definovat dle vlastních požadavků
TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);
TŘÍDY POKRAČOVÁNÍ Události pokračování public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); class Bod private int x; private int y; public event ZmenaSouradnicEventHandler ZmenaSouradnic;
Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo
Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.
KMI / TMA Tvorba mobilních aplikací. 9. seminář ZS 2016/2017 Středa 13:15-15:45
KMI / TMA Tvorba mobilních aplikací 9. seminář 22.11.2016 ZS 2016/2017 Středa 13:15-15:45 OBSAH SEMINáře Fragmenty a to, co se nevlezlo jinam Větší Displeje je třeba něco dělat? většina aplikací, které
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená
Mediator motivace. FontDialog. závislosti mezi jednotlivými ovládacími prvky jsou netriviální
Mediator Mediator motivace FontDialog závislosti mezi jednotlivými ovládacími prvky jsou netriviální Mediator - motivace zná pomůcky, koordinuje interakce místo distribuce chování do jednotlivých pomůcek
IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33
Objekt jako proměnná Objekty a metody Objekt = proměnná referenčního typu vznik pomocí new, chování viz pole jako referenční proměnná minulý semestr Stack Heap objekt ref this 10 20 atr1 atr2 jinyobjekt
Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
Dynamické datové struktury I.
Dynamické datové struktury I. Seznam. Fronta. Zásobník. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz
Vstupní požadavky, doporučení a metodické pokyny
Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem
Tvorba informačních systémů
Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních
public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());
Anotace a Hibernate Aleš Nosek, Ondřej Vadinský, Daniel Krátký Anotace v Javě Anotace jsou novinkou v Javy verze 5. Anotace umožňují doplnit kód Javy o dodatečné informace. Zapisují se přímo do zdrojového
Programování v C++ 3, 3. cvičení
Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového
Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13
Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 KAPITOLA 1 Na úvod o Javě 15 Počítačový program 15 Vysokoúrovňový programovací
Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010
Student s Life Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010 Model Specification Page: 2 Obsah Model architektury... 3 Návrhový model... 3 Bussines
JAVA JavaBeans Java, letní semestr 2018
JAVA JavaBeans Komponenty přehled komponenta znovupoužitelný kus kódu charakterizována službami, které poskytuje a požaduje není přesná definice komponentové modely JavaBeans Enterprise JavaBeans (EJB)...
Programování v jazyku C# II. 5.kapitola
Programování v jazyku C# II. 5.kapitola Obsah O ADO.NET Spojení s DB Příkazy Jednoduché čtení DataSet 2/28 ADO.NET ADO - ActiveX Data Object Orientováno na webové aplikace neexistence stavu v HTTP Obecný
Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář
Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění
Základní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
První kapitola úvod do problematiky
První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru
Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec
StatSoft Vzorce Jistě se Vám již stalo, že data, která máte přímo k dispozici, sama o sobě nestačí potřebujete je nějak upravit, vypočítat z nich nějaké další proměnné, provést nějaké transformace, Jinak
Programování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
PŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
Uživatelský manuál aplikace. Dental MAXweb
Uživatelský manuál aplikace Dental MAXweb Obsah Obsah... 2 1. Základní operace... 3 1.1. Přihlášení do aplikace... 3 1.2. Odhlášení z aplikace... 3 1.3. Náhled aplikace v jiné úrovni... 3 1.4. Změna barevné
Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth
Evropský sociální fond. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace Ing. Ondřej Guth Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze
Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4
Fronta (Queue) Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Fronta uplatňuje mechanismus přístupu FIFO first
Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica
Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová 5. Statistica StatSoft, Inc., http://www.statsoft.com, http://www.statsoft.cz. Verze pro Mac i PC, dostupná
Zpravodaj. Uživatelská příručka. Verze
Zpravodaj Uživatelská příručka Verze 02.01.02 1. Úvod... 3 2. Jak číst tuto příručku... 4 3. Funkčnost... 5 3.1. Seznam zpráv... 5 4. Ovládání programu... 6 4.1. Hlavní okno serveru... 6 4.2. Seznam zpráv...
Vytváření a použití knihoven tříd
Vytváření a použití knihoven tříd doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Prostory jmen motivace spolupráce
Komponenty v.net. Obsah přednášky
doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Rozdíl mezi COM a.net Distribuce komponent Programování
Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5
Rejstřík Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5 Úvod Správcovská aplikace slouží k vytvoření vstupního a zašifrovaného souboru pro odečtovou
Programátorská příručka
KAPITOLA 1. PROGRAMÁTORSKÁ PŘÍRUČKA Kapitola 1 Programátorská příručka 1.1 Úvod 1.1.1 Technologie Program je psaný v jazyce Java 1.7. GUI je vytvářeno pomocí knihovny SWT. (http://eclipse.org/swt/) Pro
ZSF web a intranet manuál
ZSF web a intranet manuál Verze pro školení 11.7.2013. Návody - Jak udělat...? WYSIWYG editor TinyMCE Takto vypadá prostředí WYSIWYG editoru TinyMCE Jak formátovat strukturu stránky? Nadpis, podnadpis,
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
43 HTML šablony. Záložka Šablony v systému
43 HTML šablony Modul HTML šablony slouží ke správě šablon pro výstupy z informačního systému modularis ve formátu HTML. Modul umožňuje k šablonám doplňovat patičku, dokumentaci a vázat šablony na konkrétní
Využití OOP v praxi -- Knihovna PHP -- Interval.cz
Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího
JAVA. Další jazyky kompilovatelné do Java byte-code
JAVA Další jazyky kompilovatelné do Java byte-code Přehled Scala objektový a funkcionální jazyk Closure funkcionální jazyk dialekt Lispu Groovy skritpovací jazyk Kotlin nová Java Jython Java implementace
Tabulkový procesor. Základní rysy
Tabulkový procesor Tabulkový procesor je počítačový program zpracovávající data uložená v buňkách tabulky. Program umožňuje použití vzorců pro práci s daty a zobrazuje výsledné hodnoty podle vstupních
5 Rekurze a zásobník. Rekurzivní volání metody
5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení
VKLÁDÁNÍ OBJEKTŮ - tabulka
VKLÁDÁNÍ OBJEKTŮ - tabulka Autor: Mgr. Dana Kaprálová Datum (období) tvorby: srpen 2013 Ročník: šestý Vzdělávací oblast: Informatika a výpočetní technika 1 Anotace: Žák se orientuje v prostředí aplikace
WR Reality. Web Revolution. Uživatelský manuál administračního rozhraní
WR Reality Web Revolution Uživatelský manuál administračního rozhraní Web Revolution s. r. o. 2010 WR Reality Administrace uživatelský manuál Praktický průvodce administrací webové aplikace WR Reality