C++ voor gevorderden
| Cursusduur: | 3 dagen |
| Data/Locatie: | zie het cursusoverzicht |
| Kosten: | € 1425,– (exclusief BTW) |
| Inclusief: alle cursusmateriaal, lunch, koffie, thee, frisdrank en snacks | |
| Inschrijving: | Online inschrijvingsformulier |
Deze cursus kan ook in-house worden gegeven. Neem contact met ons op voor meer informatie.
Doelgroep
U bent software-ontwikkelaar met enige basiservaring, maar uw C++-kennis heeft een plateau bereikt. U wilt hier vooruitgang in brengen en C++ op een nieuwe en betere manier gaan gebruiken, zodat het programmeren u gemakkelijker af gaat, en de resulterende software bovendien eleganter wordt, gemakkelijker te begrijpen is, eenvoudiger is aan te passen is aan veranderende requirements, minder fouten bevat en efficiënter is.
Vereiste voorkennis: u heeft tenminste een jaar programmeerervaring in C++ of een syntactisch vergelijkbare taal (b.v. C, C#, Java) en u beheerst de basis van C++: syntax, datatypen, unions, structs, classes, (copy) constructors, destructors, assignment operator, mechanismen voor parameter passing, access specifiers, arrays en pointers, eenvoudig STL-gebruik (strings, vectors), basale exception handling, polymorfisme, memory management met new en delete.
Neem contact met ons op als u twijfelt of dit de juiste cursus voor u is.
Wat u zult leren
U zult weliswaar een aantal nieuwe taaleigenschappen tegenkomen in deze cursus, maar de nadruk ligt op zaken van hoger niveau, op idiomatische aspecten van het programmeren in C++. U zult een weloverwogen en uitgebalanceerde keuze leren maken tussen ontwerpalternatieven, zoals inheritance versus compositie versus delegatie, of run-time versus compile-time polymorfisme. U zult uw begrip van de STL en van boost verdiepen, en u zult zien hoe de containers, algoritmen, iterators en functie-objecten uitermate goed op elkaar zijn afgestemd en een bredere toepassing in uw eigen code kunnen hebben dan u voor mogelijk had gehouden. U zult technieken leren waarmee memory leaks een probleem van het verleden worden en zien hoe dezelfde technieken ook toegepast kunnen worden bij het beheer van andere resources, zoals database connecties, file handles en synchronisatie-locks. U zult een dieper begrip van exception handling krijgen en zien hoe dit past binnen een overkoepelende strategie voor foutafhandeling die uw code meer robuust maakt. U zult de sterke samenhang tussen exception handling en veilig resource management doorgronden. U zult leren wanneer het zin heeft om code te optimaliseren en hoe u performance bottlenecks kunt identificeren en verwijderen.
Alle technieken die u in deze cursus leert zijn toepasbaar in uw dagelijks programmeerwerk. Door deze cursus wordt uw werk niet alleen interessanter en leuker, maar u zult ook in staat zijn om duidelijk betere code te schrijven in minimaal 10% minder tijd. U zult uitkijken naar uw eerstvolgende functioneringsgesprek.
Cursusopzet
De verhouding tussen theorie en praktijk in deze cursus is ongeveer 70%–30%. We zullen geen programmeeropgaven doen tijdens de cursus, aangezien de tijd die u besteedt aan niet-triviale programma's zich niet terugbetaalt bij cursussen van dit niveau. In plaats daarvan wordt u in de praktische opdrachten gevraagd om ontwerpbeslissingen te maken—precies het soort beslissingen dat u in de praktijk tegenkomt—en om uw keuze te motiveren, gebaseerd op wat u in het theoretische gedeelte heeft geleerd. Sommige opdrachten worden individueel gedaan, andere in tweetallen.
De groep bestaat uit maximaal 12 personen. Daardoor kunnen we inspelen op de individuele wensen en doelen van alle deelnemers.
De cursus wordt in het Nederlands gegeven als alle deelnemers deze taal spreken. Zo niet, dan wordt de cursus in het Engels gegeven. Al het cursusmateriaal is Engelstalig.
Net als alle andere cursussen van 59bits is deze cursus intensief en van hoog tempo, maar met voldoende kortere en langere pauzes om even op adem te komen en om u in staat te stellen om al het geleerde te verwerken en te onthouden.
Leest u vooral ook onze algemene cursusinformatie.
Cursusonderwerpen en kernbegrippen
De onderstaande lijst is niet volledig en is slechts bedoeld om u een indruk te geven van wat u kunt verwachten:
- Ontwerp van classes: verantwoordelijkheden van classes; encapsulation; koppeling en cohesie; delegatie en compositie
- Correct gebruik van inheritance: het Liskov substitution principle
- Gedetailleerde exception handling: basic, strong en no-fail guarantee; exception specifications; uncaught_exceptions
- Fail-safe resource management: het RAII idioom, smart pointers
- Generic programming: het schrijven van template classes en functies
- STL en boost: containers, iterators, algoritmen en functie-objecten; lambda's,
adapters, inserters, stream iterators; associative containers: sets, maps, hash-maps - Performance: profiling en tuning
- C++0x: taalaspecten in de nieuwe standaard