Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen...

22
Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen [email protected] Igor Litovsky [email protected] Anne-Marie Pinna Dery [email protected] http://courswiki.polytech.unice.fr/SI3/IPA

Transcript of Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen...

Page 1: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Introduction à la Programmation Orientée Objet

Langage Java

SI3 MAM3 Hydro

Nathan Cohen [email protected] Litovsky [email protected]

Anne-Marie Pinna Dery [email protected]

http://courswiki.polytech.unice.fr/SI3/IPA

Page 2: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

A quoi sert la programmation ?

• Passer d’un problème réel à une résolution informatique

- calculs mathématiques- gestion de commandes- Systèmes d’exploitation –

facebook...- jeux

Analyser le problème, concevoir une solution, l’écrire dans un langage informatique, l’exécuter sur une machine

Page 3: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Types de programmation/ langages de programmation

• Programmation Procédurale : Pascal, C, Fortran

• Programmation Fonctionnelle : Lisp, Scheme…

• Logique : Prolog

• Objet : C++, Java …

Page 4: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

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

Page 5: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Objectifs du cours

• Apprendre les principes de base de la programmation objet et de l’algorithmique

• Etre capable de comprendre un code

• Etre capable d’écrire un code « propre » : lisible, maintenable

• Savoir écrire un petit logiciel en Java

Page 6: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Contenu du cours

• Introduction aux objets

• Algorithmes de base

• Structures de données

• Listes

• Tris de données

• Qualité du code

Page 7: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

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 un ensemble d’objets similairesCe sont les modèles des instances

– Voiture– Carré– Echiquier– Case

• Plusieurs instances peuvent être créées à partir d’une classe

Page 8: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Méthodes et attributs

• 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.– accélérer (vitesse) maFerrari.accelerer(30);– déplacer(distance)– placer(unPion,uneCase)

• 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…)– 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é….

Page 9: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

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

Page 10: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

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 ?

Page 11: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

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()public void showCoord()

• Le corps contient les lignes de code

Nom de la méthode

Liste de paramètres

Type de retour

visibilité

Page 12: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Structure d’une 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 : {}

Nom de la classe

Page 13: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Variables d’instancespublic 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, 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

Page 14: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Ils ont le même nom que la classeIls stockent les valeurs initiales des attributs le plus souvent grâce aux valeurs des paramètres

public Circle(int x,int y){ xPosition = x; yPosition = y; diameter=5; color="blue" isVisible=true;} public Circle(int x,int y,String c,int diameter){ xPosition = x; yPosition = y; this.diameter=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

this(x,y);

Constructeurs : initialisation des instances

5 instructions d’affectations

Page 15: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

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"); Voiture maTititne= new Voiture();

Il est important de définir un constructeur par défaut

Il peut y avoir plusieurs constructeurs ou méthodes de même nom si le nombre de paramètres diffère

Page 16: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Méthodes accesseursUn 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

Page 17: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Méthodes accesseurs en écriture : mutator (anglais)

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 rienNom de méthodes : setXPosition, setColor(String x)

ATTENTION au convention de nommageParamètres : int x, String xVisibilité : publicInstruction : affectation d’une variable d’instances xPosition = x;

Page 18: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Affichage

public void showCoord(){ System.out.println(" Les coordonnées sont :"); System.out.println("  x : " + xPosition + " y: "   + yPosition );}

public String toString(){return "  x : " + xPosition + " y: "   + yPosition + " diamètre: "   + diameter

+ " couleur: "   + color;} ….System.out.println(circle1); System.out.println(circle1.toString());

Instruction d’écriture

Méthode prédéfinie pour l’affichage d’une instance

Concaténation de chaines

Page 19: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Comment tester et exécuter ?

• Pour utiliser la classe Point

– Ecrire une méthode main dans la classe Point

ou une autre UseOfPoint

• création d'instances (constructeurs)

• affichage des instances (toString)

• appel des méthodes modifiant l'état d'une instance

et affichage des instances

• appel et affichage des méthodes renvoyant un

résultat

Page 20: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Exemple de main pour Pointpublic static void main(String[] argsv){ Point origine = new Point(0,0); Point p=new Point(); System.out.println(origine); System.out.println("Le point origine : ("  + origine.getX() + ", "  +

origine.getY()); System.out.println(p); Point p2=new Point("12",  "13"); System.out.println("Le point origine : ("  + origine.getX(10) + ", "  +

origine.getY(11)); System.out.println(System.out.println("Le point origine : ("  +

origine.setX(10) + ", "  + origine.setY(11));}

Page 21: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Les commandes

public static void main(String[] args)

javac ClasseAtester.java -> erreurs ou création du fichier ClasseAtester.class

javac TestDEClasseAtester.java -> erreurs ou création du fichier TestDeClasseAtester.class

java TestDeClasseAtester -> erreurs et/ou exécution du code

ATTENTION A L’ORDRE DE COMPILATION

Page 22: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr Igor Litovsky lito@polytech.unice.frlito@polytech.unice.fr.

Des références

• - api  : http://www.j2ee.me/javase/6/docs/api/

Vous aurez une version locale sur votre ordinateur portable-Tutorial Java

http://java.sun.com/docs/books/tutorial/ - Pour trouver des informations

http://www.jmdoudoux.fr/java/dej/indexavecframes.htm