Test sommatif #1 Flashcards

2.5%

1
Q

Classe

A

structure regroupant les données (attributs ou membres) et les opérations
(méthodes) pour un concept donné. Exemple: un étudiant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Attribut

A

aussi appelée membre ou propriété d’une classe, l’attribut contient un élément
d’information d’une classe (dans une variable)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Méthode

A

opération d’une classe, contenant du code. On évite les termes fonctions et
procédures.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Objet

A

« instance » d’une classe, représentant un élément tangible. Par exemple, Fido est
un objet ou une instance de la classe Chien.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

public

A

accessibles à l’extérieur et à l’intérieur de la classe. Souvent les méthodes getXYZ
(getters) sont publiques mais ce n’est pas obligatoire.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

protected

A

accessibles dans les classes dérivées (héritées) et à l’intérieur de la classe. Rarement
utilisé en général mais bien pratique pour les setXYZ (setters) afin de préserver les
validations qu’on souhaiterait réaliser.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

private

A

accessibles uniquement à l’intérieur de la classe.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

.h (header)

A

Le fichier d ’en-tête contient à la déclaration de la classe. On y place le nom de la classe, les
modificateurs de visibilité, les déclarations des attributs et des méthodes. En général, on n’y place
pas de définitions (pas de corps de méthodes).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

.cpp

A

Le fichier .cpp contient la définition de la classe. On y place les définitions des attributs statiques
ainsi que la définition (le corps) des méthodes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

2 grands types d’algorithme de recherche

A

Recherche linéaire (glouton)
 Recherche dichotomique (diviser pour régner)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

critère de performance très important

A

Remarquez le nombre de comparaisons effectuées (apparaît en
haut à gauche)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Algorithmes de tri lent

A

Tri par sélection
 Tri par insertion
 Tri à bulles
 Etc

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Algorithmes de tri rapide

A

Tri fusion
 Tri rapide
 Etc

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

sortes des complexités algorithmiques De temps

A

Nombre d’opérations élémentaires effectuées par un
algorithme

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

sortes des complexités algorithmiques D’espace

A

Nombre d’espace physique (essentiellement de la mémoire)
occupé par l’algorithme

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Données (Data segment)

A

pour les variables globales et statiques

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Code (code segment)

A

pour le code compilé

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Tas (Heap):

A

pour l’allocation dynamique

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Pile (Stack)

A

pour les variables locales

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

void UneFonction (int nombre3);
int nombre1;
void main()
{
Ennemi * e1;
e1 = new Ennemi;
UneFonction(7);
}
void UneFonction(int nombre3)
{
int nombre2;
}
class Ennemi
{
static int cptInstance;
// . . .
};

A

Données
cptInstance
nombre1

Tas
e1
(contenu)

Pile
nombre2 (fonction)
nombre3 (fonction)
e1 (pointeur)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

La taille d’un int

A

4 octets

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

comment est c’est représenté un int dans la mémoire

A

52 0 0 0
0x00effc08 0x00effc09 0x00effc0A 0x00effc0B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

int a

A

52

24
Q

&a

A

0x00effc08 Emplacement
mémoire de a. On
dit aussi un pointeur
vers a.

25
Q

((unsigned char)&a)

A

52 Valeur de l’octet se
trouvant l’adresse
mémoire de a.

26
Q

(((unsigned char)&a)+1)

A

0 Valeur du premier
octet qui suit
l’adresse mémoire
de a

27
Q

&

A

une façon
d’obtenir l’adresse de l’original

28
Q

int valeurDeA = *ptrA;

A

Si l’on veut accéder ce qui se trouve à une adresse on utilise l’opérateur *

29
Q

Passage par référence

A

Lorsque l’on passe un paramètre par référence, on utilise l’adresse de l’original

30
Q

pointeur

A

Un pointeur est une adresse. Cette adresse est stockée sur 32 bits

31
Q

Arithmétique de pointeurs
Si l’on exécute les instructions suivantes :
int a = 52;
int* ptrA = &52;
int* pValeur = ptrA + 1;

A

la valeur de pValeur sera celle de ptrA augmentée de 4 octets car ptrA est un pointeur de int
et un int occupe 4 octets en mémoire.

32
Q

int* pData;

A

e pointe vers RIEN DE CONCRET. On ne veut pas faire cela

33
Q

allouer une zone de mémoire dynamique on utilise un pointeur

A

int* pData = new int;

34
Q

delete pData;

A

Contrairement à Java et C#, NOUS sommes responsables de libérer la mémoire allouée avec new
lorsqu’elle n’est plus nécessaire. Le pointeur peut alors être réutilisé pour un autre emplacement mémoire mais le contenu
désormais pointé est indéterminé.

35
Q

fuite de
mémoire.
void doIt()
{
int * pData = new int;
pData = 80;
}
void main()
{
doIt();
}

A

A la fin de l’exécution de la fonction doIt, la portée de la variable local pData sera terminée. La
variable sera libérée MAIS PAS L’ESPACE MÉMOIRE POINTÉ par pData.

36
Q

Allocation d’un tableau

A

int* pData = new int[10];

37
Q

std::cout &laquo_space;pData[4];
est l’équivalent de

A

std ::cout &laquo_space;*(pData+4);

38
Q

Pour libérer un tableau

A

delete[] pData;

39
Q

*p = 52;

A

On utilise l’opérateur « * » pour affecter une valeur du type qui a été
déclaré

40
Q

Allocation dynamique :
Variables locales :
Statiques et globales :
Code compilé :

A

heap
stack
data
code

41
Q

remplir tab dynamique

A

int * tab = new int[10];
// remplissage avec le [ ]
for(int i = 0; i < 10; i++)
{
tab[i] = i + 10;
}

42
Q

ou pointe adresse dun tab

A

premer element du tabb

43
Q

1) Stocker des références vers des entiers :
int * tab[10];
int a = 12;
tab[0] = &a;

A

Rien de dynamique dans cette approche, rien à faire non plus
lorsqu’on n’a plus besoin de ce tableau (tout est sur la stack).

44
Q

2) Stocker des pointeurs vers des entiers alloués
dynamiquement:
int * tab[10];
tab[0] = new int;
*tab[0] = 12 //même principe avec l’étoile

A

Cette fois-ci il y a un new: toutes les adresses stockées dans le
tableau vont pointer vers un bloc dynamique, il faut en faire la
suppression !

45
Q

Tableaux de pointeurs delete[] tab; ?

A

for(int j = 0; j < 10; j++)
{
delete tab[ j ]; //suppression de tous les blocs dynamiques
}

46
Q

En allocation dynamique, on utilise simplement l’opérateur
d’accès « -> »

A

ptrEnnemi->attaquer();
La dernière instruction est l’équivalent de
*(ptrEnnemi).attaquer();

47
Q

Destructeur

A

void attaquerEnnemi()
{
Ennemi * ptrEnnemi = new Ennemi();
ptrEnnemi->attaquer();
delete ptrEnnemi; //Le destructeur de la classe
Ennemi est appelé ici;
int a = 38
[…]
}

48
Q

Ennemi * tabEnnemis = new Ennemi[10];

A

« allocation dynamique de 10 blocs consécutifs pour des
Ennemis en mémoire, la variable tabEnnemis reçoit l’adresse
du premier bloc »
Il faut suivre les règles vues pour le stockage et la suppression !

49
Q

1) Une classe garde la référence d’une autre classe dans une
de ses variables

A

Habituellement on ne touche pas à cette référence, on
laisse la stack faire son travail ! Composition faible

50
Q

2) Une classe alloue dynamiquement une autre classe et
stocke l’adresse reçue dans une variable

A

Habituellement, la classe qui alloue la mémoire
s’occupe de la libérer Composition forte

51
Q

Association

A

La classe « A » utilise un objet de la classe « B ». Aucun attribut de la classe
ne fait référence à un objet de la classe « B »

52
Q

Agrégation
(ou composition faible)

A

La classe « A » possède un pointeur sur un objet de la classe « B » parmi ses
attributs mais n’est pas responsable de la destruction de celui-ci. En quelque
sorte, si la classe « A » disparait, la classe « B » ne disparaît pas.
Généralement, l’objet de la classe « B » est instancié à l’extérieur de la classe
« A » et est passé en paramètre à l’une des méthodes de la classe « A »

53
Q

Composition
(ou composition forte)

A

La classe « A » possède un pointeur sur un objet de la classe « B » (ou l’objet
directement) parmi ses attributs et est responsable de la destruction de celui-ci.
En quelque sorte, si la classe « A » disparait, la classe « B » doit disparaître.
Généralement, l’objet de la classe « B » est instancié à l’intérieur de la classe
« A », souvent lors de la construction.

54
Q

p = &total; que contient &p

A

adresse de p (juste p c’est l’adresse contenu dans p)

55
Q
A