From 66f3ed239279a7c59589b80e84bd4497ebed24d7 Mon Sep 17 00:00:00 2001
From: "github-classroom[bot]"
<66690702+github-classroom[bot]@users.noreply.github.com>
Date: Tue, 23 May 2023 09:04:18 +0000
Subject: [PATCH] Initial commit
---
.github/workflows/run-tests.yml | 20 ++
.gitignore | 9 +
README.md | 218 ++++++++++++++++++
pom.xml | 24 ++
readme-images/gui.png | Bin 0 -> 8815 bytes
readme-images/shapes.svg | 4 +
.../java/sk/stuba/fei/uim/oop/ExamRT.java | 7 +
7 files changed, 282 insertions(+)
create mode 100644 .github/workflows/run-tests.yml
create mode 100644 .gitignore
create mode 100644 README.md
create mode 100644 pom.xml
create mode 100644 readme-images/gui.png
create mode 100644 readme-images/shapes.svg
create mode 100644 src/main/java/sk/stuba/fei/uim/oop/ExamRT.java
diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml
new file mode 100644
index 0000000..54d50cf
--- /dev/null
+++ b/.github/workflows/run-tests.yml
@@ -0,0 +1,20 @@
+on: [ push ]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up JDK 11
+ uses: actions/setup-java@v1
+ with:
+ java-version: 11
+ - name: Maven cache packages
+ uses: actions/cache@v2.1.3
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+ - name: Build with Maven
+ run: mvn --batch-mode --update-snapshots -DskipTests=true compile package install
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8080e8f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+# Idea
+.idea/
+target
+B-OOP-2023-exam-RT.iml
+
+# VS code
+.settings/
+.classpath
+.project
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0cba5d9
--- /dev/null
+++ b/README.md
@@ -0,0 +1,218 @@
+# Riadny termín OOP \[60b], 23.05.2023 11:00
+B-OOP 2023
+
+Vytvorte oknovú aplikáciu, ktorá umožní používateľovi kresliť farebnú reťaz s geometrickými tvarmi pomocou pohybu myši.
+Aplikácia bude mať nasledovnú funkcionalitu (40 bodov):
+
+1. Vytvorenie hlavného okna, ktoré bude obsahovať funkčné Ovládacie prvky a Kresliacu plochu \[9b].
+2. Kreslenie čiary \[5b].
+3. Kreslenie geometrických tvarov na čiare \[10b].
+4. Vplyv ovládacích prvkov na vykresľovanie \[10b].
+5. Vykresľovanie farebného gradientu \[5b].
+6. Zatvorenie aplikácie cez tlačidlo na zatvorenie aplikácie poskytnuté operačným systémom \[1b].
+
+## Podrobný popis k bodu 1:
+
+Väčšinu plochy okna bude zaberať Kresliaca plocha. V bočnej časti okna (vľavo, alebo vpravo) sa budú nachádzať Ovládacie
+prvky. Ovládacie prvky budú tvoriť:
+1. [JSlider](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JSlider.html) s vertikálnym usporiadaním, rozsah 20-200, krok 10, počiatočná hodnota 50, na výber dĺžky reťaze
+2. [JSlider](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JSlider.html) s vertikálnym usporiadaním, rozsah 1-20, krok 1, počiatočná hodnota 5, na výber polomeru kreslených tvarov
+3. [JSlider](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JSlider.html) s vertikálnym usporiadaním, rozsah 1-20, krok 1, počiatočná hodnota 5, na výber odstupu medzi tvarmi
+4. 3x [JLabel](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JLabel.html) popisujúci každý zo sliderov (umiestnený nad alebo pod sliderom ku ktorému prislúcha)
+5. [JCombobox](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JComboBox.html) na výber kreslených tvarov na reťazi (kruh, štvorec, presípacie hodiny), počiatočná hodnota je kruh
+
+Rozloženie ovládacích prvkov by malo byť približne ako na obrázku. Slideri snapujú na zvolený krok.
+
+![GUI](readme-images/gui.png)
+
+## Podrobný popis k bodu 2:
+
+Keď sa pohne (alebo dragne) myš, tak sa jej aktuálna pozícia uloží na začiatok zoznamu súradníc.
+Pokiaľ pridanie bodu predĺži zoznam na viac prvkov, ako je maximálna dĺžka reťaze, nadbytočné prvky z konca zoznamu budú odstránené.
+
+Čiara sa vykresľuje medzi prvý a druhým, druhým a tretím, ..., pred-posledným a posledným bodom zoznamu.
+
+Segmenty čiary (a tvary z bodu 3), ktoré sa nachádzajú bližšie ku začiatku zoznamu prekrývajú tie, ktoré sa nachádzajú neskôr v zozname.
+
+## Podrobný popis k bodu 3:
+
+Na bodoch z ktorých sa skladá reťaz sa vykresľujú zvolené tvary. Stred tvaru je bod reťaze a veľkosť tvaru je určená aktuálnou hodnotou polomeru.
+Tvary sa nemusia vykresľovať v každom bode reťaze, to určuje aktuálne zvolený odstup.
+
+Keď je odstup 1, tak sa vykresľujú v každom bode, keď 2 tak v každom druhom, atď.
+Tvar sa vždy vykresľuje na prvom bode zoznamu (index 0 je deliteľný ľubovoľným číslom).
+Tvar sa taktiež vždy vykresľuje na poslednom bode zoznamu, aj keby jeho index nebol deliteľný zvoleným odstupom.
+
+![Tvary](readme-images/shapes.svg)
+
+## Podrobný popis k bodu 4:
+
+Ovládacie prvky menia parametre vykreslovania a ich zmena sa okamžite prejaví na vykresľovacej ploche.
+Počiatočné parametre vykresľovania sú totožné s počiatočnou hodnotou ovládacích prvkov.
+
+Keď sa zväčší dĺžka reťaze tak sa do nej pridajú nové body postupne pri pohybe myši.
+Keď sa tento počet zmenší, tak sú body z reťaze odstránené okamžite.
+
+Keď sa zmení polomer, alebo odstup, tak sa automaticky prekreslia tvary (zmenia svoju veľkosť, resp. sa poposúvajú na nové pozície na reťazi).
+
+Keď sa zmení aktuálne zvolený tvar, tak sa automaticky prekreslia všetky tvary na novo zvolený.
+
+## Podrobný popis k bodu 5:
+
+Segmenty reťaze a tvary na nej majú farbu podľa svojej pozície v reťazi.
+
+Segmenty v reťazi spoločne tvoria nejaký lineárny farebný gradient, napríklad:
+
+* prechod z červenej do čiernej
+* prechod z modrej do žltej
+* prechod po farbách dúhy v HSV farebnom priestore [Color.getHSBColor()](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/Color.html#getHSBColor(float,float,float))
+
+Pri tvorbe gradientu nepoužívajte bielu farbu.
+
+Gradient závisí od nastavenej maximálnej dĺžky reťaze, aby prvý prvok bol vždy na začiatku postupnosti farieb a posledný vždy na konci
+(veľkosť kroku v priestore farieb sa mení podľa maximálnej dĺžky).
+
+## Hodnotenie
+
+Projekt obsahuje github pipeline, ktorá kontroluje skompilovateľnosť programu. **Pokiaľ program nie je skompilovateľný nebude hodnotený a skúška bude hodnotená 0b!**
+
+**Pokiaľ budete počas skúšky pristihnutý pri podvádzaní, alebo bude váš kód vykazovať príliš veľkú podobnosť s kódom iných študentov, bude skúška hodnotená 0 bodmi!**
+
+Okrem funkcionality budú hodnotené aj princípy Objektovo orientovaného programovania (20 bodov), budeme hodnotit približne rovnaké veci ako pri druhom zadaní, pre istotu uvádzame niektoré z nich:
+
+* správne modifikátory prístupu,
+* vhodné pomenovanie tried a metód,
+* vhodné využitie dedenia a polymorfizmu
+* vhodné použitie výnimiek na ošetrenie nedovoleného správania (nehádzať a nezachytávať všeobecnú triedu Exception),
+* stavové premenné ako int alebo String,
+* duplicitný kód,
+* unused kód,
+* nedodržanie konvencií,
+* použitie keyStroke,
+* použitie vnorených tried (nested class),
+* použitie statických metód alebo nekonštantných statických premenných,
+* celá aplikácia naprogramovaná v jednej triede,
+* inicializacia atributov triedy pri ich vytvoreni,
+* kontrola kláves bez java konštánt (VK_),
+* vykreslovanie textu cez kresliacu plochu,
+* keyListener prestane fungovať po stlačení niečoho v menu,
+* Null layout
+
+Za každy nedostatok vám možu byť strhnuté cca 3-4 body.
+
+Pokiaľ vaše riešenie neobsahuje dostatok implementácie je maximálny počet bodov z OOP znížený priamo úmerne s množstvom implementácie, podľa názoru hodnotiaceho.
+
+## Odovzdanie
+
+Vypracovanie skúšky odovzdajte cez Github classroom vykonaním commit a push zdrojového kódu do vášho repozitára v skupine Interes-Group (tak ako na zadaniach). Hodnotí sa posledný pushnutý commit pred časom ukončenia skúšky (bude oznámený po začatí skúšky). Odovzdáva sa obsah celého projektu. Na vypracovanie písomky je vyhradený čas 3 hodiny.
+
+---------------------------------------------------------------------------------------
+
+# Exam RT OOP \[60b], 23.05.2023 11:00
+B-OOP 2023
+
+Your task is to create a java window application.
+The application allows the user to draw a chain of lines and geometric shapes by moving the mouse.
+The application has the following functionality (40 points):
+
+1. Creation of the main window, that will contain control elements and a drawing area \[9b].
+2. Drawing the lines of the chain \[5b].
+3. Drawing the geometric shapes on the chain \[10b].
+4. Influencing the drawn chain with the control elements \[10b].
+4. Drawing a color gradient \[5pts].
+5. Closing the application with the "close window" button provided by the operating system \[1pt].
+
+## Description for bullet point 1:
+Most of the window area will be covered by the drawing area.
+The side of the window (left or right) will contain the control elements. The control elements consist of:
+1. [JSlider](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JSlider.html) with vertical layout, range 20-200, step 10, initial value 50, for choosing the length of the chain
+2. [JSlider](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JSlider.html) with vertical layout, range 1-20, step 1, initial value 5, for choosing the radius of the geometric shapes
+3. [JSlider](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JSlider.html) with vertical layout, range 1-20, step 1, initial value 5, for choosing the spacing of the geometric shapes
+4. 3x [JLabel](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JLabel.html) labeling each of the sliders (placed above, or below the slider it labels)
+5. [JCombobox](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JComboBox.html) for choosing the drawn geometric shape (circle, square, hourglass), initial value is cirlce
+
+The elements should be layed out similarly to the picture. The sliders snap to the ticks of the specified step.
+
+![GUI](readme-images/gui.png)
+
+## Description for bullet point 2:
+
+When the mouse is moved (or dragged), its current position will be saved in the front of a list of points.
+If adding the new positions increases the size of the list beyond the maximal size of the chain, the superfluous elements will be removed from the end of the list.
+
+A line is drawn between the first and second, the third and fourth, ... the one-before-last and the last element of the list.
+
+Lines (and geometric shapes from bullet point 3) corresponding to elements closer to the start of the list are drawn above shapes corresponding to elements later in the list.
+
+## Description for bullet point 3:
+
+Geometric shapes are drawn at the points that make up the chain.
+The center of the shape is the point on the chain and the size is determined by the selected radius.
+Shapes must not necessarily be drawn at every point in the chain, that is determined by the selected spacing.
+
+If the spacing is 1, then the shapes are drawn at every point. If the spacing is 2, then at every other point and so on.
+A shape is always drawn at the first point in the chain (index 0 is divisible by any number).
+A shape is always drawn at the last point in the chain, even if its index is not divisible by the current spacing.
+
+![Shapes](readme-images/shapes.svg)
+
+## Description for bullet point 4:
+
+The control elements change the settings for drawing the chain. When a control element value changes the drawn chain is affected immediately.
+The initial values of the control elements correspond to the initial settings for drawing the chain.
+
+When the length of the chain increases, new points are added only after moving the mouse.
+When the length of the chain decreases, superfluous points are removed immediately.
+
+When the radius or spacing of the geometric shapes changes, the shapes are immediately repainted (they change their size, or change their spacing on the chain respectively).
+
+When the selected shape changes, all drawn geometric shapes are replaced with the new shape.
+
+## Description for bullet point 5:
+
+The line segments of the chain and the geometric shapes have a color based on their position in the chain.
+
+The colors of the chain is a linear gradient of some kind. For example:
+
+* transition from red to black
+* transition from blue to yellow
+* transition through the colors of the rainbow in the HSV color space [Color.getHSBColor()](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/Color.html#getHSBColor(float,float,float))
+
+Don't use the color white as part of your gradient.
+
+The gradient depends on the maximal length of the chain. The first element should correspond to the first color and the
+last element should correspond to the second color of the gradient (the step-size in the color space depends on the maximal length of the chain).
+
+## Grading
+
+The project contains a github pipeline, that checks whether it can be compiled or not. **If the program cannot be compiled it will not be graded and 0 points will be received for the exam!**.
+
+**If you are caught cheating during the exam, or if the source code handed in by you will have a suspicious amount of similarities with the code of other students 0 points will be received for the exam!**
+
+Appart from the functionality, the principles of Object-Oriented Programming will be graded as well (20 pts), pay close attention especially to:
+
+* correct access modifiers,
+* appropriate naming of classes and methods,
+* appropriate use of inheritance and polymorphism,
+* appropriate use of exceptions for handling illegal behavior (do not throw or catch the generic Exception class),
+* usage of int or String state variables,
+* duplicate code,
+* unused code,
+* usage of the java language conventions,
+* usage of keyStroke,
+* usage of nested classes,
+* usage of static methods or non-final static variables,
+* the entire application being coded in one class,
+* initialisation of class attributes at declaration,
+* comparing key codes without the java constants (VK_),
+* drawing text over the drawing area,
+* keyListener stops working when a menu element is clicked,
+* Null layout
+
+For each mistake you may lose around 3-4 points.
+
+If your solution does not contain enough implementation, the maximum points that you can obtain for OOP may be changed accordingly, at the discretion of the examiner.
+
+## Handing in the assigment
+
+Hand in the assignment into your Github classroom repository located under the Interes-Group for this exam. Hand in the entire project. You have 3 hours to complete the exam.
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..f877013
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,24 @@
+
+
+ 4.0.0
+
+ sk.stuba.fei.uim.oop
+ B-OOP-2023-exam-RT
+ 1.0-SNAPSHOT
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.16
+
+
+
+
+ 11
+ 11
+
+
+
diff --git a/readme-images/gui.png b/readme-images/gui.png
new file mode 100644
index 0000000000000000000000000000000000000000..9265a1670bc26a558521227ca59769bbc5cd302d
GIT binary patch
literal 8815
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
LHYd@?5vYFyeo?!C
literal 0
HcmV?d00001
diff --git a/readme-images/shapes.svg b/readme-images/shapes.svg
new file mode 100644
index 0000000..843fe71
--- /dev/null
+++ b/readme-images/shapes.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/sk/stuba/fei/uim/oop/ExamRT.java b/src/main/java/sk/stuba/fei/uim/oop/ExamRT.java
new file mode 100644
index 0000000..45e24a7
--- /dev/null
+++ b/src/main/java/sk/stuba/fei/uim/oop/ExamRT.java
@@ -0,0 +1,7 @@
+package sk.stuba.fei.uim.oop;
+
+public class ExamRT {
+ public static void main(String[] args) {
+
+ }
+}