Interfaces Graphiques, Complement C++
Interfaces Graphiques, Complement C++
Interfaces Graphiques, Complement C++
– Agrégation
– Utilisation de l’héritage
– Compilation séparée
– Espaces de noms
– Vecteurs
class client
{
public :
client(const string& name, const date& birthdate);
client(const char* name, int birthday,int birthmonth,int birthyear);
private :
string d_name;
date d_birthdate;
};
– Une fois dans le corps du constructeur, les champs sont déjà construits.
class toto {
A d_a;
B d_b;
C d_c;
};
→ créer une nouvelle classe dérivée de cette classe (dite classe de base)
– Un objet de la classe dérivée est alors composé d’une partie objet classe de
base
– Le constructeur de la classe dérivée doit appeler celui de la classe de base
– La classe dérivée hérite des méthodes de la classe de base : on peut appeler
les méthodes de la classe de base sur un objet de la classe dérivée
– La classe dérivée est même utilisable partout à la place de la classe de base
class point {
public:
point(double x, double y);
double x() const;
double y() const;
void moveTo(double x, double y);
private:
double d_x, d_y;
};
Inclusion de fichiers :
– La directive #define permet définir des macros qui définissent des sub-
stitutions automatiques dans le texte :
#define NMAX 10
//NMAX is textually replaced by 10
fichier myinclude.h :
#ifndef MYINCLUDE_H
#define MYINCLUDE_H
#endif
– ils sont inclus par les autres fichiers pour pouvoir utiliser les types
(classes, . . . ), fonctions . . . , qui y sont déclarés,
– ils doivent être protégés contre les inclusions multiples,
– Quand des fichiers sont modifiés, il ne faut recompiler que ces fichiers et
ceux qui les incluent
⇒ gestion automatique des dépendances grâce au programme make et à son
fichier de configuration Makefile.
cible : dépendances
<tab>commande à exécuter
– Variables :
on peut définir des variables dans un Makefile
pour simplifier l’écriture ou les changements :
namespace myDatastr
{
class vector { ... };
bool is_sorted(const vector& );
void error(const char* );
}
int main()
{
myGraphics::window w;
if (!w.open())
{ myGraphics::error("cannot open window"); }
myDatastr::vector v(1000);
for (int i=0; i<1000; ++i) { v[i] = std::sqrt(i); }
if (!myDatastr::is_sorted(v))
{ myDatastr::error("error with is_sorted"); }
return 0;
}
namespace myDatastr
{
vector::vector(int size)
{ ... }
#include"myGraphics.h"
#include"myDatastr.h"
int main()
{
window w;
if (!w.open())
{ error("cannot open window"); }
vector v(1000);
for (int i=0;i<1000;++i) { v[i]=std::sqrt(i); }
if (!myDatastr::is_sorted(v))
{ myDatastr::error("error with is_sorted"); }
}
– #include<vector>
– vector<typeelem> v
std::vector<int> v;
v.reserve(80);