Ö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