Samenvatting Programmeren Voor Multimedia
Transcript of Samenvatting Programmeren Voor Multimedia
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
1/17
Samenvatting programmeren voor multimedia
Les 1
Datatypes & variables
boolean => bool => represenation of booleans in C++ are 0(false) and 1 or non!ero value(true)"
#f($) => true
%nal => onst
'asi outputinlude iostream>
using namespae std *
out endl
int , *
in >> , *
-rrays#nt a./ *
Lengt info is not automatially maintained in C++
#nt b. = 213345* => initiali!er list
6een lengte 7
#nlude diretivesStarten met "
8orden gebrui9t door de preproessor"
Libraries: inlude mat>
Headers: inlude :mylib"; -lle standard libraries in namespae std
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
2/17
d"getear()
ointers
#n een pointer !it steeds een adres B
#nt a = $*
#nt Ep = &a*
Aoet gedereFerened @orden om ver@iG!en naar @aarde => out Ep
endl*
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
3/17
ass by value & pass by address
,ample 1a => 1 *
,ample 1b => *
Een object wordt gepassed by address wanneer :
Hriginele value ge@iG!igd moet @orden iGdseIiJntie3 om niet alles te 9opiJren
Les 4
Bijvoorbeeld:een fatory maa9t een groot obGet aan"
8anneer B
Dan maa9t dit een omplete 9opie3 niet eIiJnt7
8anneerB
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
4/17
Dan @ordt er ver@e!en naar garbage3 dus gaat al !e9er niet"
Hplossing3 dynamis geeugen reserverenB
e ne@ operator retourneert et adres van een nieu@ obGet"
Dynamisch geheugen
'liGft gealloeerd tot einde programma Hf tot @anneer er een delete operator @ordt uitgevoerd
Delete operator ver@iGdert et geeugen @aarnaar p ver@iGst"
Aaa9 een delete @anneer 9laar met dynamis obGet om memory lea9s te
voor9omen7
ointers e,tra
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
5/17
8anneer er vier bytes @orden gebrui9t voor een integer op te slaan ver@iGst peerst naar geeugenadres 3 @anneer @e er KKn biG optellen3 later naargeeugenadres /"
-rrays en pointerswee manieren arrays:
1) #nt a./) #nt E a = ne@ int./
weede element:
1) a.1) E(a+1) unnen door el9aar @orden gebrui9t
DusB @anneer int b. = 21334)
#sB E(b+1) =
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
6/17
Lab M
Neferenes& => referene operator
#nt i = $*
#nt & r = i*
Dit bete9ent dat r een referene is van i" #n de pra9tiG9 en9el een andere naamvoor i" => beide namen staan boven !elfde geeugenel"
assing by referener is nog een derde manier om een input mee te geven aan een funtie3 byreferene"
Ho9 ier @ordt uitgeprint"
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
7/17
#n dit geval moet pass by referene @orden ver9o!en boven pass by
address omdat et eleganter is"
Hperator overloading
manierenB
!on"member #unction
" header
friend oint operator + (onst oint & p13 onst oint & p)
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
8/17
De default assignment operators en opy onstrutors in ++ ma9en
sallo@ opies" Ooor deep opies moeten @e de!e !elf sriGven" #n ditgeval is et dus niet et nodig"
In dit geval w'l:
Copy onstrutor
(ordt gecalled in volgende gevallen:
en obGet moet @orden geinstantieerd met de @aarden van een anderobGet
en obGet is passed by value (een opy van beiden @ordt gebrui9t) en obGet @ordt gereturned van een funtie by value
)oorbeeld:
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
9/17
-ssignment operator)oorbeeld:
HbGet bestaat al dus @e 9unnen passen by referene
Lab /
Construtor initali!ation list an @orden gebrui9t om onstante membervariabelen te initialiseren =>
anders ompiler error an oo9 gebrui9t @orden om niet onstante member variabelen te
initialiseren
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
10/17
Hvererving
:*; moet :3; !iGn"
Virtuele functies en interface klasses
8e ma9en een foo en een goo sub9lassen die beiden een identify funtie ebben3en @e initialiseren een goo obGet in een foo obGet" 8anneer @e op dit obGet deidentify funtie oproepen !al die van foo @orden opgeroepen" Aa9en @e deidentify funtie virtueel3 dan @ordt de van et eigenliG9e obGet3 de goo identify3opgeroepen"
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
11/17
Hf men nu pointers3 referenes of values gebrui9t3 in alle gevallen @ordt er Q# ama 6oo obGet"R uitgeprint"
A pure virtual functie
en pure virtuele funtie is een virtuele funtie !onder een body" 8e moeten er indit geval de @aarde 0 aan toe@iG!en"
8anneer @e een dergeliG9e funtie ma9en3 AH de!e funtie @ordengemplementeerd in alle 9lassen die overerven van de!e 9lasse"
Een interface klasse
en 9lasse die geen membervariabelen eeft en @aarvan alle memberfuntiespure virtuele funties !iGn"
Virtuele destructor
en destrutor moet -L#TD virtueel @orden gemaa9t"
8anneer @e aan obGet van een sub9lasse aanma9en en toe@iG!en aan eenobGet van de super9lasse3 en @e ver@iGderen et daarna" Ual alles @ordenuitgevoerd in de!e volgordeB
1) Construtor 'ase) Construtor Derived4) Destrutor DerivedM) Destrutor 'ase
Lab V
Hverlopen opdrat @ee9 ervoor" en student die is geinitialiseerd in een personobGet moet uitgeprint @orden als een student"
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
12/17
Oer@iG!en naar super9lasse 9an dus met ersonBBprint()*
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
13/17
#ntList implementatie
*riend class: omdat de #ntList 9lasse een friend is van #ntnode3 9unnen allemembers uit #ntList retstree9s aan de private members van et #ntWode 9lasseobGet"
Lab X
Oetor
en vetor eeft een positie en een lengte"
unnen opgeteld @orden3 vermenigvuldigd3 gedeeld et"
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
14/17
Lab Y
Zile output
&ompare : 9ey@ord"ompare(:irle;) == 0
Oetoren
Dotprodut B
-ngle t@ee vetoren B
Wieu@e vetor bere9enen na bosting tegen muur B
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
15/17
)ector +oe,en die start op punt p en eindigt op punt -
an @orden bere9end door [ te doen (reverse order)"
Lab 10 Aen 9an geen instantievariabelen biGouden van interfae 9lassen" Aen 9an geen referenties naar obGeten biGouden in vetoren" Aoet d"m"v" pointers
Zor@ard lass delaration
Zout @anneer t@ee 9lasses el9aar inluden" Dit valt op te lossen door for@ardlass delaration" Dit moet gebeuren biG de 9lasse die niet retstree9s gebrui9maa9t van de te inluden 9lasse (biGvoorbeeld biG een metodeargument !oals inonderstaand voorbeeld)" #n de sub9lasse of de ode%le van de 9lasse (indiengeen interfae 9lasse) moet dit dan @el @orden genlude"
Cirleirle ollission
./ &ollission wanneer:
0/ 1everse motion o# green circle so that it only touches other circle
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
16/17
2/ &hange velocity o# the green circle so that it bounces o3 the redcircle
Lab 11
'oids dra@ing
*ormula o# fnding points on a circle
Lab 1
Zlo9 beaviour
1ule . : cohesion
-
7/23/2019 Samenvatting Programmeren Voor Multimedia
17/17
1ule 0 : separation
1ule 2 : alignment
&ombination rules