The console app helps you to keep a record of different types of things you own: books, music albums, movies, and games. Everything is based on the UML class diagram. The data is stored in JSON files but also prepared a database with tables structure analogical to your program's class structure.
Ruby 100.00%
catalog_of_my_things's Introduction
Hi ๐, I'm NTIHINDUKA ALPHA
A passionate software developer
๐ฑ Iโm currently learning Javascript.
โก Fun fact Listening to music, playing video games, watching movies, touring
All Item class properties visible in the diagram should be defined and set up in the constructor method. Exception: properties for the 1-to-many relationships should NOT be set in the constructor method. Instead, they should have a custom setter method created.
Add all methods visible in the diagram.
Implement methods:
can_be_archived?() in the Item class
should return true if published_date is older than 10 years
otherwise, it should return false
move_to_archive() in the Item class
should reuse can_be_archived?() method
should change the archived property to true if the result of the can_be_archived?() method is true
should do nothing if the result of the can_be_archived?() method is false
All Item class properties visible in the diagram should be defined and set up in the constructor method. Exception: properties for the 1-to-many relationships should NOT be set in the constructor method. Instead, they should have a custom setter method created.
Add all methods visible in the diagram.
Team member1
Create a Book class in a separate .rb file.
Create a Label class with an association to the Item class (in a separate .rb file).
All Book class properties visible in the diagram should be defined and set up in the constructor method.
All Label class properties visible in the diagram should be defined and set up in the constructor method.
Implement methods:
add_item method in the Label class
should take an instance of the Item class as an input
should add the input item to the collection of items
should add self as a property of the item object (by using the correct setter from the item object)
can_be_archived?() in the Book class
should override the method from the parent class
should return true if parent's method returns true OR if cover_state equals to "bad"
otherwise, it should return false
Add unit tests for all implemented methods.
The following options should be available:
List all books
List all labels (e.g. 'Gift', 'New')
Add a book
All data should be preserved by saving collections in .json files.
Create a schema.sql file with tables that will be analogical to the structure of the classes that you created:
books table (add all properties and associations from the parent Item class as table columns)
labels table
Group task- Team member#2
Implement methods:
can_be_archived?() in the Item class
should return true if published_date is older than 10 years
otherwise, it should return false
move_to_archive() in the Item class
should reuse can_be_archived?() method
should change the archived property to true if the result of the can_be_archived?() method is true
should do nothing if the result of the can_be_archived?() method is false
Create a main.rb file that will serve as your console app entry-point.
Team member#2
Create MusicAlbum class in a separate .rb file.
Create Genre class with an association to the Item class (in a separate .rb file).
All MusicAlbum class properties visible in the diagram should be defined and set up in the constructor method.
All Genre class properties visible in the diagram should be defined and set up in the constructor method.
Implement methods:
add_item method in the Genre class
- should take an instance of the Item class as an input
- should add the input item to the collection of items
- should add self as a property of the item object (by using the correct setter from the item object)
can_be_archived?() in the MusicAlbum class
- should override the method from the parent class
- should return true if parent's method returns true AND if on_spotify equals true
- otherwise, it should return false
Add unit tests for all implemented methods.
The following options should be available:
List all music albums
List all genres (e.g 'Comedy', 'Thriller')
Add a music album
All data should be preserved by saving collections in .json files.
Create a schema.sql file with tables that will be analogical to the structure of the classes that you created:
music_albums table (add all properties and associations from the parent Item class as table columns)
genres table
Group task- Team member#3
Implement startup actions:
Present the user with a list of options to perform.
Let users choose an option.
If needed, ask for parameters for the option.
Have a way to quit the app.
Team member#3
Create a Game class in a separate .rb file.
Create an Author class with an association to the Item class (in a separate .rb file).
All Game class properties visible in the diagram should be defined and set up in the constructor method.
All Author class properties visible in the diagram should be defined and set up in the constructor method.
Implement methods:
add_item method in the Author class
should take an instance of the Item class as an input
should add the input item to the collection of items
should add self as a property of the item object (by using the correct setter from the item object)
can_be_archived?() in the Game class
should override the method from the parent class
should return true if parent's method returns true AND if last_played_at is older than 2 years
otherwise, it should return false
Add unit tests for all implemented methods.
The following options should be available:
List of games
List all authors (e.g. 'Stephen King')
Add a game
All data should be preserved by saving collections in .json files.
Create a schema.sql file with tables that will be analogical to the structure of the classes that you created:
games table (add all properties and associations from the parent Item class as table columns)