4IT101 Základy programování
description
Transcript of 4IT101 Základy programování
![Page 1: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/1.jpg)
4IT101 Základy
programování
![Page 2: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/2.jpg)
• Ing. Jarmila Pavlíčková• Konzultační hodiny:
– úterý 14:30 – 16:00 JM 369– středa 12:30 - 14:00 NB 424
• Mail:– [email protected]
![Page 3: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/3.jpg)
Obsah kurzu• Základy objektového přístupu
realizované v programovacím v jazyce Java.
• Základní znalosti o informatice.• Základní znalosti o
programovacích jazycích.• Metodika výuky - metodika object-
first rozšířenou o prvky test-first a seznámení s návrhovými vzory (design patterns first)
![Page 4: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/4.jpg)
Podmínky ukončeníZnámka počet bodů1 90 – 100 2 75 – 893 60 – 74 4+ 50 – 59 4 59 a méně
![Page 5: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/5.jpg)
BodováníBody Povinné
minimum
Domácí úkoly, testy, semestrální úloha – závisí na cvičícím
40 5
Semestrální úloha - Adventura
30 10
Závěrečný test 30 15Celkem 100
![Page 6: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/6.jpg)
Podmínky pro ukončení• Body lze ztratit za neúčast na cvičeních
(více než 3 neomluvené absence).• Lze získat prémiové body za
nadstandardní řešení úkolu.• Při zjištěném pokusu o podvod (odevzdání
cizí práce, cizího programu) bude práce ohodnocena -5 body.
• Opakovat lze pouze závěrečný test.
![Page 7: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/7.jpg)
Literatura• Pavlíčková,
Pavlíček• Úvod do Javy• Skriptum VŠE• v pdf k dispozici
na java.vse.cz
![Page 8: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/8.jpg)
Literatura• Gála, Pour, Šedivá: Podniková
informatika 2., přepracované a aktualizované vydání. Grada 2009 ISBN 978-80-247-2615-1
• Rudolf Pecinovský: Myslíme objektově v jazyku Java, Grada ISBN 978-80-247-2653-3
• Rudolf Pecinovský: OOP Naučte se myslet a programovat objektově, Computer Press, 2010, ISBN 978-80-251-2126-9
![Page 9: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/9.jpg)
Zdroje informací ke kurzu– ISIS
• Sylabus• Prezentace k přednáškám• Odevzdávání domácích úkolů a semestrálních
prací• Testy
– java.vse.cz• Podrobnosti k hodnocení studentů, literatuře,
instalacím potřebného software…• Informace od jednotlivých cvičících
– www.oracle.com/technetwork/java/index.html• oficiální stránky Javy
– www.java.cz
![Page 10: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/10.jpg)
Java
![Page 11: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/11.jpg)
Java• Java je objektově orientovaný
programovací jazyk, ale také platforma• Aplikace napsaná v Javě, může běžet
na každé platformě, pro níž je vyvinut virtuální stroj
![Page 12: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/12.jpg)
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
![Page 13: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/13.jpg)
Platformy Javy – výčet• Java SE (Standard Edition)
– Desktopové aplikace– Applety
• Java ME (Micro Edition)– Především v mobilních
telefonech– Zatím převážně hry, ale množí
se aplikace spolupracující se servery
– Midlety• Java EE (Enterprise Edition)
– Nadstavba nad Java SE– Velké distribuované aplikace– Podporuje vícevrstvou
architekturu– Servlety, JSP, EJB
Java EEJava SE
Java ME
![Page 14: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/14.jpg)
Soubor se zdrojovým kódem, má koncovku java. Překladač
javacSoubor s bytekódem, má koncovku class.
Java Virtual
Maschine
Pro všechny platformy stejné Pro
všechny platformy stejné
Pro všechny platformy stejné
Pro každou platformu jiná JVM
![Page 15: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/15.jpg)
Verze Javy• 1996 verze 1.0• 1997 verze 1.1 (JDBC)• 1998 verze 1.2 (Collections)• 2000 verze 1.3 (HotSpot)• 2002 verze 1.4 • 2004 verze 5.0 (Generika,
významné úpravy)• 2006 verze 6.0
Červenec 2011 Verze 7.0
![Page 16: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/16.jpg)
Zkratky.. a zkratky.. a zkratky..
• Java SE• Java EE• Java ME• JDK• JRE
![Page 17: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/17.jpg)
Vlastnosti Javy• Jazyk je jednoduchý, objektově
orientovaný a povědomý• Je robusní a zabezpečená• Je nezávislá na platformě a
přenositelná• Je interpretovaná, vícevláknová a
dynamická
![Page 18: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/18.jpg)
Vývojová prostředí• JDK 7.0• BlueJ 3.0.8 (www.bluej.org)• Další profesionální vývojové
nástroje– NetBeans (www.netbeans.org)– Eclipse (www.eclipse.org)– IntelliJ Idea (www.jetbrains.com/idea)
![Page 19: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/19.jpg)
Objekty
![Page 20: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/20.jpg)
Obecné objektové vlastnosti – jeden pohled• používání abstrakce• definování tříd objektů• existence objektů (instancí)• zapouzdření a ukrývání
implementace• komunikace objektů (volání
metod)• polymorfismus• dědičnost
![Page 21: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/21.jpg)
Základní pojmy• Objekty• Třídy• Rozhraní• Instance• Datové atributy• Metody• Konstruktory• Balíčky• Testy• Návrhové vzory
• Deklarace• Inicializace• Identifikátor• Formální parametr metody• Skutečný parametr metody• Pomocná proměnná
![Page 22: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/22.jpg)
Základní principy OOP• Všechno je objekt
(opravdu všechno včetně vlastností, dějů, událostí, …)
• Objektově orientovaný program jev nějakém programovacím jazyce zapsaný popis tříd, jejich instancí (objektů) a zpráv, které si mezi sebou tyto objekty posílají
![Page 23: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/23.jpg)
Objekty• Abstrakce z reality• Spojení dat (údajů, proměnných,
datových atributů) a činností, které je možné s těmito daty provádět (metod)
![Page 24: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/24.jpg)
Třída• Třída je obecný popis, ve kterém
se deklarují (určí) data, která budou popisovat stav objektu, a metody, které popisují činnosti, jaké je možné s objekty provádět.
![Page 25: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/25.jpg)
Pes
jménorasa
štěkejžer
hoňKočku
Dášeňkafoxteriér
RekNěmecký ovčák Asta
kólie
Alíkneurčena
Skutečné objekty v
realitěInstance v paměti počítače
Třída obecný popis v
programu
![Page 26: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/26.jpg)
Třída PesPes
jménorasa
štěkejžer
hoňKočku
datové atributy instance, každá
vytvořená instance je bude mít naplněny
vlastními daty
metody instance, pro každou vytvořenou
instanci je budeme moci spustit, postup bude u všech instancí stejný, ale budou pracovat s
datovými atributy konkrétní instance
![Page 27: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/27.jpg)
Třídy pro kreslení tvarů (první cvičení)
Ctverec
velikostxPoziceyPozicebarva
kreslivymazzmenBarvuposunVpravo……
Kruh
prumerxPoziceyPozicebarva
kreslivymazzmenBarvuposunVpravo……
![Page 28: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/28.jpg)
Volání metod (posílání zpráv)
• Analogie s mobilním telefonem– Mohu poslat SMS jen tomu, na koho
mám číslo – Mohu posílat různé zprávy– Reakce různých lidí na stejnou zprávu
mohou být různé
![Page 29: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/29.jpg)
Vytvoření instance• Instance se vytvářejí pomocí
specifické metody, která se nazývá konstruktor
• Při spouštění konstruktoru si musíme uložit odkaz na vznikající instanci
![Page 30: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/30.jpg)
Odkazy v BlueJ
![Page 31: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/31.jpg)
pepuvAlikpepuvAzormilanuvRekmojeBety
Alíkneurčena
AzorJezevčík
RekNěmecký ovčák
BetyKokršpaněl
azoralik
Sezn
am
Pepo
vých
psů
Se
znam
psů
, kt
eré
venč
í Jan
a
![Page 32: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/32.jpg)
Java – jak vytvořit třídu (zapsat kód)
![Page 33: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/33.jpg)
public class Jmeno {Datové atributyStatické proměnnéStatický inicializační blokStatické metodyKonstruktoryMetodyVnitřní třídyStatické vnitřní třídy
}
Třída
![Page 34: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/34.jpg)
Datové atributy instance
• Datové atributy:– vyjadřují základní charakteristiky
instance třídy,– uchovávají informace mezi
jednotlivými voláními metod.• Každý datový atribut musí mít
určený typ a jméno (identifikátor) Určení jména a typu se označuje jako deklarace.
• Nastavení počáteční hodnoty se nazývá inicializace.
![Page 35: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/35.jpg)
Datové atributy - deklarace a inicializace
modifikátory typ identifikátor = hodnota;
public class Kruh{ private int prumer; private int xPozice; private int yPozice; private String barva;
………zde následují další části deklarace třídy……………} prumer = 30;
xPozice = 20;yPozice = 60;barva = "modra";
![Page 36: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/36.jpg)
Identifikátor • Je tvořen posloupností písmen, číslic a
podtržítka, začíná písmenem.• Java rozlišuje malá a velká písmena: cislo a
Cislo jsou dva různé identifikátory.• Používá se pro pojmenování:
– tříd,– datových atributů,– metod,– lokálních proměnných,– parametrů metod,– .....
• Identifikátor by měl vystihovat obsah toho, co pojmenovává. Pro pojmenování metod se obvykle používají slovesa (s předmětem), pro ostatní podstatná jména (včetně přívlastku).
• Identifikátor nesmí obsahovat klíčové slovo Javy
![Page 37: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/37.jpg)
Pravidla pro používání malých a velkých písmen v identifikátorech
(jménech)1. Velké písmeno na začátku, všechna počáteční
písmena nového slova velká– třídy– rozhraní
2. Malé písmeno na začátku, všechna počáteční písmena nového slova velká
– proměnné třídy a instance– pomocné proměnné metod– formální parametry metod– jména metod
3. Všechna písmena velká, jednotlivá slova oddělena _– pojmenované konstanty
![Page 38: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/38.jpg)
Klíčová slovaabstract continue for new switchassert default if package synchronizedboolean do goto private thisbreak double implement
sprotected throw
byte else import public throwscase enum instanceof return transientcatch extends int short trychar final interface static voidclass finally long strictfp volatileconst float native super while
![Page 39: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/39.jpg)
Metody instance• Metody:
– představují dovednosti, činnosti, které může objekt provádět,
– umožňují rozdělit kód do jednotlivých částí,
• Metody jsou deklarovány ve třídě.• Metoda se skládá z
– hlavičky (podpisu) metody– těla metody, které je tvořeno pomocí
• příkazů• deklarací lokálních proměnných.
![Page 40: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/40.jpg)
mujPes.stekej();String RasaMehoPsa = mujPes.getRasa();
Volání metody instance
odkaz na vytvořenou
instanci (identifikátor)
![Page 41: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/41.jpg)
Deklarace metody
public String getRasa ( ) {
return rasa;}
Typ návratové hodnoty
Jméno metody
Parametry metody
Klíčové slovo pro vrácení
výsledku a ukončení metody
Vracená hodnota
Modifikátor přístupu
![Page 42: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/42.jpg)
Deklarace metody
public void zmenVelikost (int novyPrumer){ vymaz(); prumer = novyPrumer; kresli();}
Typ void určuje, že
metoda nic nevrací
Jméno metody
formální parametr metody
![Page 43: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/43.jpg)
Hlavička (podpis) metody
• hlavička má několik částí– modifikátor přístupu– další (nepovinné) modifikátory– typ návratové hodnoty– jméno (identifikátor)– kulaté závorky (mohou zde být
formální parametry metody)– vyhazované výjimky(nepovinná
část)
![Page 44: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/44.jpg)
Formální parametry metody
• slouží k předání vstupních hodnot do metody
• každý parametr je v hlavičce metody deklarován podobně jako datové atributy typem a jménem
• není možné (ani smysluplné) uvádět modifikátor přístupu (parametr platí pouze v metodě)
• není možné v hlavičce přiřadit parametru implicitní hodnotu
public void pricti( int hodnota = 4) {.......tato část
nepřípustná
![Page 45: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/45.jpg)
Obsah metody - příkazy• volání metody• přiřazení• sekvence (posloupnost, blok
příkazů)• selekce (rozhodování, větvení)• iterace (cyklus, opakování)• příkaz skoku z cyklu• příkaz return• vyvolání a obsluha výjimek
![Page 46: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/46.jpg)
Obsah metody - lokální proměnná
• pro uložení mezivýsledku• po ukončení činnosti metody je
zrušena• deklarace a inicializace pomocné
proměnné se od inicializace datového atributu liší tímto:– neuvádějí se modifikátory přístupu– proměnné nejsou implicitně
inicializovány, první hodnotu musí nastavit programátor
![Page 47: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/47.jpg)
Jak vytvořit instanci• V Javě se instance vytvářejí pomocí
volání konstruktoru za klíčovým slovem new.
• Konstruktor je speciální metoda:– jmenuje se vždy stejně jako třída,– v deklaraci se neuvádí návratový typ,– lze použít modifikátory přístupu (public,
protected, private, „přátelský“),– pokud není uveden v deklaraci třídy,
vytvoří se automaticky prázdný a veřejný (public)
– konstruktory se mohou přetěžovat,
![Page 48: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/48.jpg)
Použití konstruktoru
Kruh kruh1 = new Kruh ();
určení typu proměnné
jméno proměnné
(identifikátor) operátor new pro vytvořen
í instance
spuštění konstruktoru, v závorce mohou
být hodnoty jednotlivých parametrů
přiřazovací příkaz
![Page 49: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/49.jpg)
Deklarace konstruktorupublic class Kruh{ private int prumer; private int xPozice; private int yPozice; private String barva;
/* * Vytvoreni noveho kruhu na defaultni pozici (20,60) s defaultni barvou (modra) */ public Kruh() { prumer = 30; xPozice = 20; yPozice = 60; barva = "modra"; kresli();
}
![Page 50: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/50.jpg)
Odkaz na tuto instanci (this)public class Kruh{ private int prumer; private int xPozice; private int yPozice; private String barva;
/* * Vytvoreni noveho kruhu na defaultni pozici (20,60) s defaultni barvou (modra) */ public Kruh() { prumer = 30; xPozice = 20; yPozice = 60; barva = "modra"; kresli();
}
this.prumer = 30;
this.xPozice = 20;
this.zPozice = 60;
this.barva = "modra";
this.kresli();
![Page 51: 4IT101 Základy programování](https://reader035.fdocument.pub/reader035/viewer/2022081422/5681622e550346895dd25c5b/html5/thumbnails/51.jpg)
Použité zdroje
• Pavlíčková, Pavlíček : Úvod do Javy• Pecinovský: Myslíme objektově v
jazyku Java
Java a Duke jsou registrované známky firmy Oracle