A proposal:
- What will the application do?
- This application save English words and idioms which users add. Users can refer the list and enjoy some practice game to reinforce their vocabulary. (option: through attaching tag to each word and idiom, users can group their vocabulary by purpose.)
- Who will use it?
- Anyone who worry about his or her vocabulary of English such as international students or who want to learn terminologies of specific field like biology.
- Why is this project of interest?
- As an international student whom English is a second language, I have difficulties to face unknown words and idioms many times when I read or listen to. Additionally, such weak vocabulary affect my variety of speaking and writing words So, increasing vocabulary is necessary and significant for my living and academic studying.
This is GUI app built in Java. Please make sure you have installed java on your environment.
Just run main method in Main class
In the context of Vocabulary Master application:
- As a user, I want to be able to add a word, or an idiom with its meaning to my vocabulary list.
- As a user, I want to be able to add multiple words and idioms to my vocabulary list.
- As a user, I want to be able to view the list of my vocabulary.
- As a user, I want to be able to mark a word and idiom as remembered on my vocabulary list.
- As a user, I want to be able to delete a word and idiom from my vocabulary list
- As a user, I want to be able to play vocabulary test game among unremembered words and idiom.
- As a user, I want to be able to save my vocabulary list
- As a user, I want to be able to load my vocabulary list from a file when the program starts
- As a user, when I select the quit option from the application menu, I want the option to save my vocabulary list to file.
- (if possible) As a user, I want to be able to search a word or an idiom among the list of my vocabulary.
- You can generate to add vocabulary by clicking "add" button on home page.
Next, you write your vocabulary and its meaning then press "register" button to add them to your list.
Also, you can add multiple words and idioms divided by comma. - You can generate to see vocabulary list by clicking "list" button on home page.
Then, you can see detail of a word or idiom if you select one and push "detail" button.
On detail page, you can choose to delete or mark as remeber(or forget) to the vocabulary. - You can do vocabulary quiz by clicking "quiz" button on home page.
- You can trigger my audio component by pressing any command button. (eg: "add", "list", "home", "detail", etc)
- You can save the state of your vocabulary list by clicking "save" button on list page or
choosing "yes" when you exit from application. - You can load the file data to vocabulary list by pushing "load" button on home page.
- I test and design "VocabularyList" class to be robust. I use own defined "VocabularyListBoundsException" exception class
for "view" and "delete" method. In "VocabularyListTest", I have a case to test throwing VocabularyListBoundsException
properly and a case to test not throwing the exception. - I have bi-directional relation between "GraphicalUI" class and "GraphicalAssist" class, also "ConsoleUI" class and
"ConsoleUiAssist" class.
- In the first development, we made "GraphicalUI" class and "ConsoleUI" class individually. However, there are some method
having the same signature or the same implementation. So, I made new abstract class "UserInterface" to make low coupling. - Also, there is implementation of background music and button effect methods in "GraphicalUI" class. However, these methods
are not responsible for "GraphicalUI" class, so I made new abstract class "Music" and its subclass "BackGroundMusic" and
"ButtonEventMusic" to achieve high cohesion.