Samenvatting Programmeren Voor Multimedia

  • Upload
    pekket

  • View
    243

  • Download
    0

Embed Size (px)

Citation preview

  • 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