Edocti
Training tehnic avansat pentru inginerul software de mâine
Edocti Training

Design Patterns în Modern C++

Intermediar
21 h
4.7 (91 recenzii)

Sesiuni programate

Nu există sesiuni disponibile în acest moment.
Design Patterns în Modern C++

Design Patterns în C++ Modern: Învață să implementezi arhitecturile clasice Gang of Four (GoF) într-un mod robust, folosind idiome moderne de C++.

Modelează în UML și scrie cod hands-on pentru cele mai importante pattern-uri creaționale, structurale și comportamentale.

Valorifică funcționalitățile din standardele C++11 până la C++26 pentru a simplifica, optimiza și moderniza implementările clasice.

Dobândești experiență practică: Petreci ~70% din timp în laboratoare de refactoring, transformând codul rigid în structuri flexibile și extensibile.

Cum te ajută acest curs: Îmbunătățești radical mentenabilitatea, lizibilitatea, testabilitatea și scalabilitatea aplicațiilor tale C++.

Cui i se adresează: Programatorilor cu experiență în C++ care doresc să scrie cod curat (Clean Code) și să adopte decizii superioare de design.

Agenda include și module opționale despre concurență (async), alternative arhitecturale moderne și identificarea anti-pattern-urilor.

Abilități dobândite

GoF Design Patterns Creational Patterns Structural Patterns Behavioral Patterns Code Refactoring Modern C++ (11-26) Memory & Smart Pointers UML Modeling

Curriculum

Ziua 1 — Fundamente & Creational patterns

  • Recap OOP, SOLID și când pattern-urile ajută vs. încurcă
  • Modern C++ toolbox: RAII and smart pointers (unique_ptr, shared_ptr, weak_ptr); Move semantics and perfect forwarding; Type erasure and pimpl; Templates: partial specialization, SFINAE, Concepts, policy-based design; constexpr, consteval and compile-time computation; Ranges and views (C++20); std::variant/visit, std::optional, std::any; Coroutines (high-level overview)
  • UML esențial pentru pattern-uri (class, object, relationships)
  • Factory Method — „virtual constructors”, registries, return de unique_ptr
  • Abstract Factory — familii de produse, object graphs, dependency injection
  • Builder — API-uri fluente, imutabilitate, asamblarea invariantelor
  • Prototype — clonare de obiecte polimorfice; copy/move semantics și deep vs. shallow copy
  • Singleton — probleme de testare, threading, alternative (object lifetime, DI containers)

Ziua 2 — Structural patterns

  • Adapter — object vs. class adapter; adaptori în stil ranges; type erasure
  • Facade — API stabil peste subsisteme; PIMPL pentru reducerea rebuild-urilor
  • Proxy — remote/virtual/protection; încărcare leneșă; caching
  • Decorator — composition over inheritance; semantică pe valoare vs. referință
  • Composite — arbori; iterators și visitors; categorii de valoare
  • Flyweight — „intern” pools; string views; arena allocators
  • Bridge — dimensiuni ortogonale; stabilitate ABI; policy-based design

Ziua 3 — Behavioral patterns & refactoring

  • Strategy — static (templates/policies) vs. dynamic (type erasure/variant)
  • Observer — thread-safety, cozi lock-free; signals/slots vs. callbacks
  • Command — undo/redo, macro commands; function objects și lambdas
  • State — „table-driven” vs. State pattern; variant + visit; siguranța tranzițiilor
  • Template Method — alternative CRTP; non-virtual interface (NVI)
  • Iterator — iteratoare custom, ranges; coroutines ca generators (overview)
  • Mediator — decuplarea interacțiunilor complexe; event bus
  • Memento — strategii de snapshot; opțiuni de serializare
  • Chain of Responsibility — pipelines; tratarea erorilor cu expected/variant
  • Interpreter — DSL-uri embedded; opțiuni de parsare
  • Visitor — „acyclic visitor”; std::variant visitation & pattern matching
  • Anti-patterns & smells — „shotgun surgery”, „train wreck”, „god object”
  • Lab de refactoring — din cod ad-hoc către pattern-uri clare; măsurarea impactului

Module opționale

Opțional — Concurrency & async

  • Active Object și Reactor (conceptual) cu std::jthread și executors
  • Coroutines pentru fluxuri async; cancelare și timeouts (nivel înalt)

Structura zilei de curs

  • Part 1: 09:00–10:30
  • Break: 10:30–10:45
  • Part 2: 10:45–12:15
  • Lunch break: 12:15–13:15
  • Part 3: 13:15–15:15
  • Break: 15:15–15:30
  • Part 4: 15:30–17:30

Ai participat la acest curs?

Opinia ta este foarte importantă pentru noi. Spune-ne cum a fost experiența ta și ajută-ne să îmbunătățim acest curs pentru viitorii participanți.

Ofera feedback

Vrei să afli mai multe? Suntem aici să te ajutăm!

Sau scrie-ne direct la training@edocti.com.