====== 1 - Úvodní cvičení ====== Co by se mohlo hodit: * [[https://google.github.io/styleguide/javaguide.html|konvence programování v Javě]] * [[http://www.odi.ch/prog/design/newbies.php|antipatterny programování v Javě]] * [[https://githowto.com/|git tutorial]] ===== UML ===== Pro potřeby vytváření UML diagramů, na kterých je vidět softwarový design aplikace, můžete použít jeden z nástrojů: /* * Enterprise architect: http://ocw.cvut.cz/moodle/course/view.php?id=157*/ * Enterprise architect 12: https://moodle.fel.cvut.cz/course/view.php?id=2345 * Opensource: https://argouml.en.softonic.com * Lucichard: https://www.lucidchart.com/pages/ * DrawIO: https://draw.io * Umrello UML modeler: https://umbrello.kde.org/ ===== GITLAB ===== * Zkontrolujte zda vám funguje účet na fel gitlabu https://gitlab.fel.cvut.cz. * Podle kódu vašeho předmětu zkontrolujte, jestli máte vytvořený repozitář v příslušné skupině: https://gitlab.fel.cvut.cz/B231_B6B36OMO/[username] ===== GIT ===== Stahněte si nějaký nástroj pro práci s gitem: * git na windows https://git-scm.com/download/win * cygwin (software pomocí kterého můžeme používat linuxové příkazy) https://www.cygwin.com/ * rabbitvcs (graficky git pro linux) http://rabbitvcs.org/ ==Návod na git: == **Git global setup** git config --global user.name "name" //<- jméno pod kterým budou evidované moje commity// git config --global user.email "login@fel.cvut.cz" //<- email pod kterým budou evidované moje commity// **Create Repository** mkdir login cd login git init //<- vytvořím prázdné lokální repo v aktuálním adresáři// touch README git add README //<- připravím si upravený soubor do staging area// git commit -m "first commit" //<- provedu commit do lokálního repository// git remote add origin git@gitlab.fel.cvut.cz:B211_B6B36OMO/login.git //<- prolinkuji lokální repo s remote repem na gitlab serveru, nadále se na něj budu odkazovat přes origin a nebudu muset pořád vypisovat celé url// git push -u origin master //<- přenesu změny provedené v lokálním repu do vzdáleného repa origin a větve master// **Existing Git Repo?** cd existing_git_repo git remote add origin git@gitlab.fel.cvut.cz:B171_B6B36OMO/login.git git push -u origin master ------------------------------------------------- ==git FAQ:== *Když gitlab píše zprávu ve smyslu, že je branch vytvořenej ale přitom není. git checkout master git pull --rebase origin master git push -u origin master *Když se při příkazu push objeví tato hláška: Could not open a connection to your authentication agent. Je potřeba zadat tyto příkazy: eval `ssh-agent -s` ssh-add ==GIT do praxe: == Nyní si rozeberme použítí feature větví v GITu. Využijeme hlavně pro práci na projektu, na kterém pracuje více vývojářů. Takovéto rozdělení je důležité, kvůli konfliktům a aby si vývojáři neměnili navzájem kód "pod rukama". Budeme potřebovat poté pro požívání například gitflow. {{:courses:b6b36omo:labs:git.png?400|}} master větev - hlavní větev projektu, někdy je pojmenovaná main. Zde musí být kód, který lze vybuildit a spustit. Pokud by jeden vývojář feature větev - každý vývojář pracuje na svém úkolu, pro úkol si vytvoří větev feature/omo-en-popis. Až když je jeho kód funkční a spustitelný, vytvoří se MR z feature větve do master větve a po code review se zamerguje. release větev = pro danou verzi projektu je vytvořena tato větev. Hlavní důvod je při hotfixech možnost se vracet ve verzích nebo mít možnost úpravy dané verze Úkol na cvičení níže obsahuje využití dané metodiky pro GIT. Toto použítí gitu platí i pro semestrální úlohy. Existují některé případy kdy tento model nebude fungovat? dev test prod byznys oddaluje release hotového vývoje z testu komplikuje se vývoj na devu oproti testu Co s tím? Gitflow, Environment as a Service (Eaas), jiné varianty.. ===== Domácí úkoly ===== Zadání domácích úkolů naleznete zde: https://cw.fel.cvut.cz/wiki/courses/b6b36omo/hw/start Odevzdávání na: https://cw.felk.cvut.cz/brute /* *1. domácí úkol je pro vás důležitý, abyste se naučili zacházet s nástroji. * *Popis naleznete zde: https://cw.fel.cvut.cz/wiki/courses/a7b36omo/infrastruktura * *Odevzdavejte pouze třídy, kde se nachází vaše implementace, nikoli celý projekt. V souboru také smažte nahoře příkaz package viz obrázek. * *{{:courses:a7b36omo:labs:du1.png?600|}} * *Adresářová struktura pro domaci ukoly: * * pro ukol č.1: homeworks/Homework1.java ** * pro ukol č.2: homeworks/Homework2.java * * atd. * *Úkoly vám mají ukázat, že není důležité vyvíjet software pouze lokálně, *ale také je potřeba ho vždy otestovat na realném serveru s testovacími soubory (local vs deploy). Každá z těchto částí vyžaduje vaši pozornost! */ ===== Úloha na cvičení ===== (část Gitu) - vyklonujte si repozitář //git clone git@gitlab.fel.cvut.cz:B231_B6B36OMO/username.git// - vytvořte si větev feature/lecture1 //git checkout -b feature/lecture1// - vytvořte si složku lecture1 - ve složce si vytvořte Java projekt (část Javy) - Vytvořte třídu reprezentující **Kolo**. Kolo má neměnnou vlastnost **průměr**. - Vytvořte třídu reprezentující **Auto**. U auta evidujeme vlastnosti **rok výroby** a **barva**. Při vytváření instance auta budeme požadovat počet kol a jejich průměr. - Vytvořte testovací program a zajistěte výpis informací o vytvořených objektech. - Vytvořte dvě **factory metody** vytvorNakladni (6 kol, průměr 50) a vytvorOsobni (4 kola, průměr 17). - Implementujte čítač, který umožní v testovacím programu vypsat informaci o počtu vytvořených instancí aut. (část Gitu) - všechny změny uložte a pushněte do svoji větve na gitlabu (rozdíl local - origin) //git add --all// //git commit -m "omo-feature/lecture1"// //git push origin feature/lecture1// - vytvořte MR a zamergujte do masteru {{:courses:b6b36omo:labs:mr.png?400|}} {{:courses:b6b36omo:labs:mr_gitlab.png?400|}} Prezentace pro paralelky 103/104 - https://docs.google.com/presentation/d/1fhAkXok7_LLcBxbOHu_UnrJB5992eg6gVXDERi0XmZw/edit?usp=sharing