This guide will take you through some concepts that you need to be familiar with when designing and building your first OOP project. These are concepts you may have read about or laborated with in your basic programming courses, or they might be totally new to you. The idea beind this repository is that you will get some more insight into practical matters involving primarily system design/architecture, requirement specification, and testing. This guide will point out important things to have in mind and pitfalls and how to avoid them. This will be done by describing topics and providing examples of common pitfalls, as well as solutions for how to solve them.
All of the material is described in the Wiki. Browse through it and see if you can find some topic that you find interesting. The articles in the Wiki will link you to code examples where applicable.
While reading this, please know that this is just one way of doing things. There are thounsands and thousands of practices out there, some are better than others, but there is often no 'right way' to do things.
For some years, students of the Object-Oriented Programming Project course (TDA367) tend to ask similar questions regarding a few specific topics. As supervisors of that course, we decided it could be a good idea to gather those questions and write about those topics in an open format. Furthermore, there are certain pitfalls which nearly all students tend to run into. We address some of these topics here as well.
The target audience is students of TDA367; However, the information is generally applicable to anyone taking on their first OOP project, or looking to enhace their knoweledge.
Some of the things you might find interesting as a student:
- Domain Model
- Packaging in Java
- Fixing Circular Dependencies
- Subsystems (physics engine)
- MVC in Games
Do you have related questions which you need answers to? Create an Issue here on Github, and label it with 'question'. If we can provide a reasonable answer, we will try to incorporate that into the material on this repository later on.