This project was developed as part of the INF224 – Object-Oriented Programming course
It consists of two main parts:
- A C++ multimedia server managing photos, videos, and films.
- A Java Swing graphical interface acting as a remote control client.
- Implements a hierarchy of multimedia objects:
Photo
,Video
,Film
. - Manages groups of objects using STL containers and smart pointers.
- Stores/retrieves objects in a database using
std::map
. - Handles serialization/deserialization for persistence.
- Includes a TCP server to handle client commands: search, display, play.
- Robust memory management and error handling.
The Java part provides a GUI that communicates with the C++ server. It was implemented step by step:
-
Main Window:
A
JFrame
containing aJTextArea
and three buttons (append text, append other text, quit). -
Menus and Toolbar:
A
JMenuBar
andJToolBar
usingAbstractAction
to avoid code duplication and allow keyboard shortcuts. - Client/Server Interaction: Integration with the C++ multimedia server via TCP. The GUI can search for multimedia objects and trigger playback remotely.
-
Makefile:
Both the C++ and Java parts include a Makefile, allowing compilation and execution with:
make run
- cpp/: C++ multimedia server
- swing/: Java Swing GUI (remote control)
- README.html: Project description and instructions
To build and run each part:
cd cpp make run # builds and runs the C++ servercd ../swing make run # builds and runs the Java Swing client
- C++ code documented with Doxygen.
- Java code documented with Javadoc.
Possible improvements:
- Enhanced GUI with tabs (
JTabbedPane
), dialogs (JDialog
), or radio buttons. - Additional remote control features (custom commands, playlists, etc.).