Object Oriented Programming
Coursework for Endterm: Otodecks
Introduction
In this course, we have developed a basic DJ application called Otodecks. For the end of term
assessment, you are tasked with developing the application further by adding a custom deck control
Component and a music library Component, then integrating them into a new GUI layout of your
own design. The custom deck control Component should have custom graphics, implemented in the
paint function and it should offer a means to control a deck in some interesting way of your own
design. The music library component should allow the user to manage a library of music within the
application. They should be able to search the music library and load music from it into the decks. It
should also persist between application loads, so it will need to store its state in a data file.
Requirements
We will assess your work based on the following requirements and criteria:
R1: The application should contain all the basic functionality shown in class:
◦ R1A: can load audio files into audio players
◦ R1B: can play two or more tracks
◦ R1C: can mix the tracks by varying each of their volumes
◦ R1D: can speed up and slow down the tracks
R2: Implementation of a custom deck control Component with custom graphics which
allows the user to control deck playback in some way that is more advanced than stop/ start.
◦ R2A: Component has custom graphics implemented in a paint function
◦ R2B: Component enables the user to control the playback of a deck somehow
R3: Implementation of a music library component which allows the user to manage their
music library
◦ R3A: Component allows the user to add files to their library
◦ R3B: Component parses and displays meta data such as filename and song length
◦ R3C: Component allows the user to search for files
◦ R3D: Component allows the user to load files from the library into a deck
◦ R3E: The music library persists so that it is restored when the user exits then restarts the
application
R4: Implementation of a complete custom GUI
◦ R4A: GUI layout is significantly different from the basic DeckGUI shown in class, with
extra controls
◦ R4B: GUI layout includes the custom Component from R2
◦ R4C: GUI layout includes the music library component fro R3
Code style and technique
Your code should be written according to the following style and technique guidelines:
C1: Code is organised into header (.h or .hpp) files and implementation files (.cpp). Header
files contain class interface definitions, cpp files contain implementations of class function
memenbers.
C2: Class interfaces in header files have comments for each public function describing
purpose, inputs and outputs
C3: Code is laid out clearly with consistent indenting
C4: Code is organised into functions with clear inputs and outputs and a clear, limited
purpose
C5: Code is stateless wherever possible – functions make use of data passing in preference
to global or class scope data.
C6: Functions, classes and variables have meaningful names, with a consistent naming style
C7: Functions do not change the state of class or global scope variables unless that is the
explicit purpose of a function (e.g. a setter)
Documentation
You should write a report and submit your source code. The submission should contain the
following items and information:
D1: Source code in standard ZIP format
D2: Report in PDF format
D3: Requirements: for each sub requirement (R1A → R4C) state how this was achieved or
if it was not achieved. Explain where it can be found in the code. Use focused, short code
extracts if they make your explanation clearer. Use annotated screenshots to describe your
GUI components
D4: Video tutorial: please upload a short video tutorial (5 minutes long) aimed at budding
DJs who might want to use your software. Show how the user can load files into the players,
how they can use the playback controls and any other features such as the music library and
your custom deck control.
Marking criteria
We will mark your work according to the set of criteria shown below, which consider the
requirements, your programming technique and style and the documentation you have provided:
Category Criterion Not
addressed
Attempted
but did not
meet
requirements
Met
requirements
well but did
not go
beyond that
Met requirements well and
went significantly beyond
them.
Code style
and
C1: Code is
organised into
technique header (.h
or .hpp) files
and
implementatio
n files (.cpp).
Header files
contain class
interface
definitions,
cpp files
contain
implementatio
ns of class
function
memenbers.
Code style
and
technique
C2: Class
interfaces in
header files
have
comments for
each public
function
describing
purpose, inputs
and outputs
Code style
and
technique
C3: Code is
laid out clearly
with consistent
indenting
Code style
and
technique
C4: Code is
organised into
functions with
clear inputs
and outputs
and a clear,
limited
purpose
Code style
and
technique
C5: Code is
stateless
wherever
possible –
functions make
use of data
passing in
preference to
global or class
scope data.
Code style
and
technique
C6: Functions,
classes and
variables have
meaningful
names, with a
consistent
naming style
Code style
and
technique
C7: Functions
do not change
the state of
class or global
scope variables
unless that is
the explicit
purpose of a
function (e.g. a
setter)
R1: Basic
functionali
ty
R1A: can load
audio files into
audio players
R1B: can play
two or more
tracks
R1C: can mix
the tracks by
varying each
of their
volumes
R1D: can
speed up and
slow down the
tracks
R2:
Custom
deck
control
Componen
t
R2A:
Component
has custom
graphics
implemented
in a paint
function
R2B:
Component
enables the
user to control
the playback
of a deck
somehow
R3: Music
Library
R3A:
Component
allows the user
to add files to
their library
R3B:
Component
parses and
displays meta
data such as
filename and
song length
R3C:
Component
allows the user
to search for
files
R3D:
Component
allows the user
to load files
from the
library into a
deck
R3E: The
music library
persists so that
it is restored
when the user
exits then
restarts the
application
R4:
Custom
GUI
R4A: GUI
layout is
significantly
different from
the basic
DeckGUI
shown in class,
with extra
controls
R4B: GUI
layout includes
the custom
Component
from R2
R4C: GUI
layout includes
the music
library
component fro
R3
Document
ation
D1: source
code as zip
D2: report as
D3: reporting
on
requirements
D4: Video
tutorial
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。