Advanced C++

Advanced C++

Обучението предоставя задълбочени умения и знания необходими на всеки C++ програмист. Ще изучавате теми за напреднали - наследяване и полиморфизъм, създаване, писане и четене от файлове, предефиниране на оператори, създаване на темплейти (шаблони), работа с изключения, контейнери, алгоритми, стекове, опашки и дървета, namespaces и други.

Ще се научите да:

  • Разработвате конзолни приложения използвайки класове и обекти
  • Създавате гъвкави модели с принципите на Обектно-Ориентирано програмиране
  • Организирате данни чрез колекции и масиви
  • Работите със стрингове – търсене, извличане, заместване, разделяне и др.
  • Използвате контролни структури – условни оператори и цикли

Програма на курса

1. Functions

  • Math Library Functions
  • Function Definitions with Multiple Parameters
  • Function Prototypes and Argument Coercion
  • Random Number Generation
  • Introducing enum
  • Storage Classes
  • Function Call Stack and Activation Records
  • Functions with Empty Parameter Lists
  • Inline Functions
  • References and Reference Parameters
  • Default Arguments
  • Function Overloading
  • Function Templates

2. Arrays and Vectors

  • Arrays
  • Declaring Arrays
  • Examples Using Arrays
  • Passing Arrays to Functions
  • Searching Arrays with Linear Search
  • Sorting Arrays with Insertion Sort
  • Multidimensional Arrays
  • Introduction to C++ Standard Library Class Template vector

3. Pointers and Pointer-Based Strings

  • Pointer Variable Declarations and Initialization
  • Pointer Operators
  • Passing Arguments to Functions by Reference with Pointers
  • Using const with Pointers
  • Selection Sort Using Pass-by-Reference
  • sizeof Operators
  • Pointer Expressions and Pointer Arithmetic
  • Relationship Between Pointers and Arrays
  • Arrays of Pointers
  • Function Pointers
  • Introduction to Pointer-Based String Processing
  • Fundamentals of Characters and Pointer-Based Strings
  • String Manipulation Functions of the String-Handling Library

4. Classes: A Deeper Look, Part 1

  • Using #define, #ifndef and #endnf preprocessor directives
  • Class Scope and Accessing Class Members
  • Separating Interface from Implementation
  • Access Functions and Utility Functions
  • Constructors with Default Arguments
  • Destructors
  • When Constructors and Destructors Are Called?
  • The Trap – Returning a Reference to a private Data Member
  • Default Memberwise Assignment
  • Software Reusability

5. Classes: A Deeper Look, Part 2

  • const (Constant) Objects and const Member Functions
  • Composition : Objects as Members of Classes
  • friend Functions and friend Classes
  • Using the this Pointer
  • Dynamic Memory Management with Operators new and delete
  • static Class Members
  • Data Abs traction and Information Hiding
  • Container Classes and Iterators
  • Proxy Classes

6. Operator Overloading

  • Fundamentals of Operator Overloading
  • Restrictions on Operator Overloading
  • Operator Functions as Class Members vs. Global Functions
  • Overloading Stream Insertion and Stream Extraction Operators
  • Overloading Unary Operators
  • Overloading Binary Operators
  • Converting between Types
  • Overloading ++ and --
  • Standard Library Class string
  • explicit Constructors

7. Object-Oriented Programming: Inheritance

  • Base Classes and Derived Classes
  • protected Members
  • Relationship between Base Classes and Derived Classes
  • Constructors and Destructors in Derived Classes
  • public, protected and private Inheritance
  • Software Engineering with Inheritance

8. Object-Oriented Programming: Polymorphism

  • Polymorphism Examples
  • Relationships Among Objects in an Inheritance Hierarchy
  • Invoking Base-Class Functions from Derived-Class Objects
  • Aiming Derived-Class Pointers at Base-Class Objects
  • Derived-Class Member-Function Calls via Base-Class Pointers
  • Virtual Functions
  • Summary of the Allowed Assignments Between Base-Class and Derived-Class Objects and Pointers
  • Type Fields and switch Statements
  • Abstract Classes and Pure virtual Functions

9. Templates

  • Function Templates
  • Overloading Function Templates
  • Class Templates
  • Nontype Parameters and Default
  • Types for Class Templates
  • Notes on Templates and Inheritance
  • Notes on Templates and Friends
  • Notes on Templates and static Members

10. Formatted Input/Output

  • Formatting Output with printf
  • Printing Integers
  • Printing Floating-Point Numbers
  • Printing Strings and Characters
  • Other Conversion Specifiers
  • Printing with Field Widths and Precisions
  • Using Flags in the printf Format-Control String
  • Printing Literals and Escape Sequences
  • Formatting Input with scanf
  • Using sprintf and sscanf

11. Stream Input/Output

  • Streams: Classic Streams vs. Standard Streams
  • iostream Library Header Files
  • Stream Input/Output Classes and Objects
  • Stream Output: Output of char* Variables, Character Output using Member Function put
  • Stream Input: get and getline, istream, peek, putback and ignore
  • Unformatted I/O using read, write and gcount
  • Stream Manipulators: dec, oct, hex and setbase, precision, setprecision, width, setw
  • Stream Format States and Stream Manipulators: showpoint, left, right, internal, fill, setfill, dec, oct, hex, showbase, scientific, fixed, uppercase, boolalpha, flags
  • Stream Error States
  • Tying an Output Stream to an Input Stream

12. Exception Handling

  • Exception-Handling Overview
  • Example: Handling an Attempt to Divide by Zero
  • When to Use Exception Handling
  • Rethrowing an Exception
  • Exception Specifications
  • Processing Unexpected Exceptions
  • Stack Unwinding
  • Constructors, Destructors and Exception Handling
  • Exceptions and Inheritance
  • Processing new Failures
  • Class auto_ptr and Dynamic Memory Allocation
  • Stand ard Library Exception Hierarchy
  • Other Error-Handling Techniques

13. File Processing

  • The Data Hierarchy
  • Files and Streams
  • Creating a Sequential File
  • Reading Data from a Sequential File
  • Updating Sequential Files
  • Random-Access Files
  • Creating a Random-Access File
  • Writing Data Randomly to a Random-Access File
  • Reading from a Random-Access File Sequentially
  • Input/Output of Objects

14. Class string and String Stream Processing

  • string Assignment and Concatenation
  • Comparing strings
  • Substrings
  • Swapping strings
  • string Characteristics
  • Finding Strings and Characters in a string
  • Replacing Characters in a string
  • Inserting Characters into a string
  • Conversion to C-Style char * Strings
  • Iterators
  • String Stream Processing

15. Regular Expressions

  • The regular expressions language–literals and meta-characters, character classes,quantifiers, grouping characters, etc.
  • Regular expressions in C++
  • Searching, extracting, validating, splitting and replacing text by regular expressions

16. The Preprocessor

  • The #include Preprocessor Directive
  • The #define Preprocessor Directive: Symbolic Constants
  • The #define Preprocessor Directive: Macros
  • Conditional Compilation
  • The #error and #pragma Preprocessor Directives
  • The # and ## Operators
  • Line Numbers
  • Predefined Symbolic Constants
  • Assertions

17. Data Structures

  • Self-Referential Classes
  • Dynamic Memory Allocation and Data Structures
  • Linked Lists
  • Stacks
  • Queues
  • Trees

18. Bits, Characters, C-Strings and structs

  • Structure Definitions
  • Initializing Structures
  • Using Structures with Functions
  • typedef
  • Example: High-Performance Card Shuffling and Dealing Simulation
  • Bitwise Operators
  • Bit Fields
  • Character-Handling Library
  • Pointer-Based String-Conversion Functions
  • Search Functions of the Pointer-Based String-Handling Library
  • Memory Functions of the Pointer-Based String-Handling Library

19. Standard Template Library (STL): Containers and Iterators

  • Introduction to the Standard Template Library (STL)
  • Introduction to Containers, Iterators and Algorithms
  • Sequence Containers: vector, list, deque
  • Associative Containers: multiset, set, multimap, map
  • Container Adapters: stack, queue, priority_queue
  • Class bitset

20. Standard Template Library (STL): Algorithms

  • fill, fill_n, generate and generate_n
  • equal, mismatch and lexicographical_compare
  • remove, remove_if, remove_copy and remove_copy_if
  • replace, replace_if, replace_copy and replace_copy_if
  • Mathematical Algorithms
  • Basic Searching and Sorting Algorithms
  • swap, iter_swap and swap_ranges
  • copy_backward, merge, unique and reverse
  • inplace_merge, unique_copy and reverse_copy
  • Set Operations
  • lower_bound, upper_bound and equal_range
  • Heapsort
  • min and max

21. More about Classes, Objects and Namespaces

  • const_cast Operator
  • namespaces
  • Operator Keywords
  • mutable Class Members
  • Pointers to Class Members (.* and ->*)
  • Multiple Inheritance
  • Multiple Inheritance and virtual Base Classes

За записване и/или въпроси, свържете се с нас.