Introduction à la programmation objet Langage Java SI3 Débutant programmation Déry Anne Marie : pinna@[email protected] http://courswiki.essi.fr/SI1/Prog101/Planning A quoi sert la programmation ? • Passer d’un problème réel à une résolution informatique calculs mathématiques gestion de commandes jeux Analyser le problème, concevoir une solution, l’écrire dans un langage informatique, l’exécuter sur une machine Types de programmation / langages de programmation • Programmation Procédurale : Pascal, C, Fortran • Programmation Fonctionnelle : Lisp, Scheme… • Logique : Prolog • Objet : C++, Java … Langages de programmation / Environnements de programmation • Ecrire un programme, le transformer en code binaire, l’exécuter, le documenter, le tester…. • En Java – Editeur classique : emacs, kwrite et commandes systèmes – BlueJ – Eclipse Objectifs du cours • Apprendre les principes de base de la programmation objet (premier niveau) • Apprendre les principes de base de l’algorithmique • Etre capable d’écrire un code « propre » : lisible, maintenable, deverminable • Savoir écrire un petit logiciel en Java Contenu du cours • • • • • • Introduction aux objets Algorithmes de base Structure de données : tableau Listes Tris de données Qualité et tests de code Objets/instances et classes • Les objets (instances) représentent des entités du monde réel relatives au problème à traiter – Une voiture rouge de marque Ferrari – un carré de taille 4cm de côté – Un échiquier de 16 cases • Les classes représentent tous les objets Ce sont les modèles des instances – – – – Voiture Carré Echiquier Case • Plusieurs instances peuvent être créées à partir d’une classe Méthodes et attributs (variables d’instances) • • Des opérations peuvent être appliquées à des objets : ce sont les méthodes. On parle d’invocation de méthode Les méthodes ont des paramètres afin de passer des données à appliquer. – – – • • Les attributs (variables d’instances) sont les données stockées dans les instances La classe définit les méthodes (nom, liste de paramètres, algorithme…) – – – • accélérer (vitesse) maFerrari.accelerer(30); déplacer(distance) placer(unPion,uneCase) Que fait la méthode accélérer ? (changer la vitesse de la voiture) Que fait la méthode déplacer ? (changer les coordonnées du carré) Que fait placer(Pion,Case) ? Vérifier si un Pion peut être placé sur une case et si oui l’affecter. La classe définit les attributs qui décrivent une instance; chaque instance ayant sa valeur propre. On parle de l’état d’un objet – – La couleur,la marque, la vitesse des voitures. Ma Ferrari est rouge et roule à 130 Les coordonnées et la taille d’un côté d’un carré…. Etat du Cercle circle1 Quel est le nom de la classe ? Quel est le nom de l’instance ? Quelles sont les variables d’instances ? Quel est leur type ? Attention : il y a des conventions de nommage Instances d’une classe Comment crée-t-on une instance ? Comment modifier la valeur d’une variable d’instance de circle1 ? Comment afficher les positions du circle2 ? Donner des exemples de méthodes ? Structure d’une méthode • Une méthode a une entête et un corps • L’entête définit la signature d’une méthode. public int getXPosition() Nom de la méthode public void showCoord() Liste de paramètres Type de retour visibilité • Le corps contient les lignes de code Structure d’une classe Nom de la classe public class Circle { // Variables d’instances : diameter, yPosition, xPosition // Constructeurs : Circle(int x, int y) // Méthodes : setYPosition(int y); printCoord() } Marqueurs du bloc de début et fin de la classe : {} Variables d’instances public class Circle { private int xPosition; private int yPosition; private int diameter; private String color; private boolean isVisible; ……. } • Visibilité : private, public, protected – Une variable d’instance est toujours privée a priori • Types de données : int, String, boolean, isVisible, Circle – Un type est soit un type de base soit une classe Java Standard soit une classe définie par le programmeur • Nom de variable : Attention aux conventions de nommage – Commence par une miniscule, séparation des mots par une majuscule Constructeurs : initialisation des instances Ils ont le même nom que la classe Ils stockent les valeurs initiales des attributs le plus souvent grâce aux valeurs des paramètres public Circle(int x,int y) { xPosition = x; 5 instructions d’affectations yPosition = y; diameter=5; color="blue" isVisible=true; } public Circle(int x,int y,String c,int diameter) { this(x,y); xPosition = x; yPosition = y; diameter=this.diameter; color=c; isVisible=true; } • Il peut y avoir plusieurs constructeurs dans une classe. • Il y a un constructeur par défaut sans paramètre Création via BlueJ Nom attribué par BlueJ Instruction de création d’instances ATTENTION : les instances n’ont pas de nom en Java On les affecte à des variables : Voiture maFerrari=new Voiture("Ferrari", "rouge"); Méthodes accesseurs Un type de méthode spécifique Qui fournit les informations (valeurs des variables d’instances) d’un objet public int getXPosition() { return xPosition; } public String getColor() { return color; } • Type de retour : int, String… – La méthode renvoie une valeur correspondant au type de retour • Nom de méthode : getXPosition, getColor ATTENTION Convention de nommage • • • Liste de paramètres : vide – l’information est dans l’instance on n’a pas besoin de données extérieures Marqueurs du Bloc de début et fin de la méthode : {} Visibilité : public – Peut être utilisée à l’extérieur de la classe, dans une autre classe • Instruction : instruction return – Il y a toujours un return quand une méthode renvoie une valeur de retour – C’est la dernière instruction exécutée Méthodes mutator Méthode spécifique pour changer l’état d’un objet... – contient une instruction d’affectation : affectation des variables d’instances. – reçoit des paramètres : valeur à affecter . public void setXPosition (int x) { xPosition = x; } public void setColor(String x) { color = x; } Type de retour (void) : ne renvoie rien Nom de méthodes : setXPosition, setColor(String x) ATTENTION au convention de nommage Paramètres : int x, String x Visibilité : public Instruction : affectation d’une variable d’instances xPosition = x; Affichage public void showCoord() { System.out.println(" Les coordonnées sont :"); System.out.println(" x : " + xPosition + " y: " + yPosition ); } Instruction d’écriture Concaténation de chaines Méthode prédéfinie pour l’affichage d’une instance public String toString() { return " x : " + xPosition + " y: " + yPosition + " diamètre: " + diameter + " couleur: " + color; } …. System.out.println(circle1); System.out.println(circle1.toString());