COMP345 midterm coverage - fall 2022

From Dr. Joey Paquet Web Site
Jump to: navigation, search
  • Notes:
    • The following is the list of topics that are included in the midterm examination.
    • In general, you are responsible for all the material presented in slide set 0 to 7, along with the lab examples pertaining to them (i.e. lab 1 to lab 7)
    • Some specific topics will not be part of the examination. These are denoted with an "X" below.
  • Slide Set 0
    • none
  • Slide Set 1 and slide set 1.5:
    • program structure
    • compilation unit
    • header/cpp files
    • includes
    • redundant includes
    • namespaces
  • Slide Set 2:
    • structs and classes as data types
    • variable initialization
    • implicit/explicit type coercion
      • static_cast, dynamic_cast
      • upcasting/downcasting
    • conversion sequences
    • pointers
    • pointer artithmetic
    • pointers and const
    • void/wild/dangling/null pointers
      • stack/heap/new/delete
      • arithmetics
    • references
    • smart pointers (X)
    • parameter passing
    • strings
  • Slide Set 3:
    • input/output streams
    • cin/cout
    • files stream declarations, open/close, usage
    • << and >> operator overloading
    • MFC serialization (X)
  • Slide Set 4:
    • classes vs. structs
    • struct usage
    • class declarations (.h and .cpp files)
    • declaring/using objects
      • with or without pointers
    • inline functions/methods
    • const specifier
    • static specifier
    • friends
    • constructors/destructors
      • declaration/implementation
      • initialization list
      • implicit/explicit constructor calls
      • call chain
    • inheritance
      • overriding/overloading
      • vs. constructor/destructor implementation
      • assignment operator
      • copy constructor
      • shallow/deep copy
    • multiple inheritance
    • virtual inheritance
    • diamond problem
  • Slide Set 5:
    • statically allocated arrays (one or multidimensional)
      • declaration, usage
      • memory allocation model
      • passing as parameters
    • dynamically allocated arrays (one-dimensional)
      • declaration, usage
      • memory allocation model
      • passing as parameters
    • array decay into a pointer
    • static array classes
    • STL containers
      • declaration, usage
      • iterators
  • Slide Set 6: MVC and observer
    • MVC design (roles of Model, View Controller components)
    • Role of Observer pattern
    • MVC example in lab
  • Slide Set 7: polymorphism
    • Polymorphism: concept vs Object-oriented programming and its implementation in C++
    • Virtual methods
    • Pure virtual methods
    • Abstract classes
    • Virtual destructors
    • vs. Java interfaces
    • Value semantics and object slicing
    • Reference semantics and polymorphism
    • Function pointers
    • Virtual function tables