Skip to content
Snippets Groups Projects
Commit 70593a61 authored by Jari Lehto's avatar Jari Lehto
Browse files

Published version

parents
Branches
Tags
No related merge requests found
contracts/
.classpath
.project
.history/
.idea
.jqwik-database
.lib/
.worksheet
.settings/
*.iml
*.ipr
*.iws
*.log
project/boot/
project/plugins/project/
project/project/
project/*-shim.sbt
project/target/
target/
openjfx/
public/report.txt
public/surefire-report.html
image: maven:3-eclipse-temurin-17
variables:
# This will supress any download for dependencies and plugins or upload messages which would clutter the console log.
# `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work.
MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version"
# -DinstallAtEnd=true -DdeployAtEnd=true"
# Cache downloaded dependencies and plugins between builds.
# To keep cache across branches add ''
cache:
key: "$CI_JOB_NAME"
paths:
- .m2/repository
build:
stage: build
script:
- mvn compile
artifacts:
paths:
- target/
test:
stage: test
script:
- mvn test
artifacts:
paths:
- target/
pages:
stage: deploy
script:
- ./report.sh || true
artifacts:
paths:
- public
only:
- master
# DTEK0066 exercise 3 template
## Tehtävänanto
Tehtävänanto löytyy Villestä. Osa tehtävistä tehdään Villessa ja osa palautetaan Gitlabin kautta. Linkki omaan repositorioon ilmoitetaan Villessä.
Forkkaa itsellesi tämä projekti pohjaksi. Huomaa, että kaikki harjoituskerran 3 tehtävät tehdään samaan projektiin eli pohja forkataan vain kerran.
Main.java luokka sisältää ohjelman käynnistävän main-rutiinin. Muihin luokkiin ei tule main-rutiinia lisätä. Harjoitustyöpohja on rakennettu niin,
että Main-luokan ajamalla kaikki harjoitustehtävät suoritetaan.
Huomaa, että testit täytyy kuitenkin ajaa erikseen.
## Tehtäviin vastaaminen
- Tehtävät
- Tehtävä 3
- Tehtävä 4
- Tehtävä 5
- Tehtävä 6
- Tehtävä 7
- Tehtävä 8
Maven-projektissa testit sijoitetaan test-hakemiston alle.
## Työnkulku
1. [Forkkaa tämä projekti](https://tech.utugit.fi/soft/tools/lectures/dtek2074/2023-fi/git/gitlab/#gitlab-projektin-forkkaus)
2. [Kloonaa oma kopiosi projektista](https://tech.utugit.fi/soft/tools/lectures/dtek2074/2023-fi/git/gitlab/#gitlab-projektin-haku-paikalliseksi)
3. Tee tehtäviä
4. [Tallenna muutokset gitiin](https://tech.utugit.fi/soft/tools/lectures/dtek2074/2023-fi/git/usage/#ty%C3%B6kopion-ja-indeksin-k%C3%A4sittely)
5. [Lähetä muutokset takaisin GitLabiin](https://tech.utugit.fi/soft/tools/lectures/dtek2074/2023-fi/git/gitlab/#paikallisen-muutoksen-l%C3%A4hett%C3%A4minen-gitlabiin)
Tarvittaessa toista vaiheet 3 -- 5.
## Mavenin käskyjä
Jos käytät jotain integroitua kehitysympäristöä (IntelliJ Idea, Eclipse, VS Code), et todennäköisesti tarvitse alla olevia komentoja.
[Lue tarvittaessa ohjeet](https://tech.utugit.fi/soft/tools/lectures/dtek2074/2023-fi/build/basic/).
```bash
$ mvn clean
$ mvn compile
$ mvn test
$ mvn exec:java
```
pom.xml 0 → 100644
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>fi.utu.tech</groupId>
<artifactId>ooj-exercise3</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<!-- Configures the main class for this project (i.e. what to launch) -->
<project.mainclass>fi.utu.tech.ooj.exercise3.Main</project.mainclass>
<project.mainmodule>fi.utu.tech.ooj.exercise3</project.mainmodule>
<project.launcher>myapp</project.launcher>
<!-- The source encoding should always be utf-8. Don't change. -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Version numbers for various modules -->
<jdk.version>17</jdk.version>
<jqwik.version>1.8.4</jqwik.version>
<junit.version>5.10.2</junit.version>
<junitplatform.version>1.10.2</junitplatform.version>
</properties>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-commons</artifactId>
<version>${junitplatform.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.jqwik</groupId>
<artifactId>jqwik</artifactId>
<version>${jqwik.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>2.43.0</version>
<configuration>
<formats>
<format>
<includes>src/**/*.java</includes>
<prettier>
<devDependencies>
<prettier>2.8.1</prettier>
<prettier-plugin-java>2.0.0</prettier-plugin-java>
</devDependencies>
<config>
<tabWidth>4</tabWidth>
<parser>java</parser>
</config>
</prettier>
</format>
<format>
<includes>
<include>pom.xml</include>
</includes>
<prettier>
<devDependencyProperties>
<property>
<name>prettier</name>
<value>2.8.1</value>
</property>
<property>
<name>@prettier/plugin-xml</name>
<value>2.2.0</value>
</property>
</devDependencyProperties>
<config>
<tabWidth>4</tabWidth>
<printWidth>100</printWidth>
<parser>xml</parser>
</config>
</prettier>
</format>
<format>
<includes>
<include>*.md</include>
<include>.gitignore</include>
</includes>
<trimTrailingWhitespace />
<endWithNewline />
<indent>
<spaces>true</spaces>
<spacesPerTab>4</spacesPerTab>
</indent>
</format>
</formats>
<java>
<includes>
<include>src/**/*.java</include>
</includes>
<trimTrailingWhitespace />
<endWithNewline />
<indent>
<spaces>true</spaces>
<spacesPerTab>4</spacesPerTab>
</indent>
<importOrder />
<removeUnusedImports />
<googleJavaFormat>
<version>1.15.0</version>
<style>AOSP</style>
</googleJavaFormat>
</java>
</configuration>
</plugin>
<!-- Run this app with exec:java -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>${project.mainclass}</mainClass>
</configuration>
</plugin>
<!-- Make the packaged jar executable -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<!-- DO NOT include log4j.properties file in your Jar -->
<excludes>
<exclude>**/log4j.properties</exclude>
</excludes>
<archive>
<manifest>
<!-- Jar file entry point -->
<mainClass>${project.mainclass}</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!-- JDK source/target versions -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<compilerArgument>-Xlint:unchecked</compilerArgument>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<!-- Also create a jar of the sources -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- JShell (jshell:run) -->
<plugin>
<groupId>com.github.johnpoth</groupId>
<artifactId>jshell-maven-plugin</artifactId>
<version>1.4</version>
</plugin>
<!-- UTU DbC Javadoc annotations -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.4.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<tags>
<tag>
<name>toDo</name>
<placement>a</placement>
<head>To do:</head>
</tag>
<tag>
<name>classInvariant</name>
<placement>t</placement>
<head>Class invariant:</head>
</tag>
<tag>
<name>classInvariantProtected</name>
<placement>t</placement>
<head>Protected class invariant:</head>
</tag>
<tag>
<name>classInvariantPrivate</name>
<placement>t</placement>
<head>Private class invariant:</head>
</tag>
<tag>
<name>abstractionFunction</name>
<placement>t</placement>
<head>Abstraction function:</head>
</tag>
<tag>
<name>pre</name>
<placement>cm</placement>
<head>Precondition:</head>
</tag>
<tag>
<name>post</name>
<placement>cm</placement>
<head>Postcondition:</head>
</tag>
<tag>
<name>postProtected</name>
<placement>cm</placement>
<head>Protected postcondition:</head>
</tag>
<tag>
<name>postPrivate</name>
<placement>cm</placement>
<head>Private postcondition:</head>
</tag>
<tag>
<name>time</name>
<placement>cmf</placement>
<head>Time complexity:</head>
</tag>
<tag>
<name>space</name>
<placement>cmf</placement>
<head>Space complexity:</head>
</tag>
<tag>
<name>correspondence</name>
<placement>a</placement>
<head>Correspondence:</head>
</tag>
<tag>
<name>download</name>
<placement>a</placement>
<head>Download:</head>
</tag>
</tags>
<show>protected</show>
<failOnError>false</failOnError>
<sourceFileExcludes>
<sourceFileExclude>**/module-info.java</sourceFileExclude>
</sourceFileExcludes>
</configuration>
</plugin>
<!-- JUnit & JQwik test integration -->
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.2.5</version>
</plugin>
</plugins>
</build>
</project>
public/favicon-32x32.png

1.61 KiB

<!DOCTYPE html>
<html>
<head>
<meta charSet="utf-8"/>
<link rel="icon" href="favicon-32x32.png" type="image/png"/>
<link rel="stylesheet" href="style.css">
<title>UTU / OOJ project report</title>
</head>
<body>
<div class="layout">
<div class="layout-container">
<header>
<div class="header">
<div class="header-content">
<a href="https://www.utu.fi">
<img class="sitebranding" alt="University of Turku" src="utulogo.png" />
</a>
<nav>
<ul>
<li class="active"><a href="/">Report</a></li>
</ul>
</nav>
</div>
</div>
</header>
<div class="main-content">
<h2>Project report</h2>
</div>
<div class="main-content">
<iframe src="report.txt" title="Build"></iframe>
</div>
<div class="main-content">
<iframe src="surefire-report.html" title="Surefire report"></iframe>
</div>
<footer>
<div class="footer">
<div class="footer-content">
<a href="https://www.utu.fi">
<img class="sitebranding" alt="University of Turku" src="utulogow.png"/>
</a>
<nav>
<ul>
<li>© 2019 <a href="https://soft.utu.fi/">Software engineering</a></li>
</ul>
</nav>
</div>
</div>
</footer>
</div>
</div>
</body>
</html>
@font-face {
font-family: "brother-1816";
src: url("https://use.typekit.net/af/e4f93d/00000000000000003b9b03cb/27/l?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=i3&v=3") format("woff2"), url("https://use.typekit.net/af/e4f93d/00000000000000003b9b03cb/27/d?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=i3&v=3") format("woff"), url("https://use.typekit.net/af/e4f93d/00000000000000003b9b03cb/27/a?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=i3&v=3") format("opentype");
font-style: italic;
font-weight: 300;
font-display: auto;
}
@font-face {
font-family: "brother-1816";
src: url("https://use.typekit.net/af/deeb73/00000000000000003b9b03d0/27/l?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=n5&v=3") format("woff2"), url("https://use.typekit.net/af/deeb73/00000000000000003b9b03d0/27/d?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=n5&v=3") format("woff"), url("https://use.typekit.net/af/deeb73/00000000000000003b9b03d0/27/a?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=n5&v=3") format("opentype");
font-style: normal;
font-weight: 500;
font-display: auto;
}
@font-face {
font-family: "brother-1816";
src: url("https://use.typekit.net/af/f5cf85/00000000000000003b9b03d2/27/l?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=n7&v=3") format("woff2"), url("https://use.typekit.net/af/f5cf85/00000000000000003b9b03d2/27/d?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=n7&v=3") format("woff"), url("https://use.typekit.net/af/f5cf85/00000000000000003b9b03d2/27/a?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=n7&v=3") format("opentype");
font-style: normal;
font-weight: 700;
font-display: auto;
}
:root {
--pageWidth: 894px;
--backgroundColor: #fff;
--colorUtu1: #8b5dcb;
--colorUtu2: #78c8d2;
--colorUtu3: #f8485e;
--colorUtu4: #adcb00;
--colorUtu5: #000;
--colorUtu6: #868686;
--colorUtu7: #b1b1b0;
--colorUtu8: #d9d9d9;
--colorUtu9: #ffffff;
}
html {
font: 120% brother-1816, sans-serif;
box-sizing: border-box;
overflow-y: scroll;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
margin: 0;
padding: 0;
}
.layout {
background-color: var(--colorUtu8);
padding-right:0;
padding-left:0;
}
.layout-container {
background-color: var(--colorUtu9);
margin: 0 auto;
max-width:100rem;
}
.main-content {
display: flex;
align-items: flex-start;
align-content: space-between;
flex-wrap: wrap;
}
.toc-container {
margin-left: -5em;
margin-right: 1em;
width: 20%;
flex-grow: 1;
position: sticky;
display: block;
border-radius: 15px;
padding: 0.5em;
padding-top: 2em;
padding-bottom: 2em;
background: var(--colorUtu8);
border: 2px solid var(--colorUtu5);
}
.toc-container a {
color: var(--colorUtu5);
text-decoration: none;
}
.toc-container a:hover {
color: var(--colorUtu5);
text-decoration: underline solid var(--colorUtu5);
}
.header a:hover {
color: var(--colorUtu5);
text-decoration: underline solid var(--colorUtu5);
}
.main-header {
}
.main-lecture {
max-width: 80%;
}
.main-content {
flex-grow: 1;
}
@media (max-width:60em) {
.main-content {
display: block;
}
.main-lecture {
max-width: 100%;
}
.toc-container {
margin: 1em auto 1em auto;
padding: 0.5em;
width: 90%;
}
}
.lecture-grid-container {
display: grid;
grid-template-columns: auto auto;
border-top: 1px solid var(--colorUtu5);
border-bottom: 1px solid var(--colorUtu5);
padding: 2px;
align-items: center;
width: 100%;
}
.lecture-grid-container2 {
display: grid;
grid-template-columns: auto;
border-top: 1px solid var(--colorUtu5);
border-bottom: 1px solid var(--colorUtu5);
padding: 2px;
align-items: center;
width: 100%;
}
.lecture-grid-item {
border: 0;
padding: 10px;
font-size: 16px;
text-align: center;
max-width: 100%;
margin: 0 auto;
}
.controls-right button {
margin-left: 0.5em;
}
.controls-left button {
margin-right: 0.5em;
}
.lecture-grid-item2:first-child {
border-right: 2px solid var(--colorUtu8);
}
@media (min-width:50em) {
.layout {
padding-right: 2em;
padding-left: 2em;
}
.main-content {
padding-right: 2.5em;
padding-left: 2.5em;
padding-bottom: 2.5em;
}
}
@media (min-width:60em) {
.layout {
padding-right: 3em;
padding-left: 3em;
}
.main-content {
padding-right: 3.25em;
padding-left: 3.25em;
padding-bottom: 3.25em;
}
}
@media (min-width:80em) {
.layout {
padding-right: 4em;
padding-left: 4em;
}
.main-content {
padding-right: 4em;
padding-left: 4em;
padding-bottom: 4em;
}
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
main,
menu,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
}
audio:not([controls]) {
display: none;
height: 0;
}
progress {
vertical-align: baseline;
}
[hidden],
template {
display: none;
}
a {
background-color: transparent;
-webkit-text-decoration-skip: objects;
}
a:active,
a:hover {
outline-width: 0;
}
abbr[title] {
border-bottom: none;
text-decoration: underline;
text-decoration: underline dotted;
}
b,
strong {
font-weight: inherit;
font-weight: bolder;
}
dfn {
font-style: italic;
}
h1 {
font-size: 2em;
margin: 0.67em 0;
}
mark {
background-color: #ff0;
color: #000;
}
small {
font-size: 80%;
}
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
img {
border-style: none;
}
svg:not(:root) {
overflow: hidden;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
figure {
margin: 1em 40px;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
button,
input,
optgroup,
select,
textarea {
font: inherit;
margin: 0;
}
optgroup {
font-weight: 700;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
[type="reset"],
[type="submit"],
button,
html [type="button"] {
-webkit-appearance: button;
}
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner,
button::-moz-focus-inner {
border-style: none;
padding: 0;
}
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring,
button:-moz-focusring {
outline: 1px dotted ButtonText;
}
fieldset {
border: 1px solid silver;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
legend {
box-sizing: border-box;
color: inherit;
display: table;
max-width: 100%;
padding: 0;
white-space: normal;
}
textarea {
overflow: auto;
}
[type="checkbox"],
[type="radio"] {
box-sizing: border-box;
padding: 0;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-input-placeholder {
color: inherit;
opacity: 0.54;
}
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit;
}
* {
box-sizing: inherit;
}
*:before {
box-sizing: inherit;
}
*:after {
box-sizing: inherit;
}
body {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
margin: 0;
padding: 0;
color: hsla(0, 0%, 0%, 0.8);
font-weight: normal;
word-wrap: break-word;
font-kerning: normal;
-moz-font-feature-settings: "kern", "liga", "clig", "calt";
-ms-font-feature-settings: "kern", "liga", "clig", "calt";
-webkit-font-feature-settings: "kern", "liga", "clig", "calt";
font-feature-settings: "kern", "liga", "clig", "calt";
}
img {
max-width: 100%;
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
h1 {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
color: inherit;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
font-weight: bold;
text-rendering: optimizeLegibility;
font-size: 2.25rem;
line-height: 1.1;
}
h2 {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
color: inherit;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
font-weight: bold;
text-rendering: optimizeLegibility;
font-size: 1.62671rem;
line-height: 1.1;
}
h3 {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
color: inherit;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
font-weight: bold;
text-rendering: optimizeLegibility;
font-size: 1.38316rem;
line-height: 1.1;
}
h4 {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
color: inherit;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
font-weight: bold;
text-rendering: optimizeLegibility;
font-size: 1rem;
line-height: 1.1;
}
h5 {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
color: inherit;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
font-weight: bold;
text-rendering: optimizeLegibility;
font-size: 0.85028rem;
line-height: 1.1;
}
h6 {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
color: inherit;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
font-weight: bold;
text-rendering: optimizeLegibility;
font-size: 0.78405rem;
line-height: 1.1;
}
hgroup {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
ul {
margin-left: 1.45rem;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
list-style-position: outside;
list-style-image: none;
}
ol {
margin-left: 1.45rem;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
list-style-position: outside;
list-style-image: none;
}
dl {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
dd {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
p {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
figure {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
pre {
margin-left: 0;
margin-right: 0;
margin-top: 0;
margin-bottom: 1.45rem;
font-size: 0.85rem;
line-height: 1.42;
background: hsla(0, 0%, 0%, 0.04);
border-radius: 3px;
overflow: auto;
word-wrap: normal;
padding: 1.45rem;
}
table {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
font-size: 1rem;
line-height: 1.45rem;
border-collapse: collapse;
width: 100%;
}
fieldset {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
blockquote {
margin-left: 1.45rem;
margin-right: 1.45rem;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
form {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
noscript {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
iframe {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
width: 100%;
min-height: 90vh;
}
hr {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: calc(1.45rem - 1px);
background: hsla(0, 0%, 0%, 0.2);
border: none;
height: 1px;
}
address {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
b {
font-weight: bold;
}
strong {
font-weight: bold;
}
dt {
font-weight: bold;
}
th {
font-weight: bold;
}
li {
margin-bottom: calc(1.45rem / 2);
}
ol li {
padding-left: 0;
}
ul li {
padding-left: 0;
}
li > ol {
margin-left: 1.45rem;
margin-bottom: calc(1.45rem / 2);
margin-top: calc(1.45rem / 2);
}
li > ul {
margin-left: 1.45rem;
margin-bottom: calc(1.45rem / 2);
margin-top: calc(1.45rem / 2);
}
blockquote *:last-child {
margin-bottom: 0;
}
li *:last-child {
margin-bottom: 0;
}
p *:last-child {
margin-bottom: 0;
}
li > p {
margin-bottom: calc(1.45rem / 2);
}
code {
font-size: 0.85rem;
line-height: 1.45rem;
}
kbd {
font-size: 0.85rem;
line-height: 1.45rem;
}
samp {
font-size: 0.85rem;
line-height: 1.45rem;
}
abbr {
border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5);
cursor: help;
}
acronym {
border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5);
cursor: help;
}
abbr[title] {
border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5);
cursor: help;
text-decoration: none;
}
thead {
text-align: left;
}
td,
th {
text-align: left;
border-bottom: 1px solid hsla(0, 0%, 0%, 0.12);
font-feature-settings: "tnum";
-moz-font-feature-settings: "tnum";
-ms-font-feature-settings: "tnum";
-webkit-font-feature-settings: "tnum";
padding-left: 0.96667rem;
padding-right: 0.96667rem;
padding-top: 0.725rem;
padding-bottom: calc(0.725rem - 1px);
}
th:first-child,
td:first-child {
padding-left: 0;
}
th:last-child,
td:last-child {
padding-right: 0;
}
tt,
code {
background-color: hsla(0, 0%, 0%, 0.04);
border-radius: 3px;
font-family: "SFMono-Regular", Consolas, "Roboto Mono", "Droid Sans Mono",
"Liberation Mono", Menlo, Courier, monospace;
padding: 0;
padding-top: 0.2em;
padding-bottom: 0.2em;
}
pre code {
background: none;
line-height: 1.42;
}
code:before,
code:after,
tt:before,
tt:after {
letter-spacing: -0.2em;
content: " ";
}
pre code:before,
pre code:after,
pre tt:before,
pre tt:after {
content: "";
}
@media only screen and (max-width: 480px) {
html {
font-size: 100%;
}
}
header, footer {
padding-top: 0.6rem;
padding-bottom: 0.6rem;
}
footer {
background: var(--colorUtu5);
color: var(--colorUtu9);
}
.header, .footer {
font-size: 87.4975%;
padding-left: 3.25rem;
padding-bottom: 0.875rem;
padding-right: 3.25rem;
padding-top: 0.875rem;
}
.header-content {
width: 100%;
border-bottom: 1px solid var(--colorUtu8);
display: flex;
flex-wrap: wrap;
align-items: flex-end;
justify-content: space-between;
}
.footer-content {
width: 100%;
display: flex;
flex-wrap: wrap;
align-items: flex-start;
justify-content: space-between;
}
.header nav, .footer nav {
display: block;
flex: 1 0 auto;
padding-bottom: 0.5em;
}
.footer nav {
display: block;
flex: 1 0 auto;
padding-top: 0.5em;
padding-bottom: 0;
}
.header ul, .footer ul {
float: right;
margin: 0 -0.5em;
padding: 0;
display: flex;
}
.header li, .footer li {
list-style: none;
padding: 0;
margin: 0 1em;
text-transform: uppercase;
font-weight: bold;
}
.header a {
color: var(--colorUtu5);
text-decoration: none;
}
.footer a {
color: var(--colorUtu9);
text-decoration: none;
}
.header a:hover {
color: var(--colorUtu5);
text-decoration: underline solid var(--colorUtu5);
}
.header .active {
color: var(--colorUtu5);
text-decoration: underline solid var(--colorUtu5);
}
.footer a:hover {
color: var(--colorUtu9);
text-decoration: underline solid var(--colorUtu9);
}
.sitebranding {
width: 14.040rem;
height: 3.967rem;
flex: 0 0 auto;
flex-shrink: 0;
margin: 0;
margin-bottom: 1em;
}
@media (min-width:50em) {
.header, .footer {
font-size: 91.665%;
padding-left: 3.1rem;
padding-bottom: 0.94rem;
padding-right: 3.1rem;
padding-top: 0.94rem;
}
.sitebranding {
width: 15.100rem;
height: 4.267rem;
}
}
@media (min-width:60em) {
.header, .footer {
font-size: 87.4975%;
padding-left: 4rem;
padding-bottom: 1.1rem;
padding-right: 4rem;
padding-top: 1.1rem;
}
.sitebranding {
width: 16.400rem;
height: 4.634rem;
}
}
@media (min-width:80em) {
.header, .footer {
font-size: 83.33%;
padding-left: 5rem;
padding-bottom: 1.25rem;
padding-right: 5rem;
padding-top: 1.25rem;
}
.sitebranding {
width: 17.700rem;
height: 5.002rem;
}
}
public/utulogo.png

13 KiB

public/utulogow.png

19.7 KiB

#!/bin/sh
find src > public/report.txt
mvn clean test 2>&1 >> public/report.txt
mvn surefire-report:report
cp target/site/surefire-report.html public/
package fi.utu.tech.ooj.exercise3;
import fi.utu.tech.ooj.exercise3.asiakasrekisteriohjelma.AsiakasRekisteriohjelmanKaynnistin;
import fi.utu.tech.ooj.exercise3.opintorekisteri.OpintorekisterinKaynnistin;
public class Main {
public static void main(String[] args) {
System.out.println("DTEK0066 2024 syksy, Tehtäväkerta 3");
/* Tämä main-metodi on ainoa, joka tarvitaan kaikkien tehtävien suorittamiseksi.
Alla olevat kutsut suorittavat kaikkien harjoitustehtävien ajot.
*/
System.out.println("Tehtäväpohja käynnistyy");
AsiakasRekisteriohjelmanKaynnistin.kaynnistaOhjelma();
OpintorekisterinKaynnistin.kaynnistaOhjelma();
System.out.println("Tehtävien suoritus on päättynyt");
}
}
package fi.utu.tech.ooj.exercise3.asiakasrekisteriohjelma;
public class AsiakasRekisteriohjelmanKaynnistin {
public static void kaynnistaOhjelma() {
System.out.println("------ Asiakas- ja tuoterekisteriohjelman demo käynnistyy ------");
/*
* Tämä rutiini suoritetaan automaattisesti, kun tehtäväpohja suoritetaan
*
* Lisää tähän Asiakas- ja tuoterekisteriohjelman demonstrointiin tarvittava koodi
*
* */
System.out.println("------ Asiakas- ja tuoterekisteriohjelman demo päättyy ------");
}
}
package fi.utu.tech.ooj.exercise3.opintorekisteri;
public class OpintorekisterinKaynnistin {
public static void kaynnistaOhjelma() {
System.out.println("------ Opintorekisteriohjelman demo käynnistyy ------");
/*
* Tämä rutiini suoritetaan automaattisesti, kun tehtäväpohja suoritetaan
*
* Jos haluat kokeilla opintorekisterisi toimintaa, voit tehdä sen tässä rutiinissa
*
* */
System.out.println("------ Opintorekisteriohjelman demo päättyy ------");
}
}
module fi.utu.tech.ooj.exercise3 {
exports fi.utu.tech.ooj.exercise3;
opens fi.utu.tech.ooj.exercise3;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment