- deadline for answering is on September 1st, 23:59
- will announce the groups in week 36
- 70 % of grade is given by groupwork
== Referansegruppe
- Trenger 3-5 medlemmer til referansegruppe i faget
- Mulighet til å påvirke kurset og forbedre kurset for de som skal ta det senere år
- 3 møter; uke 5, uke 9 og etter kursslutt
- Ca. en time per møte
- Meld deg i pausen om du er interessert!
- If until next week there are no volunteers we will randomly select 5 students
== Getting help
- check BlackBoard
- ask your group TA - list coming soon
== Approaching Deadlines
- Søndag, 1. september / 23:59
** Fill the group form
- Torsdag, 12. september / 23:59
** 1st individual deliverable
** pushed later to week 37
[background-color = "#124990"]
[color = "#fff6d5"]
== 1st individual deliverable
== Læringsmål for øvingen
* grunnleggende git-ferdigheter
* oppsett av java-prosjekt med maven
* sammenheng mellom navn, struktur og innhold
* oppfriskning om javafx og fxml
* generell feilfinning
== Hensikt
Alle skal kunne bidra til prosjektet!!!
== Grunnleggende git-ferdigheter
* opprett kodelager på gitlab - ( use fork )
* klone mal-kodelager (`git clone`)
* lage nye versjoner (`git add` og `git commit`)
* overføre til fjernlager (`git push`)
== Java-prosjektoppsett m/maven
* kildekodemapper og pakkehierarki
** **src/main/java** og **src/main/resources**
** **src/test/java** (og **src/test/resources**)
* pakkehierarki og mappestruktur
** pakkenavn(segmenter) tilsvarer mappestruktur
** både kode og ressurser hører til pakker
** `getClass().getResource(...)`
== Navn, struktur og innhold
* klasser og filer, pakker og mapper
* konfigurasjon i pom.xml
** klassenavn (og modulnavn)
** kommandolinje-argumenter
* **module-info.java**
** modulnavn i deklarasjon og `requires`
** pakkenavn i `exports` og `opens`
== Navn, struktur og innhold
* **pom.xml**
** konfigurasjon av maven-tillegg
** inkl. kjøring av tester og app
** klassenavn (og modulnavn)
** kommandolinje-argumenter
== Oppfriskning om javafx og fxml
[.smaller-80]
* rollefordeling mellom domene- og kontroller-klasse(r)
* kobling mellom fxml og kontroller-klasse
** **fx:id** og **onXyz**-attributter i fxml-fil
** felt og metoder i kontroller-klasse
* programflyt i kontroller
** initiell visning av tilstand
** reaksjon på hendelser
** oppdatering av visning
== Generell feilfinning
[.smaller-80]
* tolke symptomer
** hvorfor reagerer ikke appen?
** hvordan finne ledetråder i "stacktracen"?
** hvorfor kalles ikke metoden?
* løse problemet
** utvikle hypoteser om årsaker
** validere (eller falsifiere) hypoteser
** prøve ut løsninger
== Main steps
[.smaller-80]
- set up the repo in gitlab
** create a project under students-2024
** use the javafx-template as a starting point
- change the template
** project name
** packages
- implement the missing logic
** check by running the tests
[background-color = "#124990"]
[color = "#fff6d5"]
== Why Java
== Java
[.smaller-80]
- in top languages for many years
- general purpose
- "the COBOL of the 21st century"
- great community and tooling
- actively developed
- good job opportunities
- Scala, Kotlin, Groovy, Clojure run on JVM
[background-color = "#124990"]
[color = "#fff6d5"]
== Git
== What is git
Git is a source code management system that is lightweight, reliable, fast and fully distributed.
On top of that it is free and open source. Git was initially authored by Linus Torwalds and emerged from his troubles encountered while trying to manage the contributions to Linux kernel.