Dans le suite, nous allons développer une classe permettant le stockage et la manipulation de chaines de caractères.

note : On utilisera la convention de nommage Java exception faite des attributs qui seront préfixés par _.

Classe

Comme pour le C, nous allons séparer le déclaratif de l’implémentation. Ainsi, dans le header, nous mettrons entre autre les prototypes de fonctions et les déclarations de type.

Créer un fichier CharSequence.hpp (les header en C++ peuvent avoir comme extension .hh, .H, .hp, .hxx etc…). Vous protégerez ce fichier contre les inclusions multiples.

Créer le fichier CharSequence.cpp qui inclue CharSequence.hpp (comme CharSequence.cpp contient l’implémentation de CharSequence.hpp, on utilisera #include "CharSequence.hpp").

Ajouter à program.cpp l’inclusion du fichier d’entête.

Dans CharSequence.hpp ajouter la déclaration de la classe CharSequence:

class CharSequence {

};

Déclarer une variable de ce type dans program.cpp et vérifier que tout compile correctement:

  • donner la commande pour produire directement un exécutable

  • donner les commandes pour compiler en objets puis produire l’exécutable

Vous pouvez simplifier la phase de compilation en utilisant au choix un Makefile:
CXX=g++
CXXFLAGS=-Wall -g
LDFLAGS= -g

.PHONY: clean

program: program.o CharSequence.o
	$(CXX) $(LDFLAGS) $^ -o $@

CharSequence.o: CharSequence.cpp CharSequence.hpp

program.o: program.cpp CharSequence.hpp

clean:
	rm -f *.o program
ou encore un CMakeLists.txt:
cmake_minimum_required(VERSION 3.5)
project(pg212)
add_executable(program program.cpp CharSequence.cpp CharSequence.hpp)
target_include_directories(program PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

Attributs

Dans la classe CharSequence, ajouter un attribut public: _length de type unsigned int. On donnera à cet attribut une valeur par défaut lors de la déclaration (c++11).

Dans le programme principal, afficher la valeur de l’attribut de la variable créée précédemment (rappel: il est public). Dans le programme principal, ajouter une deuxième variable pour manipuler une instance de CharSequence allouée dynamiquement, puis afficher l’attribut _length de cette deuxième variable.

Vérifier votre programme en l’exécutant avec valgrind

Méthode

Ajouter la méthode length dans la classe CharSequence : la déclaration se fait dans le entête et l’implémentation dans CharSequence.cpp. Maintenant que l’on dispose de cette méthode, mettez l’attribut _length en privé.

note : La déclaration d’une méthode, d’un constructeur et du destructeur se fera toujours dans le fichier entête ‘.hpp’ et l’implémentation dans le fichier ‘.cpp’.

Utiliser cette méthode sur nos deux variables dans program.cpp.