P íklad t íd geometrických objekt a jejich vizualizace
|
|
- Bohumír Havlíček
- před 6 lety
- Počet zobrazení:
Transkript
1 P íklad t íd geometrických objekt a jejich vizualizace Ji í Vok ínek Katedra po íta Fakulta elektrotechnická ƒeské vysoké u ení technické v Praze P edná²ka 2 B6B36PJV Programování v JAVA Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 1 / 47
2 P íklad t íd geometrických objekt a jejich vizualizace Zadání Popis výchozích rozhraní a t íd Návrh e²ení Implementace P íklad pouºití Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 2 / 47
3 ƒást I P íklad geometrických objekt a jejich vizualizace Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 3 / 47
4 Zadání problému Cílem je vytvo it datovou reprezentaci základních geometrických objekt (bod, úse ka, kruºnice,... ) a rela ních operací nad t mito objekty, nap. zdali se n který objekt nachází uvnit jiného objektu Dále chceme objekty um t vizualizovat v rastrovém obrázku P íklad: zobrazení v²ech objekt uvnit kruºnice erven Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 4 / 47
5 Co je k dispozici Elementární rozhraní pro bod v rovin Coords Zobrazení: Rozhraní plátna (Canvas) a základní implementace realizována polem polí ( ArrayBackedCanvas) Základní rasteriza ní funkce pro vykreslení úse ky a kruºnice na m íºce (GridCanvasUtil) Rozhraní pro zobrazitelné objekty Printable Rozhraní pro uchování zobrazitelných objekt ObjectHolder a jeho základní implementace ObjectHolderImpl Elementární geometrické funkce pro testování, zdali jsou t i body kolineární a jestli bod leºí na úse ce (GeomUtil) Implementace je sou ástí knihovny gui.jar Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 5 / 47
6 Rozhraní Coords Bod v rovin je dán sou adnicemi x a y Rozhraní je dostate né obecné, abychom jej mohli pouºít jak pro geometrický bod, tak pro pozici v m íºce obrázku Pot ebujeme um t vytvo it bod a p e íst hodnoty x a y public interface Coords { public int getx(); public int gety(); public Coords createcoords(int x, int y); Pro jednoduchost uvaºujeme pouze celá ísla Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 6 / 47
7 Rozhraní Canvas Plátno (canvas) má své rozm ry, které pot ebujeme znát Nap íklad abychom nevykreslovali mimo rozsah rastrového obrázku! Kreslení do rastrového obrázku nám posta í pouze zm na barvy pixelu na p íslu²ném polí ku Pro barvu vyuºijeme t ídy Color z JDK import java.awt.color; public interface Canvas { public int getwidth(); public int getheight(); public void setcolorat(int x, int y, Color color); Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 7 / 47
8 Rozhraní Printable Od rozhraní Printable poºadujeme pouze jedinou vlastnost a to um t se vykreslit na plátno (Canvas) public interface Printable { public void printtocanvas(canvas canvas); Zp sob jakým se objekt vykreslí je závislý na konkrétním geometrickém objektu Zde ne e²íme a ani nem ºeme, protoºe nevíme jaké geometrické objekty budou denovány. Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 8 / 47
9 Rozhraní ObjectHolder Rozhraní ObjectHolder deklaruje metody pro p idání objektu a vykreslení v²ech uloºených objekt public interface ObjectHolder { public ObjectHolder add(printable object); public void printtocanvas(canvas canvas); Po adí vykreslení v rozhraní ne e²íme Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 9 / 47
10 Základní implementace ObjectHolderImpl Pro jednoduchou implementaci vysta íme s p ed alokovaným polem pro uloºení zobrazitelných objekt public class ObjectHolderImpl implements ObjectHolder { private final Printable[] objects; private int size; // the number of stored objects public ObjectHolderImpl(int max) { objects = new Printable[max]; size = public ObjectHolder add(printable object) { if (object!= null && size < objects.length) { objects[size++] = object; return public void printtocanvas(canvas canvas) { for (int i = 0; i < size; ++i) { objects[i].printtocanvas(canvas); Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 10 / 47
11 Knihovna rasteriza ních funkcí GridCanvasUtil Vyuºijeme rozhraní Coords Metody p edstavují sadu utilit, proto volíme statické metody public class GridCanvasUtil { private GridCanvasUtil() { // library, no instance allowed /** * Bresenham's line algorithm to raster a straight-line segment into a grid * * p0 p1 array of Coords representing rasterized segment from p0 to p1 */ public static Coords[] drawgridline(coords p0, Coords p1) {... public static Coords[] drawgridcircle(coords ct, int radius) {... Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 11 / 47
12 Knihovna geometrických funkcí GeomUtil Podobn pro geometrické funkce v rovin public class GeomUtil { private GeomUtil() { /** * Compute the winding number * a point forming a line b point forming a line c testing point for the wind number 0 if c is on the line a-b, <0 if c is on the left of the line * a-b, >0 if c is on the right of the line a-b */ public static int wind(coords a, Coords b, Coords c) {... /** * a b c true if point c is in between points a and b */ public static boolean inbetween(coords a, Coords b, Coords c) {... Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 12 / 47
13 Jednoduchá realizace plátna ArrayBackedCanvas Plátno je dvourozm rné pole barev public class ArrayBackedCanvas implements Canvas { private final int width, height; private final Color[][] canvas; public ArrayBackedCanvas(int width, int height) { this.width = width; this.height = height; canvas = new Color[width][height]; clearcanvas(color.white); public void clearcanvas(color color) public void setcolorat(int x, int y, Color color) { canvas[x][y] = color; public void writetofile(string filename) throws IOException {... private BufferedImage generatebufferedimage() {... Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 13 / 47
14 Návrh e²ení e²ení zaloºíme na rozhraní z balíku gui.jar jehoº implementace nám zajistí, ºe bude moci pouºít plátno pro zobrazení geometrických objekt Zárove se pokusíme odd lit vizualizaci od vlastních geometrických operací, proto se nejd íve zam íme na geometrické objekty Geometrické objekty v²ak anotujeme barvou Tedy, kaºdý geometrický objekt má krom svého popisu také barvu Postup návrhu 1. Návrh hierarchie t íd geometrických objekt 2. Návrh testovací funkce pro ov ení funk nosti 3. Roz²í ení návrhu o vizualizaci Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 14 / 47
15 Návrh e²ení e²ení zaloºíme na rozhraní z balíku gui.jar jehoº implementace nám zajistí, ºe bude moci pouºít plátno pro zobrazení geometrických objekt Zárove se pokusíme odd lit vizualizaci od vlastních geometrických operací, proto se nejd íve zam íme na geometrické objekty Geometrické objekty v²ak anotujeme barvou Tedy, kaºdý geometrický objekt má krom svého popisu také barvu Postup návrhu 1. Návrh hierarchie t íd geometrických objekt 2. Návrh testovací funkce pro ov ení funk nosti 3. Roz²í ení návrhu o vizualizaci Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 14 / 47
16 Hierarchie t íd geometrických objekt Geom Point Segment Circle Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 15 / 47
17 Abstraktní t ída Geom 1/2 Základní geometrický objekt p edstavuje spole nou abstraktní t ídu Deklarujeme dv základní geometrické operace isequal a isinside public abstract class Geom { protected Color color; public Geom(Color color) { this.color = color; isequal pouºijeme pro p edenování metody equals public abstract boolean isequal(geom geom); public abstract boolean isinside(geom geom); public Color getcolor() { return color; public void setcolor(color color) { this.color = color; Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 16 / 47
18 Abstraktní t ída Geom 2/2 Dále p edenuje metody t ídy Object import java.util.objects; public abstract class Geom public String tostring() { return "Geom{shape="+ getshapename() + ",color=" + color + ''; string representation of the shape name public abstract String public int hashcode() public boolean equals(object obj) { if (obj == null) { return false; if (getclass()!= obj.getclass()) { return false; final Geom other = (Geom) obj; if (!Objects.equals(this.color, other.color)) { return false; return isequals(other); // isequals is defined in derived class Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 17 / 47
19 T ída Point 1/3 Pro t ídu Point p ipravíme n kolik konstruktor Point také pouºijeme pro implementaci rozhraní Coords pouºívané v metodách knihovny GeomUtil public class Point extends Geom implements Coords { private final int x; // for simplicity we use int private final int y; // as coords in plane public Point(int x, int y) { this(x, y, Color.BLUE); public Point(int x, int y, Color color) { this(x, y, color); public Point(int x, int y, Color color) { super(color); this.x = x; this.y = public String getshapename() { return "Point"; Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 18 / 47
20 T ída Point 2/3 Rozhraní Coords p edepisuje metody getx(), gety() a createcoords() public class Point extends Geom implements Coords public int getx() { return public int gety() { return public Coords createcoords(int x, int y) { return new Point(x, y);... Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 19 / 47
21 T ída Point 3/3 Implementace geometrických operací je omezena pouze na relace s jiným bodem public class Point extends Geom implements Coords public boolean isequals(geom geom) { boolean ret = geom == this; if (!ret && geom instanceof Point) { Point pt = (Point) geom; ret = x == pt.x && y == pt.y; return public boolean isinside(geom geom) { boolean ret = false; // A geom object cannot be inside a point return ret; Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 20 / 47
22 T ída Segment 1/3 Úse ka je denována dv ma body public class Segment extends Geom { private final Point p0; private final Point p1; public Segment(Point pt1, Point pt2) { this(pt1, pt2, Color.GREEN); public Segment(Point pt1, Point pt2, Color color) { super(color); if (pt1 == null pt2 == null pt1.equals(pt2)) { throw new IllegalArgumentException(); p0 = pt1; p1 = public String getshapename() { return "Segment"; Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 21 / 47
23 T ída Segment 2/3 Implementace geometrických operací je vztaºena na Point i Segment public class Segment extends Geom public boolean isinside(geom geom) { if (geom == null) { return false; boolean ret = this == geom; if (!ret && geom instanceof Point) { ret = isinside((point) geom); else if (!ret && geom instanceof Segment) { ret = isinside((segment) geom); return ret;... Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 22 / 47
24 T ída Segment 3/3 Pro testování, zdali bod leºí na úse ce, vyuºijeme funkce z GeomUtil public class Segment extends Geom {... public boolean isinside(point pt) { if (pt == null) { return false; boolean collinear = GeomUtil.wind(p0, p1, pt) == 0; return collinear && GeomUtil.inBetween(p0, p1, pt); public boolean isinside(segment s) { if (s == null) { return false; return isinside(s.p0) && isinside(s.p1);... Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 23 / 47
25 T ída Circle 1/3 Pro kruºnice volíme základní barvu ervenou public class Circle extends Geom { private final Point center; private final int radius; public Circle(Point center, int radius) { this(center, radius, Color.RED); public Circle(Point center, int radius, Color color) { super(color); if (center == null radius <= 0) { throw new IllegalArgumentException(); this.center = center; this.radius = public String getshapename() { return "Circle"; Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 24 / 47
26 T ída Circle 2/3 Pro test isinside rozli²ujeme uº t i objekty public class Circle extends Geom public boolean isinside(geom geom) { if (geom == null) { return false; boolean ret = this == geom; if (ret) { return ret; if (geom instanceof Point) { ret = isinside((point) geom); else if (geom instanceof Segment) { ret = isinside((segment) geom); else if (geom instanceof Circle) { ret = isinside((circle) geom); return ret;... Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 25 / 47
27 T ída Circle 3/3 Testujeme bod, úse ku a také jinou kruºnici public class Circle extends Geom {... public boolean isinside(point pt) { if (pt == null) { return false; int dx = pt.getx() - center.getx(); int dy = pt.gety() - center.gety(); return ((dx * dx + dy * dy) <= radius * radius); public boolean isinside(segment sg) { if (sg == null) { return false; return isinside(sg.getp0()) && isinside(sg.getp1()); public boolean isinside(circle c) { if (c == null) { return false; int rd = radius - c.radius; if (rd > 0) { return new Circle(center, rd).isinside(c.center); return false; Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 26 / 47
28 P íklad pouºití Zji²t ní, zdali testovací body leºí uvnit kruºnice Point pt1 = new Point(320, 240); Circle c1 = new Circle(new Point(100, 100), 50); Point pt2 = new Point(75, 75); Point pt3 = new Point(125, 125); Segment s1 = new Segment(pt1, pt2); Segment s2 = new Segment(pt2, pt3); System.out.println("pt1: " + pt1); System.out.println("pt1 is inside circle: " + c1.isinside(pt1)); System.out.println("pt2 is inside circle: " + c1.isinside(pt2)); System.out.println("s1 is inside circle: " + c1.isinside(s1)); System.out.println("s2 is inside circle: " + c1.isinside(s2)); P íklad výstupu pt1: Geom{shape=Point,color=java.awt.Color[r=0,g=0,b=255] pt1 is inside circle: false pt2 is inside circle: true s1 is inside circle: false s2 is inside circle: true Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 27 / 47
29 Ov ení funk nosti knihovny Pe liv navrhneme kongurace, pro které ov íme, ºe implementované e²ení dává správný výsledek Hodnoty m ºeme vypsat na standardní výstup nebo program krokovat Oba zp soby jsou sice funk ní, ale p ehledn j²í bude zobrazit výstup gracky Jednotlivým geometrickým objekt m proto implementujeme rozhraní Printable, tj. roz²í íme je o metodu printtocanvas Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 28 / 47
30 Ov ení funk nosti knihovny Pe liv navrhneme kongurace, pro které ov íme, ºe implementované e²ení dává správný výsledek Hodnoty m ºeme vypsat na standardní výstup nebo program krokovat Oba zp soby jsou sice funk ní, ale p ehledn j²í bude zobrazit výstup gracky Jednotlivým geometrickým objekt m proto implementujeme rozhraní Printable, tj. roz²í íme je o metodu printtocanvas Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 28 / 47
31 T ída Point jako Printable 1/2 Bod budeme vykreslovat nikoliv jako jeden pixel, ale jako malý disk o polom ru radius Doplníme poloºku a roz²í íme konstruktor public class Point extends Geom implements Coords, Printable {... private int radius; public Point(int x, int y, Color color, int radius) { super(color); this.x = x; this.y = y; this.radius = radius;... Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 29 / 47
32 T ída Point jako Printable 2/2 Implementujeme vykreslení disku o polom ru radius public void printtocanvas(canvas canvas) { if (canvas == null) { return; final int w = canvas.getwidth(); final int h = canvas.getheight(); final int r2 = radius * radius; for (int i = x - radius; i <= x + radius; ++i) { for (int j = y - radius; j <= y + radius; ++j) { if (i >= 0 && i < w && j >= 0 && j < h) { final int dx = (x - i); final int dy = (y - j); final int r = dx * dx + dy * dy; if (r < r2) { canvas.setcolorat(i, j, color); Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 30 / 47
33 T ída Segment jako Printable Implementujeme vykreslení s vyuºitím rasteriza ní funkce drawgridline z GridCanvasUtil public class Segment extends Geom implements Printable public void printtocanvas(canvas canvas) { if (canvas == null) { return; Coords[] line = GridCanvasUtil.drawGridLine(p0, p1); if (line == null) { return; final int w = canvas.getwidth(); final int h = canvas.getheight(); for (int i = 0; i < line.length; ++i) { Coords pt = line[i]; if ( pt.getx() >= 0 && pt.getx() < w && pt.gety() >= 0 && pt.gety() < h ) { canvas.setcolorat(pt.getx(), pt.gety(), color); Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 31 / 47
34 T ída Circle jako Printable Implementujeme vykreslení s vyuºitím rasteriza ní funkce drawgridline z GridCanvasUtil public class Circle extends Geom implements Printable public void printtocanvas(canvas canvas) { if (canvas == null) { return; Coords[] pts = GridCanvasUtil.drawGridCircle(center, radius); if (pts == null) { return; final int w = canvas.getwidth(); final int h = canvas.getheight(); for (int i = 0; i < pts.length; ++i) { Coords pt = pts[i]; if ( pt.getx() >= 0 && pt.getx() < w && pt.gety() >= 0 && pt.gety() < h ) { canvas.setcolorat(pt.getx(), pt.gety(), color); Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 32 / 47
35 P íklad vykreslení objekt Geometrické objekty se uº umí vykreslit na plátno (canvas) Vytvo íme instanci ArrayBackedCanvas Za²leme zprávu p íslu²nému objektu, aby se vykreslil Obsah plátna následn uloºíme do souboru Circle c1 = new Circle(new Point(100, 100), 50); ArrayBackedCanvas canvas = new ArrayBackedCanvas(640, 480); c1.printtocanvas(canvas); canvas.writetofile("circle.png"); Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 33 / 47
36 Vykreslená kruºnice v souboru circle.png Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 34 / 47
37 Dal²í úkoly Máme implementovány základní funk nosti pro zobrazení Vykreslení objekt v²ak není p íli² pohodlné Vytvo íme proto kontejner pro reprezentaci scény a hromadn j²í dotazy, zdali jsou objekty scény uvnit zvoleného geometrického objektu Scénu realizujeme jako t ídu GeomObjectArray, která bude poskytovat pole aktuálních objekt public class GeomObjectArray {... public Geom[] getarray() { Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 35 / 47
38 Dal²í úkoly Máme implementovány základní funk nosti pro zobrazení Vykreslení objekt v²ak není p íli² pohodlné Vytvo íme proto kontejner pro reprezentaci scény a hromadn j²í dotazy, zdali jsou objekty scény uvnit zvoleného geometrického objektu Scénu realizujeme jako t ídu GeomObjectArray, která bude poskytovat pole aktuálních objekt public class GeomObjectArray {... public Geom[] getarray() { Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 35 / 47
39 GeomObjectArray Kontejner realizujeme jako p ed-alokované pole dostate né velikosti Implementujeme metodu add, která p idá objekt do pole V p ípad napln ní kapacity alokujeme pole v t²í, kterým nahradíme pole p vodní P ístup k poli zapouzd íme metodami add a getarray public class GeomObjectArray { private Geom[] objects; private int size; private final int DEFAULT_SIZE_RESERVE = 100; public GeomObjectArray() { objects = new Geom[DEFAULT_SIZE_RESERVE]; public GeomObjectArray add(geom obj) {... public Geom[] getarray() {... Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 36 / 47
40 GeomObjectArray add public class GeomObjectArray {... public GeomObjectArray add(geom obj) { if (size == objects.length) { Geom[] objectsnew = new Geom[objects.length + DEFAULT_SIZE_RESERVE]; for (int i = 0; i < objects.length; ++i) { objectsnew[i] = objects[i]; objects = objectsnew; //replace the array objects[size++] = obj; return this; //return this to string the add call... Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 37 / 47
41 GeomObjectArray getarray public class GeomObjectArray {... public Geom[] getarray() { Geom[] ret = new Geom[size]; for (int i = 0; i < size; ++i) { ret[i] = objects[i]; return ret; Na první pohled neefektivní, ale metoda nám zaji² uje, ºe je scéna reprezentována polem o velikost odpovídající objekt m ve scén. Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 38 / 47
42 Obarvení objekt uvnit jiného objektu Vytvo íme metodu, která nastaví barvu v²ech objekt uvnit jiného objektu public void markcolorinside(geom[] objects, Geom largeobject, Color color) { if (objects == null largeobject == null color == null) { return; for (int i = 0; i < objects.length; ++i) { Geom obj = objects[i]; if (obj!= null && largeobject.isinside(obj)) { obj.setcolor(color); Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 39 / 47
43 P íklad pouºití public void start(string[] args) { Point pt1 = new Point(320, 240); Point pt2 = new Point(75, 75); Point pt3 = new Point(125, 125); Segment s1 = new Segment(pt1, pt2); Segment s2 = new Segment(pt2, pt3); Circle c1 = new Circle(new Point(100, 100), 50); Circle c2 = new Circle(new Point(400, 400), 400); c2.setcolor(new Color(255, 130, 71)); //RoyalBlue GeomObjectArray geomobjects = new GeomObjectArray(); geomobjects.add(pt1).add(pt2).add(pt3).add(s1).add(s2); geomobjects.add(c1).add(c2); markcolorinside(geomobjects.getarray(), c1, Color.RED); gui Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 40 / 47
44 P íklad pouºití vykreslení Pro vykreslení m ºeme pouºít objekt, který má rozhraní ObjectHolder Bu m ºeme pouºít implementaci ObjectHolderImpl Nap. kompozicí Nebo vyuºijeme znalosti, ºe n které podt ídy Geom implementují rozhraní Printable a implementujeme metodu printtocanvas public void printtocanvas(geom[] objects, Canvas canvas) { for (int i = 0; i < objects.length; ++i) { Geom obj = objects[i]; if (obj instanceof Printable) { ((Printable) obj).printtocanvas(canvas); Zkuste roz²í it t ídu GeomObjectArray o rozhraní Printable a vysv tlete úskalí implementace dvou metod add. Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 41 / 47
45 Uloºení obrázku Uloºení plátna m ºeme spojit s p ekreslením aktuální scény v metod savecanvas public void savecanvas(geomobjectarray geomobjects, ArrayBackedCanvas canvas, String out) { try { canvas.clearcanvas(color.white); printtocanvas(geomobjects.getarray(), canvas); canvas.writetofile(out); catch (IOException e) { System.err.println("Error: writing canvas to the file '" + out + "'"); Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 42 / 47
46 Pouºití metody markcolorinside... GeomObjectArray geomobjects = new GeomObjectArray(); geomobjects.add(pt1).add(pt2).add(pt3).add(s1).add(s2); geomobjects.add(c1).add(c2); ArrayBackedCanvas canvas = new ArrayBackedCanvas(640, 480); savecanvas(geomobjects, canvas, "objects.png"); markcolorinside(geomobjects.getarray(), c1, Color.RED); savecanvas(geomobjects, canvas, "objects-inside_circle-c1.png"); setcolor(geomobjects.getarray(), Color.BLUE); markcolorinside(geomobjects.getarray(), c2, Color.ORANGE); savecanvas(geomobjects, canvas, "objects-inside_circle-c2.png"); Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 43 / 47
47 P íklad výstupu objects.png Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 44 / 47
48 P íklad výstupu objects-inside_circle-c1.png Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 45 / 47
49 P íklad výstupu objects-inside_circle-c2.png Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 46 / 47
50 P íklad geometrický objekt Navrhli jsme hierarchii geometrický objekt Implementovali jsme operaci testování, zdali objekt leºí uvnit jiného objektu isinside Vizualizaci jsem realizovali s vyuºitím rozhraní a implementací z balíku t ídy gui.jar Pouºití jednotlivých objekt je moºné, ale reprezentace scény není pohodlná Pro práci s mnoºinou objekt pot ebujeme vhodný kontejner Zatím známe pouze datový typ pole statické délky Pro efektivní práci s více prom nnými (t eba i jiného typu) pot ebujeme sloºit j²í datové struktury Spojové seznamy, fronty, zásobníky, pole dynamické délky, atd. Jan Faigl, Ji í Vok ínek, 2015 B6B36PJV P edná²ka 2: Geom 47 / 47
Část I Třídy a objekty
Část 1 Třídy a objekty Objektově orientované programování Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 8 A0B36PR1 Programování 1 Třídy a objekty shrnutí
Objektově orientované programování
Objektově orientované programování Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 8 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 8: Objektově
Objektově orientované programování
Objektově orientované programování Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 9 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 9: Objektově
Část I Objektově orientované programování - Dědičnost, kompozice a balíky
Objektově orientované programování Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 9 A0B36PR1 Programování 1 Část 1 Objektově orientované programová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
Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová
Struktura třídy, operátory, jednoduché algoritmy, junit 2. cvičení Alena Buchalcevová Cíle cvičení seznámit se s rozhraním (interface) v Javě seznámit se s testováním při vývoji (makety, JUnit) naučit
Objektov orientované programování
Objektov orientované programování Ji í Vok ínek Katedra po íta Fakulta elektrotechnická ƒeské vysoké u ení technické v Praze P edná²ka 2 B6B36PJV Programování v JAVA Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV
14.4.1. Typický prvek kolekce pro české řazení
14.4. Co všechno by měl mít typický prvek kolekce 177 Poznámka: Třídy BigInteger, BigDecimal a Date budou vysvětleny v částech [15./183, [16./185 a [18.1./204. 14.4.1. Typický prvek kolekce pro české řazení
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ů
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í
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
Skalární sou in. Úvod. Denice skalárního sou inu
Skalární sou in Jedním ze zp sob, jak m ºeme dva vektory kombinovat, je skalární sou in. Výsledkem skalárního sou inu dvou vektor, jak jiº název napovídá, je skalár. V tomto letáku se nau íte, jak vypo
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ů
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ů
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
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ů
Principy objektově orientovaného programování
Principy objektově orientovaného programování Třídy a objekty 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 C E T
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ší
Algoritmizace a programování
Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém
Konceptuální modelování
Konceptuální modelování Ing. Michal Valenta PhD. Katedra softwarového inºenýrství Fakulta informa ních technologií ƒeské vysoké u ení technické v Praze c Michal Valenta, 2010 Databázové systémy BI-DBS
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
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ý
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
Objektově orientované programování v PHP 5. Martin Klíma
Objektově orientované programování v PHP 5 Martin Klíma OOP & PHP 5 V PHP 5 konečně značné rozšíření OOP Blíží se to moderním programovacím jazykům jako Java nebo C# Výhody OOP Zapouzdření (nové modifikátory
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 =
Část 1 Třídy a objekty. Objektově orientované programování. Část 2 Vztahy mezi objekty. Část 3 Objektově orientované programování (v Javě)
Část 1 Třídy a objekty Objektově orientované programování Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 7 A0B36PR1 Programování 1 Literatura Příklad
GUI v Jav a událostmi ízené programování
GUI v Jav a událostmi ízené programování Ji í Vok ínek Katedra po íta Fakulta elektrotechnická ƒeské vysoké u ení technické v Praze P edná²ka 6 B6B36PJV Programování v JAVA Jan Faigl, Ji í Vok ínek, 2016
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á
Pravd podobnost a statistika - cvi ení. Simona Domesová místnost: RA310 (budova CPIT) web:
Pravd podobnost a statistika - cvi ení Simona Domesová simona.domesova@vsb.cz místnost: RA310 (budova CPIT) web: http://homel.vsb.cz/~dom0015 Cíle p edm tu vyhodnocování dat pomocí statistických metod
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
e²ení systém lineárních rovnic pomocí s ítací, dosazovací a srovnávací metody
e²ení systém lineárních rovnic pomocí s ítací, dosazovací a srovnávací metody V praxi se asto setkávame s p ípady, kdy je pot eba e²it více rovnic, takzvaný systém rovnic, obvykle s více jak jednou neznámou.
RMI Remote Method Invocation
2. cvičení RMI Remote Method Invocation 2007/09 ver.2.0 1 RMI co to je? vyvolání metody z jiné JVM lokalizace vzdáleného objektu komunikace se vzdálenými objekty přenos objektu v bytecode typicky klient
Objektov orientované programování. C++ Akademie SH. 7. Objektov orientované programování. Michal Kvasni ka. Za áte níci C++ 2.
C++ Akademie SH Za áte níci C++ 2. kv tna 2011 Obsah 1 Objektov orientované programování Obsah Objektov orientované programování 1 Objektov orientované programování P et ºování Jev, díky kterému m ºeme
Objektově orientované programování
Objektově orientované programování Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 7 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 7: Objektově
Obrázek. Základní popis, zadání úkolu. Struktura tříd,
Obrázek Základní popis, zadání úkolu Pracujeme na projektu Domecek, který je ke stažení na http://java.vse.cz/. Po otevření v BlueJ vytvoříme instanci třídy Obrazek a zavoláme metodu kresli(). Výsledkem
Java a Caché IV: Manipulace s objekty
1 z 6 11.1.2007 11:13 přihlašovací jméno heslo Registrace Přihlásit články odkazy aktuality CZJUG konference o portálu přidejte se o nás Vyhledávání Text: najdi Oborový filtr J2ME J2SE J2EE Enterprise
Čipové karty Lekařská informatika
Čipové karty Lekařská informatika Následující kód je jednoduchou aplikací pro čipové karty, která po překladu vytváří prostor na kartě, nad kterým jsou prováděny jednotlivé operace a do kterého jsou ukládány
Projekty pro výuku programování v jazyce Java
JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil
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
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
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
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ý
Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení
Třída DrawingTool strana 1 1. Základ Třída DrawingTool Třída DrawingTool je určena k jednoduchému kreslení pomocí několika základních příkazů do grafického okna zadaných rozměrů (nastavení v konstruktoru),
Vektor náhodných veli in - práce s více prom nnými
Vektor náhodných veli in - práce s více prom nnými 12. kv tna 2015 N kdy k popisu n jaké situace pot ebujeme více neº jednu náhodnou veli inu. Nap. v k, hmotnost, vý²ku. Mezi t mito veli inami mohou být
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
OOPR_05. Případové studie
OOPR_05 Případové studie 1 Přehled probírané látky příklad skládání objektů - čára příklad skládání objektů kompozice a agregace přetížené konstruktory pole jako datový atribut 2 Grafický objekt - čára
Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.
Obsah přednášky: Definice pojmů o datový typ, o abstraktní datový typ Datové struktury Abstraktní datové typy a jejich implementace o Fronta (Queue) o Zásobník (Stack) o Množina (Set) Algoritmizace (Y36ALG),
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,
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ů
Jazyk C# (seminář 3)
Jazyk C# (seminář 3) Pavel Procházka KMI October 8, 2014 Motivace Největší využití v programování okenních aplikací a GUI knihoven. Data reprezentujeme pomocí objektů (tříd), máme tedy ucelený pohled na
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
Java - výjimky. private void vstup() throws IOException {... }
Java - výjimky Tato kapitola ukazuje na několika příkladech práci s výjimkami v Javě. Klíčové pojmy: Výjimka, hierarchie výjimek, zachytávání výjimek, blok try-catch, tvorba vlastních výjimek, propagace
Reflexe. Aplikační programování v Javě (BI-APJ) - 8 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha
Reflexe Aplikační programování v Javě (BI-APJ) - 8 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme do vaší
Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Enterprise Java
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)
Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)
Příklad aplikace Klient/Server s Boss/Worker modelem (informativní) Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze A0B36PR2 Programování 2 Jan Faigl, 2015 A0B36PR2
Datové struktury. alg12 1
Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou
4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ
4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ OBJEKT Program v Javě je staticky strukturován na třídy, jejichž instance (objekty) za běhu dynamicky programu vznikají a zanikají. Objekt je nejprve
public class Karel { private int position; public boolean issmiling; public int getposition() { return position;
Objekty, třídy a hierarchie tříd Interface a abstraktní třídy Dědičnost Message passing Class diagramy a příklady systémů modelovaných pomocí OOP Volba správného přístupu Rozdíl mezi asociací, agregací
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í
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ů
Integrování jako opak derivování
Integrování jako opak derivování V tomto dokumentu budete seznámeni s derivováním b ºných funkcí a budete mít moºnost vyzkou²et mnoho zp sob derivace. Jedním z nich je proces derivování v opa ném po adí.
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
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í
Binární operace. Úvod. Pomocný text
Pomocný text Binární operace Úvod Milí e²itelé, binární operace je pom rn abstraktní téma, a tak bude ob as pot eba odprostit se od konkrétních p íklad a podívat se na v c s ur itým nadhledem. Nicmén e²ení
Ú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
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky sledujte stav paměti
PREPROCESOR POKRAČOVÁNÍ
PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,
Java Výjimky Java, zimní semestr
Java Výjimky 1 Výjimky (exceptions) hlášení a ošetření chyb výjimka signalizuje nějaký chybový stav výjimka = instance třídy java.lang.throwable dvě podtřídy java.lang.error a java.lang.exception konkrétní
Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické
Třídy, polymorfismus A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Polymorfizmus ~ vícetvarost Polymorfizmus základní vlastnost objektového přístupu základní princip polymorfismu:
Java efektivně. Lukáš Zapletal liberix.cz. Pokročilejší techniky programování v Javě
Lukáš Zapletal liberix.cz Pokročilejší techniky programování v Javě Tato prezentace vychází kompletně z knihy J. Blocha: Effective Java (A-W 2001) u nás Java efektivně - 57 zásad softwarového experta (Grada
3. Restrukturalizace nebo manipulace s údaji - práce s rastrovými daty
3. Restrukturalizace nebo manipulace s údaji - práce s rastrovými daty Většina systémových konverzí je shodná nebo analogická jako u vektorových dat. změna formátu uložení dat změny rozlišení převzorkování
JAVA V Assertions Java, zimní semestr
JAVA Assertions 1 Assertion od Java 1.4 příkaz obsahující výraz typu boolean programátor předpokládá, že výraz bude vždy splněn (true) pokud je výraz vyhodnocen na false -> chyba používá se pro ladění
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky sledujte stav paměti
BOZP - akcepta ní testy
BOZP - akcepta ní testy Kristýna Streitová Zadavatel: Ing. Ji í Chludil 13. prosince 2011 Obsah 1 Úvod 2 1.1 Popis test....................................... 2 2 Testy 3 2.1 ID - 1 P ihlá²ení do systému.............................
Postřehová hra. Zadání projektu. 1 Moje cíle
Gymnázium, Praha 6, Arabská 16 předmět Programování, vyučující Tomáš Obdržálek Postřehová hra ročníkový projekt Matouš Jokl, 1E květen 2014 Obsah 1 Moje cíle...1 2 Kód...2 1.Objekty a ArrayList...2 2.Jpanel
Parametrizované třídy Generics generické třídy. JDK zavádí mimo jiné tzv. parametrizované třídy - generics
1 Parametrizované třídy Generics generické třídy JDK zavádí mimo jiné tzv. parametrizované třídy - generics Úvod 2 podobnost se šablonami (templates) z C++ nejčastěji použité v oblasti knihoven kontejnerového
Seminá e. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, sem. 1-13
Seminá e Ing. Michal Valenta PhD. Katedra softwarového inºenýrství Fakulta informa ních technologií ƒeské vysoké u ení technické v Praze c Michal Valenta, 2010 Databázové systémy BI-DBS ZS 2010/11, sem.
Přehled probírané látky
OOPR_04 1 Přehled probírané látky asociace (relace) mezi třídami popis množiny spojení mezi objekty skládání objektů - upřesněný typ asociace, vazba mezi objekty kompozice objektů (velmi pevná vazba mezi
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í
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ů
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
11. Dědičnost. Dědičnost strana 103
Dědičnost strana 103 11. Dědičnost V této kapitole si vysvětlíme jeden ze základních pojmů objektově orientovaného programování dědičnost (inheritance). S ní souvisejí i následující témata: předek a potomek
7. Dynamické datové struktury
7. Dynamické datové struktury Java poskytuje několik možností pro uložení většího množství dat (tj. objektů či primitivních datových typů) v paměti. S nejjednodušší z nich, s polem, jsme se již seznámili.
Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu
Seminář Java Zavádění tříd Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Zavádění tříd 1/ 16 JVM zavádí třídy dynamicky Class loader objekt schopný zavádět třídy abstraktní
Orcad PCB Designer návrh plošných spojů část 2
Orcad PCB Designer návrh plošných spojů část 2 Knihovna pouzder součástek: Každé pouzdro (Footprint) se obecně skládá z několika částí: Padstack svazek vývodů pouzdra definovaný ve všech vrstvách DPS včetně
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky popište stav paměti
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é,
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
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ě
Soubory. Katedra po íta. Ji í Vok ínek. P edná²ka 4 B6B36PJV Programování v JAVA. Fakulta elektrotechnická ƒeské vysoké u ení technické v Praze
Soubory Ji í Vok ínek Katedra po íta Fakulta elektrotechnická ƒeské vysoké u ení technické v Praze P edná²ka 4 B6B36PJV Programování v JAVA Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 4: Soubory
Knihovna QT4 a moºnosti jejího vyuºití
Fakulta jaderná a fyzikáln inºenýrská ƒeské vysoké u ení technické v Praze 2.6.2010 Osnova 1 Úvod 2 Seznámení s Qt4 3 Prost edí QtCreator 4 Vyuºití v praxi Problém Aplikace pro ovládání realtime PCR za
P íklad 1 (Náhodná veli ina)
P íklad 1 (Náhodná veli ina) Uvaºujeme experiment: házení mincí. Výsledkem pokusu je rub nebo líc, ºe padne hrana neuvaºujeme. Pokud hovo íme o náhodné veli in, musíme p epsat výsledky pokusu do mnoºiny
Úvod. Katedra po íta. Ji í Vok ínek. P edná²ka 1 B6B36PJV Programování v JAVA. Fakulta elektrotechnická ƒeské vysoké u ení technické v Praze
Úvod Ji í Vok ínek Katedra po íta Fakulta elektrotechnická ƒeské vysoké u ení technické v Praze P edná²ka 1 B6B36PJV Programování v JAVA Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 1: Úvod 1 / 51
Soft Computing (SFC) 2014/2015 Demonstrace u ení sít RCE, Java aplikace
Soft Computing (SFC) 2014/2015 Demonstrace u ení sít RCE, Java aplikace Franti²ek N mec (xnemec61) xnemec61@stud.t.vutbr.cz 1 Úvod Úkolem tohoto projektu bylo vytvo it aplikaci, která bude demonstrovat
8. přednáška: Soubory a proudy
8. přednáška: Soubory a proudy Soubor jako posloupnost bytů Ukládání/čtení primitivních typů Ukládání/čtení primitivních typů a objektů (řetězců) Ukládání/čtení objektů do souboru - serializace Obsah Algoritmizace
17. Projekt Trojúhelníky
Projekt Trojúhelníky strana 165 17. Projekt Trojúhelníky 17.1. Základní popis, zadání úkolu Pracujeme na projektu Trojúhelníky, který je ke stažení na java.vse.cz. Aplikace je napsána s textovým uživatelským
George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu
A Tutorial Advances in query languages for similarity-based databases George J. Klir Petr Krajča State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu Palacky University,
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í