Öppna kurser

C++: beprövade lösningar och designmönster

Du kan avsevärt förbättra effektiviteten i din programmering genom att använda bästa praxis för C++, beprövade tekniker och designmönster. Under denna kurs lär du dig när du ska använda C++ 11/14, hur du använder standardbibliotek och verktyg, hur du producerar C++ kod av högsta kvalitet och hur du kan öka produktiviteten genom att kombinera verktyg, uttryck, syntax och bibliotek.

Utbildningsmål

Efter genomgången kurs ska deltagarna kunna:

  • Designa och implementera effektiva objektorienterade lösningar med C++
  • Förbättra kodkvalitet med designmönster
  • Modifiera en illa strukturerad applikation så den blir flexibel, robust och effektiv
  • Bygga omfattande bibliotek med namespaces, mallar och undantag

Förkunskaper

  • Minst 6 månaders av erfarenhet av programmering med C++
  • Du bör förstå hur följande saker används i C++:
  • Klasser och objekt
  • Arv
  • Polymorfism eller virtuella funktioner
  • Function overloading

Detaljerat kursinnehåll

Introduktion till objektorienterad utveckling

Grunder för objektorientering

  • Arv, inkapsling och polymorfism
  • Klasser, objekt och attribut
  • Associationer, meddelanden och metoder
  • Gränssnitt och abstrakta klasser

Använda Unified Modeling Language

  • Egenskaper hos UML
  • UML i C++

Använda utvecklingsverktyg

  • Automatisera livscykeln med CASE-verktyg
  • Kod-generering och "reverse engineering"
  • Verktyg för felsökning och bläddring

Designmönster

Introduktion av designmönster

  • Varför designmönster?
  • Mönsterkategorier: skapande, strukturella och beteendemönster
  • Beskriva designmönster

Använda designmönster

  • Synkronisera flera vyer med "Observer"-mönstret
  • Hantera rekursiva datastrukturer med mönstret "Composite"
  • Minimera kod-duplicering med mönstret "Template Method"
  • Hantera objektskapande med mönstret "Singleton"
  • "Decoupling" objektskapande med mönstret Factory
  • Separera algoritmer från datastrukturer med mönstret Visitor

Använda ISO standardbibliotek för C++

Standard Template Library (STL)

  • STL:s struktur
  • Deklarera och populera sekvens- & associativa behållare
  • Åtkomst till behållare med iteratorer
  • Tillämpa standard- och användardefinierade algoritmer
  • Använda funktionsobjekt och lambda-uttryck

Iostream-biblioteket

  • Grundläggande input/output
  • Formatera text-output
  • Hantera fel i input-data
  • Breda teckentyper och internationalisering

Trådbiblioteket

  • Skapa och hantera trådar
  • Hantera exklusiv åtkomst till delad data

Lagringshantering

Minneshantering

  • Upptäcka och minska onödig minnesanvändning
  • Förebygga minnesläckor med mallarna unique_ptr och shared_ptr
  • Överlagra operator new och operator delete
  • Skriva och använda smarta pekare

Lagring av filer

  • Förbereda klasser för enkel fillagring
  • Lagra och hämta objekt med Boost serialiseringsbibliotek

Skriva bättre C++

Öka kodens återanvändbarhet

  • Undvika namnkollisioner med namespaces
  • Använda mallar för typsäker återanvändbarhet

Öka stabilitet och effektivitet

  • Förstärka inkapsling genom konsekvent och korrekt användning av const
  • Dela tillstånd mellan lättviktsobjekt
  • Förstå "r-value"-referenser och "move"-semantik

Undvika fällor och fallgropar i C++

Saker som måste göras och varför

  • Virtuella destruktorer
  • Tilldelningsoperatorer och kopieringskonstruktorer

Känsliga funktioner

  • Vänner kontra offentliga medlemmar
  • Run-time-typ-information kontra virtuella medlemsfunktioner
  • Multipelt och virtuellt arv