Kurs i

Intermediate Modern C++

Den här kursen tar vid där våra grundkurser slutar och fördjupar dina kunskaper i C++ programmering genom att dels visa dig hur du kan utöka biblioteksfunktionerna och dels hur du använder ett antal väl valda open-source bibliotek.
Detta får du lära dig på kursen
  • Skapa egna datatyper med move semantics
  • Känna till och tillämpa vanliga C++ idiom
  • Skapa egna STL kompatibla klasser och funktioner
  • Skapa egna I/O streams kompatibla klasser
  • Implementera klasser för postindelade filer
  • Implementera kalsser för minnesmappade filer
  • Fånga upp pekarfel och liknande abnormala händelser med C++ exceptions
  • Generera APi dokumentation
  • Generera och parsa JSON respektive XML
  • Accessa databaser och använda object-relational-mapping
Innehåll

Typical C++ Idioms and How to Implement Them

Här går vi igenom ett antal vanligt förekommande programmeringsidiom i C++ och hur du implementerar stöd för dessa i dina egna program. Du får lära dig om RAII också kallat resursallokeringsobjekt, implementera static initializer lists, implementera egna iteratorer, stödja användning av for-each loopar för dina egna datatyper, överlagra indexoperator [] och kunna skilja på en läs- respektive skrivoperation.

Move semantics

I detta avsnitt får du lära dig att designa och implementera effektiva egendefinierade datatyper som stödjer move semantics, vilket innebär att undvika data kopiering och flytta innehållet mellan lokala objekt.

Smart pointers

Användning av smarta pekare i C++ inför en form av automagisk skräpsamling. Här går vi igenom vad begreppet är, hur du implementerar egna smarta pekare, samt hur du använder de som finns i standardbibliotektet std::unique_ptr och std::shared_ptr.

User-defined STL containers, iterators and algorithms

I detta avsnitt får du lära dig att designa och implementera egna container typer med iterator support och STL kompatibla algorithm funktioner.

STL container allocators

När du använder container klasser såsom std::vector eller std::list, så allokeras minnesblock på den vanliga systemheapen. Ibland vill man allokera dessa minnesblock i någon annan typ av minnesarea, såsom thread-private heap eller shared memory. I detta avsnitt går vi igenom hur du implementerar en container allocator och skapar container object helt utanför systemheapen.

I/O streams compatible classes

En av de stora fördelarna med I/O streams klasserna är att det är enkelt att överlagra shift-operatorerna för en egen datatyp och sen kunna skriva ut eller läsa in via de vanliga standard strömmarna såsom cout/cout, ofstream/ifstream, ostreamstring/istringstream. Men hur skapar du en egen streams kompatibel klass? I detta avsnitt lär vi dig hur.

C++ behind the scenes

Det finns (tyvärr) många villfarelser om C++ och åsikter om prestandan. Dessa missuppfattningar härrör från en felaktig uppfattning om hur C++ exekverar och bottnar ofta i jämförelser med hur andra programspråk fungerar. I detta avsnitt gör vi upp med alla fördomar om C++ och visar hur respektive programkonstruktion översätts till motsvarande C kod. Du kan då se med egna ögon att C++ bara är ett tunnt (compile-time) skal runt C.

Record oriented files

Data filer består oftast av poster med samma storlek och binärt innehåll. I detta avsnitt går vi igenom hur du implementerar postindelade filer och hanterar såväl numerisk som text data. Vi använder flera av de idiom vi beskrivit i ett tidigare avsnitt, såsom index operator för att skilja på load respektive store operationer och användandet av for-each loop för att traversera alla poster.

Memory mapped files

Många gånger är det effektivare att ladda in en fil i minnet och processa innehållet som en stor array. I detta avsnitt går vi igenom hur du skapar en generellt användarbar klass för minnesmappade filer och visar på tekniker för både läsning och selektiv skrivning till disk. Avsnittet innehåller en genomgång av Linux systemanrop för minnesmappning, såsom mmap och msync.

Asynchronous exceptions

Visst är det förargligt när man ser meddelandet "Segmentation fault" och programmet terminerat. Men, det behöver inte vara så. I detta avsnitt går vi igenom hur du kombinerar Linux signal hantering med C++ exceptions, så att du kan fånga upp pekarfel och t.ex. division med noll.

API documentation generation with doxygen

Språket Java har etablerat en standard för dokumentation av programkod som kallas JavaDoc. I detta avsnitt går vi igenom motsvarande för C++. Hur du konfigurerar doxygen, annoterar din C++ kod och genererar användbar API HTML dokumentation, som med fördel kan skapas av en CI server såsom Jenkins.

Using the Boost open-source library

Boost är utan tvekan det mest populära C++ biblioteket vid sidan av standardbiblioteket. Boost är organiserat i flera separata moduler, där somliga moduler är header-only och andra kräver förkompilering av koden. I detta avsnitt får du lära dig att kompilera och länka Boost moduler och vi går igenom flera mycket praktiska och användbara moduler, som varje professionell C++ programmera bör känna till.

log4cxx

Applicationsloggning är en viktig aspekt av affärskritiska system. I detta avsnitt får du lära dig att installera, konfigurera och tillämpa log4cxx som är en portering av det mycket populär Java loggningsramverket log4j.

Parsing and generating JSON

I detta avsnitt får du stifta bekantskap med ett populärt bibliotek för att generera och parsa JSON data.

Parsing and generating XML

I detta avsnitt får du lära dig att både generera och parsa XML data.

Database access and object-relational-mapping

Interaktion med en relationsdatabas, såsom MySQL, är ett vanligt krav för server applikationer. I Java världen är det legio med att använda ORM (Object Relation Mapping) verktyg, så varför inte i C++ världen? I detta avsnitt får du lära dig att installera och konfigurera ett populärt ORM verktyg för C++ och använda det till att kommunicera med en MySQL databas.
SnabbFakta
Namn
Intermediate Modern C++
Längd
3 dagar
Nivå
Intermediate
Målgrupp
Erfarna C++ programmerare
Förkunskaper
Vana att programmera med modern C++ 11/14
Teknisk miljö
  • C++14 compliant C++ compiler
  • A decent IDE such as Jetbrains CLion
  • Ubuntu Linux @ VirtualBox
Relaterade Kurser
Kurs LängdNivå
Unit Testing in C++1 dagar Intermediate
Threads Programming using Modern C++ 3 dagarAdvanced
Linux Systems Programming using Modern C++3 dagarAdvanced
C++ 11/14 for C++ Programmers2 dagar Intermediate
Schemalagd Kurs

Pris

18000 kr + moms

Vi ger 20% rabatt för tillkommande deltagare från samma företag på samma kurstillfälle. Läs mer om vår samma-företags-rabatt.

Just nu har vi inga kursdatum planerade för denna kurs. Vi lägger ut kursdatum löpande, så titta förbi denna sida litet senare.

Du kan också välja att prenumerera på vårt nyhetsbrev för att bli notifierad om nya kursdatum.

Företagsintern Kurs

Om du beställer en företagsintern kurs kommer vi till er och håller kursen i era egna lokaler. Priset bestäms av vår prismodell och baseras på antalet kursdagar, antalet deltagare, samt i förekommande fall resa och logi.

Prisexempel för NN deltagare

PPP kr + moms

Antal
Område

Läs mer om vår prismodell och beställningsvillkor.