Object Oriented Programming with C++

Welcome to the course Object Oriented Programming (OOP) with C++. In this course we will try to learn to become good or better OOP programmers. While the concepts can be extended to most other OOP languages, some examples may only be usable as is.

The course will also contain some specifics for mBed platforms as they can be programmed in C++. This means that some exercises can only be made on the mBed platform (if there are hardware dependencies).

Most of the material used in this course is created by Nico De Witte. However some paragraphs, definitions, examples, images, ... may be copied from other online sources. In that case a reference can be found in the Sources chapter or as a footnote.

Check out my github repos for the source of this book and for other gitbooks, code examples, ...: https://github.com/BioBoost

Alpha version

Please note that this GitBook is still under development and did not even reach a draft version yet. Make sure to check at least every week for changes made.

Prerequisites

This course does expect you to already have a basic knowledge of programming and object oriented concepts. If you don't please take the course "Object Oriented Programming with Java" which can be found at https://vives.gitbook.io/oop-with-java/.

Requirements

To follow along you will need at least a C++ compiler for the operating system you are using. Best option is to use a GCC compiler. If you are a total beginner for C++ a good option can be Microsoft Visual Code, a free IDE that supports many programming languages.

About this course

This course is not about learning to use all sorts of tools or fancy integrated development environments (IDEs). It's also not about learning to manage projects or design methodologies.

The main focus lies in learning to think in an object oriented way and in the meantime learn some object oriented languages. While learning all these great things about objects we are not responsible for the fact that you might learn a thing or two about tools and project management. A second focus is to learn to use an embedded system such as the mBed and learn some hardware programming skills.

Theory

While all you need to know for the exam is in this course, not all you should know is in here. It is extremely preferable to take notes in the lessons. And of course you are also encouraged to search the Internet and books for extra knowledge.

Feel free to ask questions in the lessons, via email or via slack.

LABs, assignments and tests

The LABs are there to practice what you have learned in the theory lessons. You will get some assignments through the semester on which you will be graded.

This course also contains extra exercises to practice your OOP skills in either Java or C++ (or another language of your preference). There may be occasions for tests but these will mostly be announced.

ECTS

For the exact details on the LABs, exams and tests you should take a look at the ECTS fiche of this course.

Course Objectives

Below is a quick overview of the objectives of this course. By the end of the semester you should be able to check each of these of and consider them to be part of your programming skillset.

At the end of this course, students will be able to

  • create basic OO applications in C++
  • understand and make use of dynamic allocation
  • develop custom classes following good practices
  • reuse implementation by applying composition and inheritance concepts
  • separate interface from implementation by using header files and implementation files
  • identify the different steps in the C++ compilation process
  • compile and use existing libraries
  • develop their own libraries
  • document code/libraries using doxygen and UML diagrams
  • create small applications for mBed compatible systems using the offline toolchain
  • identify candidates and define abstract classes
  • create and use interfaces
  • make correct use of multiple inheritance in C++
  • catch and throw custom exceptions for advanced error handling

Note that the objectives are not ordered based on their importance but more in order on which they are present in the course.

Some of the above objectives rely on topics covered in the course "Software Engineering" taught at VIVES University College. It is expected that you can apply them for this course. Some examples are the use of Doxygen, UML diagrams and some well-known design patterns. All code solutions are expected to adhere to the good practices of developing software (DRY, SOLID, ...) and should be free of the well-known code smells.

License

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

results matching ""

    No results matching ""