Advanced OOP Assignment II – 2022-2023
Introduction
The total assignment consists of three parts, each with their own weight in the final grade. You will still be working with a model of a galaxy with stars and planets, now building a graphical user interface to examine and if needed change it. The stars provided as .csv files, while the planets are generated on the fly.
You end having a project with a larger number of classes than you probably are used to. For this assignment you do not have to change a lot in the provided classes, you use them. At the end you will have a functioning application with a GUI.
Setup
You start by importing the provided Eclipse project. Create a class with a main method where you instantiate a StarCollection object (which is a Singleton) and a SpeciesCollection (idem.) Data has been provided in the csv files; change the paths in the class Settings.java so the data will be loaded. Make sure you can indeed print some objects of the classes Star, Planet and Species to the console before continuing this assignment. You have done so in assignments #1 and #2, so this should not be a problem here.
Create a new JavaFX project (make sure to use your name in the project name) and copy all packages with files (excluding your test class,) the data folder and the libraries to the new project.
Assignment #3a
Create a Menu structure containing
 A File Menu with the options New, Exit and a submenu Load
o The submenu Load has options to load Stars and to load Species.
o The submenu New has options New Star and New Species
 A Star Menu with the option to Show Stars and Create Star
 A Species Menu with the option to Show Species and Create Species
 A Graphs Menu with options to show several graphs (see assignment)
 A Help Menu with the option About
When the application starts, the screen should be empty except for the menu.
Note: while the menu has options for Species, you do not implement them.
Assignment #3b
Implement the option Load Stars. This should read the data from the csv files configured in the settings file. Bonus points for allowing the user to select a csv file of which the contents are added to the already available data.
Assignment #3c
Implement the menu option About. It should give a dialog box with some info on the application and a Close button.
Assignment #3d
Implement the functionality Add Star. A new Star does not have to be stored to disk, you only add it to the StarCollection and make sure it is shown in the list of #3e.
Assignment #3e
Implement the functionality behind the Show Stars option. It should show the list of all stars known in the application in a list, with a detail box to the right of that list. The detail box also shows the number of planets with the star, but not details on them. Make sure to generate the planets on the fly.
Add a New and a Delete button here and make them work. We do not edit the stars. Do add a button Details; this button switches the screen to #3f.
Assignment #3f
Create a screen for details of the Star. These details include a list of the planets with the star. There are no buttons here.
Assignment #3g
Create at least two screens showing a different type of graph on Stars, Planets and/ or Species. Examples are:
 A pie chart showing the distribution of Planets over PlanetTypes
 A bar chart showing distances of the stars from the center in groups
 A scatterplot or line chart showing number of planets versus star types
 ? (Be creative, you may add other features as necessary)
Make them available from the menu.
Assignment Grading criteria
#
Element
Score
1
Correct JavaFX Architecture
Required to score
2
Menu
2
3
Screens change (instead of popping up new screens all the time)
2
4
Menu option: Load Stars
1
5
Menu option: About
1
6
Menu option: Add Star
3
7
Using advanced options (for example drop down boxes)
2
8
Showing a list of Stars
4
9
Showing Star details
2
10
Including Planet list in the Star Details
2
11
Correctly deleting a Star
2
12
Showing graph #1
3
13
Showing graph #2
4
The grade is calculated as (points scored + 2) / 3.3
고급 OOP 과제 II - 2022-2023년소개전체 과제는 세 부분으로 구성되며, 각 부분은 최종 성적에서 고유한 비중을 차지합니다. 여전히 별과 행성이 있는 은하계 모델을 가지고 작업하게 되며, 이제 이를 검토하고 필요한 경우 변경할 수 있는 그래픽 사용자 인터페이스를 구축하게 됩니다. 별은 .csv 파일로 제공되며 행성은 즉석에서 생성됩니다.평소보다 많은 수의 클래스가 포함된 프로젝트가 완성됩니다. 이 과제에서는 제공된 클래스를 많이 변경할 필요 없이 그대로 사용합니다. 마지막에는 GUI가 있는 작동하는 애플리케이션을 갖게 됩니다.설정먼저 제공된 이클립스 프로젝트를 가져옵니다. 싱글톤인 스타컬렉션 객체와 종컬렉션을 인스턴스화하는 메인 메서드가 있는 클래스를 만듭니다. 데이터가 csv 파일로 제공되었으므로 데이터가 로드되도록 설정.java 클래스에서 경로를 변경합니다. 이 과제를 계속하기 전에 Star, Planet 및 Species 클래스의 일부 객체를 콘솔에 실제로 인쇄할 수 있는지 확인합니다. 과제 #1과 #2에서 이 작업을 수행했으므로 여기서는 문제가 없을 것입니다.새 JavaFX 프로젝트를 생성하고(프로젝트 이름에 자신의 이름을 사용해야 함), 파일(테스트 클래스 제외), 데이터 폴더 및 라이브러리가 포함된 모든 패키지를 새 프로젝트에 복사합니다.과제 #3a다음을 포함하는 메뉴 구조를 만듭니다. 새로 만들기, 종료 및 하위 메뉴 로드 옵션이 있는 파일 메뉴o 로드 하위 메뉴에는 별을 로드하고 종을 로드하는 옵션이 있습니다.o 새로 만들기 하위 메뉴에는 새 별 및 새 종 옵션이 있습니다. 별 메뉴에는 별 표시 및 별 만들기 옵션이 있습니다. 종 메뉴에는 종 표시 및 종 생성 옵션이 있습니다. 여러 그래프를 표시하는 옵션이 있는 그래프 메뉴(과제 참조) 정보 옵션이 있는 도움말 메뉴애플리케이션이 시작되면 메뉴를 제외하고 화면이 비어 있어야 합니다.참고: 메뉴에는 종에 대한 옵션이 있지만 구현하지는 않습니다.과제 #3b별 로드 옵션을 구현합니다. 이 옵션은 설정 파일에 구성된 csv 파일에서 데이터를 읽어야 합니다. 사용자가 이미 사용 가능한 데이터에 내용이 추가되는 csv 파일을 선택할 수 있도록 하면 보너스 점수를 받습니다.과제 #3c정보 메뉴 옵션을 구현합니다. 애플리케이션에 대한 정보와 닫기 버튼이 포함된 대화 상자를 제공해야 합니다.과제 #3d별 추가 기능을 구현합니다. 새 별을 디스크에 저장할 필요는 없으며, 별 컬렉션에 추가하고 #3e의 목록에 표시되는지 확인하기만 하면 됩니다.과제 #3e별 표시 옵션 뒤에 있는 기능을 구현합니다. 애플리케이션에서 알려진 모든 별의 목록이 목록으로 표시되고 해당 목록의 오른쪽에 세부 정보 상자가 표시되어야 합니다. 세부 정보 상자에는 해당 별이 있는 행성의 수는 표시되지만 행성에 대한 세부 정보는 표시되지 않습니다. 행성을 즉석에서 생성해야 합니다.여기에 새로 만들기 및 삭제 버튼을 추가하고 작동하도록 합니다. 별은 편집하지 않습니다. 세부 사항 버튼을 추가하세요. 이 버튼은 화면을 #3f로 전환합니다.과제 #3f별의 세부 정보를 표시하는 화면을 생성합니다. 이 세부 사항에는 별과 함께 있는 행성 목록이 포함됩니다. 여기에는 버튼이 없습니다.과제 #3g별, 행성 및/또는 종에 대해 서로 다른 유형의 그래프를 보여주는 화면을 두 개 이상 만드세요. 예는 다음과 같습니다: 행성 유형에 따른 행성 분포를 보여주는 원형 차트 중심으로부터 별들의 거리를 그룹으로 표시하는 막대형 차트 행성의 수와 별의 유형을 보여주는 산점도 또는 꺾은선형 차트 ? (창의력을 발휘하여 필요에 따라 다른 기능을 추가할 수 있습니다.)메뉴에서 사용할 수 있도록 설정합니다.과제 채점 기준#요소점수1올바른 JavaFX 아키텍처점수 획득에 필요2메뉴23화면 변경(항상 새 화면이 표시되는 대신)24메뉴 옵션: 별 불러오기15메뉴 옵션: 정보16메뉴 옵션: 별 추가37고급 옵션 사용(예: 드롭다운 상자)28별 목록 표시하기49별 세부 정보 표시210별 세부 정보에 행성 목록 포함211별을 올바르게 삭제하기212그래프 #1 표시하기313그래프 # 2 표시4성적은 (점수 + 2) / 3.3으로 계산됩니다.