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

24
Q

&a

A

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

25
*((unsigned char*)&a)
52 Valeur de l’octet se trouvant l’adresse mémoire de a.
26
*(((unsigned char*)&a)+1)
0 Valeur du premier octet qui suit l’adresse mémoire de a
27
&
une façon d’obtenir l’adresse de l’original
28
int valeurDeA = *ptrA;
Si l’on veut accéder ce qui se trouve à une adresse on utilise l’opérateur *
29
Passage par référence
Lorsque l’on passe un paramètre par référence, on utilise l’adresse de l’original
30
pointeur
Un pointeur est une adresse. Cette adresse est stockée sur 32 bits
31
Arithmétique de pointeurs Si l’on exécute les instructions suivantes : int a = 52; int* ptrA = &52; int* pValeur = ptrA + 1;
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
int* pData;
e pointe vers RIEN DE CONCRET. On ne veut pas faire cela
33
allouer une zone de mémoire dynamique on utilise un pointeur
int* pData = new int;
34
delete pData;
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
fuite de mémoire. void doIt() { int * pData = new int; pData = 80; } void main() { doIt(); }
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
Allocation d’un tableau
int* pData = new int[10];
37
std::cout << pData[4]; est l’équivalent de
std ::cout << *(pData+4);
38
Pour libérer un tableau
delete[] pData;
39
*p = 52;
On utilise l’opérateur « * » pour affecter une valeur du type qui a été déclaré
40
Allocation dynamique : Variables locales : Statiques et globales : Code compilé :
heap stack data code
41
remplir tab dynamique
int * tab = new int[10]; // remplissage avec le [ ] for(int i = 0; i < 10; i++) { tab[i] = i + 10; }
42
ou pointe adresse dun tab
premer element du tabb
43
1) Stocker des références vers des entiers : int * tab[10]; int a = 12; tab[0] = &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
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
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
Tableaux de pointeurs delete[] tab; ?
for(int j = 0; j < 10; j++) { delete tab[ j ]; //suppression de tous les blocs dynamiques }
46
En allocation dynamique, on utilise simplement l’opérateur d’accès « -> »
ptrEnnemi->attaquer(); La dernière instruction est l’équivalent de *(ptrEnnemi).attaquer();
47
Destructeur
void attaquerEnnemi() { Ennemi * ptrEnnemi = new Ennemi(); ptrEnnemi->attaquer(); delete ptrEnnemi; //Le destructeur de la classe Ennemi est appelé ici; int a = 38 […] }
48
Ennemi * tabEnnemis = new Ennemi[10];
« 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
1) Une classe garde la référence d’une autre classe dans une de ses variables
Habituellement on ne touche pas à cette référence, on laisse la stack faire son travail ! Composition faible
50
2) Une classe alloue dynamiquement une autre classe et stocke l’adresse reçue dans une variable
Habituellement, la classe qui alloue la mémoire s’occupe de la libérer Composition forte
51
Association
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
Agrégation (ou composition faible)
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
Composition (ou composition forte)
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
p = &total; que contient &p
adresse de p (juste p c'est l'adresse contenu dans p)
55