Curriculum-of-Qt-advanced-certification: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
=Core C++ for Qt Developers Exam Curriculum 022-001=
h1. Core C++ for Qt Developers Exam Curriculum 022-001


This document defines the curriculum for Core C++ for Qt Developers exam. Digia<br /> provides three kinds of Qt certification exams: Qt Essentials Widget UI with Qt Core C++ for Qt Developers<br /> If a candidate passes Qt Essentials exam, he or she will receive Digia Certified Qt<br /> Developer status and the corresponding certificate. If he or she additionally passes either<br /> or both of advanced exams (Widget UI with Qt or Core C++ for Qt Developers), the<br /> candidate will receive Digia Certified Qt Specialist status and the corresponding certificate.<br /> If a candidate has already taken two exams and passes the third one, he or she will<br /> receive another specialist certificate, where all three passed exams are listed. It is also<br /> possible to take an advanced exam before the essentials one, but the candidate does not<br /> receive any certificate in this case, until the essentials exam has been passed.<br /> The exams are organized by authorized PearsonVUE test centers. Look at the details of<br /> test center locations in http://www.pearsonvue.com/digiaqt/. To see the nearest test<br /> center of your location, use Exam Scheduling links at the bottom of the page.<br /> Digia prints the certificates bi-weekly using a print house in Germany. After printing, the<br /> certificates are sent by mail to the exam candidates.<br /> Core C++ for Qt Developers exam will test your C++ knowledge, required to write highquality<br /> Qt programs. The exam includes a set of multi-choice questions and the candidate<br /> must select the correct statement(s).
This document defines the curriculum for Core C++ for Qt Developers exam. Digia<br />provides three kinds of Qt certification exams:<br />- Qt Essentials<br />- Widget UI with Qt<br />- Core C++ for Qt Developers<br />If a candidate passes Qt Essentials exam, he or she will receive Digia Certified Qt<br />Developer status and the corresponding certificate. If he or she additionally passes either<br />or both of advanced exams (Widget UI with Qt or Core C++ for Qt Developers), the<br />candidate will receive Digia Certified Qt Specialist status and the corresponding certificate.<br />If a candidate has already taken two exams and passes the third one, he or she will<br />receive another specialist certificate, where all three passed exams are listed. It is also<br />possible to take an advanced exam before the essentials one, but the candidate does not<br />receive any certificate in this case, until the essentials exam has been passed.<br />The exams are organized by authorized PearsonVUE test centers. Look at the details of<br />test center locations in http://www.pearsonvue.com/digiaqt/. To see the nearest test<br />center of your location, use Exam Scheduling links at the bottom of the page.<br />Digia prints the certificates bi-weekly using a print house in Germany. After printing, the<br />certificates are sent by mail to the exam candidates.<br />Core C++ for Qt Developers exam will test your C++ knowledge, required to write highquality<br />Qt programs. The exam includes a set of multi-choice questions and the candidate<br />must select the correct statement(s).


==Types, Declarations and Definitions==
== Types, Declarations and Definitions ==


* Know how to use three storage classes: static, stack, and heap
* Know how to use three storage classes: static, stack, and heap


===Know how to use basic types and cast between them===
=== Know how to use basic types and cast between them ===


* Know which of the ansi typecasts is appropriate’
* Know which of the ansi typecasts is appropriate’


===Understand how to use const and mutable===
=== Understand how to use const and mutable ===


* const_cast, const pointers also volatile
* const_cast, const pointers also volatile


===Understand the different scopes that identifiers have===
=== Understand the different scopes that identifiers have ===


* There are 5 scopes: global, file, function, block, and class
* There are 5 scopes: global, file, function, block, and class


===Understand how to define functions and use argument lists===
=== Understand how to define functions and use argument lists ===


* Default arguments overloading
* Default arguments overloading
* Understand that overloading is not permitted on return type alone
* Understand that overloading is not permitted on return type alone


===Understand how to define and use references===
=== Understand how to define and use references ===


* Defining and initializing references
* Defining and initializing references
* Passing and returning references
* Passing and returning references


===Understand how to manage object creation and destruction===
=== Understand how to manage object creation and destruction ===


<nowiki>*There are 3 memory storage classes: static, stack, and heap</nowiki><br /> *Understand what storage class an object is in, when it is created and destroyed
*There are 3 memory storage classes: static, stack, and heap<br />'''Understand what storage class an object is in, when it is created and destroyed
<br />h3. Know how to define and use namespaces
<br />h3. Understand how to separate code into header files and source files
<br />''' Understand what goes in a header file vs. a source file<br />* Understand how to break up programs into smaller modules


===Know how to define and use namespaces===
== Classes ==
 
===Understand how to separate code into header files and source files===
 
* Understand what goes in a header file vs. a source file
* Understand how to break up programs into smaller modules
 
==Classes==


* Working with Qt requires a certain level of C++ knowledge
* Working with Qt requires a certain level of C++ knowledge
* This module covers minimal scope of C++ knowledge, required to start with Qt
* This module covers minimal scope of C++ knowledge, required to start with Qt


===Understand member accessibility===
=== Understand member accessibility ===


* The concept of access control
* The concept of access control
* Splitting declaration and implementation<br /> h3. Know constructors, how they are used and member initialization<br /> Know how to write const methods const-correct classes
* Splitting declaration and implementation<br />h3. Know constructors, how they are used and member initialization<br />Know how to write const methods const-correct classes


* Understand how const modifies what a method can do
* Understand how const modifies what a method can do


===Understand static methods and static member initialization===
=== Understand static methods and static member initialization ===


* Understand how to initialize static members
* Understand how to initialize static members
Line 58: Line 54:
* Understand why static is only placed in the declaration or the definition, but never both
* Understand why static is only placed in the declaration or the definition, but never both


===Understand how objects are copied and assigned===
=== Understand how objects are copied and assigned ===


* Understand that copy and assignment methods are generated automatically for each class when they are not provided
* Understand that copy and assignment methods are generated automatically for each class when they are not provided
Line 65: Line 61:
* Understand how to prevent copies being made of certain classes
* Understand how to prevent copies being made of certain classes


==Inheritance and Polymorphism==
== Inheritance and Polymorphism ==


===Know how constructors and destructors are used in derived classes===
=== Know how constructors and destructors are used in derived classes ===


* Understand how base classes are initialized
* Understand how base classes are initialized
* Understand that constructors and destructors are not “inherited” per se, but some are generated for you, and the base class versions are called automatically from the generated ones
* Understand that constructors and destructors are not &quot;inherited&amp;quot; per se, but some are generated for you, and the base class versions are called automatically from the generated ones
* Understand how copying and assignment works with inheritance also
* Understand how copying and assignment works with inheritance also


===Understand how to use base class pointers===
=== Understand how to use base class pointers ===


* How base and derived pointers/references can be converted
* How base and derived pointers/references can be converted
* Understand how base objects can be created implicity when objects are passed by<br /> value
* Understand how base objects can be created implicity when objects are passed by<br />value


===Non-public derivation of classes===
=== Non-public derivation of classes ===


===Know virtual functions, how to define and use them===
=== Know virtual functions, how to define and use them ===


* Understand how virtual changes the behavior of a function call to perform dynamic binding at runtime
* Understand how virtual changes the behavior of a function call to perform dynamic binding at runtime
* Understand that virtual functions cannot be called from the constructor or destructor
* Understand that virtual functions cannot be called from the constructor or destructor


===Understand why virtual destructors are needed===
=== Understand why virtual destructors are needed ===


h3.Know how to use abstract classes and implement pure virtual functions<br /> h3. Understand how functions and operators can be overloaded, overridden and hidden in derived classes
h3.Know how to use abstract classes and implement pure virtual functions<br />h3. Understand how functions and operators can be overloaded, overridden and hidden in derived classes


* Understand the difference between overloaded, overridden, and hidden methods
* Understand the difference between overloaded, overridden, and hidden methods
Line 93: Line 89:
* Understand how operators can be overridden in the class or as a global function
* Understand how operators can be overridden in the class or as a global function


===Understand issues that come up from multiple inheritance===
=== Understand issues that come up from multiple inheritance ===


* Scope resolution and conflicts
* Scope resolution and conflicts
* Understand where to use virtual base classes Base Class(es) Initialization
* Understand where to use virtual base classes Base Class(es) Initialization


==Miscellaneous Topics==
== Miscellaneous Topics ==


* Includes more recently added features to the C++ language, such as templates, exceptions, tr1, etc.
* Includes more recently added features to the C++ language, such as templates, exceptions, tr1, etc.


===Understand how to use templates and Qt containers===
=== Understand how to use templates and Qt containers ===


* Understand how to define a template function, and a template class
* Understand how to define a template function, and a template class
* Understand how to specialize a template definition
* Understand how to specialize a template definition
* Understand how templates generate code
* Understand how templates generate code
* Understand how to use Qt containers and algorithms (don’t worry about <span class="caps">STL</span>)
* Understand how to use Qt containers and algorithms (don't worry about STL)


===Understand operator overloading===
=== Understand operator overloading ===


* Understand how to define operators for your types (member function, as well as global operator functions)
* Understand how to define operators for your types (member function, as well as global operator functions)
Line 117: Line 113:
* Know which operators cannot be overloaded
* Know which operators cannot be overloaded


===Know the explicit keyword and how conversion constructors are used===
=== Know the explicit keyword and how conversion constructors are used ===


* Understand that a single-argument constructor is a conversion constructor
* Understand that a single-argument constructor is a conversion constructor
* Understand that explicit disables the automatic conversion using this constructor

Revision as of 09:33, 24 February 2015

h1. Core C++ for Qt Developers Exam Curriculum 022-001

This document defines the curriculum for Core C++ for Qt Developers exam. Digia
provides three kinds of Qt certification exams:
- Qt Essentials
- Widget UI with Qt
- Core C++ for Qt Developers
If a candidate passes Qt Essentials exam, he or she will receive Digia Certified Qt
Developer status and the corresponding certificate. If he or she additionally passes either
or both of advanced exams (Widget UI with Qt or Core C++ for Qt Developers), the
candidate will receive Digia Certified Qt Specialist status and the corresponding certificate.
If a candidate has already taken two exams and passes the third one, he or she will
receive another specialist certificate, where all three passed exams are listed. It is also
possible to take an advanced exam before the essentials one, but the candidate does not
receive any certificate in this case, until the essentials exam has been passed.
The exams are organized by authorized PearsonVUE test centers. Look at the details of
test center locations in http://www.pearsonvue.com/digiaqt/. To see the nearest test
center of your location, use Exam Scheduling links at the bottom of the page.
Digia prints the certificates bi-weekly using a print house in Germany. After printing, the
certificates are sent by mail to the exam candidates.
Core C++ for Qt Developers exam will test your C++ knowledge, required to write highquality
Qt programs. The exam includes a set of multi-choice questions and the candidate
must select the correct statement(s).

Types, Declarations and Definitions

  • Know how to use three storage classes: static, stack, and heap

Know how to use basic types and cast between them

  • Know which of the ansi typecasts is appropriate’

Understand how to use const and mutable

  • const_cast, const pointers also volatile

Understand the different scopes that identifiers have

  • There are 5 scopes: global, file, function, block, and class

Understand how to define functions and use argument lists

  • Default arguments overloading
  • Understand that overloading is not permitted on return type alone

Understand how to define and use references

  • Defining and initializing references
  • Passing and returning references

Understand how to manage object creation and destruction

  • There are 3 memory storage classes: static, stack, and heap
    Understand what storage class an object is in, when it is created and destroyed


h3. Know how to define and use namespaces
h3. Understand how to separate code into header files and source files
Understand what goes in a header file vs. a source file
* Understand how to break up programs into smaller modules

Classes

  • Working with Qt requires a certain level of C++ knowledge
  • This module covers minimal scope of C++ knowledge, required to start with Qt

Understand member accessibility

  • The concept of access control
  • Splitting declaration and implementation
    h3. Know constructors, how they are used and member initialization
    Know how to write const methods const-correct classes
  • Understand how const modifies what a method can do

Understand static methods and static member initialization

  • Understand how to initialize static members
  • Understand that static methods cannot access non-static members
  • Understand why static is only placed in the declaration or the definition, but never both

Understand how objects are copied and assigned

  • Understand that copy and assignment methods are generated automatically for each class when they are not provided
  • Understand how the auto-generated methods work
  • Understand when it is appropriate to define your own
  • Understand how to prevent copies being made of certain classes

Inheritance and Polymorphism

Know how constructors and destructors are used in derived classes

  • Understand how base classes are initialized
  • Understand that constructors and destructors are not "inherited&quot; per se, but some are generated for you, and the base class versions are called automatically from the generated ones
  • Understand how copying and assignment works with inheritance also

Understand how to use base class pointers

  • How base and derived pointers/references can be converted
  • Understand how base objects can be created implicity when objects are passed by
    value

Non-public derivation of classes

Know virtual functions, how to define and use them

  • Understand how virtual changes the behavior of a function call to perform dynamic binding at runtime
  • Understand that virtual functions cannot be called from the constructor or destructor

Understand why virtual destructors are needed

h3.Know how to use abstract classes and implement pure virtual functions
h3. Understand how functions and operators can be overloaded, overridden and hidden in derived classes

  • Understand the difference between overloaded, overridden, and hidden methods
  • Understand how derived class functions can hide all overloads in the base
  • Understand how operators can be overridden in the class or as a global function

Understand issues that come up from multiple inheritance

  • Scope resolution and conflicts
  • Understand where to use virtual base classes Base Class(es) Initialization

Miscellaneous Topics

  • Includes more recently added features to the C++ language, such as templates, exceptions, tr1, etc.

Understand how to use templates and Qt containers

  • Understand how to define a template function, and a template class
  • Understand how to specialize a template definition
  • Understand how templates generate code
  • Understand how to use Qt containers and algorithms (don't worry about STL)

Understand operator overloading

  • Understand how to define operators for your types (member function, as well as global operator functions)
  • Understand conversion operators, and why they should normally not be used in favor of supporting toXXX() functions
  • Should it be a member or global function?
  • Understand why some methods need to overload on const-ness
  • Know which operators cannot be overloaded

Know the explicit keyword and how conversion constructors are used

  • Understand that a single-argument constructor is a conversion constructor