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 @@ + + + +
r
r
r
r
Text is not SVG - cannot display
\ 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) { + + } +}