Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur ...

24
Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur http://anubis.polytech.unice.fr/cours/ Catherine Faron Zucker [email protected] Claudia C. Gutierrez [email protected] Igor Litovsky [email protected] Anne-Marie Pinna Dery [email protected]

Transcript of Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur ...

Page 1: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

Introduction à la Programmation Orientée Objet

Langage Java

SI3 MAM3Allez voir le cours sur

http://anubis.polytech.unice.fr/cours/

Catherine Faron Zucker [email protected] C. Gutierrez [email protected]

Igor Litovsky [email protected] Pinna Dery [email protected]

Page 2: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

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 Allez voir le cours sur  Catherine Faron Zucker.

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 Allez voir le cours sur  Catherine Faron Zucker.

Langages de programmation/ Environnements de

programmation

• Ecrire un programme, le transformer en code binaire, l’exécuter, le documenter, le tester….

• En Java– Editeurs classiques : emacs, kwrite... et +

commandes systèmes – Environnements de programmationn :BlueJ, Eclipse...

Page 5: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

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 Allez voir le cours sur  Catherine Faron Zucker.

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 Allez voir le cours sur  Catherine Faron Zucker.

Les objets (instances) représentent des entités du monde réel relatives au problème à traiter– Une voiture rouge de marque Ferrari (course)– un carré de taille 4cm de côté (dessin)– Un échiquier de 16 cases (jeu)

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 classeComment définiriez-vous un étudiant ? Un cours ?Quelle est la différence entre le cours d’IPA et de Système ?

Avez vous d’autres exemples de classes et d’instances ?

Objets/instances et classes

Page 8: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

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 (int vitesse) maFerrari.accelerer(30);– déplacer(int distance) leCarre.déplacer(10);– placer(Pion unPion,Case uneCase)

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.

Les attributs (variables d’instances) sont les données stockées dans les instances

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 Allez voir le cours sur  Catherine Faron Zucker.

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 à respecter

Page 10: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

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 Allez voir le cours sur  Catherine Faron Zucker.

Structure d’une méthodeUne méthode a une entête et un corps

L’entête définit la signature (visibilité, type de retour, nom, paramètres) d’une méthode

Le corps contient les lignes de code, l’algorithme qui effectue l’action – code exécuté par la machine

public int getXPosition()

public void déplacer(int x)

Nom

Liste de paramètres

Type de retour

Visibilité

Signature

Page 12: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

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 : {} // commentaires – non exécuté par la machine

Nom de la classe

Page 13: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

Variables d’instancespublic class Circle { private int xPosition=0; 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

Type de données : un type de base, une classe Java Standard ou une classe définie par le programmeur

int, boolean..., String, ..., CircleNom de variable Attention aux conventions de nommageCommence par une miniscule, séparation des mots par une majuscule

Les valeurs par défaut sont données dans les constructeursNe pas utiliser a priori l’affectation à la définition

Une variable d’instances est définie par sa visibilité, son type, son nom et une éventuelle valeur par défaut;

Page 14: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

Les constructeurs permettent de construire les instances d’une classe, d’initialiser les variables d’instances le nom du constructeur est le même nom que la classeles valeurs des paramètres sont utilisées pour l’initialisation

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;}

this () permet d’appeler des constructeurs en cascadethis. -> permet designer la variable d’instances

this(x,y);

Constructeurs : initialisation des instances

5 instructions d’affectations

Page 15: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

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 faut toujours définir un constructeur par défaut

Il peut y avoir plusieurs constructeurs ou méthodes de même nom si la liste des paramètres (nombre, type) diffère

Page 16: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

Méthodes accesseursLes accesseurs sont 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

Page 17: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

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

Un mutator est une 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é : public

Instruction = : affectation xPosition = x;

Page 18: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

Deux types de méthode

Il y a deux sortes de méthodes :

les méthodes procédures (type de retour égale void)

qui ne renvoyent pas de valeur

et

les méthodes fonctions (type de retour différent de void) qui renvoient un résultat

Ex : Les accesseurs sont des fonctions,Les mutators sont des procédures

Page 19: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

Invocation de méthodeInvoquer une méthode sur une instance :

exécuter les instructions écrites dans le corps d’une méthode avec les paramètres effectifs

L’opérateur est le .

Ex: circle1.setXPosition(10);

10 est un paramêtre effectif de type entier (int)

1. Comme circle1 est une instance de Circle, l’invocation n’est possible que si une procédure publique de nom setXPosition avec un paramètre formel de type compatible int est déclarée dans Circle2. L’exécution du code est faite en remplaçant le nom du parametre par sa valeur effective

Page 20: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

Affichage

Il existe une méthode prédéfinie que l’on doit redéfinir dans les classes que l’on écrit pour pouvoir afficher les instances d’une classe

Il s’agit de la méthode de nom toString

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

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

L’instruction correspondant à la méthode prédéfinie System.out.println, permet d’écrire une chaîne de caractères dans la console

L’instruction + entre deux chaines permet la concaténation des chaînes,entre deux entiers l’addition de ces entiers

Page 21: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

Comment tester une classe?

On peut tester une ou plusieurs classes en écrivant le corps

d’une méthode prédéfinie de nom main

Pour utiliser la classe Circle:

– Ecrire une méthode main dans la classe Point ou dans

une autre classe UseOfPoint qui

• crée des instances (appel aux constructeurs)

• affiche des instances (appel au toString)

• Exécute les méthodes procédurales (appel des méthodes

modifiant l'état d'une instance et affichage des instances)

• Exécute les méthodes fonction (appel et affichage des

méthodes renvoyant un résultat)

Page 22: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

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 23: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

Les commandesCompilation : javac

La compilation génère à partir du code java un binaire que la machine saura exécuterLa compilation vérifie les erreurs de syntaxe javaExécution : javaL’exécution exécute un binaireLes erreurs de programmation peuvent entrainer des erreurs d’exécution

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

Page 24: Introduction à la Programmation Orientée Objet Langage Java SI3 MAM3 Allez voir le cours sur  Catherine Faron Zucker.

Des références- api  :

http://download.oracle.com/javase/6/docs/api/

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

http://download.oracle.com/javase/tutorial/

- Pour trouver des informations

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